diff --git a/build.prop b/build.prop index 5054af7..671c100 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.16 +mod_version=1.17 mod_id=TerraFirmaPunkTweaks group_name=com.JAWolfe.TerraFirmaPunkTweaks \ No newline at end of file diff --git a/builds/TerraFirmaPunkTweaks-1.7.10-1.17.jar b/builds/TerraFirmaPunkTweaks-1.7.10-1.17.jar new file mode 100644 index 0000000..d270f77 Binary files /dev/null and b/builds/TerraFirmaPunkTweaks-1.7.10-1.17.jar differ diff --git a/changelog.txt b/changelog.txt index 9eba9da..fc81d10 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,5 +1,15 @@ Changelog ================================================= +------------------------------------------------- +TFP Tweaks 1.17 +------------------------------------------------- +New Features ++Added Necromancy Summoning Altar Compatibility ++Add Hopper Metal Press + +Tweaks ++Vanilla chests can no longer be placed + ------------------------------------------------- TFP Tweaks 1.16 ------------------------------------------------- diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/BlockTFPAltar.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/BlockTFPAltar.java new file mode 100644 index 0000000..7dcd95d --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/BlockTFPAltar.java @@ -0,0 +1,177 @@ +package com.JAWolfe.terrafirmapunktweaks.blocks; + +import java.util.Random; + +import com.JAWolfe.terrafirmapunktweaks.TerraFirmaPunkTweaks; +import com.JAWolfe.terrafirmapunktweaks.items.TFPItems; +import com.JAWolfe.terrafirmapunktweaks.reference.GUIs; +import com.JAWolfe.terrafirmapunktweaks.tiles.TEAltar; +import com.sirolf2009.necromancy.block.BlockAltar; + +import cpw.mods.fml.common.Loader; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import steamcraft.common.init.InitBlocks; + +public class BlockTFPAltar extends BlockAltar +{ + public BlockTFPAltar() + { + super(); + setCreativeTab(null); + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.5F, 1.0F); + } + + @Override + public TileEntity createNewTileEntity(World var1, int i) + { + return new TEAltar(); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int idk, float what, float these, float are) + { + TEAltar tileEntity = (TEAltar) world.getTileEntity(x, y, z); + if (tileEntity == null) + return false; + else if (player.isSneaking() && (tileEntity.canSpawn() || player.capabilities.isCreativeMode)) + { + tileEntity.spawn(player); + return true; + } + else + { + player.openGui(TerraFirmaPunkTweaks.instance, GUIs.TFPALTAR.ordinal(), world, x, y, z); + return true; + } + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) + { + TEAltar te = (TEAltar) world.getTileEntity(x, y, z); + Random rand = new Random(); + ItemStack[] blockTypes = null; + if (te != null) + { + blockTypes = te.getBlockTypes(); + + for (int i = 0; i < te.getSizeInventory(); ++i) + { + ItemStack var9 = te.getStackInSlot(i); + + if (var9 != null) + { + float var10 = rand.nextFloat() * 0.8F + 0.1F; + float var11 = rand.nextFloat() * 0.8F + 0.1F; + float var12 = rand.nextFloat() * 0.8F + 0.1F; + + while (var9.stackSize > 0) + { + int var13 = rand.nextInt(21) + 10; + + if (var13 > var9.stackSize) + { + var13 = var9.stackSize; + } + + var9.stackSize -= var13; + EntityItem var14 = + new EntityItem(world, x + var10, y + var11, z + var12, new ItemStack(var9.getItem(), var13, var9.getItemDamage())); + + var14.motionX = (float) rand.nextGaussian() * 0.05F; + var14.motionY = (float) rand.nextGaussian() * 0.05F + 0.2F; + var14.motionZ = (float) rand.nextGaussian() * 0.05F; + world.spawnEntityInWorld(var14); + } + } + } + + EntityItem book = new EntityItem(world, x + 0.5f, y + 0.5f, z + 0.5f, new ItemStack(TFPItems.TFPNecronomicon)); + book.motionX = (float) rand.nextGaussian() * 0.05F; + book.motionY = (float) rand.nextGaussian() * 0.05F + 0.2F; + book.motionZ = (float) rand.nextGaussian() * 0.05F; + world.spawnEntityInWorld(book); + } + + world.removeTileEntity(x, y, z); + + if(blockTypes != null && blockTypes[0] != null && blockTypes[1] != null && blockTypes[2] != null) + { + world.setBlock(x, y, z, Block.getBlockFromItem(blockTypes[0].getItem()), blockTypes[0].getItemDamage(), 3); + switch (meta) + { + case 2: + { + world.setBlock(x, y, z - 1, Block.getBlockFromItem(blockTypes[1].getItem()), blockTypes[1].getItemDamage(), 3); + world.setBlock(x, y, z - 2, Block.getBlockFromItem(blockTypes[2].getItem()), blockTypes[2].getItemDamage(), 3); + if(Loader.isModLoaded("Steamcraft")) + { + world.setBlock(x + 2, y, z - 4, InitBlocks.blockLightningRod, 0, 3); + world.setBlock(x + 2, y, z + 2, InitBlocks.blockLightningRod, 0, 3); + world.setBlock(x - 2, y, z - 4, InitBlocks.blockLightningRod, 0, 3); + world.setBlock(x - 2, y, z + 2, InitBlocks.blockLightningRod, 0, 3); + } + break; + } + case 0: + { + world.setBlock(x, y, z + 1, Block.getBlockFromItem(blockTypes[1].getItem()), blockTypes[1].getItemDamage(), 3); + world.setBlock(x, y, z + 2, Block.getBlockFromItem(blockTypes[2].getItem()), blockTypes[2].getItemDamage(), 3); + if(Loader.isModLoaded("Steamcraft")) + { + world.setBlock(x + 2, y, z + 4, InitBlocks.blockLightningRod, 0, 3); + world.setBlock(x + 2, y, z - 2, InitBlocks.blockLightningRod, 0, 3); + world.setBlock(x - 2, y, z + 4, InitBlocks.blockLightningRod, 0, 3); + world.setBlock(x - 2, y, z - 2, InitBlocks.blockLightningRod, 0, 3); + } + break; + } + case 1: + { + world.setBlock(x - 1, y, z, Block.getBlockFromItem(blockTypes[1].getItem()), blockTypes[1].getItemDamage(), 3); + world.setBlock(x - 2, y, z, Block.getBlockFromItem(blockTypes[2].getItem()), blockTypes[2].getItemDamage(), 3); + if(Loader.isModLoaded("Steamcraft")) + { + world.setBlock(x - 4, y, z + 2, InitBlocks.blockLightningRod, 0, 3); + world.setBlock(x + 2, y, z + 2, InitBlocks.blockLightningRod, 0, 3); + world.setBlock(x - 4, y, z - 2, InitBlocks.blockLightningRod, 0, 3); + world.setBlock(x + 2, y, z - 2, InitBlocks.blockLightningRod, 0, 3); + } + break; + } + case 3: + { + world.setBlock(x + 1, y, z, Block.getBlockFromItem(blockTypes[1].getItem()), blockTypes[1].getItemDamage(), 3); + world.setBlock(x + 2, y, z, Block.getBlockFromItem(blockTypes[2].getItem()), blockTypes[2].getItemDamage(), 3); + if(Loader.isModLoaded("Steamcraft")) + { + world.setBlock(x + 4, y, z + 2, InitBlocks.blockLightningRod, 0, 3); + world.setBlock(x - 2, y, z + 2, InitBlocks.blockLightningRod, 0, 3); + world.setBlock(x + 4, y, z - 2, InitBlocks.blockLightningRod, 0, 3); + world.setBlock(x - 2, y, z - 2, InitBlocks.blockLightningRod, 0, 3); + } + break; + } + } + } + } + + @Override + public void onBlockDestroyedByPlayer(World par1World, int x, int y, int z, int par5) + { + + } + + @Override + public void registerBlockIcons(IIconRegister register) + { + this.blockIcon = Blocks.planks.getIcon(0, 0); + } +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/BlockTFPAltarBlock.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/BlockTFPAltarBlock.java new file mode 100644 index 0000000..799fe9b --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/BlockTFPAltarBlock.java @@ -0,0 +1,140 @@ +package com.JAWolfe.terrafirmapunktweaks.blocks; + +import com.JAWolfe.terrafirmapunktweaks.TerraFirmaPunkTweaks; +import com.JAWolfe.terrafirmapunktweaks.reference.GUIs; +import com.sirolf2009.necromancy.block.BlockAltarBlock; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BlockTFPAltarBlock extends BlockAltarBlock +{ + public BlockTFPAltarBlock() + { + super(); + } + + private TileEntity getTileEntity(World par1World, int x, int y, int z) + { + switch (par1World.getBlockMetadata(x, y, z)) + { + case 2: + if (par1World.getBlock(x, y, z + 1) == this) + return par1World.getTileEntity(x, y, z + 2); + else + return par1World.getTileEntity(x, y, z + 1); + case 0: + if (par1World.getBlock(x, y, z - 1) == this) + return par1World.getTileEntity(x, y, z - 2); + else + return par1World.getTileEntity(x, y, z - 1); + case 1: + if (par1World.getBlock(x + 1, y, z) == this) + return par1World.getTileEntity(x + 2, y, z); + else + return par1World.getTileEntity(x + 1, y, z); + case 3: + if (par1World.getBlock(x - 1, y, z) == this) + return par1World.getTileEntity(x - 2, y, z); + else + return par1World.getTileEntity(x - 1, y, z); + } + return null; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int idk, float what, float these, float are) + { + TileEntity tileEntity = getTileEntity(world, x, y, z); + if (tileEntity == null || player.isSneaking()) + return false; + else + { + player.openGui(TerraFirmaPunkTweaks.instance, GUIs.TFPALTAR.ordinal(), world, tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); + return true; + } + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) + { + Block altar = null; + int metaAltar = 0, x1 = 0, y1 = 0, z1 = 0; + + switch (meta) + { + case 2: + { + if (world.getBlock(x, y, z + 1) == this) + { + x1 = x; y1 = y; z1 = z + 2; + } + else + { + x1 = x; y1 = y; z1 = z + 1; + } + break; + } + case 0: + { + if (world.getBlock(x, y, z - 1) == this) + { + x1 = x; y1 = y; z1 = z - 2; + } + else + { + x1 = x; y1 = y; z1 = z - 1; + } + break; + } + case 1: + { + if (world.getBlock(x + 1, y, z) == this) + { + x1 = x + 2; y1 = y; z1 = z; + } + else + { + x1 = x + 1; y1 = y; z1 = z; + } + break; + } + case 3: + { + if (world.getBlock(x - 1, y, z) == this) + { + x1 = x - 2; y1 = y; z1 = z; + } + else + { + x1 = x - 1; y1 = y; z1 = z; + } + break; + } + } + + altar = world.getBlock(x1, y1, z1); + metaAltar = world.getBlockMetadata(x1, y1, z1); + + if(altar instanceof BlockTFPAltar) + { + ((BlockTFPAltar)altar).breakBlock(world, x1, y1, z1, altar, metaAltar); + } + } + + @Override + public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int meta) + { + + } + + @Override + public void registerBlockIcons(IIconRegister register) + { + this.blockIcon = Blocks.cobblestone.getIcon(0, 0); + } +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/BlockTFPLigntningRod.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/BlockTFPLigntningRod.java new file mode 100644 index 0000000..d515853 --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/BlockTFPLigntningRod.java @@ -0,0 +1,122 @@ +package com.JAWolfe.terrafirmapunktweaks.blocks; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.init.Blocks; +import net.minecraft.world.World; +import steamcraft.common.blocks.machines.BlockLightningRod; +import steamcraft.common.init.InitBlocks; + +public class BlockTFPLigntningRod extends BlockLightningRod +{ + public BlockTFPLigntningRod() + { + super(Material.iron); + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) + { + Block altar = null; + int metaAltar = 0, x1 = 0, y1 = 0, z1 = 0; + + switch (meta) + { + case 2: + { + if (world.getBlock(x - 2, y, z + 4) instanceof BlockTFPAltar) + { + x1 = x - 2; y1 = y; z1 = z + 4; + } + else if (world.getBlock(x - 2, y, z - 2) instanceof BlockTFPAltar) + { + x1 = x - 2; y1 = y; z1 = z - 2; + } + else if (world.getBlock(x + 2, y, z + 4) instanceof BlockTFPAltar) + { + x1 = x + 2; y1 = y; z1 = z + 4; + } + else if (world.getBlock(x + 2, y, z - 2) instanceof BlockTFPAltar) + { + x1 = x + 2; y1 = y; z1 = z - 2; + } + break; + } + case 0: + { + if (world.getBlock(x - 2, y, z - 4) instanceof BlockTFPAltar) + { + x1 = x - 2; y1 = y; z1 = z - 4; + } + else if (world.getBlock(x - 2, y, z + 2) instanceof BlockTFPAltar) + { + x1 = x - 2; y1 = y; z1 = z + 2; + } + else if (world.getBlock(x + 2, y, z - 4) instanceof BlockTFPAltar) + { + x1 = x + 2; y1 = y; z1 = z - 4; + } + else if (world.getBlock(x + 2, y, z + 2) instanceof BlockTFPAltar) + { + x1 = x + 2; y1 = y; z1 = z + 2; + } + break; + } + case 1: + { + if (world.getBlock(x + 4, y, z - 2) instanceof BlockTFPAltar) + { + x1 = x + 4; y1 = y; z1 = z - 2; + } + else if (world.getBlock(x - 2, y, z - 2) instanceof BlockTFPAltar) + { + x1 = x - 2; y1 = y; z1 = z - 2; + } + else if (world.getBlock(x + 4, y, z + 2) instanceof BlockTFPAltar) + { + x1 = x + 4; y1 = y; z1 = z + 2; + } + else if (world.getBlock(x - 2, y, z + 2) instanceof BlockTFPAltar) + { + x1 = x - 2; y1 = y; z1 = z + 2; + } + break; + } + case 3: + { + if (world.getBlock(x - 4, y, z - 2) instanceof BlockTFPAltar) + { + x1 = x - 4; y1 = y; z1 = z - 2; + } + else if (world.getBlock(x + 2, y, z - 2) instanceof BlockTFPAltar) + { + x1 = x + 2; y1 = y; z1 = z - 2; + } + else if (world.getBlock(x - 4, y, z + 2) instanceof BlockTFPAltar) + { + x1 = x - 4; y1 = y; z1 = z + 2; + } + else if (world.getBlock(x + 2, y, z + 2) instanceof BlockTFPAltar) + { + x1 = x + 2; y1 = y; z1 = z + 2; + } + break; + } + } + + altar = world.getBlock(x1, y1, z1); + metaAltar = world.getBlockMetadata(x1, y1, z1); + + if(altar instanceof BlockTFPAltar) + { + ((BlockTFPAltar)altar).breakBlock(world, x1, y1, z1, altar, metaAltar); + } + } + + @Override + public void registerBlockIcons(IIconRegister register) + { + this.blockIcon = Blocks.anvil.getIcon(0, 0); + } +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBlocks.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBlocks.java index 0ae7941..4dc9175 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBlocks.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBlocks.java @@ -21,6 +21,9 @@ public class TFPBlocks public static Block tfpBlood; public static Block oliveOil; public static Block tfpWhaleOil; + public static Block tfpAltar; + public static Block tfpAltarBlock; + public static Block tfpLightningRod; public static int brickOvenRenderID; @@ -43,10 +46,12 @@ public class TFPBlocks tweakedboiler = new TweakedBoiler(false).setBlockName(SteamcraftBlocks.boiler.getUnlocalizedName().substring(5)).setHardness(5.0F).setResistance(10.0F); tweakedboilerOn = new TweakedBoiler(true).setBlockName(SteamcraftBlocks.boilerOn.getUnlocalizedName().substring(5)).setHardness(5.0F).setResistance(10.0F); tweakedFlashBoiler = new TweakedFlashBoiler().setBlockName(SteamcraftBlocks.flashBoiler.getUnlocalizedName().substring(5)).setHardness(5.0f).setResistance(10.0F); + tfpLightningRod = new BlockTFPLigntningRod().setBlockName("tfpLightningRod"); GameRegistry.registerBlock(tweakedboiler, "tweakedboiler"); GameRegistry.registerBlock(tweakedboilerOn, "tweakedboilerOn"); GameRegistry.registerBlock(tweakedFlashBoiler, "tweakedFlashBoiler"); + GameRegistry.registerBlock(tfpLightningRod, "tfpLightningRod"); } if(Loader.isModLoaded("necromancy")) @@ -54,6 +59,12 @@ public class TFPBlocks tfpBlood = new TFPCustomFluids(TFPFluids.tfpFluidBlood, Material.water).setBlockName("tfpBlood"); GameRegistry.registerBlock(tfpBlood, "tfpBlood"); TFPFluids.tfpFluidBlood.setBlock(tfpBlood); + + tfpAltar = new BlockTFPAltar().setHardness(4).setBlockName("tfpSummoningAltar"); + GameRegistry.registerBlock(tfpAltar, "tfpSummoningAltar"); + + tfpAltarBlock = new BlockTFPAltarBlock().setHardness(4).setBlockName("tfpAltarBuildingBlock"); + GameRegistry.registerBlock(tfpAltarBlock, "tfpAltarBuildingBlock"); } if(Loader.isModLoaded("steamcraft2")) diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/GUIHandler.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/GUIHandler.java index 8fbc4dd..bf32b98 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/GUIHandler.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/GUIHandler.java @@ -1,8 +1,11 @@ package com.JAWolfe.terrafirmapunktweaks.handlers; import com.JAWolfe.terrafirmapunktweaks.inventory.GUIBrickOven; +import com.JAWolfe.terrafirmapunktweaks.inventory.GUITFPAltar; import com.JAWolfe.terrafirmapunktweaks.inventory.containers.ContainerBrickOven; +import com.JAWolfe.terrafirmapunktweaks.inventory.containers.ContainerTFPAltar; import com.JAWolfe.terrafirmapunktweaks.reference.GUIs; +import com.JAWolfe.terrafirmapunktweaks.tiles.TEAltar; import com.JAWolfe.terrafirmapunktweaks.tiles.TEBrickOven; import cpw.mods.fml.common.network.IGuiHandler; @@ -20,6 +23,8 @@ public class GUIHandler implements IGuiHandler if(ID == GUIs.BRICKOVEN.ordinal() && entity != null && entity instanceof TEBrickOven) return new ContainerBrickOven(player.inventory, (TEBrickOven)entity); + else if(ID == GUIs.TFPALTAR.ordinal() && entity != null && entity instanceof TEAltar) + return new ContainerTFPAltar(player.inventory, (TEAltar) player.worldObj.getTileEntity(x, y, z)); return null; } @@ -31,6 +36,8 @@ public class GUIHandler implements IGuiHandler if(ID == GUIs.BRICKOVEN.ordinal() && entity != null && entity instanceof TEBrickOven) return new GUIBrickOven(player.inventory, (TEBrickOven)entity, world, x, y, z); + else if(ID == GUIs.TFPALTAR.ordinal() && entity != null && entity instanceof TEAltar) + return new GUITFPAltar(player.inventory, (TEAltar) player.worldObj.getTileEntity(x, y, z)); return null; } diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/PlayerInteractionHandler.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/PlayerInteractionHandler.java index 357bfe3..9bf2f9f 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/PlayerInteractionHandler.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/handlers/PlayerInteractionHandler.java @@ -103,6 +103,16 @@ public class PlayerInteractionHandler event.entityPlayer.getCurrentEquippedItem().stackSize--; } } + + if(event.entityPlayer.getCurrentEquippedItem().getItem() == Item.getItemFromBlock(Blocks.chest)) + { + event.setCanceled(true); + + if(event.entityPlayer.getCurrentEquippedItem().stackSize == 1) + event.entityPlayer.setCurrentItemOrArmor(0, null); + else + event.entityPlayer.getCurrentEquippedItem().stackSize--; + } } } diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/GUITFPAltar.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/GUITFPAltar.java new file mode 100644 index 0000000..93433e3 --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/GUITFPAltar.java @@ -0,0 +1,35 @@ +package com.JAWolfe.terrafirmapunktweaks.inventory; + +import org.lwjgl.opengl.GL11; + +import com.JAWolfe.terrafirmapunktweaks.inventory.containers.ContainerTFPAltar; +import com.JAWolfe.terrafirmapunktweaks.tiles.TEAltar; +import com.sirolf2009.necromancy.lib.ReferenceNecromancy; + +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.entity.player.InventoryPlayer; + +public class GUITFPAltar extends GuiContainer +{ + public GUITFPAltar(InventoryPlayer par1InventoryPlayer, TEAltar par2TileEntityAltar) + { + super(new ContainerTFPAltar(par1InventoryPlayer, par2TileEntityAltar)); + } + + @Override + protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) + { + fontRendererObj.drawString("Blood", 21, 60, 0xFFFFFF); + fontRendererObj.drawString("Soul", 132, 60, 0xFFFFFF); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) + { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + mc.renderEngine.bindTexture(ReferenceNecromancy.TEXTURES_GUI_ALTAR); + int var5 = (width - xSize) / 2; + int var6 = (height - ySize) / 2; + drawTexturedModalRect(var5, var6, 0, 0, xSize, ySize); + } +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/containers/ContainerTFPAltar.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/containers/ContainerTFPAltar.java new file mode 100644 index 0000000..3714a82 --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/containers/ContainerTFPAltar.java @@ -0,0 +1,109 @@ +package com.JAWolfe.terrafirmapunktweaks.inventory.containers; + +import com.JAWolfe.terrafirmapunktweaks.blocks.TFPBlocks; +import com.JAWolfe.terrafirmapunktweaks.tiles.TEAltar; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class ContainerTFPAltar extends Container +{ + private TEAltar altar; + private World worldObj; + private int posX; + private int posY; + private int posZ; + + public ContainerTFPAltar(InventoryPlayer inventory, TEAltar tileEntityAltar) + { + worldObj = tileEntityAltar.getWorldObj(); + posX = tileEntityAltar.xCoord; + posY = tileEntityAltar.yCoord; + posZ = tileEntityAltar.zCoord; + altar = tileEntityAltar; + addSlotToContainer(new SlotSummoningAltar(altar, 0, 26, 40)); // blood + addSlotToContainer(new SlotSummoningAltar(altar, 1, 134, 39)); // soul + addSlotToContainer(new SlotSummoningAltar(altar, 2, 80, 19)); // head + addSlotToContainer(new SlotSummoningAltar(altar, 3, 80, 36)); // body + addSlotToContainer(new SlotSummoningAltar(altar, 4, 80, 53)); // legs + addSlotToContainer(new SlotSummoningAltar(altar, 5, 63, 36)); // right-arm + addSlotToContainer(new SlotSummoningAltar(altar, 6, 97, 36)); // left-arm + int var3; + for (var3 = 0; var3 < 3; ++var3) + { + for (int var4 = 0; var4 < 9; ++var4) + { + this.addSlotToContainer(new Slot(inventory, var4 + var3 * 9 + 9, 8 + var4 * 18, 84 + var3 * 18)); + } + } + + for (var3 = 0; var3 < 9; ++var3) + { + this.addSlotToContainer(new Slot(inventory, var3, 8 + var3 * 18, 142)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer par1EntityPlayer) + { + return worldObj.getBlock(posX, posY, posZ) == TFPBlocks.tfpAltar + ? par1EntityPlayer.getDistanceSq(posX + 0.5D, posY + 0.5D, posZ + 0.5D) <= 64D : false; + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer entityPlayer, int slotIndex) + { + ItemStack origStack = null; + Slot slot = (Slot) inventorySlots.get(slotIndex); + + if (slot != null && slot.getHasStack()) + { + ItemStack slotStack = slot.getStack(); + origStack = slotStack.copy(); + + //From altar to inventory + if (slotIndex < 7) + { + if (!mergeItemStack(slotStack, 7, inventorySlots.size(), true)) + return null; + } + //From inventory to altar + else + { + for(int i = 0; i < 6; i++) + { + if(((Slot) inventorySlots.get(i)).isItemValid(slotStack) && i < 5) + { + if (!mergeItemStack(slotStack, i, i + 1, true)) + return null; + else + break; + } + else if(((Slot) inventorySlots.get(i)).isItemValid(slotStack)) + { + if (!mergeItemStack(slotStack, i, i + 1, true)) + { + if (!mergeItemStack(slotStack, i + 1, i + 2, true)) + return null; + } + } + } + } + + if (slotStack.stackSize == 0) + slot.putStack(null); + else + slot.onSlotChanged(); + + if (slotStack.stackSize == origStack.stackSize) + return null; + + slot.onPickupFromSlot(entityPlayer, slotStack); + } + return origStack; + } +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/containers/SlotSummoningAltar.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/containers/SlotSummoningAltar.java new file mode 100644 index 0000000..413b5c8 --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/inventory/containers/SlotSummoningAltar.java @@ -0,0 +1,43 @@ +package com.JAWolfe.terrafirmapunktweaks.inventory.containers; + +import com.sirolf2009.necromancy.item.ItemBodyPart; +import com.sirolf2009.necromancy.item.ItemGeneric; + +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class SlotSummoningAltar extends Slot +{ + public SlotSummoningAltar(IInventory iinventory, int slotID, int x, int y) + { + super(iinventory, slotID, x, y); + } + + @Override + public boolean isItemValid(ItemStack itemstack) + { + if(getSlotIndex() == 0 && itemstack.getItem() instanceof ItemGeneric && itemstack.getItemDamage() == 2) + return true; + else if(getSlotIndex() == 1 && itemstack.getItem() instanceof ItemGeneric && itemstack.getItemDamage() == 1) + return true; + else if(getSlotIndex() == 2 && itemstack.getItem() instanceof ItemBodyPart && ItemBodyPart.necroEntities.get(itemstack.getItemDamage()).contains("Head")) + return true; + else if(getSlotIndex() == 3 && itemstack.getItem() instanceof ItemBodyPart && ItemBodyPart.necroEntities.get(itemstack.getItemDamage()).contains("Torso")) + return true; + else if(getSlotIndex() == 4 && itemstack.getItem() instanceof ItemBodyPart && ItemBodyPart.necroEntities.get(itemstack.getItemDamage()).contains("Legs")) + return true; + else if(getSlotIndex() == 5 && itemstack.getItem() instanceof ItemBodyPart && ItemBodyPart.necroEntities.get(itemstack.getItemDamage()).contains("Arm")) + return true; + else if(getSlotIndex() == 6 && itemstack.getItem() instanceof ItemBodyPart && ItemBodyPart.necroEntities.get(itemstack.getItemDamage()).contains("Arm")) + return true; + + return false; + } + + @Override + public int getSlotStackLimit() + { + return 1; + } +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/TFPItems.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/TFPItems.java index cce064c..2f67e9b 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/TFPItems.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/TFPItems.java @@ -21,6 +21,8 @@ public class TFPItems public static Item NailMold; public static Item NutMold; public static Item WasherMold; + public static Item HopperMold; + public static Item TFPNecronomicon; public static void initialise() { @@ -38,6 +40,9 @@ public class TFPItems { CustomBucketBlood = new TFPCustomBucket().setUnlocalizedName("Wooden Bucket Blood"); GameRegistry.registerItem(CustomBucketBlood, CustomBucketBlood.getUnlocalizedName()); + + TFPNecronomicon = new TFPNecronomicon().setUnlocalizedName("TFPNecronomicon"); + GameRegistry.registerItem(TFPNecronomicon, TFPNecronomicon.getUnlocalizedName()); } if(Loader.isModLoaded("ImmersiveEngineering")) @@ -53,6 +58,7 @@ public class TFPItems NailMold = new MetalMold().setUnlocalizedName("Nail Mold"); NutMold = new MetalMold().setUnlocalizedName("Nut Mold"); WasherMold = new MetalMold().setUnlocalizedName("Washer Mold"); + HopperMold = new MetalMold().setUnlocalizedName("Hopper Mold"); GameRegistry.registerItem(BlockMold, BlockMold.getUnlocalizedName()); GameRegistry.registerItem(FenceMold, FenceMold.getUnlocalizedName()); @@ -65,6 +71,7 @@ public class TFPItems GameRegistry.registerItem(NailMold, NailMold.getUnlocalizedName()); GameRegistry.registerItem(NutMold, NutMold.getUnlocalizedName()); GameRegistry.registerItem(WasherMold, WasherMold.getUnlocalizedName()); + GameRegistry.registerItem(HopperMold, HopperMold.getUnlocalizedName()); } if(Loader.isModLoaded("steamcraft2")) diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/TFPNecronomicon.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/TFPNecronomicon.java new file mode 100644 index 0000000..d042405 --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/TFPNecronomicon.java @@ -0,0 +1,124 @@ +package com.JAWolfe.terrafirmapunktweaks.items; + +import com.JAWolfe.terrafirmapunktweaks.blocks.TFPBlocks; +import com.JAWolfe.terrafirmapunktweaks.tiles.TEAltar; +import com.bioxx.tfc.BlockSetup; +import com.bioxx.tfc.Blocks.Terrain.BlockCobble; +import com.bioxx.tfc.Items.ItemTerra; +import com.sirolf2009.necromancy.achievement.AchievementNecromancy; + +import cpw.mods.fml.common.Loader; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import steamcraft.common.blocks.machines.BlockLightningRod; + +public class TFPNecronomicon extends ItemTerra +{ + public TFPNecronomicon() + { + super(); + setMaxStackSize(1); + } + + @Override + public boolean onItemUse(ItemStack usedItem, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) + { + if (world.getBlock(x, y, z) == BlockSetup.planks || world.getBlock(x, y, z) == BlockSetup.planks2) + { + if (world.getBlock(x + 1, y, z) instanceof BlockCobble && world.getBlock(x + 2, y, z) instanceof BlockCobble) + { + if(Loader.isModLoaded("Steamcraft")) + { + if(world.getBlock(x + 4, y, z + 2) instanceof BlockLightningRod && world.getBlock(x - 2, y, z + 2) instanceof BlockLightningRod && + world.getBlock(x + 4, y, z - 2) instanceof BlockLightningRod && world.getBlock(x - 2, y, z - 2) instanceof BlockLightningRod) + { + setLightningRods(3, x + 4, x - 2, x + 4, x - 2, z + 2, z + 2, z - 2, z - 2, y, world); + setBlocks(3, x + 1, z, x + 2, z, world, x, y, z, player, usedItem); + } + } + else + setBlocks(3, x + 1, z, x + 2, z, world, x, y, z, player, usedItem); + + return true; + + } + if (world.getBlock(x - 1, y, z) instanceof BlockCobble && world.getBlock(x - 2, y, z) instanceof BlockCobble) + { + if(Loader.isModLoaded("Steamcraft")) + { + if(world.getBlock(x - 4, y, z + 2) instanceof BlockLightningRod && world.getBlock(x + 2, y, z + 2) instanceof BlockLightningRod && + world.getBlock(x - 4, y, z - 2) instanceof BlockLightningRod && world.getBlock(x + 2, y, z - 2) instanceof BlockLightningRod) + { + setLightningRods(1, x - 4, x + 2, x - 4, x + 2, z + 2, z + 2, z - 2, z - 2, y, world); + setBlocks(1, x - 1, z, x - 2, z, world, x, y, z, player, usedItem); + } + } + else + setBlocks(1, x - 1, z, x - 2, z, world, x, y, z, player, usedItem); + + return true; + } + if (world.getBlock(x, y, z + 1) instanceof BlockCobble && world.getBlock(x, y, z + 2) instanceof BlockCobble) + { + if(Loader.isModLoaded("Steamcraft")) + { + if(world.getBlock(x + 2, y, z + 4) instanceof BlockLightningRod && world.getBlock(x + 2, y, z - 2) instanceof BlockLightningRod && + world.getBlock(x - 2, y, z + 4) instanceof BlockLightningRod && world.getBlock(x - 2, y, z - 2) instanceof BlockLightningRod) + { + setLightningRods(0, x + 2, x + 2, x - 2, x - 2, z + 4, z - 2, z + 4, z - 2, y, world); + setBlocks(0, x, z + 1, x, z + 2, world, x, y, z, player, usedItem); + } + } + else + setBlocks(0, x, z + 1, x, z + 2, world, x, y, z, player, usedItem); + + return true; + } + if (world.getBlock(x, y, z - 1) instanceof BlockCobble && world.getBlock(x, y, z - 2) instanceof BlockCobble) + { + if(Loader.isModLoaded("Steamcraft")) + { + if(world.getBlock(x + 2, y, z - 4) instanceof BlockLightningRod && world.getBlock(x + 2, y, z + 2) instanceof BlockLightningRod && + world.getBlock(x - 2, y, z - 4) instanceof BlockLightningRod && world.getBlock(x - 2, y, z + 2) instanceof BlockLightningRod) + { + setLightningRods(2, x + 2, x + 2, x - 2, x - 2, z - 4, z + 2, z - 4, z + 2, y, world); + setBlocks(2, x, z - 1, x, z - 2, world, x, y, z, player, usedItem); + } + } + else + setBlocks(2, x, z - 1, x, z - 2, world, x, y, z, player, usedItem); + + return true; + } + } + + return false; + } + + private void setBlocks(int meta, int x1, int z1, int x2, int z2, World world, int x, int y, int z, EntityPlayer player, ItemStack usedItem) + { + ItemStack[] blockTypes = new ItemStack[3]; + + blockTypes[0] = new ItemStack(Item.getItemFromBlock(world.getBlock(x, y, z)), 1, world.getBlockMetadata(x, y, z)); + blockTypes[1] = new ItemStack(Item.getItemFromBlock(world.getBlock(x1, y, z1)), 1, world.getBlockMetadata(x1, y, z1)); + blockTypes[2] = new ItemStack(Item.getItemFromBlock(world.getBlock(x2, y, z2)), 1, world.getBlockMetadata(x2, y, z2)); + + world.setBlock(x, y, z, TFPBlocks.tfpAltar, meta, 3); + world.setBlock(x1, y, z1, TFPBlocks.tfpAltarBlock, meta, 3); + world.setBlock(x2, y, z2, TFPBlocks.tfpAltarBlock, meta, 3); + player.addStat(AchievementNecromancy.AltarAchieve, 1); + --usedItem.stackSize; + if(world.getTileEntity(x, y, z) instanceof TEAltar) + ((TEAltar)world.getTileEntity(x, y, z)).setBlockTypes(blockTypes); + } + + private void setLightningRods(int meta, int x1, int x2, int x3, int x4, int z1, int z2, int z3, int z4, int y, World world) + { + world.setBlock(x1, y, z1, TFPBlocks.tfpLightningRod, meta, 3); + world.setBlock(x2, y, z2, TFPBlocks.tfpLightningRod, meta, 3); + world.setBlock(x3, y, z3, TFPBlocks.tfpLightningRod, meta, 3); + world.setBlock(x4, y, z4, TFPBlocks.tfpLightningRod, meta, 3); + } +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/TFPNecronomiconRenderer.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/TFPNecronomiconRenderer.java new file mode 100644 index 0000000..5c320e1 --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/TFPNecronomiconRenderer.java @@ -0,0 +1,105 @@ +package com.JAWolfe.terrafirmapunktweaks.items; + +import org.lwjgl.opengl.GL11; + +import com.sirolf2009.necromancy.Necromancy; +import com.sirolf2009.necromancy.client.model.ModelNecronomicon; +import com.sirolf2009.necromancy.core.proxy.ClientProxy; +import com.sirolf2009.necromancy.lib.ReferenceNecromancy; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; + +public class TFPNecronomiconRenderer implements IItemRenderer +{ + private final ModelNecronomicon modelInteractive; + private final ModelNecronomicon modelStatic; + + public String[] leftPageContent = {}, rightPageContent = {}; + + private final FontRenderer font; + + public TFPNecronomiconRenderer() + { + modelInteractive = new ModelNecronomicon(); + modelStatic = new ModelNecronomicon(); + font = Minecraft.getMinecraft().fontRenderer; + } + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) + { + return true; + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) + { + return true; + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) + { + if (type.equals(ItemRenderType.ENTITY)) + { + renderNecronomIIconStatic(0F, 0.2F, 0F, 180F, 1F, 1F, 0.004F); + } + else if (type.equals(ItemRenderType.EQUIPPED)) + { + renderNecronomiconInteractive(0.8F, 1.3F, 0.6F, 180F, 180F, 0F, 0.009F); + } + else if (type.equals(ItemRenderType.EQUIPPED_FIRST_PERSON)) + { + renderNecronomiconInteractive(0.8F, 1F, -1F, 20F, 100F, 160F, 0.01F); + } + else if (type.equals(ItemRenderType.INVENTORY)) + { + renderNecronomIIconStatic(-0.2F, 0.2F, 0.2F, 100F, -20F, -20F, 0.007F); + } + } + + private void renderNecronomiconInteractive(float posX, float posY, float posZ, float rotX, float rotY, float rotZ, float scale) + { + modelInteractive.setRotationAngles(100, 0, 0, 0, 0, 0, null); + GL11.glPushMatrix(); + GL11.glTranslatef(posX, posY, posZ); + GL11.glRotatef(rotX, 1, 0, 0); + GL11.glRotatef(rotY, 0, 1, 0); + GL11.glRotatef(rotZ, 0, 0, 1); + GL11.glScalef(scale, scale, scale); + ClientProxy.mc.renderEngine.bindTexture(ReferenceNecromancy.TEXTURES_MODELS_NECRONOMICON); + modelInteractive.render(null, 1, 0, 0, 0, 1, 1); + GL11.glRotatef(-54, 0, 1, 0); + GL11.glTranslatef(8, -20, -30); + GL11.glScalef(0.8F, 0.8F, 0.8F); + for (int i = 0; i < rightPageContent.length; i++) + { + font.drawString(rightPageContent[i], 10, -50 + i * 10, 7208960); + } + + GL11.glRotatef(-69, 0, 1, 0); + GL11.glTranslatef(-104, 0, 3); + for (int i = 0; i < leftPageContent.length; i++) + { + font.drawString(leftPageContent[i], 10, -50 + i * 10, 7208960); + } + GL11.glPopMatrix(); + } + + private void renderNecronomIIconStatic(float posX, float posY, float posZ, float rotX, float rotY, float rotZ, float scale) + { + modelInteractive.setRotationAngles(100, 0, 0, 0, 0, 0, null); + GL11.glPushMatrix(); + GL11.glTranslatef(posX, posY, posZ); + GL11.glRotatef(rotX, 1, 0, 0); + GL11.glRotatef(rotY, 0, 1, 0); + GL11.glRotatef(rotZ, 0, 0, 1); + GL11.glScalef(scale, scale, scale); + Necromancy.proxy.bindTexture(ReferenceNecromancy.TEXTURES_MODELS_NECRONOMICON); + modelStatic.render(null, 0, 0, 0, 0f, 1, 1); + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/ClientProxy.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/ClientProxy.java index 6a17fe3..aaf22c2 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/ClientProxy.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/ClientProxy.java @@ -2,10 +2,17 @@ package com.JAWolfe.terrafirmapunktweaks.proxy; import com.JAWolfe.terrafirmapunktweaks.blocks.TFPBlocks; import com.JAWolfe.terrafirmapunktweaks.blocks.TFPBrickOvenRenderer; +import com.JAWolfe.terrafirmapunktweaks.items.TFPItems; +import com.JAWolfe.terrafirmapunktweaks.items.TFPNecronomiconRenderer; +import com.JAWolfe.terrafirmapunktweaks.tiles.TEAltar; +import com.sirolf2009.necromancy.client.renderer.tileentity.TileEntityAltarRenderer; +import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.item.Item; +import net.minecraftforge.client.MinecraftForgeClient; public class ClientProxy extends CommonProxy { @@ -21,5 +28,11 @@ public class ClientProxy extends CommonProxy TFPBlocks.brickOvenRenderID = RenderingRegistry.getNextAvailableRenderId(); RenderingRegistry.registerBlockHandler(TFPBlocks.brickOvenRenderID, new TFPBrickOvenRenderer()); + MinecraftForgeClient.registerItemRenderer(TFPItems.TFPNecronomicon, new TFPNecronomiconRenderer()); + + ClientRegistry.bindTileEntitySpecialRenderer(TEAltar.class, new TileEntityAltarRenderer()); + + MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(TFPBlocks.tfpAltar), new TileEntityAltarRenderer()); + MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(TFPBlocks.tfpAltarBlock), new TileEntityAltarRenderer()); } } diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/CommonProxy.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/CommonProxy.java index 1fc8cf0..4439e8c 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/CommonProxy.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/CommonProxy.java @@ -2,6 +2,7 @@ package com.JAWolfe.terrafirmapunktweaks.proxy; import com.JAWolfe.terrafirmapunktweaks.TFPFluids; import com.JAWolfe.terrafirmapunktweaks.items.TFPItems; +import com.JAWolfe.terrafirmapunktweaks.tiles.TEAltar; import com.JAWolfe.terrafirmapunktweaks.tiles.TEBoiler; import com.JAWolfe.terrafirmapunktweaks.tiles.TEBrickOven; import com.JAWolfe.terrafirmapunktweaks.tiles.TEFlashBoiler; @@ -29,6 +30,10 @@ public class CommonProxy GameRegistry.registerTileEntity(TEBoiler.class, "TEBoiler"); GameRegistry.registerTileEntity(TEFlashBoiler.class, "TEFlashBoiler"); } + if(Loader.isModLoaded("necromancy")) + { + GameRegistry.registerTileEntity(TEAltar.class, "TEAltar"); + } } public void registerFluids() diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/reference/GUIs.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/reference/GUIs.java index c655900..3840ff1 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/reference/GUIs.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/reference/GUIs.java @@ -2,5 +2,6 @@ package com.JAWolfe.terrafirmapunktweaks.reference; public enum GUIs { - BRICKOVEN + BRICKOVEN, + TFPALTAR } diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/tiles/TEAltar.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/tiles/TEAltar.java new file mode 100644 index 0000000..4b533be --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/tiles/TEAltar.java @@ -0,0 +1,61 @@ +package com.JAWolfe.terrafirmapunktweaks.tiles; + +import com.sirolf2009.necromancy.tileentity.TileEntityAltar; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; + +public class TEAltar extends TileEntityAltar +{ + ItemStack[] blockTypes = new ItemStack[3]; + + public TEAltar() + { + super(); + } + + public void setBlockTypes(ItemStack[] types) + { + blockTypes = types; + } + + public ItemStack[] getBlockTypes() + { + return blockTypes; + } + + @Override + public void writeToNBT(NBTTagCompound par1NBTTagCompound) + { + super.writeToNBT(par1NBTTagCompound); + NBTTagList nbttaglist = new NBTTagList(); + for(int i = 0; i < blockTypes.length; i++) + { + if(blockTypes[i] != null) + { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + nbttagcompound1.setByte("Slot", (byte)i); + blockTypes[i].writeToNBT(nbttagcompound1); + nbttaglist.appendTag(nbttagcompound1); + } + } + par1NBTTagCompound.setTag("blockTypes", nbttaglist); + } + + @Override + public void readFromNBT(NBTTagCompound par1NBTTagCompound) + { + super.readFromNBT(par1NBTTagCompound); + + NBTTagList nbttaglist = par1NBTTagCompound.getTagList("blockTypes", 10); + blockTypes = new ItemStack[3]; + for(int i = 0; i < nbttaglist.tagCount(); i++) + { + NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i); + byte byte0 = nbttagcompound1.getByte("Slot"); + if(byte0 >= 0 && byte0 < blockTypes.length) + blockTypes[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 e4e700e..dd36fa1 100644 --- a/src/main/resources/assets/terrafirmapunktweaks/lang/en_US.lang +++ b/src/main/resources/assets/terrafirmapunktweaks/lang/en_US.lang @@ -11,6 +11,11 @@ gui.tfptweaks.watertank=Water Tank gui.tfptweaks.steamtank=Steam Tank +#============ +#= Entities = +#============ +entity.minionNecro.name=Minion + #========= #= Items = #========= @@ -29,6 +34,8 @@ item.Bolt Mold.name=Metal Press Mold: Bolt item.Nail Mold.name=Metal Press Mold: Nail item.Nut Mold.name=Metal Press Mold: Nut item.Washer Mold.name=Metal Press Mold: Washer +item.Hopper Mold.name=Metal Press Mold: Hopper +item.TFPNecronomicon.name=Necronomicon #=========== #= Effects = @@ -61,6 +68,9 @@ 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 +tile.tfpSummoningAltar.name=Summoning Altar +tile.tfpAltarBuildingBlock.name=Summoning Altar +tile.tfpLightningRod.name=Lightning Rod #========== #= Fluids = diff --git a/src/main/resources/assets/terrafirmapunktweaks/textures/items/Hopper Mold.png b/src/main/resources/assets/terrafirmapunktweaks/textures/items/Hopper Mold.png new file mode 100644 index 0000000..dd22a03 Binary files /dev/null and b/src/main/resources/assets/terrafirmapunktweaks/textures/items/Hopper Mold.png differ