RandomizableContainer.java
net.minecraft.world.RandomizableContainer
信息
- 全限定名:net.minecraft.world.RandomizableContainer
- 类型:public interface
- 包:net.minecraft.world
- 源码路径:src/main/java/net/minecraft/world/RandomizableContainer.java
- 起始行号:L21
- 继承:Container
- 职责:
TODO
字段/常量
-
LOOT_TABLE_TAG- 类型:
String - 修饰符:
package-private - 源码定位:
L22 - 说明:
TODO
- 类型:
-
LOOT_TABLE_SEED_TAG- 类型:
String - 修饰符:
package-private - 源码定位:
L23 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
ResourceKey<LootTable> getLootTable() @ L25
- 方法名:getLootTable
- 源码定位:L25
- 返回类型:ResourceKey
- 修饰符:package-private
参数:
- 无
说明:
TODO
void setLootTable(ResourceKey<LootTable> lootTable) @ L27
- 方法名:setLootTable
- 源码定位:L27
- 返回类型:void
- 修饰符:package-private
参数:
- lootTable: ResourceKey
说明:
TODO
default void setLootTable(ResourceKey<LootTable> lootTable, long seed) @ L29
- 方法名:setLootTable
- 源码定位:L29
- 返回类型:void
- 修饰符:default
参数:
- lootTable: ResourceKey
- seed: long
说明:
TODO
long getLootTableSeed() @ L34
- 方法名:getLootTableSeed
- 源码定位:L34
- 返回类型:long
- 修饰符:package-private
参数:
- 无
说明:
TODO
void setLootTableSeed(long lootTableSeed) @ L36
- 方法名:setLootTableSeed
- 源码定位:L36
- 返回类型:void
- 修饰符:package-private
参数:
- lootTableSeed: long
说明:
TODO
BlockPos getBlockPos() @ L38
- 方法名:getBlockPos
- 源码定位:L38
- 返回类型:BlockPos
- 修饰符:package-private
参数:
- 无
说明:
TODO
Level getLevel() @ L40
- 方法名:getLevel
- 源码定位:L40
- 返回类型:Level
- 修饰符:package-private
参数:
- 无
说明:
TODO
static void setBlockEntityLootTable(BlockGetter level, RandomSource random, BlockPos blockEntityPos, ResourceKey<LootTable> lootTable) @ L42
- 方法名:setBlockEntityLootTable
- 源码定位:L42
- 返回类型:void
- 修饰符:static
参数:
- level: BlockGetter
- random: RandomSource
- blockEntityPos: BlockPos
- lootTable: ResourceKey
说明:
TODO
default boolean tryLoadLootTable(ValueInput base) @ L48
- 方法名:tryLoadLootTable
- 源码定位:L48
- 返回类型:boolean
- 修饰符:default
参数:
- base: ValueInput
说明:
TODO
default boolean trySaveLootTable(ValueOutput base) @ L55
- 方法名:trySaveLootTable
- 源码定位:L55
- 返回类型:boolean
- 修饰符:default
参数:
- base: ValueOutput
说明:
TODO
default void unpackLootTable(Player player) @ L70
- 方法名:unpackLootTable
- 源码定位:L70
- 返回类型:void
- 修饰符:default
参数:
- player: Player
说明:
TODO
代码
public interface RandomizableContainer extends Container {
String LOOT_TABLE_TAG = "LootTable";
String LOOT_TABLE_SEED_TAG = "LootTableSeed";
@Nullable ResourceKey<LootTable> getLootTable();
void setLootTable(final @Nullable ResourceKey<LootTable> lootTable);
default void setLootTable(ResourceKey<LootTable> lootTable, long seed) {
this.setLootTable(lootTable);
this.setLootTableSeed(seed);
}
long getLootTableSeed();
void setLootTableSeed(final long lootTableSeed);
BlockPos getBlockPos();
@Nullable Level getLevel();
static void setBlockEntityLootTable(BlockGetter level, RandomSource random, BlockPos blockEntityPos, ResourceKey<LootTable> lootTable) {
if (level.getBlockEntity(blockEntityPos) instanceof RandomizableContainer randomizableContainer) {
randomizableContainer.setLootTable(lootTable, random.nextLong());
}
}
default boolean tryLoadLootTable(ValueInput base) {
ResourceKey<LootTable> lootTable = base.read("LootTable", LootTable.KEY_CODEC).orElse(null);
this.setLootTable(lootTable);
this.setLootTableSeed(base.getLongOr("LootTableSeed", 0L));
return lootTable != null;
}
default boolean trySaveLootTable(ValueOutput base) {
ResourceKey<LootTable> lootTable = this.getLootTable();
if (lootTable == null) {
return false;
} else {
base.store("LootTable", LootTable.KEY_CODEC, lootTable);
long lootTableSeed = this.getLootTableSeed();
if (lootTableSeed != 0L) {
base.putLong("LootTableSeed", lootTableSeed);
}
return true;
}
}
default void unpackLootTable(@Nullable Player player) {
Level level = this.getLevel();
BlockPos worldPosition = this.getBlockPos();
ResourceKey<LootTable> lootTableKey = this.getLootTable();
if (lootTableKey != null && level != null && level.getServer() != null) {
LootTable lootTable = level.getServer().reloadableRegistries().getLootTable(lootTableKey);
if (player instanceof ServerPlayer) {
CriteriaTriggers.GENERATE_LOOT.trigger((ServerPlayer)player, lootTableKey);
}
this.setLootTable(null);
LootParams.Builder params = new LootParams.Builder((ServerLevel)level).withParameter(LootContextParams.ORIGIN, Vec3.atCenterOf(worldPosition));
if (player != null) {
params.withLuck(player.getLuck()).withParameter(LootContextParams.THIS_ENTITY, player);
}
lootTable.fill(this, params.create(LootContextParamSets.CHEST), this.getLootTableSeed());
}
}
}引用的其他类
-
- 引用位置:
参数/返回值
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
继承
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
Builder(), LootParams.Builder()
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Vec3.atCenterOf()
- 引用位置: