Files
SuperNova/src/main/java/net/halbear/supernova/loot_modifiers/ModReplaceLootDrop.java
T
2026-05-17 00:47:05 +01:00

47 lines
1.8 KiB
Java

package net.halbear.supernova.loot_modifiers;
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;
public class ModReplaceLootDrop extends LootModifier {
private final Item addition;
protected ModReplaceLootDrop(ILootCondition[] conditionsIn, Item addition) {
super(conditionsIn);
this.addition = addition;
}
@Nonnull
@Override
protected List<ItemStack> doApply(List<ItemStack> generatedLoot, LootContext lootContext) {
generatedLoot.clear(); // clears the drop that was going to drop
generatedLoot.add(new ItemStack(addition)); // adds new drop to the drop
return generatedLoot;
}
public static class Serializer extends GlobalLootModifierSerializer<ModReplaceLootDrop>{
@Override
public ModReplaceLootDrop read(ResourceLocation name, JsonObject object, ILootCondition[] conditionsIn) {
Item addition = ForgeRegistries.ITEMS.getValue(
new ResourceLocation(JSONUtils.getString(object, "addition")));
return new ModReplaceLootDrop(conditionsIn, addition);
}
@Override
public JsonObject write(ModReplaceLootDrop instance) {
JsonObject json = makeConditions(instance.conditions);
json.addProperty("addition", ForgeRegistries.ITEMS.getKey(instance.addition).toString());
return json;
}
}
}