diff --git a/resources/assets/tinker/lang/en_US.lang b/resources/assets/tinker/lang/en_US.lang index 5f02bcff..8a6bac65 100644 --- a/resources/assets/tinker/lang/en_US.lang +++ b/resources/assets/tinker/lang/en_US.lang @@ -239,6 +239,8 @@ item.tconstruct.Materials.ManyullynNugget.name=Manyullyn Nugget item.tconstruct.Materials.BronzeNugget.name=Bronze Nugget item.tconstruct.Materials.AlumiteNugget.name=Alumite Nugget item.tconstruct.Materials.SteelNugget.name=Steel Nugget +item.tconstruct.Materials.PigIronIngot.name=Pig Iron Ingot +item.tconstruct.Materials.PigIronNugget.name=Pig Iron Platter item.tconstruct.ArmorPattern.helmet.name=Helmet Cast item.tconstruct.ArmorPattern.chestplate.name=Chestplate Cast @@ -408,6 +410,7 @@ item.tconstruct.bucket.Invar.name=Molten Invar Bucket item.tconstruct.bucket.Electrum.name=Molten Electrum Bucket item.tconstruct.bucket.Ender.name=Liquified Ender Bucket item.tconstruct.bucket.Slime.name=Liquid Slime Bucket +item.tconstruct.bucket.PigIron.name=Molten Pig Iron Bucket item.tconstruct.bowstring.string.name=Bowstring item.tconstruct.bowstring.enchantedfabriI donc.name=Enchanted Bowstring @@ -509,6 +512,7 @@ parttype.alumite=Alumite parttype.steel=Steel parttype.blueslime=Slime parttype.thaumium=Thaumium +parttype.pigiron=Pig Iron toolpart.ToolRod=%%material Tool Rod toolpart.PickHead=%%material Pickaxe Head @@ -562,6 +566,7 @@ fluid.invar=Molten Invar fluid.electrum.molten=Molten Electrum fluid.ender=Liquid Ender fluid.slime.blue=Liquid Blueslime +fluid.pigiron.molten=Pig Iron tconstruct.achievementPage.name=TConstruct achievement.tconstruct.beginner=Learning to Tinker diff --git a/resources/assets/tinker/textures/blocks/liquid_pigiron.png b/resources/assets/tinker/textures/blocks/liquid_pigiron.png new file mode 100644 index 00000000..987e6a6e Binary files /dev/null and b/resources/assets/tinker/textures/blocks/liquid_pigiron.png differ diff --git a/resources/assets/tinker/textures/blocks/liquid_pigiron.png.mcmeta b/resources/assets/tinker/textures/blocks/liquid_pigiron.png.mcmeta new file mode 100644 index 00000000..04732ffb --- /dev/null +++ b/resources/assets/tinker/textures/blocks/liquid_pigiron.png.mcmeta @@ -0,0 +1,37 @@ +{ + "animation": { + "frametime": 2, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/resources/assets/tinker/textures/blocks/liquid_pigiron_flow.png b/resources/assets/tinker/textures/blocks/liquid_pigiron_flow.png new file mode 100644 index 00000000..aeadc574 Binary files /dev/null and b/resources/assets/tinker/textures/blocks/liquid_pigiron_flow.png differ diff --git a/resources/assets/tinker/textures/blocks/liquid_pigiron_flow.png.mcmeta b/resources/assets/tinker/textures/blocks/liquid_pigiron_flow.png.mcmeta new file mode 100644 index 00000000..8e55e43b --- /dev/null +++ b/resources/assets/tinker/textures/blocks/liquid_pigiron_flow.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 3 + } +} diff --git a/resources/assets/tinker/textures/items/materials/bucket_pigiron.png b/resources/assets/tinker/textures/items/materials/bucket_pigiron.png new file mode 100644 index 00000000..88ee21af Binary files /dev/null and b/resources/assets/tinker/textures/items/materials/bucket_pigiron.png differ diff --git a/resources/assets/tinker/textures/items/shortbow/flux_bow_effect.png b/resources/assets/tinker/textures/items/shortbow/flux_bow_effect.png new file mode 100644 index 00000000..90f36e86 Binary files /dev/null and b/resources/assets/tinker/textures/items/shortbow/flux_bow_effect.png differ diff --git a/src/tconstruct/blocks/logic/SmelteryLogic.java b/src/tconstruct/blocks/logic/SmelteryLogic.java index b6046241..057695ea 100644 --- a/src/tconstruct/blocks/logic/SmelteryLogic.java +++ b/src/tconstruct/blocks/logic/SmelteryLogic.java @@ -318,7 +318,7 @@ public class SmelteryLogic extends InventoryLogic implements IActiveLogic, IFaci if (currentLiquid + 8 < maxLiquid) { int amount = villager.isChild() ? 1 : 8; - this.addMoltenMetal(new FluidStack(TContent.moltenEmeraldFluid, amount), false); + this.fill(new FluidStack(TContent.moltenEmeraldFluid, amount), true); } } } @@ -329,7 +329,7 @@ public class SmelteryLogic extends InventoryLogic implements IActiveLogic, IFaci { if (currentLiquid + 25 < maxLiquid) { - this.addMoltenMetal(new FluidStack(TContent.moltenEnderFluid, 25), false); + this.fill(new FluidStack(TContent.moltenEnderFluid, 25), true); } } } @@ -341,7 +341,7 @@ public class SmelteryLogic extends InventoryLogic implements IActiveLogic, IFaci if (currentLiquid + 8 < maxLiquid) { int amount = (living.isChild() || living instanceof EntityPlayer) ? 1 : 8; - this.addMoltenMetal(new FluidStack(TContent.bloodFluid, amount), false); + this.fill(new FluidStack(TContent.bloodFluid, amount), true); } } } diff --git a/src/tconstruct/client/TClientEvents.java b/src/tconstruct/client/TClientEvents.java index 3b8bc594..168ebed0 100644 --- a/src/tconstruct/client/TClientEvents.java +++ b/src/tconstruct/client/TClientEvents.java @@ -9,6 +9,8 @@ import net.minecraft.client.audio.SoundManager; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.entity.*; import net.minecraft.entity.ai.attributes.AttributeInstance; import net.minecraft.potion.*; @@ -55,12 +57,32 @@ public class TClientEvents } /* Liquids */ + + Icon[] stillIcons = new Icon[1]; + Icon[] flowIcons = new Icon[1]; + + @ForgeSubscribe + public void preStitch (TextureStitchEvent.Pre event) + { + TextureMap register = event.map; + if (register.textureType == 0) + { + stillIcons[0] = register.registerIcon("tinker:liquid_pigiron"); + flowIcons[0] = register.registerIcon("tinker:liquid_pigiron"); + System.out.println("Icons: "+stillIcons[0]+" "+flowIcons[0]); + } + } + @ForgeSubscribe public void postStitch (TextureStitchEvent.Post event) { - for (int i = 0; i < TContent.fluids.length; i++) + if (event.map.textureType == 0) { - TContent.fluids[i].setIcons(TContent.fluidBlocks[i].getIcon(0, 0), TContent.fluidBlocks[i].getIcon(2, 0)); + for (int i = 0; i < TContent.fluidBlocks.length; i++) + { + TContent.fluids[i].setIcons(TContent.fluidBlocks[i].getIcon(0, 0), TContent.fluidBlocks[i].getIcon(2, 0)); + } + TContent.pigIronFluid.setIcons(stillIcons[0], flowIcons[0]); } } diff --git a/src/tconstruct/client/TProxyClient.java b/src/tconstruct/client/TProxyClient.java index 1335ba03..c84f3867 100644 --- a/src/tconstruct/client/TProxyClient.java +++ b/src/tconstruct/client/TProxyClient.java @@ -486,7 +486,8 @@ public class TProxyClient extends TProxyCommon TConstructClientRegistry.registerManualLargeRecipe("smelterytable", new ItemStack(TContent.searedBlock, 1, 0), searedbrick, searedbrick, searedbrick, searedbrick, null, searedbrick, searedbrick, null, searedbrick); TConstructClientRegistry.registerManualLargeRecipe("smelteryfaucet", new ItemStack(TContent.searedBlock, 1, 1), searedbrick, null, searedbrick, null, searedbrick, null, null, null, null); - TConstructClientRegistry.registerManualLargeRecipe("castingchannel", new ItemStack(TContent.castingChannel), null, null, null, searedbrick, null, searedbrick, searedbrick, searedbrick, searedbrick); + TConstructClientRegistry.registerManualLargeRecipe("castingchannel", new ItemStack(TContent.castingChannel), null, null, null, searedbrick, null, searedbrick, searedbrick, searedbrick, + searedbrick); TConstructClientRegistry.registerManualLargeRecipe("smelterybasin", new ItemStack(TContent.searedBlock, 1, 2), searedbrick, null, searedbrick, searedbrick, null, searedbrick, searedbrick, searedbrick, searedbrick); @@ -680,8 +681,7 @@ public class TProxyClient extends TProxyCommon void addRenderMappings () { String[] partTypes = { "wood", "stone", "iron", "flint", "cactus", "bone", "obsidian", "netherrack", "slime", "paper", "cobalt", "ardite", "manyullyn", "copper", "bronze", "alumite", "steel", - "blueslime" }; - // String[] modPartTypes = { "thaumium" }; + "blueslime", "pigiron" }; String[] effectTypes = { "diamond", "emerald", "redstone", "piston", "moss", "ice", "lava", "blaze", "necrotic", "electric", "lapis", "quartz", "silk", "beheading", "smite", "spider", "reinforced", "flux" }; int[] universalEffects = { 0, 1, 4, 9, 16, 17 }; @@ -694,23 +694,11 @@ public class TProxyClient extends TProxyCommon TConstructClientRegistry.addMaterialRenderMapping(partIter, "tinker", partTypes[partIter], true); } - /* - * for (int iter = 0; iter < modPartTypes.length; iter++) { - * TConstructClientRegistry.addMaterialRenderMapping(31 + iter, - * "tinker", modPartTypes[iter], true); } - */ - for (ToolCore tool : TConstructRegistry.getToolMapping()) { for (int i = 0; i < effectTypes.length; i++) { - //TODO force the flux modifier to use electric textures for now - /*if (i == 17) - { - TConstructClientRegistry.addEffectRenderMapping(tool, i, "tinker", effectTypes[9], true); - } - else*/ - TConstructClientRegistry.addEffectRenderMapping(tool, i, "tinker", effectTypes[i], true); + TConstructClientRegistry.addEffectRenderMapping(tool, i, "tinker", effectTypes[i], true); } } diff --git a/src/tconstruct/common/TContent.java b/src/tconstruct/common/TContent.java index da97ae06..8fda722c 100644 --- a/src/tconstruct/common/TContent.java +++ b/src/tconstruct/common/TContent.java @@ -208,6 +208,7 @@ public class TContent implements IFuelHandler public static Fluid moltenElectrumFluid; public static Fluid moltenEnderFluid; public static Fluid blueSlimeFluid; + public static Fluid pigIronFluid; public static Block moltenIron; public static Block moltenGold; @@ -301,8 +302,9 @@ public class TContent implements IFuelHandler addCraftingRecipes(); setupToolTabs(); addLoot(); - if(PHConstruct.achievementsEnabled){ - addAchievements(); + if (PHConstruct.achievementsEnabled) + { + addAchievements(); } } @@ -321,7 +323,7 @@ public class TContent implements IFuelHandler //EntityRegistry.registerModEntity(MetalSlime.class, "MetalSlime", 13, TConstruct.instance, 64, 5, true); } - public static Fluid[] fluids = new Fluid[25]; + public static Fluid[] fluids = new Fluid[26]; public static Block[] fluidBlocks = new Block[25]; void registerBlocks () @@ -709,6 +711,13 @@ public class TContent implements IFuelHandler blueSlimeFluid.setBlockID(slimePool); FluidContainerRegistry.registerFluidContainer(new FluidContainerData(new FluidStack(blueSlimeFluid, 1000), new ItemStack(buckets, 1, 24), new ItemStack(Item.bucketEmpty))); + pigIronFluid = new Fluid("pigiron.molten"); + if (!FluidRegistry.registerFluid(pigIronFluid)) + pigIronFluid = FluidRegistry.getFluid("pigiron.molten"); + else + pigIronFluid.setDensity(3000).setViscosity(6000).setTemperature(1300); + fluids[25] = pigIronFluid; + slimeGel = new SlimeGel(PHConstruct.slimeGel).setStepSound(slimeStep).setLightOpacity(0).setUnlocalizedName("slime.gel"); GameRegistry.registerBlock(slimeGel, SlimeGelItemBlock.class, "slime.gel"); @@ -934,7 +943,7 @@ public class TContent implements IFuelHandler String[] materialStrings = { "paperStack", "greenSlimeCrystal", "searedBrick", "ingotCobalt", "ingotArdite", "ingotManyullyn", "mossBall", "lavaCrystal", "necroticBone", "ingotCopper", "ingotTin", "ingotAluminum", "rawAluminum", "ingotBronze", "ingotAluminumBrass", "ingotAlumite", "ingotSteel", "blueSlimeCrystal", "ingotObsidian", "nuggetIron", "nuggetCopper", "nuggetTin", "nuggetAluminum", "nuggetSilver", "nuggetAluminumBrass", "silkyCloth", "silkyJewel", "nuggetObsidian", "nuggetCobalt", "nuggetArdite", "nuggetManyullyn", "nuggetBronze", - "nuggetAlumite", "nuggetSteel" }; + "nuggetAlumite", "nuggetSteel", "ingotPigIron", "nuggetPigIron" }; for (int i = 0; i < materialStrings.length; i++) { @@ -987,6 +996,7 @@ public class TContent implements IFuelHandler TConstructRegistry.addToolMaterial(15, "Alumite", 4, 550, 800, 3, 1.3F, 2, 0f, "\u00A7d", ""); TConstructRegistry.addToolMaterial(16, "Steel", 4, 750, 800, 3, 1.3F, 2, 0f, "", ""); TConstructRegistry.addToolMaterial(17, "BlueSlime", "Slime ", 0, 1200, 150, 0, 2.0F, 0, 0f, "\u00A7b", ""); + TConstructRegistry.addToolMaterial(18, "PigIron", "Pig Iron ", 3, 500, 600, 2, 1.6F, 1, 0f, "\u00A7c", "Tasty"); TConstructRegistry.addBowMaterial(0, 384, 20, 1.0f); //Wood TConstructRegistry.addBowMaterial(1, 10, 80, 0.2f); //Stone @@ -1006,6 +1016,7 @@ public class TContent implements IFuelHandler TConstructRegistry.addBowMaterial(15, 768, 40, 1.2f); //Alumite TConstructRegistry.addBowMaterial(16, 768, 40, 1.2f); //Steel TConstructRegistry.addBowMaterial(17, 576, 20, 1.2f); //Blue Slime + TConstructRegistry.addBowMaterial(18, 384, 20, 1.2f); //Slime //Material ID, mass, fragility TConstructRegistry.addArrowMaterial(0, 0.69F, 1.0F, 100F); //Wood @@ -1026,6 +1037,7 @@ public class TContent implements IFuelHandler TConstructRegistry.addArrowMaterial(15, 4.7F, 0.25F, 100F); //Alumite TConstructRegistry.addArrowMaterial(16, 7.6F, 0.25F, 100F); //Steel TConstructRegistry.addArrowMaterial(17, 0.42F, 0.0F, 100F); //Blue Slime + TConstructRegistry.addArrowMaterial(18, 6.8F, 0.5F, 100F); //Iron TConstructRegistry.addBowstringMaterial(0, 2, new ItemStack(Item.silk), new ItemStack(bowstring, 1, 0), 1F, 1F, 1f); //String TConstructRegistry.addFletchingMaterial(0, 2, new ItemStack(Item.feather), new ItemStack(fletching, 1, 0), 100F, 0F, 0.05F); //Feather @@ -1546,6 +1558,7 @@ public class TContent implements IFuelHandler { tableCasting.addCastingRecipe(new ItemStack(buckets, 1, sc), new FluidStack(fluids[sc], FluidContainerRegistry.BUCKET_VOLUME), bucket, true, 10); } + tableCasting.addCastingRecipe(new ItemStack(buckets, 1, 25), new FluidStack(fluids[25], FluidContainerRegistry.BUCKET_VOLUME), bucket, true, 10); // Clear glass pane casting tableCasting.addCastingRecipe(new ItemStack(glassPane), new FluidStack(moltenGlassFluid, 250), null, 80); @@ -1553,8 +1566,8 @@ public class TContent implements IFuelHandler // Metal toolpart casting liquids = new FluidStack[] { new FluidStack(moltenIronFluid, 1), new FluidStack(moltenCopperFluid, 1), new FluidStack(moltenCobaltFluid, 1), new FluidStack(moltenArditeFluid, 1), new FluidStack(moltenManyullynFluid, 1), new FluidStack(moltenBronzeFluid, 1), new FluidStack(moltenAlumiteFluid, 1), new FluidStack(moltenObsidianFluid, 1), - new FluidStack(moltenSteelFluid, 1) }; - int[] liquidDamage = new int[] { 2, 13, 10, 11, 12, 14, 15, 6, 16 }; + new FluidStack(moltenSteelFluid, 1), new FluidStack(pigIronFluid, 1) }; + int[] liquidDamage = new int[] { 2, 13, 10, 11, 12, 14, 15, 6, 16, 18 }; //ItemStack damage value int fluidAmount = 0; Fluid fs = null; @@ -1647,14 +1660,16 @@ public class TContent implements IFuelHandler private void addRecipesForSmeltery () { //Alloy Smelting - Smeltery.addAlloyMixing(new FluidStack(moltenBronzeFluid, TConstruct.ingotLiquidValue * PHConstruct.ingotsBronzeAlloy), new FluidStack(moltenCopperFluid, TConstruct.ingotLiquidValue * 3), new FluidStack( - moltenTinFluid, TConstruct.ingotLiquidValue)); //Bronze - Smeltery.addAlloyMixing(new FluidStack(moltenAlubrassFluid, TConstruct.ingotLiquidValue * PHConstruct.ingotsAluminumBrassAlloy), new FluidStack(moltenAluminumFluid, TConstruct.ingotLiquidValue * 3), new FluidStack( - moltenCopperFluid, TConstruct.ingotLiquidValue * 1)); //Aluminum Brass - Smeltery.addAlloyMixing(new FluidStack(moltenAlumiteFluid, TConstruct.ingotLiquidValue * PHConstruct.ingotsAlumiteAlloy), new FluidStack(moltenAluminumFluid, TConstruct.ingotLiquidValue * 5), new FluidStack( - moltenIronFluid, TConstruct.ingotLiquidValue * 2), new FluidStack(moltenObsidianFluid, TConstruct.ingotLiquidValue * 2)); //Alumite - Smeltery.addAlloyMixing(new FluidStack(moltenManyullynFluid, TConstruct.ingotLiquidValue * PHConstruct.ingotsManyullynAlloy), new FluidStack(moltenCobaltFluid, TConstruct.ingotLiquidValue), new FluidStack( - moltenArditeFluid, TConstruct.ingotLiquidValue)); //Manyullyn + Smeltery.addAlloyMixing(new FluidStack(moltenBronzeFluid, TConstruct.ingotLiquidValue * PHConstruct.ingotsBronzeAlloy), new FluidStack(moltenCopperFluid, TConstruct.ingotLiquidValue * 3), + new FluidStack(moltenTinFluid, TConstruct.ingotLiquidValue)); //Bronze + Smeltery.addAlloyMixing(new FluidStack(moltenAlubrassFluid, TConstruct.ingotLiquidValue * PHConstruct.ingotsAluminumBrassAlloy), new FluidStack(moltenAluminumFluid, + TConstruct.ingotLiquidValue * 3), new FluidStack(moltenCopperFluid, TConstruct.ingotLiquidValue * 1)); //Aluminum Brass + Smeltery.addAlloyMixing(new FluidStack(moltenAlumiteFluid, TConstruct.ingotLiquidValue * PHConstruct.ingotsAlumiteAlloy), new FluidStack(moltenAluminumFluid, TConstruct.ingotLiquidValue * 5), + new FluidStack(moltenIronFluid, TConstruct.ingotLiquidValue * 2), new FluidStack(moltenObsidianFluid, TConstruct.ingotLiquidValue * 2)); //Alumite + Smeltery.addAlloyMixing(new FluidStack(moltenManyullynFluid, TConstruct.ingotLiquidValue * PHConstruct.ingotsManyullynAlloy), new FluidStack(moltenCobaltFluid, TConstruct.ingotLiquidValue), + new FluidStack(moltenArditeFluid, TConstruct.ingotLiquidValue)); //Manyullyn + Smeltery.addAlloyMixing(new FluidStack(pigIronFluid, TConstruct.ingotLiquidValue * PHConstruct.ingotsPigironAlloy), new FluidStack(moltenIronFluid, TConstruct.ingotLiquidValue), + new FluidStack(bloodFluid, 400)); //Pigiron // Stone parts for (int sc = 0; sc < patternOutputs.length; sc++) @@ -1696,18 +1711,12 @@ public class TContent implements IFuelHandler Smeltery.addMelting(FluidType.Iron, new ItemStack(Item.cauldron), 0, TConstruct.ingotLiquidValue * 7); Smeltery.addMelting(FluidType.Iron, new ItemStack(Item.shears), 0, TConstruct.ingotLiquidValue * 2); - // Smeltery.addMelting(FluidType.Slime, new ItemStack(slimeGel, 1, 0), 0, TConstruct.ingotLiquidValue * 4); - // Smeltery.addMelting(FluidType.Slime, new ItemStack(strangeFood, 1, 0), 0, TConstruct.ingotLiquidValue); - // Smeltery.addMelting(FluidType.Slime, new ItemStack(multiBrick, 1, 11), 0, TConstruct.ingotLiquidValue); - // Smeltery.addMelting(FluidType.Slime, new ItemStack(multiBrickFancy, 1, 11), 0, TConstruct.ingotLiquidValue); - - //Blocks melt at themselves! + //Blocks melt as themselves! //Ore - - // Smeltery.addMelting(Block.oreIron, 0, 600, new FluidStack(moltenIronFluid, TConstruct.ingotLiquidValue * 2)); - // Smeltery.addMelting(Block.oreGold, 0, 400, new FluidStack(moltenGoldFluid, TConstruct.ingotLiquidValue * 2)); - // Smeltery.addMelting(oreGravel, 0, 600, new FluidStack(moltenIronFluid, TConstruct.ingotLiquidValue * 2)); - // Smeltery.addMelting(oreGravel, 1, 400, new FluidStack(moltenGoldFluid, TConstruct.ingotLiquidValue * 2)); + Smeltery.addMelting(Block.oreIron, 0, 600, new FluidStack(moltenIronFluid, TConstruct.ingotLiquidValue * 2)); + Smeltery.addMelting(Block.oreGold, 0, 400, new FluidStack(moltenGoldFluid, TConstruct.ingotLiquidValue * 2)); + Smeltery.addMelting(oreGravel, 0, 600, new FluidStack(moltenIronFluid, TConstruct.ingotLiquidValue * 2)); + Smeltery.addMelting(oreGravel, 1, 400, new FluidStack(moltenGoldFluid, TConstruct.ingotLiquidValue * 2)); //Blocks Smeltery.addMelting(Block.blockIron, 0, 600, new FluidStack(moltenIronFluid, TConstruct.ingotLiquidValue * 9)); @@ -1924,6 +1933,7 @@ public class TContent implements IFuelHandler ensureOreIsRegistered("ingotIron", new ItemStack(Item.ingotIron)); ensureOreIsRegistered("ingotGold", new ItemStack(Item.ingotGold)); OreDictionary.registerOre("ingotObsidian", new ItemStack(materials, 1, 18)); + OreDictionary.registerOre("ingotPigIron", new ItemStack(materials, 1, 34)); OreDictionary.registerOre("blockCobalt", new ItemStack(metalBlock, 1, 0)); OreDictionary.registerOre("blockArdite", new ItemStack(metalBlock, 1, 1)); @@ -1956,6 +1966,7 @@ public class TContent implements IFuelHandler OreDictionary.registerOre("nuggetSteel", new ItemStack(materials, 1, 33)); OreDictionary.registerOre("nuggetGold", new ItemStack(oreBerries, 1, 1)); ensureOreIsRegistered("nuggetGold", new ItemStack(Item.goldNugget)); + OreDictionary.registerOre("nuggetPigIron", new ItemStack(materials, 1, 35)); OreDictionary.registerOre("slabCloth", new ItemStack(woolSlab1, 1, Short.MAX_VALUE)); OreDictionary.registerOre("slabCloth", new ItemStack(woolSlab2, 1, Short.MAX_VALUE)); @@ -2349,24 +2360,24 @@ public class TContent implements IFuelHandler // Nuggets Smeltery.addDictionaryMelting("nugget" + ft.toString(), ft, -100, TConstruct.nuggetLiquidValue); - + // Ingots, Dust registerIngotCasting(ft); Smeltery.addDictionaryMelting("ingot" + ft.toString(), ft, -50, TConstruct.ingotLiquidValue); Smeltery.addDictionaryMelting("dust" + ft.toString(), ft, -75, TConstruct.ingotLiquidValue); - + // Factorization support Smeltery.addDictionaryMelting("crystalline" + ft.toString(), ft, -50, TConstruct.ingotLiquidValue); // Ores - Smeltery.addDictionaryMelting("ore" + ft.toString(), ft, 0, TConstruct.ingotLiquidValue * PHConstruct.ingotsPerOre); - + Smeltery.addDictionaryMelting("ore" + ft.toString(), ft, 0, TConstruct.ingotLiquidValue * PHConstruct.ingotsPerOre); + // NetherOres support - Smeltery.addDictionaryMelting("oreNether" + ft.toString(), ft, 75, TConstruct.ingotLiquidValue * PHConstruct.ingotsPerOre * 2); - + Smeltery.addDictionaryMelting("oreNether" + ft.toString(), ft, 75, TConstruct.ingotLiquidValue * PHConstruct.ingotsPerOre * 2); + // Blocks Smeltery.addDictionaryMelting("block" + ft.toString(), ft, 100, TConstruct.blockLiquidValue); - + if (ft.isToolpart) { registerPatternMaterial("ingot" + ft.toString(), 2, ft.toString()); @@ -2407,17 +2418,22 @@ public class TContent implements IFuelHandler } } - - public void addAchievements(){ - HashMap achievements = TAchievements.achievements; - - achievements.put("tconstruct.beginner", new Achievement(2001, "tconstruct.beginner", 0, 0, manualBook, null).setIndependent().registerAchievement()); - achievements.put("tconstruct.pattern", new Achievement(2002, "tconstruct.pattern", 2, 1, blankPattern, achievements.get("tconstruct.beginner")).registerAchievement()); - achievements.put("tconstruct.tinkerer", new Achievement(2003, "tconstruct.tinkerer", 2, 2, new ItemStack(titleIcon, 1, 4096), achievements.get("tconstruct.pattern")).registerAchievement()); - achievements.put("tconstruct.preparedFight", new Achievement(2004, "tconstruct.preparedFight", 1, 3, new ItemStack(titleIcon, 1, 4097), achievements.get("tconstruct.tinkerer")).registerAchievement()); - achievements.put("tconstruct.proTinkerer", new Achievement(2005, "tconstruct.proTinkerer", 4, 4, new ItemStack(titleIcon, 1, 4098), achievements.get("tconstruct.tinkerer")).setSpecial().registerAchievement()); - achievements.put("tconstruct.smelteryMaker", new Achievement(2006, "tconstruct.smelteryMaker", -2, -1, smeltery, achievements.get("tconstruct.beginner")).registerAchievement()); - achievements.put("tconstruct.enemySlayer", new Achievement(2007, "tconstruct.enemySlayer", 0, 5, new ItemStack(titleIcon, 1, 4099), achievements.get("tconstruct.preparedFight")).registerAchievement()); - achievements.put("tconstruct.dualConvenience", new Achievement(2008, "tconstruct.dualConvenience", 0, 7, new ItemStack(titleIcon, 1, 4100), achievements.get("tconstruct.enemySlayer")).setSpecial().registerAchievement()); + + public void addAchievements () + { + HashMap achievements = TAchievements.achievements; + + achievements.put("tconstruct.beginner", new Achievement(2001, "tconstruct.beginner", 0, 0, manualBook, null).setIndependent().registerAchievement()); + achievements.put("tconstruct.pattern", new Achievement(2002, "tconstruct.pattern", 2, 1, blankPattern, achievements.get("tconstruct.beginner")).registerAchievement()); + achievements.put("tconstruct.tinkerer", new Achievement(2003, "tconstruct.tinkerer", 2, 2, new ItemStack(titleIcon, 1, 4096), achievements.get("tconstruct.pattern")).registerAchievement()); + achievements.put("tconstruct.preparedFight", + new Achievement(2004, "tconstruct.preparedFight", 1, 3, new ItemStack(titleIcon, 1, 4097), achievements.get("tconstruct.tinkerer")).registerAchievement()); + achievements.put("tconstruct.proTinkerer", new Achievement(2005, "tconstruct.proTinkerer", 4, 4, new ItemStack(titleIcon, 1, 4098), achievements.get("tconstruct.tinkerer")).setSpecial() + .registerAchievement()); + achievements.put("tconstruct.smelteryMaker", new Achievement(2006, "tconstruct.smelteryMaker", -2, -1, smeltery, achievements.get("tconstruct.beginner")).registerAchievement()); + achievements.put("tconstruct.enemySlayer", + new Achievement(2007, "tconstruct.enemySlayer", 0, 5, new ItemStack(titleIcon, 1, 4099), achievements.get("tconstruct.preparedFight")).registerAchievement()); + achievements.put("tconstruct.dualConvenience", new Achievement(2008, "tconstruct.dualConvenience", 0, 7, new ItemStack(titleIcon, 1, 4100), achievements.get("tconstruct.enemySlayer")) + .setSpecial().registerAchievement()); } } diff --git a/src/tconstruct/items/FilledBucket.java b/src/tconstruct/items/FilledBucket.java index d5a532dc..9c8bc986 100644 --- a/src/tconstruct/items/FilledBucket.java +++ b/src/tconstruct/items/FilledBucket.java @@ -139,7 +139,7 @@ public class FilledBucket extends ItemBucket { int id = 0; int metadata = 0; - if (type == 24) + if (type == 25) metadata = 0; world.setBlock(clickX, clickY, clickZ, TContent.fluidBlocks[type].blockID, metadata, 3); //TODO: Merge liquids @@ -180,8 +180,8 @@ public class FilledBucket extends ItemBucket } public static final String[] materialNames = new String[] { "Iron", "Gold", "Copper", "Tin", "Aluminum", "Cobalt", "Ardite", "Bronze", "AluBrass", "Manyullyn", "Alumite", "Obsidian", "Steel", - "Glass", "Stone", "Villager", "Cow", "Nickel", "Lead", "Silver", "Shiny", "Invar", "Electrum", "Ender", "Slime" }; + "Glass", "Stone", "Villager", "Cow", "Nickel", "Lead", "Silver", "Shiny", "Invar", "Electrum", "Ender", "Slime", "PigIron" }; public static final String[] textureNames = new String[] { "iron", "gold", "copper", "tin", "aluminum", "cobalt", "ardite", "bronze", "alubrass", "manyullyn", "alumite", "obsidian", "steel", - "glass", "stone", "emerald", "blood", "nickel", "lead", "silver", "shiny", "invar", "electrum", "ender", "slime" }; + "glass", "stone", "emerald", "blood", "nickel", "lead", "silver", "shiny", "invar", "electrum", "ender", "slime", "pigiron" }; } diff --git a/src/tconstruct/items/MaterialItem.java b/src/tconstruct/items/MaterialItem.java index 3fcbc8ad..3713c372 100644 --- a/src/tconstruct/items/MaterialItem.java +++ b/src/tconstruct/items/MaterialItem.java @@ -12,19 +12,24 @@ public class MaterialItem extends CraftingItem { String[] names = new String[craftingTextures.length]; for (int i = 0; i < craftingTextures.length; i++) - names[i] = "material_" + craftingTextures[i]; + { + if (craftingTextures[i].equals("")) + names[i] = ""; + else + names[i] = "material_" + craftingTextures[i]; + } return names; } static String[] materialNames = new String[] { "PaperStack", "SlimeCrystal", "SearedBrick", "CobaltIngot", "ArditeIngot", "ManyullynIngot", "Mossball", "LavaCrystal", "NecroticBone", - "CopperIngot", "TinIngot", "AluminumIngot", "RawAluminum", "BronzeIngot", "AluBrassIngot", "AlumiteIngot", "SteelIngot", "BlueSlimeCrystal", "ObsidianIngot", "IronNugget", "CopperNugget", - "TinNugget", "AluminumNugget", "EssenceCrystal", "AluBrassNugget", "SilkyCloth", "SilkyJewel", "ObsidianNugget", "CobaltNugget", "ArditeNugget", "ManyullynNugget", "BronzeNugget", - "AlumiteNugget", "SteelNugget" }; + "CopperIngot", "TinIngot", "", "RawAluminum", "BronzeIngot", "AluBrassIngot", "AlumiteIngot", "SteelIngot", "BlueSlimeCrystal", "ObsidianIngot", "IronNugget", "CopperNugget", "TinNugget", + "AluminumNugget", "EssenceCrystal", "AluBrassNugget", "SilkyCloth", "SilkyJewel", "ObsidianNugget", "CobaltNugget", "ArditeNugget", "ManyullynNugget", "BronzeNugget", "AlumiteNugget", + "SteelNugget", "PigIronIngot", "PigIronNugget" }; static String[] craftingTextures = new String[] { "paperstack", "slimecrystal", "searedbrick", "cobaltingot", "arditeingot", "manyullyningot", "mossball", "lavacrystal", "necroticbone", "copperingot", "tiningot", "aluminumingot", "aluminumraw", "bronzeingot", "alubrassingot", "alumiteingot", "steelingot", "blueslimecrystal", "obsidianingot", "nugget_iron", - "nugget_copper", "nugget_tin", "nugget_aluminum", "essencecrystal", "nugget_alubrass", "silkycloth", "silkyjewel", "nugget_obsidian", "nugget_cobalt", "nugget_ardite", "nugget_manyullyn", - "nugget_bronze", "nugget_alumite", "nugget_steel" }; + "nugget_copper", "nugget_tin", "nugget_aluminum", "", "nugget_alubrass", "silkycloth", "silkyjewel", "nugget_obsidian", "nugget_cobalt", "nugget_ardite", "nugget_manyullyn", + "nugget_bronze", "nugget_alumite", "nugget_steel", "pigironingot", "nugget_pigiron" }; /*@Override @SideOnly(Side.CLIENT) diff --git a/src/tconstruct/items/ToolPart.java b/src/tconstruct/items/ToolPart.java index 6a2d1915..356651e8 100644 --- a/src/tconstruct/items/ToolPart.java +++ b/src/tconstruct/items/ToolPart.java @@ -58,15 +58,15 @@ public class ToolPart extends CraftingItem implements IToolPart } public static final String[] toolMaterialNames = new String[] { "Wood", "Stone", "Iron", "Flint", "Cactus", "Bone", "Obsidian", "Netherrack", "Slime", "Paper", "Cobalt", "Ardite", "Manyullyn", - "Copper", "Bronze", "Alumite", "Steel", "Blue Slime", "", "", "", "", "", "", "", "", "", "", "", "", "", "Thaumium" }; + "Copper", "Bronze", "Alumite", "Steel", "Blue Slime", "Pig Iron", "", "", "", "", "", "", "", "", "", "", "", "", "Thaumium" }; public static final String[] toolTextureNames = new String[] { "wood", "stone", "iron", "flint", "cactus", "bone", "obsidian", "netherrack", "slime", "paper", "cobalt", "ardite", "manyullyn", - "copper", "bronze", "alumite", "steel", "blueslime", "", "", "", "", "", "", "", "", "", "", "", "", "", "thaumium" }; + "copper", "bronze", "alumite", "steel", "blueslime", "pigiron", "", "", "", "", "", "", "", "", "", "", "", "", "thaumium" }; @Override public void getSubItems (int id, CreativeTabs tab, List list) { - for (int i = 0; i < 18; i++) + for (int i = 0; i < 19; i++) list.add(new ItemStack(id, 1, i)); if (TContent.thaumcraftAvailable) diff --git a/src/tconstruct/items/ToolShard.java b/src/tconstruct/items/ToolShard.java index ca8b73c5..d393c2e0 100644 --- a/src/tconstruct/items/ToolShard.java +++ b/src/tconstruct/items/ToolShard.java @@ -60,7 +60,7 @@ public class ToolShard extends ToolPart list.add(new ItemStack(id, 1, i)); for (int i = 6; i < 9; i++) list.add(new ItemStack(id, 1, i)); - for (int i = 10; i < 17; i++) + for (int i = 10; i < 19; i++) list.add(new ItemStack(id, 1, i)); if (TContent.thaumcraftAvailable) diff --git a/src/tconstruct/items/tools/FryingPan.java b/src/tconstruct/items/tools/FryingPan.java index be2e4ff7..b88fce17 100644 --- a/src/tconstruct/items/tools/FryingPan.java +++ b/src/tconstruct/items/tools/FryingPan.java @@ -27,7 +27,7 @@ public class FryingPan extends Weapon public FryingPan(int itemID) { super(itemID, 2); - this.setUnlocalizedName("InfiTool.FryingPan"); + this.setUnlocalizedName("InfiTool.FryPan"); } @Override diff --git a/src/tconstruct/library/crafting/FluidType.java b/src/tconstruct/library/crafting/FluidType.java index f8672979..b919fd45 100644 --- a/src/tconstruct/library/crafting/FluidType.java +++ b/src/tconstruct/library/crafting/FluidType.java @@ -57,7 +57,9 @@ public enum FluidType /** Emerald Smelting **/ Emerald(Block.oreEmerald.blockID, 0, 575, TContent.moltenEmeraldFluid, false), /** Slime Smelting **/ - Slime(TContent.slimeGel.blockID, 0, 250, TContent.blueSlimeFluid, false); + Slime(TContent.slimeGel.blockID, 0, 250, TContent.blueSlimeFluid, false), + /** Pigiron Smelting **/ + PigIron(TContent.meatBlock.blockID, 0, 610, TContent.pigIronFluid, true); public final int renderBlockID; public final int renderMeta; diff --git a/src/tconstruct/util/TEventHandler.java b/src/tconstruct/util/TEventHandler.java index a516f648..de29d4ef 100644 --- a/src/tconstruct/util/TEventHandler.java +++ b/src/tconstruct/util/TEventHandler.java @@ -1,35 +1,61 @@ package tconstruct.util; -import net.minecraft.item.crafting.FurnaceRecipes; - import java.util.Random; + import net.minecraft.block.Block; -import net.minecraft.entity.*; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.EntityLivingData; import net.minecraft.entity.boss.EntityWither; -import net.minecraft.entity.item.*; -import net.minecraft.entity.monster.*; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.item.EntityXPOrb; +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.entity.monster.EntityGhast; +import net.minecraft.entity.monster.EntitySkeleton; +import net.minecraft.entity.monster.EntitySpider; +import net.minecraft.entity.monster.EntityZombie; +import net.minecraft.entity.monster.IMob; import net.minecraft.entity.passive.EntityChicken; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.*; +import net.minecraft.item.Item; +import net.minecraft.item.ItemFood; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.*; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; import net.minecraft.util.EnumMovingObjectType; +import net.minecraft.world.GameRules; import net.minecraft.world.World; -import net.minecraftforge.event.*; +import net.minecraftforge.event.Event; import net.minecraftforge.event.Event.Result; -import net.minecraftforge.event.entity.living.*; -import net.minecraftforge.event.entity.player.*; +import net.minecraftforge.event.ForgeSubscribe; +import net.minecraftforge.event.entity.living.LivingDeathEvent; +import net.minecraftforge.event.entity.living.LivingDropsEvent; +import net.minecraftforge.event.entity.living.LivingHurtEvent; +import net.minecraftforge.event.entity.living.LivingSpawnEvent; +import net.minecraftforge.event.entity.player.BonemealEvent; +import net.minecraftforge.event.entity.player.FillBucketEvent; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action; import net.minecraftforge.oredict.OreDictionary.OreRegisterEvent; import tconstruct.TConstruct; import tconstruct.achievements.TAchievements; -import tconstruct.blocks.*; +import tconstruct.blocks.LiquidMetalFinite; +import tconstruct.blocks.TankAirBlock; import tconstruct.common.TContent; import tconstruct.items.tools.FryingPan; import tconstruct.library.TConstructRegistry; import tconstruct.library.crafting.ToolBuilder; -import tconstruct.library.event.*; -import tconstruct.library.tools.*; +import tconstruct.library.event.PartBuilderEvent; +import tconstruct.library.event.ToolCraftEvent; +import tconstruct.library.tools.ArrowMaterial; +import tconstruct.library.tools.BowMaterial; +import tconstruct.library.tools.BowstringMaterial; +import tconstruct.library.tools.FletchingMaterial; +import tconstruct.library.tools.ToolCore; +import tconstruct.library.tools.Weapon; import tconstruct.modifiers.ModAttack; import tconstruct.util.config.PHConstruct; import tconstruct.util.player.TPlayerStats; @@ -224,23 +250,31 @@ public class TEventHandler @ForgeSubscribe public void onLivingDrop (LivingDropsEvent event) { - if(event.source.getEntity() != null && event.source.getEntity() instanceof EntityPlayer){ - EntityPlayer player = (EntityPlayer)event.source.getEntity(); - if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof FryingPan){ - for(int i = 0; i < event.drops.size(); i++){ - ItemStack is = event.drops.get(i).getEntityItem(); - if(FurnaceRecipes.smelting().getSmeltingResult(is) != null && FurnaceRecipes.smelting().getSmeltingResult(is).getItem() instanceof ItemFood){ - NBTTagCompound stackCompound = is.getTagCompound(); - if(stackCompound == null){ - stackCompound = new NBTTagCompound(); - } - stackCompound.setBoolean("frypanKill", true); - is.setTagCompound(stackCompound); - } - } - } - } - + if (event.entityLiving == null) + return; + + if (event.source.getEntity() != null && event.source.getEntity() instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer) event.source.getEntity(); + if (player.getHeldItem() != null && player.getHeldItem().getItem() instanceof FryingPan) + { + for (int i = 0; i < event.drops.size(); i++) + { + ItemStack is = event.drops.get(i).getEntityItem(); + if (FurnaceRecipes.smelting().getSmeltingResult(is) != null && FurnaceRecipes.smelting().getSmeltingResult(is).getItem() instanceof ItemFood) + { + NBTTagCompound stackCompound = is.getTagCompound(); + if (stackCompound == null) + { + stackCompound = new NBTTagCompound(); + } + stackCompound.setBoolean("frypanKill", true); + is.setTagCompound(stackCompound); + } + } + } + } + if (random.nextInt(500) == 0 && event.entityLiving instanceof IMob && event.entityLiving.dimension == 0) { ItemStack dropStack = new ItemStack(TContent.heartCanister, 1, 1); @@ -407,7 +441,8 @@ public class TEventHandler } } - if (!player.worldObj.getGameRules().getGameRuleBooleanValue("keepInventory")) + GameRules rules = player.worldObj.getGameRules(); //Player is null if this crashes + if (rules == null || !rules.getGameRuleBooleanValue("keepInventory")) { TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.username); if (stats != null) @@ -422,13 +457,15 @@ public class TEventHandler @ForgeSubscribe public void onLivingDeath (LivingDeathEvent event) { - Entity cause = event.source.getSourceOfDamage(); - if(cause != null && cause instanceof EntityPlayer){ - EntityPlayer murderer = (EntityPlayer)cause; - if(murderer.getHeldItem().getItem() instanceof Weapon){ - murderer.addStat(TAchievements.achievements.get("tconstruct.enemySlayer"), 1); - } - } + Entity cause = event.source.getSourceOfDamage(); + if (cause != null && cause instanceof EntityPlayer) + { + EntityPlayer murderer = (EntityPlayer) cause; + if (murderer.getHeldItem().getItem() instanceof Weapon) + { + murderer.addStat(TAchievements.achievements.get("tconstruct.enemySlayer"), 1); + } + } } void addDrops (LivingDropsEvent event, ItemStack dropStack) diff --git a/src/tconstruct/util/config/PHConstruct.java b/src/tconstruct/util/config/PHConstruct.java index 5858e9b5..4346229e 100644 --- a/src/tconstruct/util/config/PHConstruct.java +++ b/src/tconstruct/util/config/PHConstruct.java @@ -70,6 +70,7 @@ public class PHConstruct ingotsAluminumBrassAlloy = config.get("Smeltery Output Modification", "Aluminum Brass ingot return", 4, "Number of ingots returned from smelting Aluminum Brass in the smeltery").getInt(4); ingotsAlumiteAlloy = config.get("Smeltery Output Modification", "Alumite ingot return", 3, "Number of ingots returned from smelting Alumite in the smeltery").getInt(3); ingotsManyullynAlloy = config.get("Smeltery Output Modification", "Manyullyn ingot return", 1, "Number of ingots returned from smelting Manyullyn in the smeltery").getInt(1); + ingotsPigironAlloy = config.get("Smeltery Output Modification", "Pig Iron ingot return", 1, "Number of ingots returned from smelting Pig Iron in the smeltery").getInt(1); //1467-1489 woodStation = config.getBlock("Wood Tool Station", 1471).getInt(1471); @@ -690,6 +691,7 @@ public class PHConstruct public static int ingotsAluminumBrassAlloy; public static int ingotsAlumiteAlloy; public static int ingotsManyullynAlloy; + public static int ingotsPigironAlloy; //Ultra Hardcore modifiers public static boolean enableHealthRegen;