From 8d8a9f60ea187734a599e546dfb6df86c14cf4a6 Mon Sep 17 00:00:00 2001 From: JAWolfe04 Date: Fri, 6 May 2016 15:55:30 -0500 Subject: [PATCH] Added Brick Oven, loom MT recipe optimization Added Brick Oven, loom MT recipe optimization --- build.prop | 2 +- builds/TerraFirmaPunkTweaks-1.7.10-1.14.jar | Bin 0 -> 149147 bytes changelog.txt | 8 + .../terrafirmapunktweaks/RecipeTweaks.java | 13 +- .../TerraFirmaPunkTweaks.java | 5 + .../blocks/TFPBlocks.java | 16 + .../blocks/TFPBrickOven.java | 357 ++++++++++++ .../blocks/TFPBrickOvenRenderer.java | 114 ++++ .../handlers/FuelManager.java | 68 +++ .../handlers/GUIHandler.java | 38 ++ .../handlers/PlayerDamageHandler.java | 6 +- .../inventory/GUIBrickOven.java | 55 ++ .../containers/ContainerBrickOven.java | 149 +++++ .../containers/SlotBrickOvenFuel.java | 35 ++ .../minetweaker/BrickOven.java | 129 +++++ .../minetweaker/TFC/Loom.java | 2 +- .../minetweaker/TFCTweaker.java | 2 + .../proxy/ClientProxy.java | 16 + .../proxy/CommonProxy.java | 8 + .../terrafirmapunktweaks/reference/GUIs.java | 6 + .../tiles/TEBrickOven.java | 541 ++++++++++++++++++ .../terrafirmapunktweaks/lang/en_US.lang | 21 + .../textures/blocks/TFPOvenFrontOff.png | Bin 0 -> 288 bytes .../textures/blocks/TFPOvenFrontOn.png | Bin 0 -> 489 bytes .../textures/gui/BrickOvenGUI.png | Bin 0 -> 2162 bytes 25 files changed, 1586 insertions(+), 5 deletions(-) create mode 100644 builds/TerraFirmaPunkTweaks-1.7.10-1.14.jar create mode 100644 src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBrickOven.java create mode 100644 src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBrickOvenRenderer.java create mode 100644 src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/FuelManager.java create mode 100644 src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/GUIHandler.java create mode 100644 src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/GUIBrickOven.java create mode 100644 src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/containers/ContainerBrickOven.java create mode 100644 src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/containers/SlotBrickOvenFuel.java create mode 100644 src/main/java/com/JAWolfe/terrafirmapunktweaks/minetweaker/BrickOven.java create mode 100644 src/main/java/com/JAWolfe/terrafirmapunktweaks/reference/GUIs.java create mode 100644 src/main/java/com/JAWolfe/terrafirmapunktweaks/tiles/TEBrickOven.java create mode 100644 src/main/resources/assets/terrafirmapunktweaks/textures/blocks/TFPOvenFrontOff.png create mode 100644 src/main/resources/assets/terrafirmapunktweaks/textures/blocks/TFPOvenFrontOn.png create mode 100644 src/main/resources/assets/terrafirmapunktweaks/textures/gui/BrickOvenGUI.png diff --git a/build.prop b/build.prop index d4d26ae..f7759d6 100644 --- a/build.prop +++ b/build.prop @@ -1,6 +1,6 @@ minecraft_version=1.7.10 forge_version=10.13.4.1566-1.7.10 tfc_version=0.79.27 -mod_version=1.13 +mod_version=1.14 mod_id=TerraFirmaPunkTweaks group_name=com.JAWolfe.TerraFirmaPunkTweaks \ No newline at end of file diff --git a/builds/TerraFirmaPunkTweaks-1.7.10-1.14.jar b/builds/TerraFirmaPunkTweaks-1.7.10-1.14.jar new file mode 100644 index 0000000000000000000000000000000000000000..1cc7b21dbdcfa2f06c7820ea701e506d5640a47a GIT binary patch literal 149147 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�bQ8cTY#_FIoR6 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

e;I=jR5dziEP2*F`05H17*zRB}@ zn6vxiz}I9AE?)@d-&+*FhdR3nOyZ1pK|pLGT?p!z+wZp$TAwHrb~8V2aF TK|nYH|EbVJKrrE+W{3X=Yb67^ literal 0 HcmV?d00001 diff --git a/changelog.txt b/changelog.txt index a4477af..14eea65 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,6 +1,14 @@ Changelog ================================================= ------------------------------------------------- +TFP Tweaks 1.14 +------------------------------------------------- +New Features ++Added a new block, Brick Oven. Brick oven acts like a firepit and vanilla furnace + +Tweaks ++Loom minetweaker method addRecipe code optimization +------------------------------------------------- TFP Tweaks 1.13 ------------------------------------------------- Bug Fixes diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/RecipeTweaks.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/RecipeTweaks.java index 0c5d3bb..287032e 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/RecipeTweaks.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/RecipeTweaks.java @@ -2,7 +2,11 @@ package com.JAWolfe.terrafirmapunktweaks; import java.util.List; +import com.JAWolfe.terrafirmapunktweaks.handlers.FuelManager; import com.JAWolfe.terrafirmapunktweaks.reference.ConfigSettings; +import com.bioxx.tfc.api.TFCBlocks; +import com.bioxx.tfc.api.TFCItems; +import com.bioxx.tfc.api.Constant.Global; import cpw.mods.fml.common.Loader; import net.minecraft.item.Item; @@ -40,7 +44,14 @@ public class RecipeTweaks } public static void RecipeFixes() - { + { + for(int i = 0; i < Global.WOOD_ALL.length; i++) + { + FuelManager.getInstance().addFuel(new ItemStack(TFCItems.logs, 1, i)); + } + + FuelManager.getInstance().addFuel(new ItemStack(Item.getItemFromBlock(TFCBlocks.peat), 1)); + if(Loader.isModLoaded("Steamcraft")) { //OreDictionary.registerOre("itemAxe", new ItemStack(SteamcraftItems.steamAxe, 1, OreDictionary.WILDCARD_VALUE)); diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/TerraFirmaPunkTweaks.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/TerraFirmaPunkTweaks.java index 4eab2df..c0bbb8d 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/TerraFirmaPunkTweaks.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/TerraFirmaPunkTweaks.java @@ -14,6 +14,7 @@ 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 cpw.mods.fml.common.network.NetworkRegistry; import net.minecraftforge.common.MinecraftForge; @Mod(modid = References.ModID, name = References.ModName, version = References.ModVersion, dependencies = References.ModDependencies) @@ -44,10 +45,14 @@ public class TerraFirmaPunkTweaks RecipeTweaks.RecipeFixes(); proxy.setupFluids(); + + NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GUIHandler()); MinecraftForge.EVENT_BUS.register(new PlayerInteractionHandler()); MinecraftForge.EVENT_BUS.register(new PlayerDamageHandler()); + proxy.registerRenderInformation(); + proxy.registerWAILA(); } diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBlocks.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBlocks.java index de3c5ef..6e50736 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBlocks.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBlocks.java @@ -1,5 +1,8 @@ package com.JAWolfe.terrafirmapunktweaks.blocks; +import com.bioxx.tfc.api.Constant.Global; +import com.google.common.collect.ObjectArrays; + import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.registry.GameRegistry; import flaxbeard.steamcraft.SteamcraftBlocks; @@ -9,14 +12,27 @@ import net.minecraftforge.fluids.FluidRegistry; public class TFPBlocks { + public static Block tweakedboiler; public static Block tweakedboilerOn; public static Block tweakedFlashBoiler; + public static Block[] tfpBrickOven; public static Block tfpBlood; public static Fluid tfpFluidBlood; + public static int brickOvenRenderID; + public static void initialise() { + String[] IgStone = ObjectArrays.concat(Global.STONE_IGEX, Global.STONE_IGIN, String.class); + tfpBrickOven = new Block[IgStone.length]; + + for (int i = 0; i < IgStone.length; i++) + { + tfpBrickOven[i] = new TFPBrickOven(i).setBlockName("TFPBrickOven " + IgStone[i]); + GameRegistry.registerBlock(tfpBrickOven[i], "tfpBrickOven" + IgStone[i]); + } + if(Loader.isModLoaded("Steamcraft")) { tweakedboiler = new TweakedBoiler(false).setBlockName(SteamcraftBlocks.boiler.getUnlocalizedName().substring(5)).setHardness(5.0F).setResistance(10.0F); diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBrickOven.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBrickOven.java new file mode 100644 index 0000000..8a01575 --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBrickOven.java @@ -0,0 +1,357 @@ +package com.JAWolfe.terrafirmapunktweaks.blocks; + +import java.util.Random; + +import com.JAWolfe.terrafirmapunktweaks.TerraFirmaPunkTweaks; +import com.JAWolfe.terrafirmapunktweaks.reference.GUIs; +import com.JAWolfe.terrafirmapunktweaks.reference.References; +import com.JAWolfe.terrafirmapunktweaks.tiles.TEBrickOven; +import com.bioxx.tfc.Blocks.BlockTerraContainer; +import com.bioxx.tfc.api.TFCBlocks; +import com.bioxx.tfc.api.TFCItems; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public class TFPBrickOven extends BlockTerraContainer +{ + @SideOnly(Side.CLIENT) + private IIcon OvenFrontOnIcon; + @SideOnly(Side.CLIENT) + private IIcon OvenFrontOffIcon; + @SideOnly(Side.CLIENT) + private IIcon OvenSideIcon; + + private final Random random = new Random(); + private int OvenType; + + public TFPBrickOven(int ovenType) + { + this.OvenType = ovenType; + this.blockHardness = 16; + } + + @Override + public void registerBlockIcons(IIconRegister register) + { + String iconPrefix = References.ModID + ":"; + OvenFrontOnIcon = register.registerIcon(iconPrefix + "TFPOvenFrontOn"); + OvenFrontOffIcon = register.registerIcon(iconPrefix + "TFPOvenFrontOff"); + OvenSideIcon = register.registerIcon(References.MODID_TFC + ":" + "Invisible"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) + { + if (side == 1) + return this.OvenSideIcon; + else + { + if(metadata == 0 || metadata == 2) + { + if(side == 3) + return this.OvenFrontOffIcon; + else if(side == 4 || side == 5 || side == 2) + return this.OvenSideIcon; + } + else if(metadata == 1) + { + if(side == 2) + return this.OvenFrontOffIcon; + else if(side == 3 || side == 4 || side == 5) + return this.OvenSideIcon; + } + else if(metadata == 3) + { + if(side == 2 || side == 3 || side == 5) + return this.OvenSideIcon; + else if(side == 4) + return this.OvenFrontOffIcon; + } + else if(metadata == 4) + { + if(side == 2 || side == 3 || side == 4) + return this.OvenSideIcon; + else if(side == 5) + return this.OvenFrontOffIcon; + } + else if(metadata == 5) + { + if(side == 2) + return this.OvenFrontOnIcon; + else if(side == 3 || side == 4 || side == 5) + return this.OvenSideIcon; + } + else if(metadata == 6) + { + if(side == 3) + return this.OvenFrontOnIcon; + else if(side == 4 || side == 5 || side == 2) + return this.OvenSideIcon; + } + else if(metadata == 7) + { + if(side == 2 || side == 3 || side == 5) + return this.OvenSideIcon; + else if(side == 4) + return this.OvenFrontOnIcon; + } + else if(metadata == 8) + { + if(side == 2 || side == 3 || side == 4) + return this.OvenSideIcon; + else if(side == 5) + return this.OvenFrontOnIcon; + } + + return this.OvenFrontOffIcon; + } + } + + @Override + public boolean renderAsNormalBlock() + { + return false; + } + + @Override + public int getRenderType() + { + return TFPBlocks.brickOvenRenderID; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityplayer, int par6, float par7, float par8, float par9) + { + if(world.isRemote) + return true; + + ItemStack heldItem = entityplayer.getHeldItem(); + TEBrickOven TE = (TEBrickOven)world.getTileEntity(x, y, z); + + if(heldItem != null && (heldItem.getItem() == TFCItems.fireStarter || heldItem.getItem() == TFCItems.flintSteel)) + { + if(TE != null) + { + if(TE.fireTemp < 210 && TE.ovenItemStacks[9] != null) + { + TE.fireTemp = 300; + int ss = entityplayer.inventory.getCurrentItem().stackSize; + int dam = entityplayer.inventory.getCurrentItem().getItemDamage(); + + entityplayer.inventory.setInventorySlotContents(entityplayer.inventory.currentItem, + new ItemStack(entityplayer.getCurrentEquippedItem().getItem(), ss, dam)); + + int metadata = world.getBlockMetadata(x, y, z); + world.setBlockMetadataWithNotify(x, y, z, metadata + 4, 3); + } + } + } + else if(heldItem != null && heldItem.getItem() == Item.getItemFromBlock(TFCBlocks.torch)) + { + if(TE != null) + { + if(TE.fireTemp < 210 && TE.ovenItemStacks[9] != null) + { + TE.fireTemp = 300; + int ss = entityplayer.inventory.getCurrentItem().stackSize - 1; + + entityplayer.inventory.setInventorySlotContents(entityplayer.inventory.currentItem, + new ItemStack(entityplayer.getCurrentEquippedItem().getItem(), ss)); + + int metadata = world.getBlockMetadata(x, y, z); + world.setBlockMetadataWithNotify(x, y, z, metadata + 4, 3); + } + } + } + else + { + if(TE != null) + { + entityplayer.openGui(TerraFirmaPunkTweaks.instance, GUIs.BRICKOVEN.ordinal(), world, x, y, z); + return true; + } + } + + return true; + } + + @Override + public void onBlockAdded(World world, int x, int y, int z) + { + super.onBlockAdded(world, x, y, z); + if (!world.isRemote) + { + Block block1 = world.getBlock(x, y, z - 1); + Block block2 = world.getBlock(x, y, z + 1); + Block block3 = world.getBlock(x - 1, y, z); + Block block4 = world.getBlock(x + 1, y, z); + byte b0 = 3; + + if (block1.func_149730_j() && !block2.func_149730_j()) + { + b0 = 2; + } + + if (block2.func_149730_j() && !block1.func_149730_j()) + { + b0 = 1; + } + + if (block3.func_149730_j() && !block4.func_149730_j()) + { + b0 = 4; + } + + if (block4.func_149730_j() && !block3.func_149730_j()) + { + b0 = 3; + } + + world.setBlockMetadataWithNotify(x, y, z, b0, 2); + } + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityliving, ItemStack stack) + { + int l = MathHelper.floor_double((double)(entityliving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; + + if (l == 0) + { + world.setBlockMetadataWithNotify(x, y, z, 1, 2); + } + + if (l == 1) + { + world.setBlockMetadataWithNotify(x, y, z, 4, 2); + } + + if (l == 2) + { + world.setBlockMetadataWithNotify(x, y, z, 2, 2); + } + + if (l == 3) + { + world.setBlockMetadataWithNotify(x, y, z, 3, 2); + } + + if (stack.hasDisplayName()) + { + ((TEBrickOven)world.getTileEntity(x, y, z)).setCustomInventoryName(stack.getDisplayName()); + } + } + + @Override + public TileEntity createNewTileEntity(World world, int metadata) + { + return new TEBrickOven(); + } + + public int getOvenType() + { + return this.OvenType; + } + + @Override + public void randomDisplayTick(World world, int x, int y, int z, Random rand) + { + int meta = world.getBlockMetadata(x, y, z); + if (meta >= 5) + { + if (rand.nextInt(24) == 0) + world.playSound(x, y, z, "fire.fire", 0.4F + (rand.nextFloat() / 2), 0.7F + rand.nextFloat(), false); + + float f = (float)x + 0.5F; + float f1 = (float)y + 0.0F + rand.nextFloat() * 6.0F / 16.0F; + float f2 = (float)z + 0.5F; + float f3 = 0.52F; + float f4 = rand.nextFloat() * 0.6F - 0.3F; + + if (meta == 7) + { + world.spawnParticle("smoke", (double)(f - f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D); + world.spawnParticle("flame", (double)(f - f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D); + } + else if (meta == 8) + { + world.spawnParticle("smoke", (double)(f + f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D); + world.spawnParticle("flame", (double)(f + f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D); + } + else if (meta == 5) + { + world.spawnParticle("smoke", (double)(f + f4), (double)f1, (double)(f2 - f3), 0.0D, 0.0D, 0.0D); + world.spawnParticle("flame", (double)(f + f4), (double)f1, (double)(f2 - f3), 0.0D, 0.0D, 0.0D); + } + else if (meta == 6) + { + world.spawnParticle("smoke", (double)(f + f4), (double)f1, (double)(f2 + f3), 0.0D, 0.0D, 0.0D); + world.spawnParticle("flame", (double)(f + f4), (double)f1, (double)(f2 + f3), 0.0D, 0.0D, 0.0D); + } + } + } + + @Override + public int getLightValue(IBlockAccess world, int x, int y, int z) + { + int meta = world.getBlockMetadata(x, y, z); + if(meta > 4) + return 10; + else + return 0; + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int metadata) + { + if (world.getTileEntity(x, y, z) instanceof TEBrickOven) + { + TEBrickOven te = (TEBrickOven)world.getTileEntity(x, y, z); + for (int i1 = 0; i1 < te.getSizeInventory(); ++i1) + { + ItemStack itemstack = te.getStackInSlot(i1); + + if (itemstack != null) + { + while (itemstack.stackSize > 0) + { + int j1 = this.random.nextInt(21) + 10; + + if (j1 > itemstack.stackSize) + { + j1 = itemstack.stackSize; + } + + itemstack.stackSize -= j1; + EntityItem entityitem = new EntityItem(world, x + 0.5f, y + 0.5f, z + 0.5f, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); + + if (itemstack.hasTagCompound()) + { + entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); + } + + //float f3 = 0.05F; + world.spawnEntityInWorld(entityitem); + } + } + } + world.func_147453_f(x, y, z, block); + } + super.breakBlock(world, x, y, z, block, metadata); + } +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBrickOvenRenderer.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBrickOvenRenderer.java new file mode 100644 index 0000000..91eba40 --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBrickOvenRenderer.java @@ -0,0 +1,114 @@ +package com.JAWolfe.terrafirmapunktweaks.blocks; + +import org.lwjgl.opengl.GL11; + +import com.bioxx.tfc.api.TFCBlocks; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +public class TFPBrickOvenRenderer implements ISimpleBlockRenderingHandler +{ + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, + RenderBlocks renderer) + { + int ovenType = 0; + + if(block instanceof TFPBrickOven) + ovenType = ((TFPBrickOven)block).getOvenType(); + + IIcon cobbleIcon = TFCBlocks.stoneIgExCobble.getIcon(0, ovenType); + + if(ovenType > 3) + cobbleIcon = TFCBlocks.stoneIgInCobble.getIcon(0, ovenType - 4); + + renderer.renderAllFaces = true; + + renderer.setRenderBounds(0, 0, 0, 1, 1, 1); + + renderer.overrideBlockTexture = cobbleIcon; + renderer.renderStandardBlock(block, x, y, z); + renderer.clearOverrideBlockTexture(); + + renderer.renderStandardBlock(block, x, y, z); + + renderer.uvRotateTop = 0; + renderer.uvRotateBottom = 0; + renderer.uvRotateWest = 0; + renderer.uvRotateEast = 0; + renderer.uvRotateNorth = 0; + renderer.uvRotateSouth = 0; + + renderer.renderAllFaces = false; + return true; + } + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) + { + int ovenType = 0; + + if(block instanceof TFPBrickOven) + ovenType = ((TFPBrickOven)block).getOvenType(); + + IIcon cobbleIcon = TFCBlocks.stoneIgExCobble.getIcon(0, ovenType); + + if(ovenType > 3) + cobbleIcon = TFCBlocks.stoneIgInCobble.getIcon(0, ovenType - 4); + + renderInvBlock(block, renderer, cobbleIcon); + } + + private void renderInvBlock(Block block, RenderBlocks renderer, IIcon icon) + { + Tessellator tessellator = Tessellator.instance; + GL11.glTranslatef(-0.5F, -0.5F, -0.5F); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, -1F, 0.0F); + renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, icon); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, block.getBlockTextureFromSide(0)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, icon); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, block.getBlockTextureFromSide(1)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, -1F); + renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, icon); + renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, block.getBlockTextureFromSide(2)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, icon); + renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, block.getBlockTextureFromSide(3)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(-1F, 0.0F, 0.0F); + renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, icon); + renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, block.getBlockTextureFromSide(4)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, icon); + renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, block.getBlockTextureFromSide(5)); + tessellator.draw(); + GL11.glTranslatef(0.5F, 0.5F, 0.5F); + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return 0; + } + +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/FuelManager.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/FuelManager.java new file mode 100644 index 0000000..47d384a --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/FuelManager.java @@ -0,0 +1,68 @@ +package com.JAWolfe.terrafirmapunktweaks.handlers; + +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; + +public class FuelManager +{ + private static final FuelManager INSTANCE = new FuelManager(); + public static final FuelManager getInstance() + { + return INSTANCE; + } + + private List fuels; + + private FuelManager() + { + fuels = new ArrayList(); + } + + public void addFuel(ItemStack fuel) + { + for(int i = 0; i < fuels.size(); i++) + { + if (fuels.get(i) != null && matches(fuel, fuels.get(i))) + return; + } + + this.fuels.add(fuel); + } + + public void removeFuel(ItemStack fuel) + { + for(int i = 0; i < fuels.size(); i++) + { + if (fuels.get(i) != null && matches(fuel, fuels.get(i))) + fuels.remove(i--); + } + } + + public boolean isFuel(ItemStack itemstack) + { + for(int i = 0; i < fuels.size(); i++) + { + if (fuels.get(i) != null && matches(itemstack, fuels.get(i))) + return true; + } + + return false; + } + + public List getFuels() + { + return this.fuels; + } + + private Boolean matches(ItemStack item1, ItemStack item2) + { + boolean iStack = item1 != null && item2 != null; + + boolean itemsEqual = OreDictionary.itemMatches(item1, item2, true); + + return iStack && itemsEqual; + } +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/GUIHandler.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/GUIHandler.java new file mode 100644 index 0000000..8fbc4dd --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/GUIHandler.java @@ -0,0 +1,38 @@ +package com.JAWolfe.terrafirmapunktweaks.handlers; + +import com.JAWolfe.terrafirmapunktweaks.inventory.GUIBrickOven; +import com.JAWolfe.terrafirmapunktweaks.inventory.containers.ContainerBrickOven; +import com.JAWolfe.terrafirmapunktweaks.reference.GUIs; +import com.JAWolfe.terrafirmapunktweaks.tiles.TEBrickOven; + +import cpw.mods.fml.common.network.IGuiHandler; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class GUIHandler implements IGuiHandler +{ + + @Override + public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) + { + TileEntity entity = world.getTileEntity(x, y, z); + + if(ID == GUIs.BRICKOVEN.ordinal() && entity != null && entity instanceof TEBrickOven) + return new ContainerBrickOven(player.inventory, (TEBrickOven)entity); + + return null; + } + + @Override + public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) + { + TileEntity entity = world.getTileEntity(x, y, z); + + if(ID == GUIs.BRICKOVEN.ordinal() && entity != null && entity instanceof TEBrickOven) + return new GUIBrickOven(player.inventory, (TEBrickOven)entity, world, x, y, z); + + return null; + } + +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/PlayerDamageHandler.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/PlayerDamageHandler.java index 3c7fe21..8327429 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/PlayerDamageHandler.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/PlayerDamageHandler.java @@ -35,11 +35,13 @@ public class PlayerDamageHandler **/ @SubscribeEvent public void onDamaged(LivingHurtEvent event) - { + { //Reset Attacking tag on attacking entity if(event.source.getEntity() != null && event.source.getEntity().getEntityData().hasKey("Attacking") && event.source.getEntity().getEntityData().getBoolean("Attacking")) + { event.source.getEntity().getEntityData().setBoolean("Attacking", false); + } //Check if damage is already processed by TFC if (event.source == DamageSource.onFire || event.source == DamageSource.fall || event.source == DamageSource.drown || @@ -91,7 +93,7 @@ public class PlayerDamageHandler */ @SubscribeEvent public void entityAttack(LivingAttackEvent event) - { + { //Don't run if client sided if(event.entityLiving.worldObj.isRemote) return; diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/GUIBrickOven.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/GUIBrickOven.java new file mode 100644 index 0000000..7f8bb16 --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/GUIBrickOven.java @@ -0,0 +1,55 @@ +package com.JAWolfe.terrafirmapunktweaks.inventory; + +import org.lwjgl.opengl.GL11; + +import com.JAWolfe.terrafirmapunktweaks.inventory.containers.ContainerBrickOven; +import com.JAWolfe.terrafirmapunktweaks.reference.References; +import com.JAWolfe.terrafirmapunktweaks.tiles.TEBrickOven; +import com.bioxx.tfc.Core.Player.PlayerInventory; +import com.bioxx.tfc.GUI.GuiContainerTFC; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class GUIBrickOven extends GuiContainerTFC +{ + public static ResourceLocation texture = new ResourceLocation(References.ModID.toLowerCase(), "textures/gui/BrickOvenGUI.png"); + private TEBrickOven teBrickOven; + + public GUIBrickOven(InventoryPlayer inventoryplayer, TEBrickOven te, World world, int x, int y, int z) + { + super(new ContainerBrickOven(inventoryplayer, te), 176, 85); + this.teBrickOven = te; + } + + @Override + protected void drawGuiContainerBackgroundLayer(float f, int i, int j) + { + if (texture != null) + { + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + guiLeft = (width - xSize) / 2; + guiTop = (height - ySize) / 2; + int height = this.getShiftedYSize(); + + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, height); + + drawForeground(guiLeft, guiTop); + } + + PlayerInventory.drawInventory(this, width, height, this.getShiftedYSize()); + } + + @Override + protected void drawForeground(int guiLeft, int guiTop) + { + if(teBrickOven != null) + { + int scale = teBrickOven.getTemperatureScaled(49); + drawTexturedModalRect(guiLeft + 30, guiTop + 65 - scale, 185, 31, 15, 6); + } + } +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/containers/ContainerBrickOven.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/containers/ContainerBrickOven.java new file mode 100644 index 0000000..d195ebd --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/containers/ContainerBrickOven.java @@ -0,0 +1,149 @@ +package com.JAWolfe.terrafirmapunktweaks.inventory.containers; + +import com.JAWolfe.terrafirmapunktweaks.handlers.FuelManager; +import com.JAWolfe.terrafirmapunktweaks.tiles.TEBrickOven; +import com.bioxx.tfc.Containers.ContainerTFC; +import com.bioxx.tfc.Containers.Slots.SlotFirepit; +import com.bioxx.tfc.Containers.Slots.SlotFirepitIn; +import com.bioxx.tfc.Containers.Slots.SlotFirepitOut; +import com.bioxx.tfc.Core.Player.PlayerInventory; +import com.bioxx.tfc.Items.ItemOre; +import com.bioxx.tfc.api.HeatRegistry; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.ICrafting; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerBrickOven extends ContainerTFC +{ + private TEBrickOven teBrickOven; + private float firetemp; + + public ContainerBrickOven(InventoryPlayer inventoryplayer, TEBrickOven BrickOven) + { + this.teBrickOven = BrickOven; + firetemp = -1111; + + //Input Slots + addSlotToContainer(new SlotFirepitIn(inventoryplayer.player, teBrickOven, 0, 84, 19)); + addSlotToContainer(new SlotFirepitIn(inventoryplayer.player, teBrickOven, 1, 102, 19)); + addSlotToContainer(new SlotFirepitIn(inventoryplayer.player, teBrickOven, 2, 120, 19)); + + //Output Slots + addSlotToContainer(new SlotFirepitOut(inventoryplayer.player, teBrickOven, 3, 84, 47)); + addSlotToContainer(new SlotFirepitOut(inventoryplayer.player, teBrickOven, 4, 102, 47)); + addSlotToContainer(new SlotFirepitOut(inventoryplayer.player, teBrickOven, 5, 120, 47)); + + //Fuel Slots + addSlotToContainer(new SlotBrickOvenFuel(inventoryplayer.player, teBrickOven, 6, 8, 7)); + addSlotToContainer(new SlotFirepit(inventoryplayer.player, teBrickOven, 7, 8, 25)); + addSlotToContainer(new SlotFirepit(inventoryplayer.player, teBrickOven, 8, 8, 43)); + addSlotToContainer(new SlotFirepit(inventoryplayer.player, teBrickOven, 9, 8, 61)); + + PlayerInventory.buildInventoryLayout(this, inventoryplayer, 8, 90, false, true); + } + + @Override + public ItemStack transferStackInSlotTFC(EntityPlayer entityPlayer, int slotIndex) + { + super.transferStackInSlotTFC(entityPlayer, slotIndex); + ItemStack origStack = null; + Slot slot = (Slot) inventorySlots.get(slotIndex); + Slot[] slotinput = {(Slot)inventorySlots.get(0), (Slot)inventorySlots.get(1), (Slot)inventorySlots.get(2)}; + Slot[] slotfuel = {(Slot)inventorySlots.get(6), (Slot)inventorySlots.get(7), (Slot)inventorySlots.get(8), (Slot)inventorySlots.get(9)}; + + if(slot != null && slot.getHasStack()) + { + ItemStack slotStack = slot.getStack(); + origStack = slotStack.copy(); + + // From firepit to inventory + if (slotIndex < 10) + { + if (!this.mergeItemStack(slotStack, 10, this.inventorySlots.size(), true)) + return null; + } + else + { + // Fuel to the fuel input slot + if (FuelManager.getInstance().isFuel(slotStack)) + { + if(slotfuel[0].getHasStack()) + return null; + ItemStack stack = slotStack.copy(); + stack.stackSize = 1; + slotfuel[0].putStack(stack); + slotStack.stackSize--; + } + // No ores, but anything else with a heat index to the input slot + else if (!(slotStack.getItem() instanceof ItemOre) && HeatRegistry.getInstance().findMatchingIndex(slotStack) != null) + { + int openSlot = 0; + for(openSlot = 0; openSlot <= 3; openSlot++) + { + if(openSlot == 3) + return null; + + if(!slotinput[openSlot].getHasStack()) + break; + } + + ItemStack stack = slotStack.copy(); + stack.stackSize = 1; + slotinput[openSlot].putStack(stack); + slotStack.stackSize--; + } + } + + if (slotStack.stackSize <= 0) + slot.putStack(null); + else + slot.onSlotChanged(); + + if (slotStack.stackSize == origStack.stackSize) + return null; + + slot.onPickupFromSlot(player, slotStack); + } + + return origStack; + } + + @SuppressWarnings("unchecked") + @Override + public void detectAndSendChanges() + { + super.detectAndSendChanges(); + for (int var1 = 0; var1 < this.inventorySlots.size(); ++var1) + { + ItemStack var2 = ((Slot)this.inventorySlots.get(var1)).getStack(); + ItemStack var3 = (ItemStack)this.inventoryItemStacks.get(var1); + + if (!ItemStack.areItemStacksEqual(var3, var2)) + { + var3 = var2 == null ? null : var2.copy(); + this.inventoryItemStacks.set(var1, var3); + + for (int var4 = 0; var4 < this.crafters.size(); ++var4) + ((ICrafting)this.crafters.get(var4)).sendSlotContents(this, var1, var3); + } + } + + for (int var1 = 0; var1 < this.crafters.size(); ++var1) + { + ICrafting var2 = (ICrafting)this.crafters.get(var1); + if (this.firetemp != this.teBrickOven.fireTemp) + var2.sendProgressBarUpdate(this, 0, (int)this.teBrickOven.fireTemp); + } + firetemp = this.teBrickOven.fireTemp; + } + + @Override + public void updateProgressBar(int par1, int par2) + { + if (par1 == 0) + this.teBrickOven.fireTemp = par2; + } +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/containers/SlotBrickOvenFuel.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/containers/SlotBrickOvenFuel.java new file mode 100644 index 0000000..410d899 --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/containers/SlotBrickOvenFuel.java @@ -0,0 +1,35 @@ +package com.JAWolfe.terrafirmapunktweaks.inventory.containers; + +import com.JAWolfe.terrafirmapunktweaks.handlers.FuelManager; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class SlotBrickOvenFuel extends Slot +{ + public SlotBrickOvenFuel(EntityPlayer entityplayer, IInventory iinventory, int i, int j, int k) + { + super(iinventory, i, j, k); + } + + @Override + public boolean isItemValid(ItemStack itemstack) + { + return FuelManager.getInstance().isFuel(itemstack); + } + + @Override + public int getSlotStackLimit() + { + return 1; + } + + @Override + public void putStack(ItemStack par1ItemStack) + { + if (par1ItemStack != null) par1ItemStack.stackSize = 1; + super.putStack(par1ItemStack); + } +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/minetweaker/BrickOven.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/minetweaker/BrickOven.java new file mode 100644 index 0000000..e49211f --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/minetweaker/BrickOven.java @@ -0,0 +1,129 @@ +package com.JAWolfe.terrafirmapunktweaks.minetweaker; + +import com.JAWolfe.terrafirmapunktweaks.handlers.FuelManager; + +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.BrickOven") +public class BrickOven +{ + @ZenMethod + public static void addFuel(IItemStack Ifuel) + { + ItemStack fuel = MineTweakerMC.getItemStack(Ifuel); + + if(fuel == null || fuel.getItem() == null) + MineTweakerAPI.logError("Missing Fuel"); + else + MineTweakerAPI.apply(new addFuelAction(fuel)); + } + + @ZenMethod + public static void removeFuel(IItemStack Ifuel) + { + ItemStack fuel = MineTweakerMC.getItemStack(Ifuel); + + if(fuel == null || fuel.getItem() == null) + MineTweakerAPI.logError("Missing Fuel"); + else + MineTweakerAPI.apply(new removeFuelAction(fuel)); + } + + private static class addFuelAction implements IUndoableAction + { + private ItemStack Fuel; + + public addFuelAction(ItemStack fuel) + { + this.Fuel = fuel; + } + + @Override + public void apply() + { + FuelManager.getInstance().addFuel(Fuel); + } + + @Override + public String describe() + { + return "Adding item '" + Fuel.getDisplayName() + "' to the Brick Oven Fuel Registry."; + } + + @Override + public boolean canUndo() + { + return true; + } + + @Override + public void undo() + { + FuelManager.getInstance().removeFuel(Fuel); + } + + @Override + public String describeUndo() + { + return "Removing item '" + Fuel.getDisplayName() + "' from the Brick Oven Fuel Registry."; + } + + @Override + public Object getOverrideKey() + { + return null; + } + } + + private static class removeFuelAction implements IUndoableAction + { + private ItemStack Fuel; + + public removeFuelAction(ItemStack fuel) + { + this.Fuel = fuel; + } + + @Override + public void apply() + { + FuelManager.getInstance().removeFuel(Fuel); + } + + @Override + public String describe() + { + return "Removing item '" + Fuel.getDisplayName() + "' from the Brick Oven Fuel Registry."; + } + + @Override + public boolean canUndo() + { + return true; + } + + @Override + public void undo() + { + FuelManager.getInstance().addFuel(Fuel); + } + + @Override + public String describeUndo() + { + return "Adding item '" + Fuel.getDisplayName() + "' to the Brick Oven Fuel Registry."; + } + + @Override + public Object getOverrideKey() + { + return null; + } + } +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/minetweaker/TFC/Loom.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/minetweaker/TFC/Loom.java index 7df3772..fb7ca5f 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/minetweaker/TFC/Loom.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/minetweaker/TFC/Loom.java @@ -107,7 +107,7 @@ public class Loom { if (LoomList.get(i) != null) { - if (LoomList.get(i).matches(inputStack)) + if (LoomList.get(i).matches(inputStack) && LoomList.get(i).resultMatches(outputStack)) LoomList.remove(i--); } } diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/minetweaker/TFCTweaker.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/minetweaker/TFCTweaker.java index b7ed75e..eb5e9c4 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/minetweaker/TFCTweaker.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/minetweaker/TFCTweaker.java @@ -18,6 +18,8 @@ public class TFCTweaker { if (Loader.isModLoaded("MineTweaker3") && ConfigSettings.MineTweakerSupport) { + MineTweakerAPI.registerClass(BrickOven.class); + MineTweakerAPI.registerClass(ItemHeat.class); MineTweakerAPI.registerClass(Loom.class); MineTweakerAPI.registerClass(Quern.class); diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/ClientProxy.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/ClientProxy.java index 735af2c..29b3b49 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/ClientProxy.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/ClientProxy.java @@ -1,9 +1,25 @@ package com.JAWolfe.terrafirmapunktweaks.proxy; +import com.JAWolfe.terrafirmapunktweaks.blocks.TFPBlocks; +import com.JAWolfe.terrafirmapunktweaks.blocks.TFPBrickOvenRenderer; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + public class ClientProxy extends CommonProxy { public void registerTileEntities() { super.registerTileEntities(); } + + @Override + @SideOnly(Side.CLIENT) + public void registerRenderInformation() + { + TFPBlocks.brickOvenRenderID = RenderingRegistry.getNextAvailableRenderId(); + + RenderingRegistry.registerBlockHandler(TFPBlocks.brickOvenRenderID, new TFPBrickOvenRenderer()); + } } diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/CommonProxy.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/CommonProxy.java index 16fcb81..b976bf8 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/CommonProxy.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/CommonProxy.java @@ -3,6 +3,7 @@ package com.JAWolfe.terrafirmapunktweaks.proxy; import com.JAWolfe.terrafirmapunktweaks.blocks.TFPBlocks; import com.JAWolfe.terrafirmapunktweaks.items.TFPItems; import com.JAWolfe.terrafirmapunktweaks.tiles.TEBoiler; +import com.JAWolfe.terrafirmapunktweaks.tiles.TEBrickOven; import com.JAWolfe.terrafirmapunktweaks.tiles.TEFlashBoiler; import com.bioxx.tfc.api.TFCItems; import com.sirolf2009.necromancy.item.ItemGeneric; @@ -20,6 +21,8 @@ public class CommonProxy { public void registerTileEntities() { + GameRegistry.registerTileEntity(TEBrickOven.class, "TEBrickOven"); + if(Loader.isModLoaded("Steamcraft")) { GameRegistry.registerTileEntity(TEBoiler.class, "TEBoiler"); @@ -41,6 +44,11 @@ public class CommonProxy } } + public void registerRenderInformation() + { + //Not server-sided + } + public void registerWAILA() { FMLInterModComms.sendMessage("Waila", "register", "com.JAWolfe.terrafirmapunktweaks.WAILAInfo.callbackRegister"); diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/reference/GUIs.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/reference/GUIs.java new file mode 100644 index 0000000..c655900 --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/reference/GUIs.java @@ -0,0 +1,6 @@ +package com.JAWolfe.terrafirmapunktweaks.reference; + +public enum GUIs +{ + BRICKOVEN +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/tiles/TEBrickOven.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/tiles/TEBrickOven.java new file mode 100644 index 0000000..fc1f583 --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/tiles/TEBrickOven.java @@ -0,0 +1,541 @@ +package com.JAWolfe.terrafirmapunktweaks.tiles; + +import java.util.Random; + +import com.JAWolfe.terrafirmapunktweaks.handlers.FuelManager; +import com.bioxx.tfc.Core.TFC_Core; +import com.bioxx.tfc.Items.ItemMeltedMetal; +import com.bioxx.tfc.Items.ItemOre; +import com.bioxx.tfc.api.Food; +import com.bioxx.tfc.api.HeatIndex; +import com.bioxx.tfc.api.HeatRegistry; +import com.bioxx.tfc.api.TFCItems; +import com.bioxx.tfc.api.TFC_ItemHeat; +import com.bioxx.tfc.api.Enums.EnumFuelMaterial; +import com.bioxx.tfc.api.Events.ItemCookEvent; +import com.bioxx.tfc.api.Interfaces.ICookableFood; +import com.bioxx.tfc.api.TileEntities.TEFireEntity; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraftforge.common.MinecraftForge; + +public class TEBrickOven extends TEFireEntity implements ISidedInventory +{ + private static final int[] slotsTop = new int[] {0, 1, 2}; + private static final int[] slotsBottom = new int[] {3, 4, 5}; + private static final int[] slotsSides = new int[] {6}; + + public ItemStack[] ovenItemStacks = new ItemStack[10]; + private String invName; + + public TEBrickOven() + { + fuelTimeLeft = 0; + fuelBurnTemp = 0; + fireTemp = 0; + maxFireTempScale = 2000; + } + + @Override + public void updateEntity() + { + if(!worldObj.isRemote) + { + careForInventorySlot(this.ovenItemStacks[0]); + careForInventorySlot(this.ovenItemStacks[1]); + careForInventorySlot(this.ovenItemStacks[2]); + careForInventorySlot(this.ovenItemStacks[3]); + careForInventorySlot(this.ovenItemStacks[4]); + careForInventorySlot(this.ovenItemStacks[5]); + + cookItem(0); + cookItem(1); + cookItem(2); + + //Push the input fuel down the stack + handleFuelStack(); + + //Turn oven on and off. Meta 0-4 off, 5-8 on + int metadata = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); + + if (fireTemp < 1 && metadata > 4) + { + worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, metadata - 4, 3); + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } + else if (fireTemp >= 1 && metadata <= 4) + { + worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, metadata + 4, 3); + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } + + metadata = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); + //If the fire is still burning and has fuel + if(fuelTimeLeft > 0 && fireTemp >= 1) + { + if(worldObj.getBlockMetadata(xCoord, yCoord, zCoord) <= 4) + { + worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, metadata + 4, 3); + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } + } + else if(fuelTimeLeft <= 0 && fireTemp >= 1 && ovenItemStacks[9] != null && + (!worldObj.canLightningStrikeAt(xCoord, yCoord, zCoord) && !worldObj.canLightningStrikeAt(xCoord, yCoord + 1, zCoord) || + !worldObj.isRaining())) + { + if(ovenItemStacks[9] != null) + { + EnumFuelMaterial m = TFC_Core.getFuelMaterial(ovenItemStacks[9]); + fuelTasteProfile = m.ordinal(); + ovenItemStacks[9] = null; + fuelTimeLeft = m.burnTimeMax; + fuelBurnTemp = m.burnTempMax; + } + } + + //Calculate the fire temp + float desiredTemp = handleTemp(); + + handleTempFlux(desiredTemp); + + //Here we handle the bellows + handleAirReduction(); + + //do a last minute check to verify stack size + if(ovenItemStacks[3] != null) + { + if(ovenItemStacks[3].stackSize <= 0) + ovenItemStacks[3].stackSize = 1; + } + + if(ovenItemStacks[4] != null) + { + if(ovenItemStacks[4].stackSize <= 0) + ovenItemStacks[4].stackSize = 1; + } + + if(ovenItemStacks[5] != null) + { + if(ovenItemStacks[5].stackSize <= 0) + ovenItemStacks[5].stackSize = 1; + } + + if(fuelTimeLeft <= 0) + TFC_Core.handleItemTicking(this, worldObj, xCoord, yCoord, zCoord); + } + } + + @Override + public void careForInventorySlot(ItemStack is) + { + if(is != null) + { + HeatRegistry manager = HeatRegistry.getInstance(); + HeatIndex index = manager.findMatchingIndex(is); + + if (index != null) + { + float temp = TFC_ItemHeat.getTemp(is); + if (fuelTimeLeft > 0 && is.getItem() instanceof ICookableFood) + { + float inc = Food.getCooked(is) + Math.min(fireTemp / 700, 2f); + Food.setCooked(is, inc); + temp = inc; + if (Food.isCooked(is)) + { + int[] cookedTasteProfile = new int[] + { 0, 0, 0, 0, 0 }; + Random r = new Random(((ICookableFood) is.getItem()).getFoodID() + (((int) Food.getCooked(is) - 600) / 120)); + cookedTasteProfile[0] = r.nextInt(31) - 15; + cookedTasteProfile[1] = r.nextInt(31) - 15; + cookedTasteProfile[2] = r.nextInt(31) - 15; + cookedTasteProfile[3] = r.nextInt(31) - 15; + cookedTasteProfile[4] = r.nextInt(31) - 15; + Food.setCookedProfile(is, cookedTasteProfile); + Food.setFuelProfile(is, EnumFuelMaterial.getFuelProfile(fuelTasteProfile)); + } + } + else if (fireTemp > temp && index.hasOutput()) + { + temp += TFC_ItemHeat.getTempIncrease(is); + } + else + temp -= TFC_ItemHeat.getTempDecrease(is); + TFC_ItemHeat.setTemp(is, temp); + } + } + } + + public void cookItem(int slot) + { + HeatRegistry manager = HeatRegistry.getInstance(); + Random r = new Random(); + if(ovenItemStacks[slot] != null) + { + HeatIndex index = manager.findMatchingIndex(ovenItemStacks[slot]); + if(index != null && TFC_ItemHeat.getTemp(ovenItemStacks[slot]) > index.meltTemp) + { + ItemStack output = index.getOutput(ovenItemStacks[slot], r); + ItemCookEvent eventMelt = new ItemCookEvent(ovenItemStacks[slot], output, this); + MinecraftForge.EVENT_BUS.post(eventMelt); + output = eventMelt.result; + int damage = 0; + ItemStack mold = null; + if(output != null) + { + damage = output.getItemDamage(); + if(output.getItem() == ovenItemStacks[slot].getItem()) + damage = ovenItemStacks[slot].getItemDamage(); + + //If the input is unshaped metal + if(ovenItemStacks[slot].getItem() instanceof ItemMeltedMetal) + { + //if both output slots are empty then just lower the input item into the first output slot + if(ovenItemStacks[3] == null && ovenItemStacks[4] == null && ovenItemStacks[5] == null) + { + ovenItemStacks[3] = ovenItemStacks[slot].copy(); + ovenItemStacks[slot] = null; + return; + } + //Otherwise if the first output has an item that doesnt match the input item then put the item in the second output slot + else if(ovenItemStacks[3] != null && ovenItemStacks[3].getItem() != TFCItems.ceramicMold && + (ovenItemStacks[3].getItem() != ovenItemStacks[slot].getItem() || ovenItemStacks[3].getItemDamage() == 0)) + { + if(ovenItemStacks[4] == null) + { + ovenItemStacks[4] = ovenItemStacks[slot].copy(); + ovenItemStacks[slot] = null; + return; + } + } + //Otherwise if both the first and second outputs have items that doesnt match the input item then put the item in the third output slot + else if(ovenItemStacks[4] != null && ovenItemStacks[4].getItem() != TFCItems.ceramicMold && + (ovenItemStacks[4].getItem() != ovenItemStacks[slot].getItem() || ovenItemStacks[4].getItemDamage() == 0)) + { + if(ovenItemStacks[5] == null) + { + ovenItemStacks[5] = ovenItemStacks[slot].copy(); + ovenItemStacks[slot] = null; + return; + } + } + mold = new ItemStack(TFCItems.ceramicMold, 1); + mold.stackSize = 1; + mold.setItemDamage(1); + } + } + //Morph the input + float temp = TFC_ItemHeat.getTemp(ovenItemStacks[slot]); + ovenItemStacks[slot] = index.getMorph(); + if(ovenItemStacks[slot] != null && manager.findMatchingIndex(ovenItemStacks[slot]) != null) + { + //if the input is a new item, then apply the old temperature to it + TFC_ItemHeat.setTemp(ovenItemStacks[slot], temp); + } + + //Check if we should combine the output with a pre-existing output + if(output != null && output.getItem() instanceof ItemMeltedMetal) + { + int leftover = 0; + boolean addLeftover = false; + int dest = 3; + if (ovenItemStacks[3] != null && output.getItem() == ovenItemStacks[3].getItem() && ovenItemStacks[3].getItemDamage() > 0) + { + combineMetals(output, mold, 3, slot, temp, damage, leftover, addLeftover); + } + else if (ovenItemStacks[4] != null && output.getItem() == ovenItemStacks[4].getItem() && ovenItemStacks[4].getItemDamage() > 0) + { + combineMetals(output, mold, 4, slot, temp, damage, leftover, addLeftover); + dest = 4; + } + else if (ovenItemStacks[5] != null && output.getItem() == ovenItemStacks[5].getItem() && ovenItemStacks[5].getItemDamage() > 0) + { + combineMetals(output, mold, 5, slot, temp, damage, leftover, addLeftover); + dest = 5; + } + else if (ovenItemStacks[3] != null && ovenItemStacks[3].getItem() == TFCItems.ceramicMold) + { + ovenItemStacks[3] = output.copy(); + ovenItemStacks[3].setItemDamage(damage); + + TFC_ItemHeat.setTemp(ovenItemStacks[3], temp); + } + else if (ovenItemStacks[4] != null && ovenItemStacks[4].getItem() == TFCItems.ceramicMold) + { + ovenItemStacks[4] = output.copy(); + ovenItemStacks[4].setItemDamage(damage); + + TFC_ItemHeat.setTemp(ovenItemStacks[4], temp); + } + else if (ovenItemStacks[5] != null && ovenItemStacks[5].getItem() == TFCItems.ceramicMold) + { + ovenItemStacks[5] = output.copy(); + ovenItemStacks[5].setItemDamage(damage); + + TFC_ItemHeat.setTemp(ovenItemStacks[5], temp); + } + + if (addLeftover) + { + if(ovenItemStacks[dest] != null && output.getItem() == ovenItemStacks[dest].getItem() && ovenItemStacks[dest].getItemDamage() > 0) + { + int amt1 = 100 - leftover;//the percentage of the output + int amt2 = 100 - ovenItemStacks[dest].getItemDamage();//the percentage currently in the out slot + int amt3 = amt1 + amt2;//combined amount + int amt4 = 100 - amt3;//convert the percent back to mc damage + if(amt4 < 0) + amt4 = 0;//stop the infinite glitch + ovenItemStacks[dest] = output.copy(); + ovenItemStacks[dest].setItemDamage(amt4); + + TFC_ItemHeat.setTemp(ovenItemStacks[dest], temp); + } + else if(ovenItemStacks[dest] != null && ovenItemStacks[dest].getItem() == TFCItems.ceramicMold) + { + ovenItemStacks[dest] = output.copy(); + ovenItemStacks[dest].setItemDamage(100 - leftover); + TFC_ItemHeat.setTemp(ovenItemStacks[dest], temp); + } + } + } + else if(output != null) + { + if(ovenItemStacks[3] == null) + { + ovenItemStacks[3] = output.copy(); + } + else if(ovenItemStacks[4] == null) + { + ovenItemStacks[4] = output.copy(); + } + else if(ovenItemStacks[5] == null) + { + ovenItemStacks[5] = output.copy(); + } + else if (ovenItemStacks[3] != null && ovenItemStacks[4] != null && ovenItemStacks[5] != null) + { + ovenItemStacks[slot] = output.copy(); + } + } + } + } + } + + private void combineMetals(ItemStack output, ItemStack mold, int outputSlot, int inputSlot, float temp, int damage, int leftover, boolean addLeftover) + { + int amt1 = 100 - damage;//the percentage of the output + int amt2 = 100 - ovenItemStacks[outputSlot].getItemDamage();//the percentage currently in the out slot + int amt3 = amt1 + amt2;//combined amount + leftover = amt3 - 100;//assign the leftover so that we can add to the other slot if applicable + if(leftover > 0) + addLeftover = true; + int amt4 = 100 - amt3;//convert the percent back to mc damage + if(amt4 < 0) + amt4 = 0;//stop the infinite glitch + ovenItemStacks[outputSlot] = output.copy(); + ovenItemStacks[outputSlot].setItemDamage(amt4); + + TFC_ItemHeat.setTemp(ovenItemStacks[outputSlot], temp); + + if(ovenItemStacks[inputSlot] == null && mold != null) + ovenItemStacks[inputSlot] = mold; + } + + public void handleFuelStack() + { + if(ovenItemStacks[7] == null && ovenItemStacks[6] != null) + { + ovenItemStacks[7] = ovenItemStacks[6]; + ovenItemStacks[6] = null; + } + if(ovenItemStacks[8] == null && ovenItemStacks[7] != null) + { + ovenItemStacks[8] = ovenItemStacks[7]; + ovenItemStacks[7] = null; + } + if(ovenItemStacks[9] == null && ovenItemStacks[8] != null) + { + ovenItemStacks[9] = ovenItemStacks[8]; + ovenItemStacks[8] = null; + } + } + + @Override + public int getSizeInventory() + { + return ovenItemStacks.length; + } + + @Override + public ItemStack getStackInSlot(int slot) + { + return this.ovenItemStacks[slot]; + } + + @Override + public ItemStack decrStackSize(int slot, int amount) + { + if (this.ovenItemStacks[slot] != null) + { + ItemStack itemstack; + + if (this.ovenItemStacks[slot].stackSize <= amount) + { + itemstack = this.ovenItemStacks[slot]; + this.ovenItemStacks[slot] = null; + return itemstack; + } + else + { + itemstack = this.ovenItemStacks[slot].splitStack(amount); + + if (this.ovenItemStacks[slot].stackSize == 0) + this.ovenItemStacks[slot] = null; + + return itemstack; + } + } + else + return null; + } + + @Override + public ItemStack getStackInSlotOnClosing(int slot) + { + if (this.ovenItemStacks[slot] != null) + { + ItemStack itemstack = this.ovenItemStacks[slot]; + this.ovenItemStacks[slot] = null; + return itemstack; + } + else + { + return null; + } + } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) + { + this.ovenItemStacks[slot] = stack; + + if (stack != null && stack.stackSize > this.getInventoryStackLimit()) + { + stack.stackSize = this.getInventoryStackLimit(); + } + } + + @Override + public String getInventoryName() + { + return this.hasCustomInventoryName() ? this.invName : "container.brickOven"; + } + + @Override + public boolean hasCustomInventoryName() + { + return this.invName != null && this.invName.length() > 0; + } + + public void setCustomInventoryName(String name) + { + this.invName = name; + } + + @Override + public int getInventoryStackLimit() + { + return 1; + } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) + { + return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : player.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D; + } + + @Override + public void openInventory() {} + + @Override + public void closeInventory() {} + + @Override + public boolean isItemValidForSlot(int slot, ItemStack item) + { + if(slot == slotsTop[0] && ovenItemStacks[slotsTop[0]] == null) + { + return !(item.getItem() instanceof ItemOre) && HeatRegistry.getInstance().findMatchingIndex(item) != null; + } + else if(slot == slotsTop[1] && ovenItemStacks[slotsTop[1]] == null) + { + return !(item.getItem() instanceof ItemOre) && HeatRegistry.getInstance().findMatchingIndex(item) != null; + } + else if(slot == slotsTop[2] && ovenItemStacks[slotsTop[2]] == null) + { + return !(item.getItem() instanceof ItemOre) && HeatRegistry.getInstance().findMatchingIndex(item) != null; + } + else if(slot == slotsSides[0] && ovenItemStacks[slotsSides[0]] == null) + { + return FuelManager.getInstance().isFuel(item); + } + + return false; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) + { + return side == 0 ? slotsBottom : (side == 1 ? slotsTop : slotsSides); + } + + @Override + public boolean canInsertItem(int slot, ItemStack item, int side) + { + return this.isItemValidForSlot(slot, item); + } + + @Override + public boolean canExtractItem(int slot, ItemStack item, int side) + { + return side == 0 && (slot == 3 || slot == 4 || slot == 5); + } + + @Override + public void writeToNBT(NBTTagCompound nbttagcompound) + { + super.writeToNBT(nbttagcompound); + NBTTagList nbttaglist = new NBTTagList(); + for(int i = 0; i < ovenItemStacks.length; i++) + { + if(ovenItemStacks[i] != null) + { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + nbttagcompound1.setByte("Slot", (byte)i); + ovenItemStacks[i].writeToNBT(nbttagcompound1); + nbttaglist.appendTag(nbttagcompound1); + } + } + nbttagcompound.setTag("Items", nbttaglist); + } + + @Override + public void readFromNBT(NBTTagCompound nbttagcompound) + { + super.readFromNBT(nbttagcompound); + NBTTagList nbttaglist = nbttagcompound.getTagList("Items", 10); + this.ovenItemStacks = new ItemStack[getSizeInventory()]; + + for(int i = 0; i < nbttaglist.tagCount(); i++) + { + NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i); + byte byte0 = nbttagcompound1.getByte("Slot"); + if(byte0 >= 0 && byte0 < ovenItemStacks.length) + ovenItemStacks[byte0] = ItemStack.loadItemStackFromNBT(nbttagcompound1); + } + } +} diff --git a/src/main/resources/assets/terrafirmapunktweaks/lang/en_US.lang b/src/main/resources/assets/terrafirmapunktweaks/lang/en_US.lang index a81c782..691b16f 100644 --- a/src/main/resources/assets/terrafirmapunktweaks/lang/en_US.lang +++ b/src/main/resources/assets/terrafirmapunktweaks/lang/en_US.lang @@ -32,6 +32,27 @@ effect.bleed.postfix=Potion of Bleeding #= Blocks = #========== tile.tfpBlood.name=Blood +tile.TFPBrickOven Granite.name=Granite Brick Oven +tile.TFPBrickOven Diorite.name=Diorite Brick Oven +tile.TFPBrickOven Gabbro.name=Gabbro Brick Oven +tile.TFPBrickOven Shale.name=Shale Brick Oven +tile.TFPBrickOven Claystone.name=Claystone Brick Oven +tile.TFPBrickOven Rock Salt.name=Rock Salt Brick Oven +tile.TFPBrickOven Limestone.name=Limestone Brick Oven +tile.TFPBrickOven Conglomerate.name=Conglomerate Brick Oven +tile.TFPBrickOven Dolomite.name=Dolomite Brick Oven +tile.TFPBrickOven Chert.name=Chert Brick Oven +tile.TFPBrickOven Chalk.name=Chalk Brick Oven +tile.TFPBrickOven Rhyolite.name=Rhyolite Brick Oven +tile.TFPBrickOven Basalt.name=Basalt Brick Oven +tile.TFPBrickOven Andesite.name=Andesite Brick Oven +tile.TFPBrickOven Dacite.name=Dacite Brick Oven +tile.TFPBrickOven Quartzite.name=Quartzite Brick Oven +tile.TFPBrickOven Slate.name=Slate Brick Oven +tile.TFPBrickOven Phyllite.name=Phyllite Brick Oven +tile.TFPBrickOven Schist.name=Schist Brick Oven +tile.TFPBrickOven Gneiss.name=Gneiss Brick Oven +tile.TFPBrickOven Marble.name=Marble Brick Oven #========== #= Fluids = diff --git a/src/main/resources/assets/terrafirmapunktweaks/textures/blocks/TFPOvenFrontOff.png b/src/main/resources/assets/terrafirmapunktweaks/textures/blocks/TFPOvenFrontOff.png new file mode 100644 index 0000000000000000000000000000000000000000..acb1b5fb475007100b760f9ee22d7f9b603bf2fc GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DkxK$!8B)5ZfpL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33J>#Bd(*uBN=6Sj} zhFJK&owSjQSy8}ct!wTZSL>~Utlt0sZ#FZZ$N14CGdShJK_g>rb@kub`pG=40w=2P zALPkDlD_qt#<7k^Vks|TKF6KgdHm9;7jM4WH5B_faRhml8XR{1_Oao9(AueKZGU5z zig;;${eA9$bJ^MSr*q`HwHFtQcxrlP?`4&=DlZkZ<7dsztuOr%Yy4rt!p(cR=Dpcf f!gRN~d!zWZGsO>|9kWaax|G4w)z4*}Q$iB}6Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;Eegmrwuz0a{5!K~y+T?T*hYgK-?kznj^z){r)umOW$a zS(}a8v`n@+NG=j`a8?pYigxxR2g;8e=t(P04w9SX;^5>Tkc8so=(b`n&oeICCPxSF zdiVMCeShDtKH^`+74$UH>XVUMT0ZUd;&wXuic6~}nIIerQeiZr*Xy;yHwR=dU9nhc zkR(a@qQPK5r_&VxG;4pOAh#Ta-F8mgD&Q;$N|=iV!Kn&T;`PM=^9ctJTO;JIr{HD;u3Th~ z1n@OY>eUmdKC3GOoL{?yC!o{yz2 f!MNY@1rXu`B?+gTuH?-!00000NkvXXu0mjf{V>e2 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/terrafirmapunktweaks/textures/gui/BrickOvenGUI.png b/src/main/resources/assets/terrafirmapunktweaks/textures/gui/BrickOvenGUI.png new file mode 100644 index 0000000000000000000000000000000000000000..de05692fb2a97b6147cdba2dd17430ac47e8cf7b GIT binary patch literal 2162 zcmeH{drZ?;6vxl6KcMZ87R;bfAv~c@zX3!q^;We^``s;80$h<4(MhcE!3^CQFK01#q|00kxFY0kaWIsPYE|)97$QhVbF=m;Vn3$iRUyWJFFtiIp z`!SLVLuN4K5gl-Qz?}j20Gtgt7jQn{rvT3e{5;?iz#9N>0sKqA`v6x0J_-07EIzV& zvShcUbzlC|Tf5F%-AZ2jTUb|DCzHuu>Mn2YH2<~t_1M^$ZhvT3Kew-cW-x4;OnQ^a zMC|sBy&>>F5}-U#^_hQ-I4&lhcwn!yLA;LaL7=6IB9n^&Y(~rj885t@O$3=@UXnPz zFjriXaXtq`83jVImoP`{=Ih1w@~PL}6c7z%iXR@5P@4Lpr8dqk#GcnNX2~c~pDY@; zbQDaOK1nLS|0CP|`TQ*P=Vf(RVw+q(+2kL6=fj%HS+Vayn~s9@`WmrOiW{wckqcLb z_b#nl+K^UOP$d#`Jh`Xgxj=-v#Kx(o*I+9awK` z(wm2n`TOgolmwbLX*2Vxb-qK6tDKkg-u9@w5^w6~ffWR*}Tjdx7< zwbMMYwznviw)_A^$84Aq^-~PIYpXTO8MR zM~pNO>0ry2r9_>&bK6dHahTrI$N0BmsjRzH(!dIhl_vf~(iXH)0{ISfws0`_Nb>3z z(-G;#KCdLq%)uE3+x0yH_XX)kES8p-^W&YvDA%9Rh5$_beJwOmaielMh85Ve1ouuIAF_(Nz}730GWPQ z4SB>Rgk?6+*mdZ=J`s>baCd#ttP(klTX$~-o!lM47rGYWU>zcZoAOd#6D|);ulxsoZ4syd literal 0 HcmV?d00001