diff --git a/resources/assets/resonantinduction/languages/en_US.properties b/resources/assets/resonantinduction/languages/en_US.properties index 30ef50b8..b7706359 100755 --- a/resources/assets/resonantinduction/languages/en_US.properties +++ b/resources/assets/resonantinduction/languages/en_US.properties @@ -4,6 +4,7 @@ itemGroup.resonantinduction=Resonant Induction ## Blocks tile.resonantinduction\:tesla.name=Tesla Coil +tile.resonantinduction\:multimeter.name=Multimeter tile.resonantinduction\:contractor.name=Electromagnetic Contractor ## Items diff --git a/resources/assets/resonantinduction/textures/gui/gui_base.png b/resources/assets/resonantinduction/textures/gui/gui_base.png new file mode 100644 index 00000000..5f91f63c Binary files /dev/null and b/resources/assets/resonantinduction/textures/gui/gui_base.png differ diff --git a/src/resonantinduction/ClientProxy.java b/src/resonantinduction/ClientProxy.java index f4a2779f..89f25e70 100644 --- a/src/resonantinduction/ClientProxy.java +++ b/src/resonantinduction/ClientProxy.java @@ -4,11 +4,14 @@ package resonantinduction; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import resonantinduction.base.Vector3; import resonantinduction.contractor.TileEntityEMContractor; import resonantinduction.fx.FXElectricBolt; +import resonantinduction.multimeter.GuiMultimeter; +import resonantinduction.multimeter.TileEntityMultimeter; import resonantinduction.render.BlockRenderingHandler; import resonantinduction.render.RenderEMContractor; import resonantinduction.render.RenderTesla; @@ -40,6 +43,12 @@ public class ClientProxy extends CommonProxy @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + + if (tileEntity instanceof TileEntityMultimeter) + { + return new GuiMultimeter(player.inventory, ((TileEntityMultimeter) tileEntity)); + } return null; } diff --git a/src/resonantinduction/CommonProxy.java b/src/resonantinduction/CommonProxy.java index 80024d3e..320d95e7 100644 --- a/src/resonantinduction/CommonProxy.java +++ b/src/resonantinduction/CommonProxy.java @@ -4,8 +4,11 @@ package resonantinduction; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import resonantinduction.base.Vector3; +import resonantinduction.multimeter.ContainerMultimeter; +import resonantinduction.multimeter.TileEntityMultimeter; import cpw.mods.fml.common.network.IGuiHandler; /** @@ -22,6 +25,12 @@ public class CommonProxy implements IGuiHandler @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + + if (tileEntity instanceof TileEntityMultimeter) + { + return new ContainerMultimeter(player.inventory, ((TileEntityMultimeter) tileEntity)); + } return null; } diff --git a/src/resonantinduction/ResonantInduction.java b/src/resonantinduction/ResonantInduction.java index 63123709..b6dacc3e 100644 --- a/src/resonantinduction/ResonantInduction.java +++ b/src/resonantinduction/ResonantInduction.java @@ -14,6 +14,7 @@ import resonantinduction.contractor.ItemBlockContractor; import resonantinduction.contractor.TileEntityEMContractor; import resonantinduction.entangler.ItemQuantumEntangler; import resonantinduction.multimeter.BlockMultimeter; +import resonantinduction.multimeter.TileEntityMultimeter; import resonantinduction.tesla.BlockTesla; import resonantinduction.tesla.TileEntityTesla; import cpw.mods.fml.common.FMLLog; @@ -27,6 +28,7 @@ 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.NetworkMod; +import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; @@ -69,7 +71,7 @@ public class ResonantInduction public static final String PREFIX = DOMAIN + ":"; public static final String DIRECTORY = "/assets/" + DOMAIN + "/"; public static final String TEXTURE_DIRECTORY = "textures/"; - public static final String GUI_DIRECTORY = TEXTURE_DIRECTORY + "/gui"; + public static final String GUI_DIRECTORY = TEXTURE_DIRECTORY + "gui/"; public static final String BLOCK_TEXTURE_DIRECTORY = TEXTURE_DIRECTORY + "blocks/"; public static final String ITEM_TEXTURE_DIRECTORY = TEXTURE_DIRECTORY + "items/"; public static final String MODEL_TEXTURE_DIRECTORY = TEXTURE_DIRECTORY + "models/"; @@ -114,6 +116,7 @@ public class ResonantInduction public void preInit(FMLPreInitializationEvent evt) { LOGGER.setParent(FMLLog.getLogger()); + NetworkRegistry.instance().registerGuiHandler(this, this.proxy); CONFIGURATION.load(); @@ -133,17 +136,17 @@ public class ResonantInduction // Blocks blockTesla = new BlockTesla(getNextBlockID()); blockMultimeter = new BlockMultimeter(getNextBlockID()); - - GameRegistry.registerBlock(blockTesla, blockTesla.getUnlocalizedName()); - GameRegistry.registerBlock(blockMultimeter, blockMultimeter.getUnlocalizedName()); - blockEMContractor = new BlockEMContractor(getNextBlockID()); - GameRegistry.registerBlock(blockEMContractor, ItemBlockContractor.class, blockEMContractor.getUnlocalizedName()); CONFIGURATION.save(); + GameRegistry.registerBlock(blockTesla, blockTesla.getUnlocalizedName()); + GameRegistry.registerBlock(blockMultimeter, blockMultimeter.getUnlocalizedName()); + GameRegistry.registerBlock(blockEMContractor, ItemBlockContractor.class, blockEMContractor.getUnlocalizedName()); + // Tiles GameRegistry.registerTileEntity(TileEntityTesla.class, blockTesla.getUnlocalizedName()); + GameRegistry.registerTileEntity(TileEntityMultimeter.class, blockMultimeter.getUnlocalizedName()); GameRegistry.registerTileEntity(TileEntityEMContractor.class, blockEMContractor.getUnlocalizedName()); ResonantInduction.proxy.registerRenderers(); diff --git a/src/resonantinduction/multimeter/BlockMultimeter.java b/src/resonantinduction/multimeter/BlockMultimeter.java index 9d7f9424..51efe8d4 100644 --- a/src/resonantinduction/multimeter/BlockMultimeter.java +++ b/src/resonantinduction/multimeter/BlockMultimeter.java @@ -3,7 +3,12 @@ */ package resonantinduction.multimeter; +import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import resonantinduction.ResonantInduction; import resonantinduction.base.BlockBase; /** @@ -12,11 +17,23 @@ import resonantinduction.base.BlockBase; * @author Calclavia * */ -public class BlockMultimeter extends BlockBase +public class BlockMultimeter extends BlockBase implements ITileEntityProvider { public BlockMultimeter(int id) { super("multimeter", id, Material.iron); } + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityPlayer, int par6, float par7, float par8, float par9) + { + entityPlayer.openGui(ResonantInduction.INSTNACE, 0, world, x, y, z); + return true; + } + + @Override + public TileEntity createNewTileEntity(World world) + { + return new TileEntityMultimeter(); + } } diff --git a/src/resonantinduction/multimeter/ContainerMultimeter.java b/src/resonantinduction/multimeter/ContainerMultimeter.java new file mode 100644 index 00000000..df3e66bd --- /dev/null +++ b/src/resonantinduction/multimeter/ContainerMultimeter.java @@ -0,0 +1,43 @@ +/** + * + */ +package resonantinduction.multimeter; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; + +/** + * @author Calclavia + * + */ +public class ContainerMultimeter extends Container +{ + private final int yDisplacement = 51; + + public ContainerMultimeter(InventoryPlayer inventoryPlayer, TileEntityMultimeter tileEntity) + { + int i; + + for (i = 0; i < 3; ++i) + { + for (int j = 0; j < 9; ++j) + { + this.addSlotToContainer(new Slot(inventoryPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + yDisplacement)); + } + } + + for (i = 0; i < 9; ++i) + { + this.addSlotToContainer(new Slot(inventoryPlayer, i, 8 + i * 18, 142 + yDisplacement)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer entityplayer) + { + return true; + } + +} diff --git a/src/resonantinduction/multimeter/GuiMultimeter.java b/src/resonantinduction/multimeter/GuiMultimeter.java new file mode 100644 index 00000000..cd6ae138 --- /dev/null +++ b/src/resonantinduction/multimeter/GuiMultimeter.java @@ -0,0 +1,57 @@ +/** + * + */ +package resonantinduction.multimeter; + +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +import org.lwjgl.opengl.GL11; + +import resonantinduction.ResonantInduction; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +/** + * Multimeter GUI + * + * @author Calclavia + * + */ +@SideOnly(Side.CLIENT) +public class GuiMultimeter extends GuiContainer +{ + private static final ResourceLocation TEXTURE = new ResourceLocation(ResonantInduction.DOMAIN, ResonantInduction.GUI_DIRECTORY + "gui_base.png"); + TileEntityMultimeter tileEntity; + + private int containerWidth; + private int containerHeight; + + public GuiMultimeter(InventoryPlayer inventoryPlayer, TileEntityMultimeter tileEntity) + { + super(new ContainerMultimeter(inventoryPlayer, tileEntity)); + this.tileEntity = tileEntity; + this.ySize = 217; + } + + @Override + protected void drawGuiContainerForegroundLayer(int par1, int par2) + { + String s = this.tileEntity.getBlockType().getLocalizedName(); + this.fontRenderer.drawString(s, this.xSize / 2 - this.fontRenderer.getStringWidth(s) / 2, 6, 4210752); + this.fontRenderer.drawString("Energy: " + this.tileEntity.getDetectedEnergy(), 9, 15, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float f, int x, int y) + { + this.containerWidth = (this.width - this.xSize) / 2; + this.containerHeight = (this.height - this.ySize) / 2; + + this.mc.renderEngine.func_110577_a(TEXTURE); + GL11.glColor4f(1, 1, 1, 1); + this.drawTexturedModalRect(this.containerWidth, this.containerHeight, 0, 0, this.xSize, this.ySize); + } + +} diff --git a/src/resonantinduction/multimeter/TileEntityMultimeter.java b/src/resonantinduction/multimeter/TileEntityMultimeter.java new file mode 100644 index 00000000..250eccb7 --- /dev/null +++ b/src/resonantinduction/multimeter/TileEntityMultimeter.java @@ -0,0 +1,23 @@ +/** + * + */ +package resonantinduction.multimeter; + +import resonantinduction.base.TileEntityBase; + +/** + * @author Calclavia + * + */ +public class TileEntityMultimeter extends TileEntityBase +{ + public float getDetectedEnergy() + { + return 0; + } + + public boolean canUpdate() + { + return false; + } +}