diff --git a/CHANGELOG.md b/CHANGELOG.md index 16c44ab..8caccb0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,9 @@ Hot Or Not ========== -Unreleased ----------- +TFC-1.1.3 (2021-03-03 18:26:18 +0100) +------------------------------------- +* Altered recipe (ACGaming) * Better versioning (ACGaming) * Minor fixes (ACGaming) * Reformatting + additional config options (ACGaming) diff --git a/gradle.properties b/gradle.properties index 2f43b23..046abef 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ modGroup=com.buuz135 minecraftVersion=1.12 -modVersion=1.1.3 +modVersion=1.1.4 modBaseName=HotOrNotTFC forgeVersion=1.12.2-14.23.5.2768 mcpVersion=snapshot_20180508 \ No newline at end of file diff --git a/src/main/java/com/buuz135/hotornot/HotOrNot.java b/src/main/java/com/buuz135/hotornot/HotOrNot.java index 1815990..08ac24e 100644 --- a/src/main/java/com/buuz135/hotornot/HotOrNot.java +++ b/src/main/java/com/buuz135/hotornot/HotOrNot.java @@ -21,10 +21,9 @@ */ package com.buuz135.hotornot; -import com.buuz135.hotornot.proxy.CommonProxy; -import net.dries007.tfc.api.capability.heat.CapabilityItemHeat; -import net.dries007.tfc.api.capability.heat.Heat; -import net.dries007.tfc.api.capability.heat.IItemHeat; +import java.util.function.Consumer; +import java.util.function.Predicate; + import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.MobEffects; import net.minecraft.item.Item; @@ -54,216 +53,233 @@ import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; -import java.util.function.Consumer; -import java.util.function.Predicate; +import com.buuz135.hotornot.proxy.CommonProxy; +import net.dries007.tfc.api.capability.heat.CapabilityItemHeat; +import net.dries007.tfc.api.capability.heat.IItemHeat; @Mod( - modid = HotOrNot.MOD_ID, - name = HotOrNot.MOD_NAME, - version = HotOrNot.VERSION, - dependencies = "required-after:tfc" + modid = HotOrNot.MOD_ID, + name = HotOrNot.MOD_NAME, + version = HotOrNot.VERSION, + dependencies = "required-after:tfc" ) public class HotOrNot { - public static final String MOD_ID = "hotornot"; - public static final String MOD_NAME = "HotOrNot for TFC"; - public static final String VERSION = "1.1.3"; + public static final String MOD_ID = "hotornot"; + public static final String MOD_NAME = "HotOrNot for TFC"; + public static final String VERSION = "1.1.4"; + + @SidedProxy(clientSide = "com.buuz135.hotornot.proxy.ClientProxy", serverSide = "com.buuz135.hotornot.proxy.CommonProxy") + public static CommonProxy proxy; - @SidedProxy(clientSide = "com.buuz135.hotornot.proxy.ClientProxy", serverSide = "com.buuz135.hotornot.proxy.CommonProxy") - public static CommonProxy proxy; + @Mod.EventHandler + public void preInit(FMLPreInitializationEvent event) + { + proxy.preInit(event); + } - @Mod.EventHandler - public void preInit(FMLPreInitializationEvent event) - { - proxy.preInit(event); - } + @Mod.EventHandler + public void init(FMLInitializationEvent event) + { + proxy.init(event); + } - @Mod.EventHandler - public void init(FMLInitializationEvent event) - { - proxy.init(event); - } + @Mod.EventHandler + public void postInit(FMLPostInitializationEvent event) + { + proxy.postInit(event); + } - @Mod.EventHandler - public void postInit(FMLPostInitializationEvent event) - { - proxy.postInit(event); - } + public enum FluidEffect + { + HOT(fluidStack -> fluidStack.getFluid().getTemperature(fluidStack) >= HotConfig.HOT_FLUID + 273, entityPlayerMP -> entityPlayerMP.setFire(1), TextFormatting.RED, "tooltip.hotornot.toohot"), + COLD(fluidStack -> fluidStack.getFluid().getTemperature(fluidStack) <= HotConfig.COLD_FLUID + 273, entityPlayerMP -> + { + entityPlayerMP.addPotionEffect(new PotionEffect(MobEffects.SLOWNESS, 21, 1)); + entityPlayerMP.addPotionEffect(new PotionEffect(MobEffects.WEAKNESS, 21, 1)); + }, TextFormatting.AQUA, "tooltip.hotornot.toocold"), + GAS(fluidStack -> fluidStack.getFluid().isGaseous(fluidStack) && HotConfig.GASEOUS, entityPlayerMP -> entityPlayerMP.addPotionEffect(new PotionEffect(MobEffects.LEVITATION, 21, 1)), TextFormatting.YELLOW, "tooltip.hotornot.toolight"); - public enum FluidEffect - { - HOT(fluidStack -> fluidStack.getFluid().getTemperature(fluidStack) >= HotConfig.HOT, entityPlayerMP -> entityPlayerMP.setFire(1), TextFormatting.RED, "tooltip.hotornot.toohot"), - COLD(fluidStack -> fluidStack.getFluid().getTemperature(fluidStack) <= HotConfig.COLD, entityPlayerMP -> - { - entityPlayerMP.addPotionEffect(new PotionEffect(MobEffects.SLOWNESS, 21, 1)); - entityPlayerMP.addPotionEffect(new PotionEffect(MobEffects.WEAKNESS, 21, 1)); - }, TextFormatting.AQUA, "tooltip.hotornot.toocold"), - GAS(fluidStack -> fluidStack.getFluid().isGaseous(fluidStack) && HotConfig.GASEOUS, entityPlayerMP -> entityPlayerMP.addPotionEffect(new PotionEffect(MobEffects.LEVITATION, 21, 1)), TextFormatting.YELLOW, "tooltip.hotornot.toolight"); + private final Predicate isValid; + private final Consumer interactPlayer; + private final TextFormatting color; + private final String tooltip; - private final Predicate isValid; - private final Consumer interactPlayer; - private final TextFormatting color; - private final String tooltip; + FluidEffect(Predicate isValid, Consumer interactPlayer, TextFormatting color, String tooltip) + { + this.isValid = isValid; + this.interactPlayer = interactPlayer; + this.color = color; + this.tooltip = tooltip; + } + } - FluidEffect(Predicate isValid, Consumer interactPlayer, TextFormatting color, String tooltip) - { - this.isValid = isValid; - this.interactPlayer = interactPlayer; - this.color = color; - this.tooltip = tooltip; - } - } + @Mod.EventBusSubscriber + public static class ObjectRegistryHandler + { + @SubscribeEvent + public static void addItems(RegistryEvent.Register event) + { + proxy.registerItems(event); + } - @Mod.EventBusSubscriber - public static class ObjectRegistryHandler - { - @SubscribeEvent - public static void addItems(RegistryEvent.Register event) - { - proxy.registerItems(event); - } + @SubscribeEvent + @SideOnly(Side.CLIENT) + public static void modelRegistryEvent(ModelRegistryEvent event) + { + proxy.modelRegistryEvent(event); + } + } - @SubscribeEvent - @SideOnly(Side.CLIENT) - public static void modelRegistryEvent(ModelRegistryEvent event) - { - proxy.modelRegistryEvent(event); - } - } + @Mod.EventBusSubscriber + public static class ServerTick + { + @SubscribeEvent + public static void onTick(TickEvent.WorldTickEvent event) + { + if (event.phase == TickEvent.Phase.START) + { + for (EntityPlayerMP entityPlayerMP : FMLCommonHandler.instance().getMinecraftServerInstance().getPlayerList().getPlayers()) + { + if (!entityPlayerMP.isBurning() && !entityPlayerMP.isCreative() && entityPlayerMP.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null)) + { + IItemHandler handler = entityPlayerMP.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null); + for (int i = 0; i < handler.getSlots(); i++) + { + ItemStack stack = handler.getStackInSlot(i); + if (HotConfig.HOT_FLUIDS && !stack.isEmpty() && stack.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null)) + { + IFluidHandlerItem fluidHandlerItem = stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null); + FluidStack fluidStack = fluidHandlerItem.drain(1000, false); + if (fluidStack != null) + { + for (FluidEffect effect : FluidEffect.values()) + { + if (effect.isValid.test(fluidStack)) + { + ItemStack offHand = entityPlayerMP.getHeldItemOffhand(); + if (offHand.getItem().equals(CommonProxy.MITTS)) + { + offHand.damageItem(1, entityPlayerMP); + } + else if (event.world.getTotalWorldTime() % 20 == 0) + { + effect.interactPlayer.accept(entityPlayerMP); + if (HotConfig.YEET) + { + entityPlayerMP.dropItem(stack, false, true); + entityPlayerMP.inventory.deleteStack(stack); + } + } + } + } + } + } + if (HotConfig.HOT_ITEMS && !stack.isEmpty() && stack.hasCapability(CapabilityItemHeat.ITEM_HEAT_CAPABILITY, null)) + { + IItemHeat heatHandlerItem = stack.getCapability(CapabilityItemHeat.ITEM_HEAT_CAPABILITY, null); + if (heatHandlerItem.getTemperature() >= HotConfig.HOT_ITEM) + { + ItemStack offHand = entityPlayerMP.getHeldItemOffhand(); + if (offHand.getItem().equals(CommonProxy.MITTS)) + { + offHand.damageItem(1, entityPlayerMP); + } + else if (event.world.getTotalWorldTime() % 10 == 0) + { + entityPlayerMP.setFire(1); + if (HotConfig.YEET) + { + entityPlayerMP.dropItem(stack, false, true); + entityPlayerMP.inventory.deleteStack(stack); + } + } + } + } + } + } + } + } + } + } - @Mod.EventBusSubscriber - public static class ServerTick - { - @SubscribeEvent - public static void onTick(TickEvent.WorldTickEvent event) - { - if (event.phase == TickEvent.Phase.START) - { - for (EntityPlayerMP entityPlayerMP : FMLCommonHandler.instance().getMinecraftServerInstance().getPlayerList().getPlayers()) - { - if (!entityPlayerMP.isBurning() && !entityPlayerMP.isCreative() && entityPlayerMP.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null)) - { - IItemHandler handler = entityPlayerMP.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null); - for (int i = 0; i < handler.getSlots(); i++) - { - ItemStack stack = handler.getStackInSlot(i); - if (HotConfig.HOT_FLUIDS && !stack.isEmpty() && stack.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null)) - { - IFluidHandlerItem fluidHandlerItem = stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null); - FluidStack fluidStack = fluidHandlerItem.drain(1000, false); - if (fluidStack != null) - { - for (FluidEffect effect : FluidEffect.values()) - { - if (effect.isValid.test(fluidStack)) - { - ItemStack offHand = entityPlayerMP.getHeldItemOffhand(); - if (offHand.getItem().equals(CommonProxy.MITTS)) - { - offHand.damageItem(1, entityPlayerMP); - } else if (event.world.getTotalWorldTime() % 20 == 0) - { - effect.interactPlayer.accept(entityPlayerMP); - if (HotConfig.YEET) - { - entityPlayerMP.dropItem(stack, false, true); - entityPlayerMP.inventory.deleteStack(stack); - } - } - } - } - } - } - if (HotConfig.HOT_ITEMS && !stack.isEmpty() && stack.hasCapability(CapabilityItemHeat.ITEM_HEAT_CAPABILITY, null)) - { - IItemHeat heatHandlerItem = stack.getCapability(CapabilityItemHeat.ITEM_HEAT_CAPABILITY, null); - if (heatHandlerItem.getTemperature() >= Heat.FAINT_RED.getMin()) - { - ItemStack offHand = entityPlayerMP.getHeldItemOffhand(); - if (offHand.getItem().equals(CommonProxy.MITTS)) - { - offHand.damageItem(1, entityPlayerMP); - } else if (event.world.getTotalWorldTime() % 10 == 0) - { - entityPlayerMP.setFire(1); - if (HotConfig.YEET) - { - entityPlayerMP.dropItem(stack, false, true); - entityPlayerMP.inventory.deleteStack(stack); - } - } - } - } - } - } - } - } - } - } + @Config(modid = MOD_ID) + public static class HotConfig + { + @Config.Comment("If true, damage from hot items will be enabled") + public static boolean HOT_ITEMS = true; - @Config(modid = MOD_ID) - public static class HotConfig - { - @Config.Comment("If true, damage from hot items will be enabled") - public static boolean HOT_ITEMS = true; + @Config.Comment("If true, damage from hot fluids will be enabled") + public static boolean HOT_FLUIDS = true; - @Config.Comment("If true, damage from hot fluids will be enabled") - public static boolean HOT_FLUIDS = true; + @Config.Comment("If true, gaseous effects for the fluids will be enabled") + public static boolean GASEOUS = true; - @Config.Comment("How hot a fluid should be to start burning the player (in kelvin)") - public static int HOT = 1300; + @Config.Comment("If true, the items that contain hot fluid will have a tooltip that will show that they are too hot") + public static boolean TOOLTIP = true; - @Config.Comment("How cold a fluid should be to start adding effects the player (in kelvin)") - public static int COLD = 273; + @Config.Comment("If true, hot items make the player yeet them") + public static boolean YEET = true; - @Config.Comment("If true, gaseous effects for the fluids will be enabled") - public static boolean GASEOUS = true; + @Config.Comment("How hot a fluid should be to start burning the player (in Celsius)") + public static int HOT_FLUID = 480; - @Config.Comment("If true, the items that contain hot fluid will have a tooltip that will show that they are too hot") - public static boolean TOOLTIP = true; + @Config.Comment("How cold a fluid should be to start adding effects the player (in Celsius)") + public static int COLD_FLUID = 0; - @Config.Comment("If true, hot items make the player yeet them") - public static boolean YEET = true; + @Config.Comment("How hot an item should be to start burning the player (in Celsius)") + public static int HOT_ITEM = 480; - @Config.Comment("Max durability of the mitts") - public static int MITTS_DURABILITY = 20 * 60 * 10; + @Config.Comment("Max durability of the mitts") + public static int MITTS_DURABILITY = 20 * 60 * 10; - @Mod.EventBusSubscriber(modid = MOD_ID) - private static class EventHandler - { - @SubscribeEvent - public static void onConfigChanged(final ConfigChangedEvent.OnConfigChangedEvent event) - { - if (event.getModID().equals(MOD_ID)) - { - ConfigManager.sync(MOD_ID, Config.Type.INSTANCE); - } - } - } - } + @Mod.EventBusSubscriber(modid = MOD_ID) + private static class EventHandler + { + @SubscribeEvent + public static void onConfigChanged(final ConfigChangedEvent.OnConfigChangedEvent event) + { + if (event.getModID().equals(MOD_ID)) + { + ConfigManager.sync(MOD_ID, Config.Type.INSTANCE); + } + } + } + } - @Mod.EventBusSubscriber(value = Side.CLIENT) - public static class HotTooltip - { - @SubscribeEvent - public static void onTooltip(ItemTooltipEvent event) - { - ItemStack stack = event.getItemStack(); - if (HotConfig.TOOLTIP && !stack.isEmpty() && stack.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null)) - { - IFluidHandlerItem fluidHandlerItem = stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null); - FluidStack fluidStack = fluidHandlerItem.drain(1000, false); - if (fluidStack != null) - { - for (FluidEffect effect : FluidEffect.values()) - { - if (effect.isValid.test(fluidStack)) - { - event.getToolTip().add(effect.color + new TextComponentTranslation(effect.tooltip).getUnformattedText()); - } - } - } - } - } - } + @Mod.EventBusSubscriber(value = Side.CLIENT) + public static class HotTooltip + { + @SubscribeEvent + public static void onTooltip(ItemTooltipEvent event) + { + ItemStack stack = event.getItemStack(); + if (HotConfig.TOOLTIP && !stack.isEmpty()) + { + if (stack.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null)) + { + IFluidHandlerItem fluidHandlerItem = stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null); + FluidStack fluidStack = fluidHandlerItem.drain(1000, false); + if (fluidStack != null) + { + for (FluidEffect effect : FluidEffect.values()) + { + if (effect.isValid.test(fluidStack)) + { + event.getToolTip().add(effect.color + new TextComponentTranslation(effect.tooltip).getUnformattedText()); + } + } + } + } + else if (stack.hasCapability(CapabilityItemHeat.ITEM_HEAT_CAPABILITY, null)) + { + IItemHeat heat = stack.getCapability(CapabilityItemHeat.ITEM_HEAT_CAPABILITY, null); + if (heat.getTemperature() >= HotConfig.HOT_ITEM) + { + event.getToolTip().add(FluidEffect.HOT.color + new TextComponentTranslation(FluidEffect.HOT.tooltip).getUnformattedText()); + } + } + } + } + } } \ No newline at end of file diff --git a/src/main/java/com/buuz135/hotornot/item/MittsItem.java b/src/main/java/com/buuz135/hotornot/item/MittsItem.java index fae6438..ada1d82 100644 --- a/src/main/java/com/buuz135/hotornot/item/MittsItem.java +++ b/src/main/java/com/buuz135/hotornot/item/MittsItem.java @@ -1,35 +1,36 @@ package com.buuz135.hotornot.item; -import com.buuz135.hotornot.HotOrNot; +import java.util.List; +import javax.annotation.Nullable; + import net.minecraft.client.util.ITooltipFlag; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.world.World; -import javax.annotation.Nullable; -import java.util.List; +import com.buuz135.hotornot.HotOrNot; public class MittsItem extends Item { - public MittsItem() - { - setRegistryName(HotOrNot.MOD_ID, "mitts"); - setMaxStackSize(1); - setMaxDamage(HotOrNot.HotConfig.MITTS_DURABILITY); - setUnlocalizedName(HotOrNot.MOD_ID + ".mitts"); - } + public MittsItem() + { + setRegistryName(HotOrNot.MOD_ID, "mitts"); + setMaxStackSize(1); + setMaxDamage(HotOrNot.HotConfig.MITTS_DURABILITY); + setUnlocalizedName(HotOrNot.MOD_ID + ".mitts"); + } - @Override - public boolean shouldCauseReequipAnimation(ItemStack oldStack, ItemStack newStack, boolean slotChanged) - { - return false; - } + @Override + public void addInformation(ItemStack stack, @Nullable World worldIn, List tooltip, ITooltipFlag flagIn) + { + super.addInformation(stack, worldIn, tooltip, flagIn); + tooltip.add(new TextComponentTranslation("item.hotornot.mitts.tooltip").getUnformattedComponentText()); + } - @Override - public void addInformation(ItemStack stack, @Nullable World worldIn, List tooltip, ITooltipFlag flagIn) - { - super.addInformation(stack, worldIn, tooltip, flagIn); - tooltip.add(new TextComponentTranslation("item.hotornot.mitts.tooltip").getUnformattedComponentText()); - } + @Override + public boolean shouldCauseReequipAnimation(ItemStack oldStack, ItemStack newStack, boolean slotChanged) + { + return false; + } } \ No newline at end of file diff --git a/src/main/java/com/buuz135/hotornot/proxy/ClientProxy.java b/src/main/java/com/buuz135/hotornot/proxy/ClientProxy.java index 38e2932..e365173 100644 --- a/src/main/java/com/buuz135/hotornot/proxy/ClientProxy.java +++ b/src/main/java/com/buuz135/hotornot/proxy/ClientProxy.java @@ -9,27 +9,27 @@ public class ClientProxy extends CommonProxy { - @Override - public void preInit(FMLPreInitializationEvent event) - { - super.preInit(event); - } + @Override + public void preInit(FMLPreInitializationEvent event) + { + super.preInit(event); + } - @Override - public void init(FMLInitializationEvent event) - { - super.init(event); - } + @Override + public void init(FMLInitializationEvent event) + { + super.init(event); + } - @Override - public void postInit(FMLPostInitializationEvent event) - { - super.postInit(event); - } + @Override + public void postInit(FMLPostInitializationEvent event) + { + super.postInit(event); + } - @Override - public void modelRegistryEvent(ModelRegistryEvent event) - { - ModelLoader.setCustomModelResourceLocation(MITTS, 0, new ModelResourceLocation(MITTS.getRegistryName(), "inventory")); - } + @Override + public void modelRegistryEvent(ModelRegistryEvent event) + { + ModelLoader.setCustomModelResourceLocation(MITTS, 0, new ModelResourceLocation(MITTS.getRegistryName(), "inventory")); + } } \ No newline at end of file diff --git a/src/main/java/com/buuz135/hotornot/proxy/CommonProxy.java b/src/main/java/com/buuz135/hotornot/proxy/CommonProxy.java index 1202ce6..06973d0 100644 --- a/src/main/java/com/buuz135/hotornot/proxy/CommonProxy.java +++ b/src/main/java/com/buuz135/hotornot/proxy/CommonProxy.java @@ -1,6 +1,5 @@ package com.buuz135.hotornot.proxy; -import com.buuz135.hotornot.item.MittsItem; import net.minecraft.item.Item; import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.event.RegistryEvent; @@ -10,34 +9,35 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import com.buuz135.hotornot.item.MittsItem; + public class CommonProxy { - public static MittsItem MITTS = new MittsItem(); - - public void preInit(FMLPreInitializationEvent event) - { + public static MittsItem MITTS = new MittsItem(); - } + public void preInit(FMLPreInitializationEvent event) + { - public void init(FMLInitializationEvent event) - { + } - } + public void init(FMLInitializationEvent event) + { - public void postInit(FMLPostInitializationEvent event) - { + } - } + public void postInit(FMLPostInitializationEvent event) + { + } - public void registerItems(RegistryEvent.Register event) - { - event.getRegistry().register(MITTS); - } + public void registerItems(RegistryEvent.Register event) + { + event.getRegistry().register(MITTS); + } - @SideOnly(Side.CLIENT) - public void modelRegistryEvent(ModelRegistryEvent event) - { + @SideOnly(Side.CLIENT) + public void modelRegistryEvent(ModelRegistryEvent event) + { - } + } } \ No newline at end of file diff --git a/src/main/resources/assets/hotornot/lang/en_us.lang b/src/main/resources/assets/hotornot/lang/en_us.lang index 00bfca0..53d9be4 100644 --- a/src/main/resources/assets/hotornot/lang/en_us.lang +++ b/src/main/resources/assets/hotornot/lang/en_us.lang @@ -1,6 +1,6 @@ -tooltip.hotornot.toohot=Too hot to handle! -tooltip.hotornot.toocold=Too cold to handle! -tooltip.hotornot.toolight=Too light to handle! +tooltip.hotornot.toohot=Too hot to handle! Wear mitts. +tooltip.hotornot.toocold=Too cold to handle! Wear mitts. +tooltip.hotornot.toolight=Too light to handle! Wear mitts. item.hotornot.mitts.name=Mitts item.hotornot.mitts.tooltip=Wear in the offhand to avoid bad effects \ No newline at end of file diff --git a/src/main/resources/assets/hotornot/recipes/mitts.json b/src/main/resources/assets/hotornot/recipes/mitts.json index 658108e..b3f3ceb 100644 --- a/src/main/resources/assets/hotornot/recipes/mitts.json +++ b/src/main/resources/assets/hotornot/recipes/mitts.json @@ -11,7 +11,7 @@ "key": { "W": { "type": "forge:ore_dict", - "ore": "wool" + "ore": "clothHighQuality" }, "L": { "type": "forge:ore_dict",