diff --git a/Setup.bat b/Setup.bat index 2b6c557..27c96ad 100644 --- a/Setup.bat +++ b/Setup.bat @@ -1 +1,3 @@ -gradlew.bat setupdecompworkspace eclipse \ No newline at end of file +gradlew.bat setupdecompworkspace eclipse + +pause \ No newline at end of file diff --git a/build.gradle b/build.gradle index 02e35cc..8f7b701 100644 --- a/build.gradle +++ b/build.gradle @@ -39,7 +39,7 @@ allprojects group = config.group_name version = config.mod_version - archivesBaseName = "[${config.minecraft_version}]${config.mod_id}" + archivesBaseName = config.mod_id + "-" + config.minecraft_version minecraft { diff --git a/build.prop b/build.prop index 2c808f9..da31bf5 100644 --- a/build.prop +++ b/build.prop @@ -1,6 +1,6 @@ minecraft_version=1.7.10 forge_version=10.13.4.1558-1.7.10 tfc_version=0.79.27 -mod_version=1.03 +mod_version=1.05 mod_id=TerraFirmaPunkTweaks -group_name=com.onewolfe.tfptweaks \ No newline at end of file +group_name=com.JAWolfe.tfptweaks \ No newline at end of file diff --git a/builds/Minetweaker Instructions.zs b/builds/Minetweaker Instructions.zs new file mode 100644 index 0000000..a87c0cd --- /dev/null +++ b/builds/Minetweaker Instructions.zs @@ -0,0 +1,51 @@ +//======================================================================== +// Heating items +//======================================================================== + +//Add Recipe + +//OutputStack, InputStack or InputOre, MeltingTemp(Default: 600, Normal Range 0-2000)[Optional], SpecificHeat(Default: 1, Normal Range 0-1)[Optional] +//mods.tfptweaks.ItemHeat.addRecipe(,); +//mods.tfptweaks.ItemHeat.addRecipe(,, 40); +//mods.tfptweaks.ItemHeat.addRecipe(,, 40, 1); +//mods.tfptweaks.ItemHeat.addRecipe(,); +//mods.tfptweaks.ItemHeat.addRecipe(,, 40); +//mods.tfptweaks.ItemHeat.addRecipe(,, 40, 1); + +//Remove Recipe + +//InputStack +//mods.tfptweaks.ItemHeat.removeRecipe(); + +//======================================================================== +// Loom Recipes +//======================================================================== + +//Add Recipe + +//OutputStack, InputStack, CosmeticLoomOverlay (Range 1-3: 1-String, 2-Silk, 3-Rope)[Optional] +//mods.tfptweaks.Loom.addRecipe(, * 4); +//mods.tfptweaks.Loom.addRecipe(, * 4, 1); + +//OutputStack, InputStack, ImageOverlayLocation("modID:location") +//mods.tfptweaks.Loom.addRecipe(, * 4, "minecraft:blocks/wool_colored_blue"); + +//Remove Recipe + +//InputStack {Stack size must be the same as the recipe to be removed} +//mods.tfptweaks.Loom.removeRecipe( * 16); + +//======================================================================== +// Quern Recipes +//======================================================================== + +//Add Recipe + +//OutputStack, InputStack +//mods.tfptweaks.Quern.addRecipe( * 3, ); + +//Remove Recipe + +//OutputStack, InputStack {Stack sizes must be the same as the recipe to be removed} +//mods.tfptweaks.Quern.removeRecipe( * 2, ); +//mods.tfptweaks.Quern.removeRecipe(, ); \ No newline at end of file diff --git a/builds/TerraFirmaPunkTweaks-1.7.10-1.05.jar b/builds/TerraFirmaPunkTweaks-1.7.10-1.05.jar new file mode 100644 index 0000000..63b67e1 Binary files /dev/null and b/builds/TerraFirmaPunkTweaks-1.7.10-1.05.jar differ diff --git a/builds/TerraFirmaPunkTweaks-1.7.10-deobf-1.05.jar b/builds/TerraFirmaPunkTweaks-1.7.10-deobf-1.05.jar new file mode 100644 index 0000000..7828825 Binary files /dev/null and b/builds/TerraFirmaPunkTweaks-1.7.10-deobf-1.05.jar differ diff --git a/builds/TerraFirmaPunkTweaks-1.7.10-src-1.05.jar b/builds/TerraFirmaPunkTweaks-1.7.10-src-1.05.jar new file mode 100644 index 0000000..9405e90 Binary files /dev/null and b/builds/TerraFirmaPunkTweaks-1.7.10-src-1.05.jar differ diff --git a/builds/[1.7.10]TerraFirmaPunkTweaks-1.03.jar b/builds/[1.7.10]TerraFirmaPunkTweaks-1.03.jar deleted file mode 100644 index 058dc1d..0000000 Binary files a/builds/[1.7.10]TerraFirmaPunkTweaks-1.03.jar and /dev/null differ diff --git a/builds/[1.7.10]TerraFirmaPunkTweaks-deobf-1.03.jar b/builds/[1.7.10]TerraFirmaPunkTweaks-deobf-1.03.jar deleted file mode 100644 index e6afb13..0000000 Binary files a/builds/[1.7.10]TerraFirmaPunkTweaks-deobf-1.03.jar and /dev/null differ diff --git a/builds/[1.7.10]TerraFirmaPunkTweaks-src-1.03.jar b/builds/[1.7.10]TerraFirmaPunkTweaks-src-1.03.jar deleted file mode 100644 index ef96d07..0000000 Binary files a/builds/[1.7.10]TerraFirmaPunkTweaks-src-1.03.jar and /dev/null differ diff --git a/src/main/java/com/onewolfe/tfptweaks/LogHelper.java b/src/main/java/com/JAWolfe/tfptweaks/LogHelper.java similarity index 96% rename from src/main/java/com/onewolfe/tfptweaks/LogHelper.java rename to src/main/java/com/JAWolfe/tfptweaks/LogHelper.java index 963ae9d..19366d8 100644 --- a/src/main/java/com/onewolfe/tfptweaks/LogHelper.java +++ b/src/main/java/com/JAWolfe/tfptweaks/LogHelper.java @@ -1,4 +1,4 @@ -package com.onewolfe.tfptweaks; +package com.JAWolfe.tfptweaks; import cpw.mods.fml.common.FMLLog; import org.apache.logging.log4j.Level; diff --git a/src/main/java/com/onewolfe/tfptweaks/NEIConfig.java b/src/main/java/com/JAWolfe/tfptweaks/NEIConfig.java similarity index 93% rename from src/main/java/com/onewolfe/tfptweaks/NEIConfig.java rename to src/main/java/com/JAWolfe/tfptweaks/NEIConfig.java index 766abbe..9d50da8 100644 --- a/src/main/java/com/onewolfe/tfptweaks/NEIConfig.java +++ b/src/main/java/com/JAWolfe/tfptweaks/NEIConfig.java @@ -1,4 +1,4 @@ -package com.onewolfe.tfptweaks; +package com.JAWolfe.tfptweaks; import codechicken.nei.api.API; import codechicken.nei.api.IConfigureNEI; diff --git a/src/main/java/com/onewolfe/tfptweaks/RecipeTweaks.java b/src/main/java/com/JAWolfe/tfptweaks/RecipeTweaks.java similarity index 61% rename from src/main/java/com/onewolfe/tfptweaks/RecipeTweaks.java rename to src/main/java/com/JAWolfe/tfptweaks/RecipeTweaks.java index 95e3d21..565de97 100644 --- a/src/main/java/com/onewolfe/tfptweaks/RecipeTweaks.java +++ b/src/main/java/com/JAWolfe/tfptweaks/RecipeTweaks.java @@ -1,13 +1,16 @@ -package com.onewolfe.tfptweaks; +package com.JAWolfe.tfptweaks; import java.util.List; import cpw.mods.fml.common.Loader; +import flaxbeard.steamcraft.SteamcraftItems; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.IRecipe; +import net.minecraftforge.oredict.OreDictionary; import steamcraft.common.init.InitBlocks; +import steamcraft.common.init.InitItems; public class RecipeTweaks { @@ -27,6 +30,16 @@ public class RecipeTweaks recipes.remove(i--); } } + + OreDictionary.registerOre("itemAxe", new ItemStack(InitItems.axeSteam, 1, OreDictionary.WILDCARD_VALUE)); } } + + public static void RecipeFixes() + { + if(Loader.isModLoaded("Steamcraft")) + { + OreDictionary.registerOre("itemAxe", new ItemStack(SteamcraftItems.steamAxe, 1, OreDictionary.WILDCARD_VALUE)); + } + } } diff --git a/src/main/java/com/onewolfe/tfptweaks/References.java b/src/main/java/com/JAWolfe/tfptweaks/References.java similarity index 93% rename from src/main/java/com/onewolfe/tfptweaks/References.java rename to src/main/java/com/JAWolfe/tfptweaks/References.java index fc0a86e..ca5e710 100644 --- a/src/main/java/com/onewolfe/tfptweaks/References.java +++ b/src/main/java/com/JAWolfe/tfptweaks/References.java @@ -1,4 +1,4 @@ -package com.onewolfe.tfptweaks; +package com.JAWolfe.tfptweaks; public class References { diff --git a/src/main/java/com/onewolfe/tfptweaks/TerraFirmaPunkTweaks.java b/src/main/java/com/JAWolfe/tfptweaks/TerraFirmaPunkTweaks.java similarity index 68% rename from src/main/java/com/onewolfe/tfptweaks/TerraFirmaPunkTweaks.java rename to src/main/java/com/JAWolfe/tfptweaks/TerraFirmaPunkTweaks.java index a96d73f..b4bb57f 100644 --- a/src/main/java/com/onewolfe/tfptweaks/TerraFirmaPunkTweaks.java +++ b/src/main/java/com/JAWolfe/tfptweaks/TerraFirmaPunkTweaks.java @@ -1,28 +1,36 @@ -package com.onewolfe.tfptweaks; +package com.JAWolfe.tfptweaks; + +import com.JAWolfe.tfptweaks.handlers.*; +import com.JAWolfe.tfptweaks.minetweaker.TFCTweaker; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; +import cpw.mods.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.common.MinecraftForge; @Mod(modid = References.ModID, name = References.ModName, version = References.ModVersion, dependencies = References.ModDependencies) public class TerraFirmaPunkTweaks { @EventHandler - public void init(FMLInitializationEvent event) + public void preInit(FMLPreInitializationEvent event) { } @EventHandler public void initialize(FMLInitializationEvent event) - { + { + RecipeTweaks.RecipeFixes(); + MinecraftForge.EVENT_BUS.register(new PlayerHandler()); } @EventHandler public void postInit(FMLPostInitializationEvent event) { + TFCTweaker.postInit(); + RecipeTweaks.SC2RecipeTweaks(); } } diff --git a/src/main/java/com/onewolfe/tfptweaks/PlayerHandler.java b/src/main/java/com/JAWolfe/tfptweaks/handlers/PlayerHandler.java similarity index 95% rename from src/main/java/com/onewolfe/tfptweaks/PlayerHandler.java rename to src/main/java/com/JAWolfe/tfptweaks/handlers/PlayerHandler.java index 4556b8c..189db2f 100644 --- a/src/main/java/com/onewolfe/tfptweaks/PlayerHandler.java +++ b/src/main/java/com/JAWolfe/tfptweaks/handlers/PlayerHandler.java @@ -1,9 +1,7 @@ -package com.onewolfe.tfptweaks; +package com.JAWolfe.tfptweaks.handlers; import java.util.Random; -import com.bioxx.tfc.TerraFirmaCraft; -import com.bioxx.tfc.Handlers.EntityDamageHandler; import com.bioxx.tfc.Items.ItemTFCArmor; import com.bioxx.tfc.api.TFCBlocks; import com.bioxx.tfc.api.Enums.EnumDamageType; @@ -12,7 +10,6 @@ import com.bioxx.tfc.api.Interfaces.ICausesDamage; import com.bioxx.tfc.api.Interfaces.IInnateArmor; import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; @@ -58,9 +55,7 @@ public class PlayerHandler public void onDamaged(LivingHurtEvent event) { if(event.entity instanceof EntityPlayer) - { - //LogHelper.info(event.source.getDamageType() + " " + event.ammount); - + { if (event.source == DamageSource.onFire || event.source == DamageSource.fall || event.source == DamageSource.drown || event.source == DamageSource.lava || event.source == DamageSource.inWall || event.source == DamageSource.fallingBlock || event.source.isExplosion() || event.source == DamageSource.inFire || event.source == DamageSource.starve) @@ -80,7 +75,6 @@ public class PlayerHandler } else if(event.source.isUnblockable() && event.source.getSourceOfDamage() instanceof EntityLivingBase) { - LogHelper.info("Unblockable"); float damage = (float)((EntityLivingBase)event.source.getSourceOfDamage()).getEntityAttribute(SharedMonsterAttributes.attackDamage).getAttributeValue(); if(damage <= 20) @@ -184,7 +178,7 @@ public class PlayerHandler //6. Apply the damage to the player EntityArmorCalcEvent eventPost = new EntityArmorCalcEvent(entity, damage, EntityArmorCalcEvent.EventType.POST); MinecraftForge.EVENT_BUS.post(eventPost); - LogHelper.info(entity.getClass() + " " + source.getDamageType() +", "+eventPre.incomingDamage+", "+eventPost.incomingDamage); + //LogHelper.info(entity + " " + source.getDamageType() +", "+eventPre.incomingDamage+", "+eventPost.incomingDamage); float hasHealth = entity.getHealth(); entity.setHealth(entity.getHealth()-eventPost.incomingDamage); entity.func_110142_aN().func_94547_a(source, hasHealth, eventPost.incomingDamage); diff --git a/src/main/java/com/JAWolfe/tfptweaks/minetweaker/ItemHeat.java b/src/main/java/com/JAWolfe/tfptweaks/minetweaker/ItemHeat.java new file mode 100644 index 0000000..ef47604 --- /dev/null +++ b/src/main/java/com/JAWolfe/tfptweaks/minetweaker/ItemHeat.java @@ -0,0 +1,197 @@ +package com.JAWolfe.tfptweaks.minetweaker; + +import java.util.List; + +import com.bioxx.tfc.api.HeatIndex; +import com.bioxx.tfc.api.HeatRegistry; + +import minetweaker.IUndoableAction; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import minetweaker.api.minecraft.MineTweakerMC; +import minetweaker.api.oredict.IOreDictEntry; +import net.minecraft.item.ItemStack; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.tfptweaks.ItemHeat") +public class ItemHeat +{ + @ZenMethod + public static void addRecipe(IItemStack output, IItemStack input, int heat, int specHeat) + { + ItemStack inputStack = MineTweakerMC.getItemStack(input); + ItemStack outputStack = MineTweakerMC.getItemStack(output); + + if(inputStack == null || inputStack.getItem() == null) + MineTweakerAPI.logError("Missing InputStack"); + else if(outputStack == null || outputStack.getItem() == null) + MineTweakerAPI.logError("Missing OutputStack"); + else if(heat < 0) + MineTweakerAPI.logError("Item melting point cannot be less than 0"); + else if(specHeat < 0) + MineTweakerAPI.logError("Item specific heat cannot be less than 0"); + else + MineTweakerAPI.apply(new addHeatingAction(outputStack, inputStack, heat, specHeat)); + } + + @ZenMethod + public static void addRecipe(IItemStack output, IItemStack input, int heat) + { + addRecipe(output, input, heat, 1); + } + + @ZenMethod + public static void addRecipe(IItemStack output, IItemStack input) + { + addRecipe(output, input, 600); + } + + @ZenMethod + public static void addRecipe(IItemStack output, IOreDictEntry oredictentry, int heat, int specHeat) + { + if (oredictentry != null && oredictentry.getAmount() > 0) + { + List oreEntries = oredictentry.getItems(); + for(int i = 0; i < oreEntries.size(); i++) + { + addRecipe(output, oreEntries.get(i), heat, specHeat); + } + } + } + + @ZenMethod + public static void addRecipe(IItemStack output, IOreDictEntry oredictentry, int heat) + { + addRecipe(output, oredictentry, heat, 1); + } + + @ZenMethod + public static void addRecipe(IItemStack output, IOreDictEntry oredictentry) + { + addRecipe(output, oredictentry, 600); + } + + @ZenMethod + public static void removeRecipe(IItemStack input) + { + ItemStack inputStack = MineTweakerMC.getItemStack(input); + + if(inputStack == null || inputStack.getItem() == null) + MineTweakerAPI.logError("Missing InputStack"); + else + MineTweakerAPI.apply(new removeHeatingAction(inputStack)); + } + + private static class addHeatingAction implements IUndoableAction + { + private ItemStack inputStack; + private ItemStack outputStack; + private int meltingPoint; + private int specificHeat; + + public addHeatingAction(ItemStack output, ItemStack input, int heat, int specHeat) + { + this.outputStack = output; + this.inputStack = input; + this.meltingPoint = heat; + this.specificHeat = specHeat; + } + + @Override + public void apply() + { + HeatRegistry.getInstance().addIndex(new HeatIndex(inputStack, specificHeat, meltingPoint, outputStack).setMinMax(outputStack.getItemDamage())); + } + + @Override + public String describe() + { + return "Adding item '" + inputStack.getDisplayName() + "' to heated items with melting point '" + meltingPoint + + "' and specific heat '" + specificHeat + "' to yeild '" + outputStack.getDisplayName() + "'"; + } + + @Override + public boolean canUndo() + { + return true; + } + + @Override + public void undo() + { + List heatList = HeatRegistry.getInstance().getHeatList(); + for (int i = 0; i < heatList.size(); i++) + { + if (heatList.get(i) != null) + { + if (heatList.get(i).matches(inputStack) && heatList.get(i).getOutputItem() == outputStack.getItem() + && heatList.get(i).meltTemp == meltingPoint && heatList.get(i).specificHeat == specificHeat) + heatList.remove(i--); + } + } + } + + @Override + public String describeUndo() + { + return "Removing item '" + inputStack.getDisplayName() + "' from heated items with melting point '" + meltingPoint + + "' and specific heat '" + specificHeat + "' yeilding '" + outputStack.getDisplayName() + "'"; + } + + @Override + public Object getOverrideKey() { + return null; + } + } + + private static class removeHeatingAction implements IUndoableAction + { + private ItemStack inputStack; + + public removeHeatingAction(ItemStack input) + { + this.inputStack = input; + } + + @Override + public void apply() + { + List heatList = HeatRegistry.getInstance().getHeatList(); + for (int i = 0; i < heatList.size(); i++) + { + if (heatList.get(i) != null) + { + if (heatList.get(i).matches(inputStack)) + heatList.remove(i--); + } + } + } + + @Override + public String describe() { + return "Removing item '" + inputStack.getDisplayName() + "' from Heated Items.'"; + } + + @Override + public boolean canUndo() { + return false; + } + + @Override + public void undo() { + //Cannot undo + } + + @Override + public String describeUndo() { + //Cannot undo + return null; + } + + @Override + public Object getOverrideKey() { + return null; + } + } +} diff --git a/src/main/java/com/JAWolfe/tfptweaks/minetweaker/Loom.java b/src/main/java/com/JAWolfe/tfptweaks/minetweaker/Loom.java new file mode 100644 index 0000000..ceb691b --- /dev/null +++ b/src/main/java/com/JAWolfe/tfptweaks/minetweaker/Loom.java @@ -0,0 +1,174 @@ +package com.JAWolfe.tfptweaks.minetweaker; + +import java.util.List; + +import com.bioxx.tfc.Reference; +import com.bioxx.tfc.api.Crafting.LoomManager; +import com.bioxx.tfc.api.Crafting.LoomRecipe; + +import minetweaker.IUndoableAction; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import minetweaker.api.minecraft.MineTweakerMC; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.tfptweaks.Loom") +public class Loom +{ + @ZenMethod + public static void addRecipe(IItemStack output, IItemStack input, String resource) + { + ItemStack inputStack = MineTweakerMC.getItemStack(input); + ItemStack outputStack = MineTweakerMC.getItemStack(output); + + if(inputStack == null || inputStack.getItem() == null) + MineTweakerAPI.logError("Missing InputStack"); + else if(outputStack == null || outputStack.getItem() == null) + MineTweakerAPI.logError("Missing OutputStack"); + else if(resource != null && resource.length() == 0) + MineTweakerAPI.logError("Missing Resource Location"); + else + MineTweakerAPI.apply(new addLoomAction(outputStack, inputStack, resource)); + } + + @ZenMethod + public static void addRecipe(IItemStack output, IItemStack input, int overlay) + { + switch(overlay) + { + case 1: addRecipe(output, input, Reference.MOD_ID + ":" + "blocks/String"); break; + case 2: addRecipe(output, input, Reference.MOD_ID + ":" + "blocks/Silk"); break; + case 3: addRecipe(output, input, Reference.MOD_ID + ":" + "blocks/Rope"); break; + default: addRecipe(output, input, Reference.MOD_ID + ":" + "blocks/String"); break; + } + } + + @ZenMethod + public static void addRecipe(IItemStack output, IItemStack input) + { + addRecipe(output, input, 1); + } + + @ZenMethod + public static void removeRecipe(IItemStack input) + { + ItemStack inputStack = MineTweakerMC.getItemStack(input); + + if(inputStack == null || inputStack.getItem() == null) + MineTweakerAPI.logError("Missing InputStack"); + else + MineTweakerAPI.apply(new removeLoomAction(inputStack)); + } + + private static class addLoomAction implements IUndoableAction + { + private ItemStack inputStack; + private ItemStack outputStack; + private String modid; + private String pathLocation; + + public addLoomAction(ItemStack output, ItemStack input, String location) + { + this.inputStack = input; + this.outputStack = output; + + String[] itemresource = location.split(":"); + this.modid = itemresource[0]; + this.pathLocation = "textures/" + itemresource[1] + ".png"; + } + + @Override + public void apply() + { + LoomManager.getInstance().addRecipe(new LoomRecipe(inputStack, outputStack), new ResourceLocation(modid, pathLocation)); + } + + @Override + public String describe() + { + return "Adding item '" + inputStack.getDisplayName() + "' to loom yeilding '" + outputStack.getDisplayName() + + "' with the resource location of '" + modid +":" + pathLocation + "'"; + } + + @Override + public boolean canUndo() + { + return true; + } + + @Override + public void undo() + { + List LoomList = LoomManager.getInstance().getRecipes(); + for (int i = 0; i < LoomList.size(); i++) + { + if (LoomList.get(i) != null) + { + if (LoomList.get(i).matches(inputStack)) + LoomList.remove(i--); + } + } + } + + @Override + public String describeUndo() { + return "Removing item '" + inputStack.getDisplayName() + "' from loom'"; + } + + @Override + public Object getOverrideKey() { + return null; + } + } + + private static class removeLoomAction implements IUndoableAction + { + private ItemStack inputStack; + + public removeLoomAction(ItemStack input) + { + this.inputStack = input; + } + + @Override + public void apply() + { + List LoomList = LoomManager.getInstance().getRecipes(); + for (int i = 0; i < LoomList.size(); i++) + { + if (LoomList.get(i) != null) + { + if (LoomList.get(i).matches(inputStack)) + LoomList.remove(i--); + } + } + } + + @Override + public String describe() { + return "Removing item '" + inputStack.getDisplayName() + "' from loom'"; + } + + @Override + public boolean canUndo() { + return false; + } + + @Override + public void undo() { + } + + @Override + public String describeUndo() { + return null; + } + + @Override + public Object getOverrideKey() { + return null; + } + } +} diff --git a/src/main/java/com/JAWolfe/tfptweaks/minetweaker/Quern.java b/src/main/java/com/JAWolfe/tfptweaks/minetweaker/Quern.java new file mode 100644 index 0000000..a87c7f9 --- /dev/null +++ b/src/main/java/com/JAWolfe/tfptweaks/minetweaker/Quern.java @@ -0,0 +1,183 @@ +package com.JAWolfe.tfptweaks.minetweaker; + +import java.util.List; + +import com.bioxx.tfc.api.Crafting.QuernManager; +import com.bioxx.tfc.api.Crafting.QuernRecipe; + +import minetweaker.IUndoableAction; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import minetweaker.api.minecraft.MineTweakerMC; +import net.minecraft.item.ItemStack; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenClass("mods.tfptweaks.Quern") +public class Quern +{ + @ZenMethod + public static void addRecipe(IItemStack output, IItemStack input) + { + ItemStack inputStack = MineTweakerMC.getItemStack(input); + ItemStack outputStack = MineTweakerMC.getItemStack(output); + + if(inputStack == null || inputStack.getItem() == null) + MineTweakerAPI.logError("Missing InputStack"); + else if(outputStack == null || outputStack.getItem() == null) + MineTweakerAPI.logError("Missing OutputStack"); + else + MineTweakerAPI.apply(new addQuernAction(outputStack, inputStack)); + } + + @ZenMethod + public static void removeRecipe(IItemStack output, IItemStack input) + { + ItemStack inputStack = MineTweakerMC.getItemStack(input); + ItemStack outputStack = MineTweakerMC.getItemStack(output); + + if(inputStack == null || inputStack.getItem() == null) + MineTweakerAPI.logError("Missing InputStack"); + else if(outputStack == null || outputStack.getItem() == null) + MineTweakerAPI.logError("Missing OutputStack"); + else + MineTweakerAPI.apply(new removeQuernAction(outputStack, inputStack)); + } + + private static class addQuernAction implements IUndoableAction + { + private ItemStack inputStack; + private ItemStack outputStack; + + public addQuernAction(ItemStack output, ItemStack input) + { + + this.outputStack = output; + this.inputStack = input; + } + + @Override + public void apply() + { + QuernManager.getInstance().addRecipe(new QuernRecipe(inputStack, outputStack)); + } + + @Override + public String describe() + { + return "Adding item '" + inputStack.getDisplayName() + "' to the Quern to yeild '" + outputStack.getDisplayName() + "'"; + } + + @Override + public boolean canUndo() + { + return true; + } + + @Override + public void undo() + { + List quernList = QuernManager.getInstance().getRecipes(); + for (int i = 0; i < quernList.size(); i++) + { + if (quernList.get(i) != null) + { + if (quernList.get(i).isInItem(inputStack) && ItemStack.areItemStacksEqual(quernList.get(i).getResult(), outputStack)) + quernList.remove(i--); + } + } + + if(QuernManager.getInstance().findMatchingRecipe(inputStack) == null && QuernManager.getInstance().isValidItem(inputStack)) + { + List validItemsList = QuernManager.getInstance().getValidItems(); + for (int i = 0; i < validItemsList.size(); i++) + { + if (validItemsList.get(i) != null) + { + if (ItemStack.areItemStacksEqual(validItemsList.get(i), inputStack)) + validItemsList.remove(i--); + } + } + } + } + + @Override + public String describeUndo() + { + return "Removing item '" + inputStack.getDisplayName() + "' from the Quern yeilding '" + outputStack.getDisplayName() + "'"; + } + + @Override + public Object getOverrideKey() { + return null; + } + } + + private static class removeQuernAction implements IUndoableAction + { + private ItemStack inputStack; + private ItemStack outputStack; + + public removeQuernAction(ItemStack output, ItemStack input) + { + this.outputStack = output; + this.inputStack = input; + } + + @Override + public void apply() + { + List quernList = QuernManager.getInstance().getRecipes(); + for (int i = 0; i < quernList.size(); i++) + { + if (quernList.get(i) != null) + { + if (quernList.get(i).isInItem(inputStack) && ItemStack.areItemStacksEqual(quernList.get(i).getResult(), outputStack)) + quernList.remove(i--); + } + } + + if(QuernManager.getInstance().findMatchingRecipe(inputStack) == null && QuernManager.getInstance().isValidItem(inputStack)) + { + List validItemsList = QuernManager.getInstance().getValidItems(); + for (int i = 0; i < validItemsList.size(); i++) + { + if (validItemsList.get(i) != null) + { + if (ItemStack.areItemStacksEqual(validItemsList.get(i), inputStack)) + validItemsList.remove(i--); + } + } + } + } + + @Override + public String describe() + { + return "Removing item '" + inputStack.getDisplayName() + "' from the Quern yeilding '" + outputStack.getDisplayName() + "'"; + } + + @Override + public boolean canUndo() + { + return true; + } + + @Override + public void undo() + { + QuernManager.getInstance().addRecipe(new QuernRecipe(inputStack, outputStack)); + } + + @Override + public String describeUndo() + { + return "Adding item '" + inputStack.getDisplayName() + "' to the Quern to yeild '" + outputStack.getDisplayName() + "'"; + } + + @Override + public Object getOverrideKey() { + return null; + } + } +} diff --git a/src/main/java/com/JAWolfe/tfptweaks/minetweaker/TFCTweaker.java b/src/main/java/com/JAWolfe/tfptweaks/minetweaker/TFCTweaker.java new file mode 100644 index 0000000..4d8ea94 --- /dev/null +++ b/src/main/java/com/JAWolfe/tfptweaks/minetweaker/TFCTweaker.java @@ -0,0 +1,17 @@ +package com.JAWolfe.tfptweaks.minetweaker; + +import cpw.mods.fml.common.Loader; +import minetweaker.MineTweakerAPI; + +public class TFCTweaker +{ + public static void postInit() + { + if (Loader.isModLoaded("MineTweaker3")) + { + MineTweakerAPI.registerClass(ItemHeat.class); + MineTweakerAPI.registerClass(Loom.class); + MineTweakerAPI.registerClass(Quern.class); + } + } +} diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 5b59902..37335cc 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -8,7 +8,7 @@ "mcversion": "${minecraft_version}", "url": "", "updateUrl": "", - "authorList": [""], + "authorList": ["JAWolfe, OneWolfe"], "credits": "", "logoFile": "", "screenshots": [],