LockCode.java

net.minecraft.world.LockCode

信息

  • 全限定名:net.minecraft.world.LockCode
  • 类型:public record
  • 包:net.minecraft.world
  • 源码路径:src/main/java/net/minecraft/world/LockCode.java
  • 起始行号:L11
  • 职责:

    TODO

字段/常量

  • NO_LOCK

    • 类型: LockCode
    • 修饰符: public static final
    • 源码定位: L12
    • 说明:

      TODO

  • CODEC

    • 类型: Codec<LockCode>
    • 修饰符: public static final
    • 源码定位: L13
    • 说明:

      TODO

  • TAG_LOCK

    • 类型: String
    • 修饰符: public static final
    • 源码定位: L14
    • 说明:

      TODO

内部类/嵌套类型

构造器

方法

下面的方法块按源码顺序生成。

public boolean unlocksWith(ItemStack itemStack) @ L16

  • 方法名:unlocksWith
  • 源码定位:L16
  • 返回类型:boolean
  • 修饰符:public

参数:

  • itemStack: ItemStack

说明:

TODO

public void addToTag(ValueOutput parent) @ L20

  • 方法名:addToTag
  • 源码定位:L20
  • 返回类型:void
  • 修饰符:public

参数:

  • parent: ValueOutput

说明:

TODO

public boolean canUnlock(Player player) @ L26

  • 方法名:canUnlock
  • 源码定位:L26
  • 返回类型:boolean
  • 修饰符:public

参数:

  • player: Player

说明:

TODO

public static LockCode fromTag(ValueInput parent) @ L30

  • 方法名:fromTag
  • 源码定位:L30
  • 返回类型:LockCode
  • 修饰符:public static

参数:

  • parent: ValueInput

说明:

TODO

代码

public record LockCode(ItemPredicate predicate) {
    public static final LockCode NO_LOCK = new LockCode(ItemPredicate.Builder.item().build());
    public static final Codec<LockCode> CODEC = ItemPredicate.CODEC.xmap(LockCode::new, LockCode::predicate);
    public static final String TAG_LOCK = "lock";
 
    public boolean unlocksWith(ItemStack itemStack) {
        return this.predicate.test((ItemInstance)itemStack);
    }
 
    public void addToTag(ValueOutput parent) {
        if (this != NO_LOCK) {
            parent.store("lock", CODEC, this);
        }
    }
 
    public boolean canUnlock(Player player) {
        return player.isSpectator() || this.unlocksWith(player.getMainHandItem());
    }
 
    public static LockCode fromTag(ValueInput parent) {
        return parent.read("lock", CODEC).orElse(NO_LOCK);
    }
}

引用的其他类