VanillaShearingLoot.java

net.minecraft.data.loot.packs.VanillaShearingLoot

信息

  • 全限定名:net.minecraft.data.loot.packs.VanillaShearingLoot
  • 类型:public record
  • 包:net.minecraft.data.loot.packs
  • 源码路径:src/main/java/net/minecraft/data/loot/packs/VanillaShearingLoot.java
  • 起始行号:L26
  • 实现:LootTableSubProvider
  • 职责:

    TODO

字段/常量

内部类/嵌套类型

构造器

方法

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

public void generate(BiConsumer<ResourceKey<LootTable>,LootTable.Builder> output) @ L27

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

参数:

  • output: BiConsumer<ResourceKey,LootTable.Builder>

说明:

TODO

代码

public record VanillaShearingLoot(HolderLookup.Provider registries) implements LootTableSubProvider {
    @Override
    public void generate(BiConsumer<ResourceKey<LootTable>, LootTable.Builder> output) {
        output.accept(
            BuiltInLootTables.BOGGED_SHEAR,
            LootTable.lootTable()
                .withPool(
                    LootPool.lootPool()
                        .setRolls(ConstantValue.exactly(2.0F))
                        .add(LootItem.lootTableItem(Items.BROWN_MUSHROOM).apply(SetItemCountFunction.setCount(ConstantValue.exactly(1.0F))))
                        .add(LootItem.lootTableItem(Items.RED_MUSHROOM).apply(SetItemCountFunction.setCount(ConstantValue.exactly(1.0F))))
                )
        );
        LootData.WOOL_ITEM_BY_DYE
            .forEach(
                (dye, wool) -> output.accept(
                    BuiltInLootTables.SHEAR_SHEEP_BY_DYE.get(dye),
                    LootTable.lootTable().withPool(LootPool.lootPool().setRolls(UniformGenerator.between(1.0F, 3.0F)).add(LootItem.lootTableItem(wool)))
                )
            );
        output.accept(
            BuiltInLootTables.SHEAR_SHEEP, LootTable.lootTable().withPool(EntityLootSubProvider.createSheepDispatchPool(BuiltInLootTables.SHEAR_SHEEP_BY_DYE))
        );
        output.accept(
            BuiltInLootTables.SHEAR_MOOSHROOM,
            LootTable.lootTable()
                .withPool(
                    LootPool.lootPool()
                        .add(
                            AlternativesEntry.alternatives(
                                NestedLootTable.lootTableReference(BuiltInLootTables.SHEAR_RED_MOOSHROOM)
                                    .when(
                                        LootItemEntityPropertyCondition.hasProperties(
                                            LootContext.EntityTarget.THIS,
                                            EntityPredicate.Builder.entity()
                                                .components(
                                                    DataComponentMatchers.Builder.components()
                                                        .exact(DataComponentExactPredicate.expect(DataComponents.MOOSHROOM_VARIANT, MushroomCow.Variant.RED))
                                                        .build()
                                                )
                                        )
                                    ),
                                NestedLootTable.lootTableReference(BuiltInLootTables.SHEAR_BROWN_MOOSHROOM)
                                    .when(
                                        LootItemEntityPropertyCondition.hasProperties(
                                            LootContext.EntityTarget.THIS,
                                            EntityPredicate.Builder.entity()
                                                .components(
                                                    DataComponentMatchers.Builder.components()
                                                        .exact(DataComponentExactPredicate.expect(DataComponents.MOOSHROOM_VARIANT, MushroomCow.Variant.BROWN))
                                                        .build()
                                                )
                                        )
                                    )
                            )
                        )
                )
        );
        output.accept(
            BuiltInLootTables.SHEAR_RED_MOOSHROOM,
            LootTable.lootTable().withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(5.0F)).add(LootItem.lootTableItem(Items.RED_MUSHROOM)))
        );
        output.accept(
            BuiltInLootTables.SHEAR_BROWN_MOOSHROOM,
            LootTable.lootTable().withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(5.0F)).add(LootItem.lootTableItem(Items.BROWN_MUSHROOM)))
        );
        output.accept(
            BuiltInLootTables.SHEAR_SNOW_GOLEM,
            LootTable.lootTable().withPool(LootPool.lootPool().setRolls(ConstantValue.exactly(1.0F)).add(LootItem.lootTableItem(Items.CARVED_PUMPKIN)))
        );
    }
}

引用的其他类

  • DataComponentMatchers

    • 引用位置: 方法调用
    • 关联成员: DataComponentMatchers.Builder.components()
  • EntityPredicate

    • 引用位置: 方法调用
    • 关联成员: EntityPredicate.Builder.entity()
  • DataComponentExactPredicate

    • 引用位置: 方法调用
    • 关联成员: DataComponentExactPredicate.expect()
  • EntityLootSubProvider

    • 引用位置: 方法调用
    • 关联成员: EntityLootSubProvider.createSheepDispatchPool()
  • LootTableSubProvider

    • 引用位置: 实现
  • ResourceKey

    • 引用位置: 参数
  • LootPool

    • 引用位置: 方法调用
    • 关联成员: LootPool.lootPool()
  • LootTable

    • 引用位置: 参数/方法调用
    • 关联成员: LootTable.lootTable()
  • AlternativesEntry

    • 引用位置: 方法调用
    • 关联成员: AlternativesEntry.alternatives()
  • LootItem

    • 引用位置: 方法调用
    • 关联成员: LootItem.lootTableItem()
  • NestedLootTable

    • 引用位置: 方法调用
    • 关联成员: NestedLootTable.lootTableReference()
  • SetItemCountFunction

    • 引用位置: 方法调用
    • 关联成员: SetItemCountFunction.setCount()
  • LootItemEntityPropertyCondition

    • 引用位置: 方法调用
    • 关联成员: LootItemEntityPropertyCondition.hasProperties()
  • ConstantValue

    • 引用位置: 方法调用
    • 关联成员: ConstantValue.exactly()
  • UniformGenerator

    • 引用位置: 方法调用
    • 关联成员: UniformGenerator.between()