VanillaChargedCreeperExplosionLoot.java
net.minecraft.data.loot.packs.VanillaChargedCreeperExplosionLoot
信息
- 全限定名:net.minecraft.data.loot.packs.VanillaChargedCreeperExplosionLoot
- 类型:public record
- 包:net.minecraft.data.loot.packs
- 源码路径:src/main/java/net/minecraft/data/loot/packs/VanillaChargedCreeperExplosionLoot.java
- 起始行号:L28
- 实现:LootTableSubProvider
- 职责:
TODO
字段/常量
ENTRIES- 类型:
List<VanillaChargedCreeperExplosionLoot.Entry> - 修饰符:
private static final - 源码定位:
L29 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.data.loot.packs.VanillaChargedCreeperExplosionLoot.Entry- 类型:
record - 修饰符:
private - 源码定位:
L64 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
public void generate(BiConsumer<ResourceKey<LootTable>,LootTable.Builder> output) @ L37
- 方法名:generate
- 源码定位:L37
- 返回类型:void
- 修饰符:public
参数:
- output: BiConsumer<ResourceKey
,LootTable.Builder>
说明:
TODO
代码
public record VanillaChargedCreeperExplosionLoot(HolderLookup.Provider registries) implements LootTableSubProvider {
private static final List<VanillaChargedCreeperExplosionLoot.Entry> ENTRIES = List.of(
new VanillaChargedCreeperExplosionLoot.Entry(BuiltInLootTables.CHARGED_CREEPER_PIGLIN, EntityType.PIGLIN, Items.PIGLIN_HEAD),
new VanillaChargedCreeperExplosionLoot.Entry(BuiltInLootTables.CHARGED_CREEPER_CREEPER, EntityType.CREEPER, Items.CREEPER_HEAD),
new VanillaChargedCreeperExplosionLoot.Entry(BuiltInLootTables.CHARGED_CREEPER_SKELETON, EntityType.SKELETON, Items.SKELETON_SKULL),
new VanillaChargedCreeperExplosionLoot.Entry(BuiltInLootTables.CHARGED_CREEPER_WITHER_SKELETON, EntityType.WITHER_SKELETON, Items.WITHER_SKELETON_SKULL),
new VanillaChargedCreeperExplosionLoot.Entry(BuiltInLootTables.CHARGED_CREEPER_ZOMBIE, EntityType.ZOMBIE, Items.ZOMBIE_HEAD)
);
@Override
public void generate(BiConsumer<ResourceKey<LootTable>, LootTable.Builder> output) {
HolderGetter<EntityType<?>> entityTypes = this.registries.lookupOrThrow(Registries.ENTITY_TYPE);
List<LootPoolEntryContainer.Builder<?>> alternatives = new ArrayList<>(ENTRIES.size());
for (VanillaChargedCreeperExplosionLoot.Entry entry : ENTRIES) {
output.accept(
entry.lootTable,
LootTable.lootTable().withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1.0F)).add(LootItem.lootTableItem(entry.item)))
);
LootItemCondition.Builder predicate = LootItemEntityPropertyCondition.hasProperties(
LootContext.EntityTarget.THIS, EntityPredicate.Builder.entity().entityType(EntityTypePredicate.of(entityTypes, entry.entityType))
);
alternatives.add(NestedLootTable.lootTableReference(entry.lootTable).when(predicate));
}
output.accept(
BuiltInLootTables.CHARGED_CREEPER,
LootTable.lootTable()
.withPool(
LootPool.lootPool()
.setRolls(ConstantValue.exactly(1.0F))
.add(AlternativesEntry.alternatives(alternatives.toArray(LootPoolEntryContainer.Builder[]::new)))
)
);
}
private record Entry(ResourceKey<LootTable> lootTable, EntityType<?> entityType, Item item) {
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
EntityPredicate.Builder.entity()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
EntityTypePredicate.of()
- 引用位置:
-
- 引用位置:
实现
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
LootPool.lootPool()
- 引用位置:
-
- 引用位置:
参数/方法调用 - 关联成员:
LootTable.lootTable()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
AlternativesEntry.alternatives()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
LootItem.lootTableItem()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
NestedLootTable.lootTableReference()
- 引用位置:
-
LootItemEntityPropertyCondition
- 引用位置:
方法调用 - 关联成员:
LootItemEntityPropertyCondition.hasProperties()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ConstantValue.exactly()
- 引用位置: