Slightly better packet management, removed Control Panel

This commit is contained in:
Aidan Brady 2013-10-27 00:08:39 -04:00
parent 5e587629bf
commit 340ccd1e87
11 changed files with 16 additions and 298 deletions

View file

@ -6,7 +6,6 @@ import java.util.HashMap;
import mekanism.api.gas.EnumGas;
import mekanism.client.gui.GuiCombiner;
import mekanism.client.gui.GuiControlPanel;
import mekanism.client.gui.GuiCredits;
import mekanism.client.gui.GuiCrusher;
import mekanism.client.gui.GuiDynamicTank;
@ -67,7 +66,6 @@ import mekanism.common.tileentity.TileEntityAdvancedElectricMachine;
import mekanism.common.tileentity.TileEntityAdvancedFactory;
import mekanism.common.tileentity.TileEntityChargepad;
import mekanism.common.tileentity.TileEntityCombiner;
import mekanism.common.tileentity.TileEntityControlPanel;
import mekanism.common.tileentity.TileEntityCrusher;
import mekanism.common.tileentity.TileEntityDynamicTank;
import mekanism.common.tileentity.TileEntityDynamicValve;
@ -303,7 +301,7 @@ public class ClientProxy extends CommonProxy
case 8:
return new GuiEnergyCube(player.inventory, (TileEntityEnergyCube)tileEntity);
case 9:
return new GuiControlPanel((TileEntityControlPanel)tileEntity, player, world);
//OPEN
case 10:
return new GuiGasTank(player.inventory, (TileEntityGasTank)tileEntity);
case 11:

View file

@ -1,191 +0,0 @@
package mekanism.client.gui;
import mekanism.api.EnumColor;
import mekanism.api.IAccessibleGui;
import mekanism.api.Object3D;
import mekanism.common.PacketHandler;
import mekanism.common.PacketHandler.Transmission;
import mekanism.common.network.PacketControlPanel;
import mekanism.common.tileentity.TileEntityControlPanel;
import mekanism.common.util.MekanismUtils;
import mekanism.common.util.MekanismUtils.ResourceType;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiTextField;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import org.lwjgl.opengl.GL11;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class GuiControlPanel extends GuiScreen
{
public TileEntityControlPanel tileEntity;
public EntityPlayer usingPlayer;
public World worldObj;
public String displayText = "";
public int ticker = 0;
private GuiTextField xField;
private GuiTextField yField;
private GuiTextField zField;
public GuiControlPanel(TileEntityControlPanel tentity, EntityPlayer player, World world)
{
tileEntity = tentity;
usingPlayer = player;
worldObj = world;
}
@Override
public void initGui()
{
super.initGui();
buttonList.clear();
buttonList.add(new GuiButton(0, width / 2 - 80, height / 4 + 72 + 12, 60, 20, "Access"));
xField = new GuiTextField(fontRenderer, width / 2 - 80, 53, 35, 12);
xField.setMaxStringLength(4);
xField.setText(Integer.toString(tileEntity.xCached));
xField.setFocused(true);
yField = new GuiTextField(fontRenderer, width / 2 - 80, 70, 35, 12);
yField.setMaxStringLength(4);
yField.setText(Integer.toString(tileEntity.yCached));
zField = new GuiTextField(fontRenderer, width / 2 - 80, 87, 35, 12);
zField.setMaxStringLength(4);
zField.setText(Integer.toString(tileEntity.zCached));
}
@Override
public void drawScreen(int i, int j, float f)
{
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiControlPanel.png"));
drawTexturedModalRect(width / 2 - 100, height / 2 - 100, 0, 0, 176, 166);
xField.drawTextBox();
yField.drawTextBox();
zField.drawTextBox();
super.drawScreen(i, j, f);
fontRenderer.drawString("Control Panel", 165, 40, 0x404040);
fontRenderer.drawString(displayText, 133, 120, 0x404040);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glEnable(GL11.GL_DEPTH_TEST);
}
@Override
public void keyTyped(char c, int i)
{
super.keyTyped(c, i);
xField.textboxKeyTyped(c, i);
yField.textboxKeyTyped(c, i);
zField.textboxKeyTyped(c, i);
try {
tileEntity.xCached = Integer.parseInt(xField.getText());
} catch(NumberFormatException e) { tileEntity.xCached = 0; }
try {
tileEntity.yCached = Integer.parseInt(yField.getText());
} catch(NumberFormatException e) { tileEntity.yCached = 0; }
try {
tileEntity.zCached = Integer.parseInt(zField.getText());
} catch(NumberFormatException e) { tileEntity.zCached = 0; }
}
@Override
public boolean doesGuiPauseGame()
{
return false;
}
@Override
public void updateScreen()
{
xField.updateCursorCounter();
yField.updateCursorCounter();
zField.updateCursorCounter();
if(ticker > 0)
{
ticker--;
}
else {
displayText = "";
}
}
@Override
public void mouseClicked(int x, int y, int z)
{
super.mouseClicked(x, y, z);
xField.mouseClicked(x, y, z);
yField.mouseClicked(x, y, z);
zField.mouseClicked(x, y, z);
}
@Override
public void actionPerformed(GuiButton guibutton)
{
if(!guibutton.enabled)
{
return;
}
if(guibutton.id == 0)
{
try {
if(worldObj.getBlockTileEntity(Integer.parseInt(xField.getText()), Integer.parseInt(yField.getText()), Integer.parseInt(zField.getText())) != null)
{
if(worldObj.getBlockTileEntity(Integer.parseInt(xField.getText()), Integer.parseInt(yField.getText()), Integer.parseInt(zField.getText())) instanceof IAccessibleGui)
{
IAccessibleGui gui = (IAccessibleGui)worldObj.getBlockTileEntity(Integer.parseInt(xField.getText()), Integer.parseInt(yField.getText()), Integer.parseInt(zField.getText()));
try {
Class mod = Class.forName(gui.getClassPath());
if(mod == null)
{
System.err.println("[Mekanism] Incorrectly implemented IAccessibleGui -- ignoring handler packet.");
System.err.println(" ~ Unable to locate class '" + gui.getClassPath() + ".'");
return;
}
Object instance = mod.getField(gui.getInstanceName()).get(null);
if(instance == null)
{
System.err.println("[Mekanism] Incorrectly implemented IAccessibleGui -- ignoring handler packet.");
System.err.println(" ~ Unable to locate instance object '" + gui.getInstanceName() + ".'");
return;
}
PacketHandler.sendPacket(Transmission.SERVER, new PacketControlPanel().setParams(gui.getClassPath(), gui.getInstanceName(), new Object3D(Integer.parseInt(xField.getText()), Integer.parseInt(yField.getText()), Integer.parseInt(zField.getText())), gui.getGuiID()));
usingPlayer.openGui(instance, gui.getGuiID(), worldObj, Integer.parseInt(xField.getText()), Integer.parseInt(yField.getText()), Integer.parseInt(zField.getText()));
} catch(Exception e) {
System.err.println("[Mekanism] Error while handling Control Panel GUI request.");
e.printStackTrace();
}
}
else {
displayText = EnumColor.DARK_RED + "Tile entity isn't available.";
ticker = 40;
}
}
else {
displayText = EnumColor.DARK_RED + "Tile entity doesn't exist.";
ticker = 40;
}
} catch(NumberFormatException e) {
displayText = EnumColor.DARK_RED + "Invalid characters.";
ticker = 40;
}
}
}
}

View file

@ -59,8 +59,8 @@ import mekanism.common.network.PacketDataRequest;
import mekanism.common.network.PacketDigitUpdate;
import mekanism.common.network.PacketElectricBowState;
import mekanism.common.network.PacketElectricChest;
import mekanism.common.network.PacketNewFilter;
import mekanism.common.network.PacketLogisticalSorterGui;
import mekanism.common.network.PacketNewFilter;
import mekanism.common.network.PacketPortableTeleport;
import mekanism.common.network.PacketPortalFX;
import mekanism.common.network.PacketRedstoneControl;
@ -74,7 +74,6 @@ import mekanism.common.network.PacketTransmitterTransferUpdate.TransmitterTransf
import mekanism.common.network.PacketWalkieTalkieState;
import mekanism.common.network.PacketWeather;
import mekanism.common.tileentity.TileEntityBoundingBlock;
import mekanism.common.tileentity.TileEntityControlPanel;
import mekanism.common.tileentity.TileEntityEnergyCube;
import mekanism.common.tileentity.TileEntityGasTank;
import mekanism.common.tileentity.TileEntityLogisticalSorter;
@ -1028,7 +1027,6 @@ public class Mekanism
//Tile entities
GameRegistry.registerTileEntity(TileEntityEnergyCube.class, "EnergyCube");
GameRegistry.registerTileEntity(TileEntityBoundingBlock.class, "BoundingBlock");
GameRegistry.registerTileEntity(TileEntityControlPanel.class, "ControlPanel");
GameRegistry.registerTileEntity(TileEntityGasTank.class, "GasTank");
GameRegistry.registerTileEntity(TileEntityTeleporter.class, "MekanismTeleporter");
GameRegistry.registerTileEntity(TileEntityLogisticalSorter.class, "LogisticalSorter");

View file

@ -9,7 +9,6 @@ import mekanism.common.Mekanism;
import mekanism.common.PacketHandler;
import mekanism.common.PacketHandler.Transmission;
import mekanism.common.network.PacketTileEntity;
import mekanism.common.tileentity.TileEntityControlPanel;
import mekanism.common.tileentity.TileEntityDynamicTank;
import mekanism.common.tileentity.TileEntityDynamicValve;
import net.minecraft.block.Block;
@ -39,7 +38,7 @@ import cpw.mods.fml.relauncher.SideOnly;
* 3: Coal Block
* 4: Refined Glowstone
* 5: Steel Block
* 6: Control Panel
* 6: OPEN
* 7: Teleporter Frame
* 8: Steel Casing
* 9: Dynamic Tank
@ -115,7 +114,7 @@ public class BlockBasic extends Block
list.add(new ItemStack(i, 1, 3));
list.add(new ItemStack(i, 1, 4));
list.add(new ItemStack(i, 1, 5));
//list.add(new ItemStack(i, 1, 6));
//OPEN
list.add(new ItemStack(i, 1, 7));
list.add(new ItemStack(i, 1, 8));
list.add(new ItemStack(i, 1, 9));
@ -166,14 +165,6 @@ public class BlockBasic extends Block
return true;
}
}
else if(metadata == 6)
{
if(!entityplayer.isSneaking())
{
entityplayer.openGui(Mekanism.instance, 9, world, x, y, z);
return true;
}
}
if(world.isRemote)
{
@ -354,7 +345,7 @@ public class BlockBasic extends Block
@Override
public boolean hasTileEntity(int metadata)
{
return metadata == 6 || metadata == 9 || metadata == 10 || metadata == 11;
return metadata == 9 || metadata == 10 || metadata == 11;
}
@Override
@ -362,8 +353,6 @@ public class BlockBasic extends Block
{
switch(metadata)
{
case 6:
return new TileEntityControlPanel();
case 9:
return new TileEntityDynamicTank();
case 10:

View file

@ -13,7 +13,7 @@ import net.minecraft.util.Icon;
* 3: Coal Block
* 4: Refined Glowstone
* 5: Steel Block
* 6: Control Panel
* 6: OPEN
* 7: Teleporter Frame
* 8: Steel Casing
* 9: Dynamic Tank
@ -70,7 +70,7 @@ public class ItemBlockBasic extends ItemBlock
name = "SteelBlock";
break;
case 6:
name = "ControlPanel";
name = "empty";//OPEN
break;
case 7:
name = "TeleporterFrame";

View file

@ -49,7 +49,10 @@ public abstract class TileEntityBasicBlock extends TileEntity implements IWrench
{
if(doAutoSync && playersUsing.size() > 0)
{
PacketHandler.sendPacket(Transmission.CLIENTS_RANGE, new PacketTileEntity().setParams(Object3D.get(this), getNetworkedData(new ArrayList())), Object3D.get(this), 50D);
for(EntityPlayer player : playersUsing)
{
PacketHandler.sendPacket(Transmission.SINGLE_CLIENT, new PacketTileEntity().setParams(Object3D.get(this), getNetworkedData(new ArrayList())), player);
}
}
packetTick++;

View file

@ -1,80 +0,0 @@
package mekanism.common.tileentity;
import java.util.ArrayList;
import mekanism.api.Object3D;
import mekanism.common.ITileNetwork;
import mekanism.common.PacketHandler;
import mekanism.common.PacketHandler.Transmission;
import mekanism.common.network.PacketTileEntity;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import com.google.common.io.ByteArrayDataInput;
public class TileEntityControlPanel extends TileEntity implements ITileNetwork
{
/** A counter to send packets at defined intervals. */
public int packetTick = 0;
/** x value stored in the GUI */
public int xCached;
/** y value stored in the GUI */
public int yCached;
/** z value stored in the GUI */
public int zCached;
@Override
public void updateEntity()
{
packetTick++;
if(packetTick == 5 && !worldObj.isRemote)
{
PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity().setParams(Object3D.get(this), getNetworkedData(new ArrayList())));
}
if(packetTick % 20 == 0 && worldObj.isRemote)
{
PacketHandler.sendPacket(Transmission.SERVER, new PacketTileEntity().setParams(Object3D.get(this), getNetworkedData(new ArrayList())));
}
}
@Override
public void readFromNBT(NBTTagCompound nbtTags)
{
super.readFromNBT(nbtTags);
xCached = nbtTags.getInteger("xCached");
yCached = nbtTags.getInteger("yCached");
zCached = nbtTags.getInteger("zCached");
}
@Override
public void writeToNBT(NBTTagCompound nbtTags)
{
super.writeToNBT(nbtTags);
nbtTags.setInteger("xCached", xCached);
nbtTags.setInteger("yCached", yCached);
nbtTags.setInteger("zCached", zCached);
}
@Override
public void handlePacketData(ByteArrayDataInput dataStream)
{
xCached = dataStream.readInt();
yCached = dataStream.readInt();
zCached = dataStream.readInt();
}
@Override
public ArrayList getNetworkedData(ArrayList data)
{
data.add(xCached);
data.add(yCached);
data.add(zCached);
return data;
}
}

View file

@ -15,6 +15,7 @@ import mekanism.common.transporter.SlotInfo;
import mekanism.common.transporter.TransporterFilter;
import mekanism.common.util.MekanismUtils;
import mekanism.common.util.TransporterUtils;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@ -100,7 +101,10 @@ public class TileEntityLogisticalSorter extends TileEntityElectricBlock implemen
if(playersUsing.size() > 0)
{
PacketHandler.sendPacket(Transmission.CLIENTS_RANGE, new PacketTileEntity().setParams(Object3D.get(this), getGenericPacket(new ArrayList())), Object3D.get(this), 50D);
for(EntityPlayer player : playersUsing)
{
PacketHandler.sendPacket(Transmission.SINGLE_CLIENT, new PacketTileEntity().setParams(Object3D.get(this), getGenericPacket(new ArrayList())), player);
}
}
}
}

View file

@ -35,7 +35,6 @@ tile.BasicBlock.RefinedObsidian.name=Raffiniertes Obsidian
tile.BasicBlock.CoalBlock.name=Kohleblock
tile.BasicBlock.RefinedGlowstone.name=Raffiniertes Glowstone
tile.BasicBlock.SteelBlock.name=Stahlblock
tile.BasicBlock.ControlPanel.name=Kontrollpaneel
tile.BasicBlock.TeleporterFrame.name=Teleporter-Rahmen
tile.BasicBlock.SteelCasing.name=Stahlhülle
tile.BasicBlock.DynamicTank.name=Dynamischer Tank

View file

@ -35,7 +35,6 @@ tile.BasicBlock.RefinedObsidian.name=Refined Obsidian
tile.BasicBlock.CoalBlock.name=Coal Block
tile.BasicBlock.RefinedGlowstone.name=Refined Glowstone
tile.BasicBlock.SteelBlock.name=Steel Block
tile.BasicBlock.ControlPanel.name=Control Panel
tile.BasicBlock.TeleporterFrame.name=Teleporter Frame
tile.BasicBlock.SteelCasing.name=Steel Casing
tile.BasicBlock.DynamicTank.name=Dynamic Tank

View file

@ -35,7 +35,6 @@ tile.BasicBlock.RefinedObsidian.name=Rafinowany Obsydian
tile.BasicBlock.CoalBlock.name=Blok Węgla
tile.BasicBlock.RefinedGlowstone.name=Rafinowany Jasnogłaz
tile.BasicBlock.SteelBlock.name=Blok Stali
tile.BasicBlock.ControlPanel.name=Panel Kontrolny
tile.BasicBlock.TeleporterFrame.name=Ramka Teleportera
tile.BasicBlock.SteelCasing.name=Stalowa Obudowa
tile.BasicBlock.DynamicTank.name=Dynamiczny Zbiornik