跳到主要内容

18修改战利品

具体代码

/**
* @author houyunfei
*/
public class ModLootTableModifiers {
private static final Identifier JUNGLE_TEMPLE_ID =
new Identifier("minecraft", "chests/jungle_temple");
private static final Identifier CREEPER_ID =
new Identifier("minecraft", "entities/creeper");

public static void modifyLootTables() {
LootTableEvents.MODIFY.register((resourceManager, lootManager, id, tableBuilder, source) -> {
if (JUNGLE_TEMPLE_ID.equals(id)) {
// 如果是丛林神庙的箱子 百分百掉落金属探测器
LootPool.Builder poolBuilder = LootPool.builder()
.rolls(ConstantLootNumberProvider.create(1))
.conditionally(RandomChanceLootCondition.builder(1f)) // Drops 100% of the time
.with(ItemEntry.builder(ModItems.METAL_DETECTOR))
.apply(SetCountLootFunction.builder(UniformLootNumberProvider.create(1.0f, 1.0f)).build());

tableBuilder.pool(poolBuilder.build());
}

if (CREEPER_ID.equals(id)) {
// 如果是爬行者 百分百掉落煤砖
LootPool.Builder poolBuilder = LootPool.builder()
.rolls(ConstantLootNumberProvider.create(1))
.conditionally(RandomChanceLootCondition.builder(1f))
.with(ItemEntry.builder(ModItems.COAL_BRIQUETTE))
.apply(SetCountLootFunction.builder(UniformLootNumberProvider.create(1.0f, 1.0f)).build());

tableBuilder.pool(poolBuilder.build());
}
});
}
}

在主类中初始化:

ModLootTableModifiers.modifyLootTables();

测试效果

苦力怕掉落煤炭:

image-20240824221811025

使用命令定位到丛林

/locate structure minecraft:jungle_pyramid

传送:

/tp @s -368 ~ 1024

可以看到生成了我们的金属探测器

image-20240824222040551