diff --git a/common/mekanism/client/ClientPlayerTickHandler.java b/common/mekanism/client/ClientPlayerTickHandler.java index 09ccf94f9..0dd24f929 100644 --- a/common/mekanism/client/ClientPlayerTickHandler.java +++ b/common/mekanism/client/ClientPlayerTickHandler.java @@ -47,7 +47,7 @@ public class ClientPlayerTickHandler implements ITickHandler { if(!lastTickConfiguratorChange) { - item.setState(stack, (byte)(item.getState(stack) < 3 ? item.getState(stack)+1 : 0)); + item.setState(stack, (byte)(item.getState(stack) < 2 ? item.getState(stack)+1 : 0)); PacketHandler.sendPacket(Transmission.SERVER, new PacketConfiguratorState().setParams(item.getState(stack))); entityPlayer.sendChatToPlayer(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.GREY + "Configure State: " + item.getColor(item.getState(stack)) + item.getState(item.getState(stack))); lastTickConfiguratorChange = true; diff --git a/common/mekanism/client/GuiAdvancedElectricMachine.java b/common/mekanism/client/GuiAdvancedElectricMachine.java index f2bfc4653..be2f85ec2 100644 --- a/common/mekanism/client/GuiAdvancedElectricMachine.java +++ b/common/mekanism/client/GuiAdvancedElectricMachine.java @@ -1,7 +1,11 @@ package mekanism.client; +import mekanism.api.Object3D; import mekanism.common.ContainerAdvancedElectricMachine; +import mekanism.common.PacketHandler; import mekanism.common.TileEntityAdvancedElectricMachine; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketRemoveUpgrade; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.InventoryPlayer; @@ -39,6 +43,16 @@ public class GuiAdvancedElectricMachine extends GuiContainer { drawCreativeTabHoveringText(ElectricityDisplay.getDisplayShort(tileEntity.electricityStored, ElectricUnit.JOULES), xAxis, yAxis); } + + if(xAxis >= 179 && xAxis <= 198 && yAxis >= 47 && yAxis <= 54) + { + drawCreativeTabHoveringText("Remove speed upgrade", xAxis, yAxis); + } + + if(xAxis >= 179 && xAxis <= 198 && yAxis >= 57 && yAxis <= 64) + { + drawCreativeTabHoveringText("Remove energy upgrade", xAxis, yAxis); + } } @Override @@ -63,4 +77,28 @@ public class GuiAdvancedElectricMachine extends GuiContainer displayInt = tileEntity.getScaledUpgradeProgress(14); drawTexturedModalRect(guiWidth + 180, guiHeight + 30, 176 + 26, 71, 10, displayInt); } -} + + @Override + protected void mouseClicked(int mouseX, int mouseY, int button) + { + super.mouseClicked(mouseX, mouseY, button); + + if(button == 0) + { + int xAxis = (mouseX - (width - xSize) / 2); + int yAxis = (mouseY - (height - ySize) / 2); + + if(xAxis >= 179 && xAxis <= 198 && yAxis >= 47 && yAxis <= 54) + { + mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRemoveUpgrade().setParams(Object3D.get(tileEntity), (byte)0)); + } + + if(xAxis >= 179 && xAxis <= 198 && yAxis >= 57 && yAxis <= 64) + { + mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRemoveUpgrade().setParams(Object3D.get(tileEntity), (byte)1)); + } + } + } +} \ No newline at end of file diff --git a/common/mekanism/client/GuiElectricMachine.java b/common/mekanism/client/GuiElectricMachine.java index 15a7bc64e..78a175504 100644 --- a/common/mekanism/client/GuiElectricMachine.java +++ b/common/mekanism/client/GuiElectricMachine.java @@ -1,7 +1,11 @@ package mekanism.client; +import mekanism.api.Object3D; import mekanism.common.ContainerElectricMachine; +import mekanism.common.PacketHandler; import mekanism.common.TileEntityElectricMachine; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketRemoveUpgrade; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.InventoryPlayer; @@ -9,7 +13,6 @@ import org.lwjgl.opengl.GL11; import universalelectricity.core.electricity.ElectricityDisplay; import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -40,6 +43,16 @@ public class GuiElectricMachine extends GuiContainer { drawCreativeTabHoveringText(ElectricityDisplay.getDisplayShort(tileEntity.electricityStored, ElectricUnit.JOULES), xAxis, yAxis); } + + if(xAxis >= 179 && xAxis <= 198 && yAxis >= 47 && yAxis <= 54) + { + drawCreativeTabHoveringText("Remove speed upgrade", xAxis, yAxis); + } + + if(xAxis >= 179 && xAxis <= 198 && yAxis >= 57 && yAxis <= 64) + { + drawCreativeTabHoveringText("Remove energy upgrade", xAxis, yAxis); + } } @Override @@ -61,4 +74,28 @@ public class GuiElectricMachine extends GuiContainer displayInt = tileEntity.getScaledUpgradeProgress(14); drawTexturedModalRect(guiWidth + 180, guiHeight + 30, 176 + 26, 59, 10, displayInt); } -} + + @Override + protected void mouseClicked(int mouseX, int mouseY, int button) + { + super.mouseClicked(mouseX, mouseY, button); + + if(button == 0) + { + int xAxis = (mouseX - (width - xSize) / 2); + int yAxis = (mouseY - (height - ySize) / 2); + + if(xAxis >= 179 && xAxis <= 198 && yAxis >= 47 && yAxis <= 54) + { + mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRemoveUpgrade().setParams(Object3D.get(tileEntity), (byte)0)); + } + + if(xAxis >= 179 && xAxis <= 198 && yAxis >= 57 && yAxis <= 64) + { + mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRemoveUpgrade().setParams(Object3D.get(tileEntity), (byte)1)); + } + } + } +} \ No newline at end of file diff --git a/common/mekanism/client/GuiFactory.java b/common/mekanism/client/GuiFactory.java index 5951f5c81..47bdcdc03 100644 --- a/common/mekanism/client/GuiFactory.java +++ b/common/mekanism/client/GuiFactory.java @@ -1,9 +1,13 @@ package mekanism.client; +import mekanism.api.Object3D; import mekanism.common.ContainerFactory; -import mekanism.common.TileEntityFactory; import mekanism.common.IFactory.RecipeType; +import mekanism.common.PacketHandler; +import mekanism.common.PacketHandler.Transmission; import mekanism.common.Tier.FactoryTier; +import mekanism.common.TileEntityFactory; +import mekanism.common.network.PacketRemoveUpgrade; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.InventoryPlayer; @@ -11,7 +15,6 @@ import org.lwjgl.opengl.GL11; import universalelectricity.core.electricity.ElectricityDisplay; import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -43,6 +46,16 @@ public class GuiFactory extends GuiContainer { drawCreativeTabHoveringText(ElectricityDisplay.getDisplayShort(tileEntity.electricityStored, ElectricUnit.JOULES), xAxis, yAxis); } + + if(xAxis >= 179 && xAxis <= 198 && yAxis >= 47 && yAxis <= 54) + { + drawCreativeTabHoveringText("Remove speed upgrade", xAxis, yAxis); + } + + if(xAxis >= 179 && xAxis <= 198 && yAxis >= 57 && yAxis <= 64) + { + drawCreativeTabHoveringText("Remove energy upgrade", xAxis, yAxis); + } } @Override @@ -96,4 +109,28 @@ public class GuiFactory extends GuiContainer } } } + + @Override + protected void mouseClicked(int mouseX, int mouseY, int button) + { + super.mouseClicked(mouseX, mouseY, button); + + if(button == 0) + { + int xAxis = (mouseX - (width - xSize) / 2); + int yAxis = (mouseY - (height - ySize) / 2); + + if(xAxis >= 179 && xAxis <= 198 && yAxis >= 47 && yAxis <= 54) + { + mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRemoveUpgrade().setParams(Object3D.get(tileEntity), (byte)0)); + } + + if(xAxis >= 179 && xAxis <= 198 && yAxis >= 57 && yAxis <= 64) + { + mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F); + PacketHandler.sendPacket(Transmission.SERVER, new PacketRemoveUpgrade().setParams(Object3D.get(tileEntity), (byte)1)); + } + } + } } diff --git a/common/mekanism/common/IModule.java b/common/mekanism/common/IModule.java index 19028d331..08919bd74 100644 --- a/common/mekanism/common/IModule.java +++ b/common/mekanism/common/IModule.java @@ -5,7 +5,7 @@ package mekanism.common; * @author aidancbrady * */ -public interface IModule +public interface IModule { /** * Gets the version of the module. diff --git a/common/mekanism/common/ItemConfigurator.java b/common/mekanism/common/ItemConfigurator.java index 20eb61fd0..460e4d087 100644 --- a/common/mekanism/common/ItemConfigurator.java +++ b/common/mekanism/common/ItemConfigurator.java @@ -6,7 +6,6 @@ import java.util.Random; import mekanism.api.EnumColor; import mekanism.api.IConfigurable; -import mekanism.api.IUpgradeManagement; import mekanism.api.Object3D; import mekanism.common.PacketHandler.Transmission; import mekanism.common.network.PacketTileEntity; @@ -147,37 +146,6 @@ public class ItemConfigurator extends ItemEnergized } } else if(getState(stack) == 2) - { - if(world.getBlockTileEntity(x, y, z) instanceof IUpgradeManagement) - { - Random random = new Random(); - IUpgradeManagement management = (IUpgradeManagement)world.getBlockTileEntity(x, y, z); - ItemStack[] upgradeStacks = new ItemStack[] {new ItemStack(Mekanism.SpeedUpgrade, management.getSpeedMultiplier()), new ItemStack(Mekanism.EnergyUpgrade, management.getEnergyMultiplier())}; - - for(ItemStack upgrade : upgradeStacks) - { - if(upgrade.stackSize > 0) - { - float xRandom = random.nextFloat() * 0.8F + 0.1F; - float yRandom = random.nextFloat() * 0.8F + 0.1F; - float zRandom = random.nextFloat() * 0.8F + 0.1F; - - EntityItem item = new EntityItem(world, x + xRandom, y + yRandom, z + zRandom, upgrade); - - float k = 0.05F; - item.motionX = random.nextGaussian() * k; - item.motionY = random.nextGaussian() * k + 0.2F; - item.motionZ = random.nextGaussian() * k; - world.spawnEntityInWorld(item); - } - } - - management.setSpeedMultiplier(0); - management.setEnergyMultiplier(0); - return true; - } - } - else if(getState(stack) == 3) { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); @@ -217,8 +185,6 @@ public class ItemConfigurator extends ItemEnergized case 1: return "empty"; case 2: - return "upgrade dump"; - case 3: return "wrench"; } @@ -235,8 +201,6 @@ public class ItemConfigurator extends ItemEnergized return EnumColor.AQUA; case 2: return EnumColor.YELLOW; - case 3: - return EnumColor.ORANGE; } return EnumColor.GREY; diff --git a/common/mekanism/common/Mekanism.java b/common/mekanism/common/Mekanism.java index 293b579c7..8c0f98aeb 100644 --- a/common/mekanism/common/Mekanism.java +++ b/common/mekanism/common/Mekanism.java @@ -30,6 +30,7 @@ import mekanism.common.network.PacketElectricBowState; import mekanism.common.network.PacketElectricChest; import mekanism.common.network.PacketPortableTeleport; import mekanism.common.network.PacketPortalFX; +import mekanism.common.network.PacketRemoveUpgrade; import mekanism.common.network.PacketRobit; import mekanism.common.network.PacketStatusUpdate; import mekanism.common.network.PacketTileEntity; @@ -1192,6 +1193,7 @@ public class Mekanism PacketHandler.registerPacket(PacketStatusUpdate.class); PacketHandler.registerPacket(PacketDigitUpdate.class); PacketHandler.registerPacket(PacketPortableTeleport.class); + PacketHandler.registerPacket(PacketRemoveUpgrade.class); //Donators donators.add("mrgreaper"); diff --git a/common/mekanism/common/network/PacketRemoveUpgrade.java b/common/mekanism/common/network/PacketRemoveUpgrade.java new file mode 100644 index 000000000..de4bb1568 --- /dev/null +++ b/common/mekanism/common/network/PacketRemoveUpgrade.java @@ -0,0 +1,84 @@ +package mekanism.common.network; + +import java.io.DataOutputStream; + +import mekanism.api.IUpgradeManagement; +import mekanism.api.Object3D; +import mekanism.common.Mekanism; +import mekanism.common.TileEntityBasicBlock; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +import com.google.common.io.ByteArrayDataInput; + +public class PacketRemoveUpgrade implements IMekanismPacket +{ + public Object3D object3D; + + public byte upgradeType; + + @Override + public String getName() + { + return "RemoveUpgrade"; + } + + @Override + public IMekanismPacket setParams(Object... data) + { + object3D = (Object3D)data[0]; + upgradeType = (Byte)data[1]; + + return this; + } + + @Override + public void read(ByteArrayDataInput dataStream, EntityPlayer player, World world) throws Exception + { + int x = dataStream.readInt(); + int y = dataStream.readInt(); + int z = dataStream.readInt(); + + byte type = dataStream.readByte(); + + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + + if(tileEntity instanceof IUpgradeManagement && tileEntity instanceof TileEntityBasicBlock) + { + IUpgradeManagement upgradeTile = (IUpgradeManagement)tileEntity; + + if(type == 0) + { + if(upgradeTile.getSpeedMultiplier() > 0) + { + if(player.inventory.addItemStackToInventory(new ItemStack(Mekanism.SpeedUpgrade))) + { + upgradeTile.setSpeedMultiplier(upgradeTile.getSpeedMultiplier()-1); + } + } + } + else if(type == 1) + { + if(upgradeTile.getEnergyMultiplier() > 0) + { + if(player.inventory.addItemStackToInventory(new ItemStack(Mekanism.EnergyUpgrade))) + { + upgradeTile.setEnergyMultiplier(upgradeTile.getEnergyMultiplier()-1); + } + } + } + } + } + + @Override + public void write(DataOutputStream dataStream) throws Exception + { + dataStream.writeInt(object3D.xCoord); + dataStream.writeInt(object3D.yCoord); + dataStream.writeInt(object3D.zCoord); + + dataStream.writeByte(upgradeType); + } +}