How to fix it?
error:
blaze_rinkril.json:
{
"conditions": [
{
"condition": "forge:loot_table_id",
"loot_table_id": "minecraft:entities/blaze"
}
],
"addition": "cosrpg:rinkril"
}
global_loot_modifiers.json:
{
"replace": false,
"entries": [
"cosrpg:blaze_rinkril"
]
}
how im trying to register serializer:
package com.auriny.cosrpg.events;
import com.auriny.cosrpg.CoSRPG;
import com.auriny.cosrpg.events.loot.RinkrilAdditionModifier;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.loot.GlobalLootModifierSerializer;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import javax.annotation.Nonnull;
public class ModEventBusEvents {
@SubscribeEvent
public static void registerModifierSerializers(@Nonnull final RegistryEvent.Register<GlobalLootModifierSerializer<?>>
event) {
event.getRegistry().registerAll(
new RinkrilAdditionModifier.Serializer().setRegistryName
(new ResourceLocation(CoSRPG.MOD_ID, "blaze_rinkril"))
);
}
}
RinkrilAdditionModifier:
package com.auriny.cosrpg.events.loot;
import com.google.gson.JsonObject;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.loot.LootContext;
import net.minecraft.loot.conditions.ILootCondition;
import net.minecraft.util.JSONUtils;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.loot.GlobalLootModifierSerializer;
import net.minecraftforge.common.loot.LootModifier;
import net.minecraftforge.registries.ForgeRegistries;
import javax.annotation.Nonnull;
import java.util.List;
import java.util.Objects;
public class RinkrilAdditionModifier extends LootModifier {
private Item addition;
public RinkrilAdditionModifier(ILootCondition[] conditionsIn, Item addition) {
super(conditionsIn);
this.addition = addition;
}
protected RinkrilAdditionModifier(ILootCondition[] conditionsIn) {
super(conditionsIn);
}
@Nonnull
@Override
protected List<ItemStack> doApply(List<ItemStack> generatedLoot, LootContext context) {
// generatedLoot is the loot that would be dropped, if we wouldn't add or replace
// anything!
generatedLoot.add(new ItemStack(addition));
return generatedLoot;
}
public static class Serializer extends GlobalLootModifierSerializer<RinkrilAdditionModifier> {
@Override
public RinkrilAdditionModifier read(ResourceLocation name, JsonObject object, ILootCondition[] conditionsIn) {
Item addition = ForgeRegistries.ITEMS.getValue(
new ResourceLocation(JSONUtils.getAsString(object, "addition")));
return new RinkrilAdditionModifier(conditionsIn, addition);
}
@Override
public JsonObject write(RinkrilAdditionModifier instance) {
JsonObject json = makeConditions(instance.conditions);
json.addProperty("addition", Objects.requireNonNull(ForgeRegistries.ITEMS.getKey(instance.addition)).toString());
return json;
}
}
}
paths: https://prnt.sc/4CdRkN5hf6Xt
it seems to me that I did everything correctly, but since it does not work, there is some kind of error. any help is welcome.