怪物不会掉落我通过战利品修改器添加到他们战利品表中的物品。我有大约60个战利品修改器文件,但为了简单起见,让我们假设我唯一的战利品修改器是spider_charm_from_spiders.json。该文件看起来像:
{
"type": "reinvigoration:add_item",
"conditions": [
{
"condition": "minecraft:entity_properties",
"predicate": {
"type": "minecraft:spider"
},
"entity": "this"
},
{
"condition": "minecraft:killed_by_player"
}
],
"item": "reinvigoration:spider_charm"
}
字符串
位于src/main/resources/data/reinvigoration/loot_modifiers/spider_charm_from_spiders.json
我的global_loot_modifiers. json类位于src/main/resources/data/forge/loot_modifiers/global_loot_modifiers. json,看起来像这样:
{
"replace": false,
"entries": [
"reinvigoration:spider_charm_from_spiders"
]
}
型
我有两个类,AddItemModifier.java和ModLootModifiers.java,在src/main/java/com/soliid/reinvigoraion/loot中。
AddItemModifier:
package com.soliid.reinvigoration.loot;
import com.google.common.base.Suppliers;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.storage.loot.LootContext;
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition;
import net.minecraftforge.common.loot.IGlobalLootModifier;
import net.minecraftforge.common.loot.LootModifier;
import net.minecraftforge.registries.ForgeRegistries;
import org.jetbrains.annotations.NotNull;
import java.util.function.Supplier;
public class AddItemModifier extends LootModifier {
public static final Supplier<Codec<AddItemModifier>> CODEC = Suppliers.memoize(()
-> RecordCodecBuilder.create(inst -> codecStart(inst).and(ForgeRegistries.ITEMS.getCodec()
.fieldOf("item").forGetter(m -> m.item)).apply(inst, AddItemModifier::new)));
private final Item item;
protected AddItemModifier(LootItemCondition[] conditionsIn, Item item) {
super(conditionsIn);
this.item = item;
}
@Override
@NotNull
protected ObjectArrayList<ItemStack> doApply(ObjectArrayList<ItemStack> generatedLoot, LootContext context) {
generatedLoot.add(new ItemStack(item));
return generatedLoot;
}
@Override
public Codec<? extends IGlobalLootModifier> codec() {
return CODEC.get();
}
}
型
ModLootModifiers:
package com.soliid.reinvigoration.loot;
import com.mojang.serialization.Codec;
import com.soliid.reinvigoration.Reinvigoration;
import net.minecraftforge.common.loot.IGlobalLootModifier;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
public class ModLootModifiers {
public static final DeferredRegister<Codec<? extends IGlobalLootModifier>> LOOT_MODIFIER_SERIALIZERS =
DeferredRegister.create(ForgeRegistries.Keys.GLOBAL_LOOT_MODIFIER_SERIALIZERS, Reinvigoration.MODID);
public static final RegistryObject<Codec<? extends IGlobalLootModifier>> ADD_ITEM =
LOOT_MODIFIER_SERIALIZERS.register("add_item", AddItemModifier.CODEC);
public static void register(IEventBus bus) {
LOOT_MODIFIER_SERIALIZERS.register(bus);
}
}
型
我在我的主类中注册了LOOT_MODIFIER_SERIALIZERS:
ModLootModifiers.register(modEventBus);
型
当我建造和玩游戏时,蜘蛛不会掉蜘蛛符咒。我正在修改IntelliJ IDEA社区版2023.1.2
1条答案
按热度按时间1qczuiv01#
我也有同样的问题。这显然是在最新的锻造版本中被打破的。有一个PR等待合并,以解决问题:https://github.com/MinecraftForge/MinecraftForge/pull/9554