Halp loot tables

unlisted ⁨4⁩ ⁨files⁩ 2022-01-10 23:44:14 UTC

AKMBodyStructureAdditionModifier.java

Raw
public class AKMBodyStructureAdditionModifier extends LootModifier {
    private final Item addition;

    protected AKMBodyStructureAdditionModifier(ILootCondition[] conditionsIn, Item addition) {
        super(conditionsIn);
        this.addition = addition;
    }

    @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!
        if(context.getRandom().nextFloat() > 0.15) {
            generatedLoot.add(new ItemStack(addition, 1));
        }
        return generatedLoot;
    }

    public static class Serializer extends GlobalLootModifierSerializer<AKMBodyStructureAdditionModifier> {

        @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;
        }
    }
}

LootEventBusEvents.java

Raw
@Mod.EventBusSubscriber(modid = MoGuns.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE)
public class LootEventBusEvents {

    @SubscribeEvent
    public static void registerModifierSerializers(@Nonnull final RegistryEvent.Register<GlobalLootModifierSerializer<?>>
                                                           event) {

                new AKMBodyStructureAdditionModifier.Serializer().setRegistryName
                        (new ResourceLocation(MoGuns.MOD_ID,"akm_body_dungeon"));

    }
}

akm_body_dungeon.json

Raw
{
  "conditions": [
    {
      "condition": "forge:loot_table_id",
      "loot_table_id": "minecraft:chests/simple_dungeon"
    }
  ],
  "addition": "moguns:akm_body"
}

global_loot_modifiers.json

Raw
{
  "replace": false,
  "entries": [
    "moguns:akm_body_dungeon"
  ]
}