VanillaNetherAdvancements.java
net.minecraft.data.advancements.packs.VanillaNetherAdvancements
信息
- 全限定名:net.minecraft.data.advancements.packs.VanillaNetherAdvancements
- 类型:public class
- 包:net.minecraft.data.advancements.packs
- 源码路径:src/main/java/net/minecraft/data/advancements/packs/VanillaNetherAdvancements.java
- 起始行号:L60
- 实现:AdvancementSubProvider
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
public void generate(HolderLookup.Provider registries, Consumer<AdvancementHolder> output) @ L61
- 方法名:generate
- 源码定位:L61
- 返回类型:void
- 修饰符:public
参数:
- registries: HolderLookup.Provider
- output: Consumer
说明:
TODO
代码
public class VanillaNetherAdvancements implements AdvancementSubProvider {
@Override
public void generate(HolderLookup.Provider registries, Consumer<AdvancementHolder> output) {
HolderGetter<EntityType<?>> entityTypes = registries.lookupOrThrow(Registries.ENTITY_TYPE);
HolderGetter<Item> items = registries.lookupOrThrow(Registries.ITEM);
HolderGetter<Block> blocks = registries.lookupOrThrow(Registries.BLOCK);
AdvancementHolder root = Advancement.Builder.advancement()
.display(
Blocks.RED_NETHER_BRICKS,
Component.translatable("advancements.nether.root.title"),
Component.translatable("advancements.nether.root.description"),
Identifier.withDefaultNamespace("gui/advancements/backgrounds/nether"),
AdvancementType.TASK,
false,
false,
false
)
.addCriterion("entered_nether", ChangeDimensionTrigger.TriggerInstance.changedDimensionTo(Level.NETHER))
.save(output, "nether/root");
AdvancementHolder returnToSender = Advancement.Builder.advancement()
.parent(root)
.display(
Items.FIRE_CHARGE,
Component.translatable("advancements.nether.return_to_sender.title"),
Component.translatable("advancements.nether.return_to_sender.description"),
null,
AdvancementType.CHALLENGE,
true,
true,
false
)
.rewards(AdvancementRewards.Builder.experience(50))
.addCriterion(
"killed_ghast",
KilledTrigger.TriggerInstance.playerKilledEntity(
EntityPredicate.Builder.entity().of(entityTypes, EntityType.GHAST),
DamageSourcePredicate.Builder.damageType()
.tag(TagPredicate.is(DamageTypeTags.IS_PROJECTILE))
.direct(EntityPredicate.Builder.entity().of(entityTypes, EntityType.FIREBALL))
)
)
.save(output, "nether/return_to_sender");
AdvancementHolder findFortress = Advancement.Builder.advancement()
.parent(root)
.display(
Blocks.NETHER_BRICKS,
Component.translatable("advancements.nether.find_fortress.title"),
Component.translatable("advancements.nether.find_fortress.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"fortress",
PlayerTrigger.TriggerInstance.located(
LocationPredicate.Builder.inStructure(registries.lookupOrThrow(Registries.STRUCTURE).getOrThrow(BuiltinStructures.FORTRESS))
)
)
.save(output, "nether/find_fortress");
Advancement.Builder.advancement()
.parent(root)
.display(
Items.MAP,
Component.translatable("advancements.nether.fast_travel.title"),
Component.translatable("advancements.nether.fast_travel.description"),
null,
AdvancementType.CHALLENGE,
true,
true,
false
)
.rewards(AdvancementRewards.Builder.experience(100))
.addCriterion(
"travelled", DistanceTrigger.TriggerInstance.travelledThroughNether(DistancePredicate.horizontal(MinMaxBounds.Doubles.atLeast(7000.0)))
)
.save(output, "nether/fast_travel");
Advancement.Builder.advancement()
.parent(returnToSender)
.display(
Items.GHAST_TEAR,
Component.translatable("advancements.nether.uneasy_alliance.title"),
Component.translatable("advancements.nether.uneasy_alliance.description"),
null,
AdvancementType.CHALLENGE,
true,
true,
false
)
.rewards(AdvancementRewards.Builder.experience(100))
.addCriterion(
"killed_ghast",
KilledTrigger.TriggerInstance.playerKilledEntity(
EntityPredicate.Builder.entity().of(entityTypes, EntityType.GHAST).located(LocationPredicate.Builder.inDimension(Level.OVERWORLD))
)
)
.save(output, "nether/uneasy_alliance");
AdvancementHolder getWitherSkull = Advancement.Builder.advancement()
.parent(findFortress)
.display(
Blocks.WITHER_SKELETON_SKULL,
Component.translatable("advancements.nether.get_wither_skull.title"),
Component.translatable("advancements.nether.get_wither_skull.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("wither_skull", InventoryChangeTrigger.TriggerInstance.hasItems(Blocks.WITHER_SKELETON_SKULL))
.save(output, "nether/get_wither_skull");
AdvancementHolder summonWither = Advancement.Builder.advancement()
.parent(getWitherSkull)
.display(
Items.NETHER_STAR,
Component.translatable("advancements.nether.summon_wither.title"),
Component.translatable("advancements.nether.summon_wither.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("summoned", SummonedEntityTrigger.TriggerInstance.summonedEntity(EntityPredicate.Builder.entity().of(entityTypes, EntityType.WITHER)))
.save(output, "nether/summon_wither");
AdvancementHolder obtainBlazeRod = Advancement.Builder.advancement()
.parent(findFortress)
.display(
Items.BLAZE_ROD,
Component.translatable("advancements.nether.obtain_blaze_rod.title"),
Component.translatable("advancements.nether.obtain_blaze_rod.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("blaze_rod", InventoryChangeTrigger.TriggerInstance.hasItems(Items.BLAZE_ROD))
.save(output, "nether/obtain_blaze_rod");
AdvancementHolder createBeacon = Advancement.Builder.advancement()
.parent(summonWither)
.display(
Blocks.BEACON,
Component.translatable("advancements.nether.create_beacon.title"),
Component.translatable("advancements.nether.create_beacon.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("beacon", ConstructBeaconTrigger.TriggerInstance.constructedBeacon(MinMaxBounds.Ints.atLeast(1)))
.save(output, "nether/create_beacon");
Advancement.Builder.advancement()
.parent(createBeacon)
.display(
Blocks.BEACON,
Component.translatable("advancements.nether.create_full_beacon.title"),
Component.translatable("advancements.nether.create_full_beacon.description"),
null,
AdvancementType.GOAL,
true,
true,
false
)
.addCriterion("beacon", ConstructBeaconTrigger.TriggerInstance.constructedBeacon(MinMaxBounds.Ints.exactly(4)))
.save(output, "nether/create_full_beacon");
AdvancementHolder brewPotion = Advancement.Builder.advancement()
.parent(obtainBlazeRod)
.display(
Items.POTION,
Component.translatable("advancements.nether.brew_potion.title"),
Component.translatable("advancements.nether.brew_potion.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("potion", BrewedPotionTrigger.TriggerInstance.brewedPotion())
.save(output, "nether/brew_potion");
AdvancementHolder allPotions = Advancement.Builder.advancement()
.parent(brewPotion)
.display(
Items.MILK_BUCKET,
Component.translatable("advancements.nether.all_potions.title"),
Component.translatable("advancements.nether.all_potions.description"),
null,
AdvancementType.CHALLENGE,
true,
true,
false
)
.rewards(AdvancementRewards.Builder.experience(100))
.addCriterion(
"all_effects",
EffectsChangedTrigger.TriggerInstance.hasEffects(
MobEffectsPredicate.Builder.effects()
.and(MobEffects.SPEED)
.and(MobEffects.SLOWNESS)
.and(MobEffects.STRENGTH)
.and(MobEffects.JUMP_BOOST)
.and(MobEffects.REGENERATION)
.and(MobEffects.FIRE_RESISTANCE)
.and(MobEffects.WATER_BREATHING)
.and(MobEffects.INVISIBILITY)
.and(MobEffects.NIGHT_VISION)
.and(MobEffects.WEAKNESS)
.and(MobEffects.POISON)
.and(MobEffects.SLOW_FALLING)
.and(MobEffects.RESISTANCE)
.and(MobEffects.OOZING)
.and(MobEffects.INFESTED)
.and(MobEffects.WIND_CHARGED)
.and(MobEffects.WEAVING)
)
)
.save(output, "nether/all_potions");
Advancement.Builder.advancement()
.parent(allPotions)
.display(
Items.BUCKET,
Component.translatable("advancements.nether.all_effects.title"),
Component.translatable("advancements.nether.all_effects.description"),
null,
AdvancementType.CHALLENGE,
true,
true,
true
)
.rewards(AdvancementRewards.Builder.experience(1000))
.addCriterion(
"all_effects",
EffectsChangedTrigger.TriggerInstance.hasEffects(
MobEffectsPredicate.Builder.effects()
.and(MobEffects.SPEED)
.and(MobEffects.SLOWNESS)
.and(MobEffects.STRENGTH)
.and(MobEffects.JUMP_BOOST)
.and(MobEffects.REGENERATION)
.and(MobEffects.FIRE_RESISTANCE)
.and(MobEffects.WATER_BREATHING)
.and(MobEffects.INVISIBILITY)
.and(MobEffects.NIGHT_VISION)
.and(MobEffects.WEAKNESS)
.and(MobEffects.POISON)
.and(MobEffects.WITHER)
.and(MobEffects.HASTE)
.and(MobEffects.MINING_FATIGUE)
.and(MobEffects.LEVITATION)
.and(MobEffects.GLOWING)
.and(MobEffects.ABSORPTION)
.and(MobEffects.HUNGER)
.and(MobEffects.NAUSEA)
.and(MobEffects.RESISTANCE)
.and(MobEffects.SLOW_FALLING)
.and(MobEffects.CONDUIT_POWER)
.and(MobEffects.DOLPHINS_GRACE)
.and(MobEffects.BLINDNESS)
.and(MobEffects.BAD_OMEN)
.and(MobEffects.HERO_OF_THE_VILLAGE)
.and(MobEffects.DARKNESS)
.and(MobEffects.OOZING)
.and(MobEffects.INFESTED)
.and(MobEffects.WIND_CHARGED)
.and(MobEffects.WEAVING)
.and(MobEffects.TRIAL_OMEN)
.and(MobEffects.RAID_OMEN)
.and(MobEffects.BREATH_OF_THE_NAUTILUS)
)
)
.save(output, "nether/all_effects");
AdvancementHolder obtainAncientDebris = Advancement.Builder.advancement()
.parent(root)
.display(
Items.ANCIENT_DEBRIS,
Component.translatable("advancements.nether.obtain_ancient_debris.title"),
Component.translatable("advancements.nether.obtain_ancient_debris.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("ancient_debris", InventoryChangeTrigger.TriggerInstance.hasItems(Items.ANCIENT_DEBRIS))
.save(output, "nether/obtain_ancient_debris");
Advancement.Builder.advancement()
.parent(obtainAncientDebris)
.display(
Items.NETHERITE_CHESTPLATE,
Component.translatable("advancements.nether.netherite_armor.title"),
Component.translatable("advancements.nether.netherite_armor.description"),
null,
AdvancementType.CHALLENGE,
true,
true,
false
)
.rewards(AdvancementRewards.Builder.experience(100))
.addCriterion(
"netherite_armor",
InventoryChangeTrigger.TriggerInstance.hasItems(
Items.NETHERITE_HELMET, Items.NETHERITE_CHESTPLATE, Items.NETHERITE_LEGGINGS, Items.NETHERITE_BOOTS
)
)
.save(output, "nether/netherite_armor");
AdvancementHolder obtainCryingObsidian = Advancement.Builder.advancement()
.parent(root)
.display(
Items.CRYING_OBSIDIAN,
Component.translatable("advancements.nether.obtain_crying_obsidian.title"),
Component.translatable("advancements.nether.obtain_crying_obsidian.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion("crying_obsidian", InventoryChangeTrigger.TriggerInstance.hasItems(Items.CRYING_OBSIDIAN))
.save(output, "nether/obtain_crying_obsidian");
Advancement.Builder.advancement()
.parent(obtainCryingObsidian)
.display(
Items.RESPAWN_ANCHOR,
Component.translatable("advancements.nether.charge_respawn_anchor.title"),
Component.translatable("advancements.nether.charge_respawn_anchor.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"charge_respawn_anchor",
ItemUsedOnLocationTrigger.TriggerInstance.itemUsedOnBlock(
LocationPredicate.Builder.location()
.setBlock(
BlockPredicate.Builder.block()
.of(blocks, Blocks.RESPAWN_ANCHOR)
.setProperties(StatePropertiesPredicate.Builder.properties().hasProperty(RespawnAnchorBlock.CHARGE, 4))
),
ItemPredicate.Builder.item().of(items, Blocks.GLOWSTONE)
)
)
.save(output, "nether/charge_respawn_anchor");
AdvancementHolder rideStrider = Advancement.Builder.advancement()
.parent(root)
.display(
Items.WARPED_FUNGUS_ON_A_STICK,
Component.translatable("advancements.nether.ride_strider.title"),
Component.translatable("advancements.nether.ride_strider.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"used_warped_fungus_on_a_stick",
ItemDurabilityTrigger.TriggerInstance.changedDurability(
Optional.of(
EntityPredicate.wrap(EntityPredicate.Builder.entity().vehicle(EntityPredicate.Builder.entity().of(entityTypes, EntityType.STRIDER)))
),
Optional.of(ItemPredicate.Builder.item().of(items, Items.WARPED_FUNGUS_ON_A_STICK).build()),
MinMaxBounds.Ints.ANY
)
)
.save(output, "nether/ride_strider");
Advancement.Builder.advancement()
.parent(rideStrider)
.display(
Items.WARPED_FUNGUS_ON_A_STICK,
Component.translatable("advancements.nether.ride_strider_in_overworld_lava.title"),
Component.translatable("advancements.nether.ride_strider_in_overworld_lava.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"ride_entity_distance",
DistanceTrigger.TriggerInstance.rideEntityInLava(
EntityPredicate.Builder.entity()
.located(LocationPredicate.Builder.inDimension(Level.OVERWORLD))
.vehicle(EntityPredicate.Builder.entity().of(entityTypes, EntityType.STRIDER)),
DistancePredicate.horizontal(MinMaxBounds.Doubles.atLeast(50.0))
)
)
.save(output, "nether/ride_strider_in_overworld_lava");
VanillaAdventureAdvancements.addBiomes(
Advancement.Builder.advancement(), registries, MultiNoiseBiomeSourceParameterList.Preset.NETHER.usedBiomes().toList()
)
.parent(rideStrider)
.display(
Items.NETHERITE_BOOTS,
Component.translatable("advancements.nether.explore_nether.title"),
Component.translatable("advancements.nether.explore_nether.description"),
null,
AdvancementType.CHALLENGE,
true,
true,
false
)
.rewards(AdvancementRewards.Builder.experience(500))
.save(output, "nether/explore_nether");
AdvancementHolder findBastion = Advancement.Builder.advancement()
.parent(root)
.display(
Items.POLISHED_BLACKSTONE_BRICKS,
Component.translatable("advancements.nether.find_bastion.title"),
Component.translatable("advancements.nether.find_bastion.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"bastion",
PlayerTrigger.TriggerInstance.located(
LocationPredicate.Builder.inStructure(registries.lookupOrThrow(Registries.STRUCTURE).getOrThrow(BuiltinStructures.BASTION_REMNANT))
)
)
.save(output, "nether/find_bastion");
Advancement.Builder.advancement()
.parent(findBastion)
.display(
Blocks.CHEST,
Component.translatable("advancements.nether.loot_bastion.title"),
Component.translatable("advancements.nether.loot_bastion.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.requirements(AdvancementRequirements.Strategy.OR)
.addCriterion("loot_bastion_other", LootTableTrigger.TriggerInstance.lootTableUsed(BuiltInLootTables.BASTION_OTHER))
.addCriterion("loot_bastion_treasure", LootTableTrigger.TriggerInstance.lootTableUsed(BuiltInLootTables.BASTION_TREASURE))
.addCriterion("loot_bastion_hoglin_stable", LootTableTrigger.TriggerInstance.lootTableUsed(BuiltInLootTables.BASTION_HOGLIN_STABLE))
.addCriterion("loot_bastion_bridge", LootTableTrigger.TriggerInstance.lootTableUsed(BuiltInLootTables.BASTION_BRIDGE))
.save(output, "nether/loot_bastion");
ContextAwarePredicate distractPiglinPlayerArmorPredicate = ContextAwarePredicate.create(
LootItemEntityPropertyCondition.hasProperties(
LootContext.EntityTarget.THIS,
EntityPredicate.Builder.entity()
.equipment(EntityEquipmentPredicate.Builder.equipment().head(ItemPredicate.Builder.item().of(items, ItemTags.PIGLIN_SAFE_ARMOR)))
)
.invert()
.build(),
LootItemEntityPropertyCondition.hasProperties(
LootContext.EntityTarget.THIS,
EntityPredicate.Builder.entity()
.equipment(EntityEquipmentPredicate.Builder.equipment().chest(ItemPredicate.Builder.item().of(items, ItemTags.PIGLIN_SAFE_ARMOR)))
)
.invert()
.build(),
LootItemEntityPropertyCondition.hasProperties(
LootContext.EntityTarget.THIS,
EntityPredicate.Builder.entity()
.equipment(EntityEquipmentPredicate.Builder.equipment().legs(ItemPredicate.Builder.item().of(items, ItemTags.PIGLIN_SAFE_ARMOR)))
)
.invert()
.build(),
LootItemEntityPropertyCondition.hasProperties(
LootContext.EntityTarget.THIS,
EntityPredicate.Builder.entity()
.equipment(EntityEquipmentPredicate.Builder.equipment().feet(ItemPredicate.Builder.item().of(items, ItemTags.PIGLIN_SAFE_ARMOR)))
)
.invert()
.build()
);
Advancement.Builder.advancement()
.parent(root)
.requirements(AdvancementRequirements.Strategy.OR)
.display(
Items.GOLD_INGOT,
Component.translatable("advancements.nether.distract_piglin.title"),
Component.translatable("advancements.nether.distract_piglin.description"),
null,
AdvancementType.TASK,
true,
true,
false
)
.addCriterion(
"distract_piglin",
PickedUpItemTrigger.TriggerInstance.thrownItemPickedUpByEntity(
distractPiglinPlayerArmorPredicate,
Optional.of(ItemPredicate.Builder.item().of(items, ItemTags.PIGLIN_LOVED).build()),
Optional.of(
EntityPredicate.wrap(
EntityPredicate.Builder.entity().of(entityTypes, EntityType.PIGLIN).flags(EntityFlagsPredicate.Builder.flags().setIsBaby(false))
)
)
)
)
.addCriterion(
"distract_piglin_directly",
PlayerInteractTrigger.TriggerInstance.itemUsedOnEntity(
Optional.of(distractPiglinPlayerArmorPredicate),
ItemPredicate.Builder.item().of(items, PiglinAi.BARTERING_ITEM),
Optional.of(
EntityPredicate.wrap(
EntityPredicate.Builder.entity().of(entityTypes, EntityType.PIGLIN).flags(EntityFlagsPredicate.Builder.flags().setIsBaby(false))
)
)
)
)
.save(output, "nether/distract_piglin");
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
Advancement.Builder.advancement()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
AdvancementRewards.Builder.experience()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
BlockPredicate.Builder.block()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
BrewedPotionTrigger.TriggerInstance.brewedPotion()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ChangeDimensionTrigger.TriggerInstance.changedDimensionTo()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ConstructBeaconTrigger.TriggerInstance.constructedBeacon()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ContextAwarePredicate.create()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
DamageSourcePredicate.Builder.damageType()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
DistancePredicate.horizontal()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
DistanceTrigger.TriggerInstance.rideEntityInLava(), DistanceTrigger.TriggerInstance.travelledThroughNether()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
EffectsChangedTrigger.TriggerInstance.hasEffects()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
EntityEquipmentPredicate.Builder.equipment()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
EntityFlagsPredicate.Builder.flags()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
EntityPredicate.Builder.entity(), EntityPredicate.wrap()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
InventoryChangeTrigger.TriggerInstance.hasItems()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ItemDurabilityTrigger.TriggerInstance.changedDurability()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ItemPredicate.Builder.item()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ItemUsedOnLocationTrigger.TriggerInstance.itemUsedOnBlock()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
KilledTrigger.TriggerInstance.playerKilledEntity()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
LocationPredicate.Builder.inDimension(), LocationPredicate.Builder.inStructure(), LocationPredicate.Builder.location()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
LootTableTrigger.TriggerInstance.lootTableUsed()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
MinMaxBounds.Doubles.atLeast(), MinMaxBounds.Ints.atLeast(), MinMaxBounds.Ints.exactly()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
MobEffectsPredicate.Builder.effects()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
PickedUpItemTrigger.TriggerInstance.thrownItemPickedUpByEntity()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
PlayerInteractTrigger.TriggerInstance.itemUsedOnEntity()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
PlayerTrigger.TriggerInstance.located()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
StatePropertiesPredicate.Builder.properties()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
SummonedEntityTrigger.TriggerInstance.summonedEntity()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
TagPredicate.is()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
实现
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
VanillaAdventureAdvancements.addBiomes()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Component.translatable()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Identifier.withDefaultNamespace()
- 引用位置:
-
LootItemEntityPropertyCondition
- 引用位置:
方法调用 - 关联成员:
LootItemEntityPropertyCondition.hasProperties()
- 引用位置: