public class AKMBodyStructureAdditionModifier extends LootModifier { private final Item addition; protected AKMBodyStructureAdditionModifier(ILootCondition[] conditionsIn, Item addition) { super(conditionsIn); this.addition = addition; } @Nonnull @Override protected List doApply(List generatedLoot, LootContext context) { // generatedLoot is the loot that would be dropped, if we wouldn't add or replace // anything! if(context.getRandom().nextFloat() > 0.15) { generatedLoot.add(new ItemStack(addition, 1)); } return generatedLoot; } public static class Serializer extends GlobalLootModifierSerializer { @Override public AKMBodyStructureAdditionModifier read(ResourceLocation name, JsonObject object, ILootCondition[] conditionsIn) { Item addition = ForgeRegistries.ITEMS.getValue( new ResourceLocation(JSONUtils.getString(object, "addition"))); return new AKMBodyStructureAdditionModifier(conditionsIn, addition); } @Override public JsonObject write(AKMBodyStructureAdditionModifier instance) { JsonObject json = makeConditions(instance.conditions); json.addProperty("addition", ForgeRegistries.ITEMS.getKey(instance.addition).toString()); return json; } } }