From 69293538b95e53a886fb900f72b7b7cf1b307bd6 Mon Sep 17 00:00:00 2001 From: pahimar Date: Thu, 6 Dec 2012 16:04:20 -0500 Subject: [PATCH] More work on WorldEvent packets (the way clients will request servers to do world modification events). Decided to go with a general packet with event types --- ee3_client/ee3/client/core/ClientProxy.java | 11 +++- ee3_common/ee3/common/core/CommonProxy.java | 58 +++++++++++----- .../ee3/common/item/ItemMiniumStone.java | 2 +- .../ee3/common/item/ItemPhilosopherStone.java | 9 ++- ee3_common/ee3/common/lib/WorldEvents.java | 8 +++ .../ee3/common/network/PacketTypeHandler.java | 2 +- ...ansmutation.java => PacketWorldEvent.java} | 66 +++++++++++++++---- 7 files changed, 121 insertions(+), 35 deletions(-) create mode 100644 ee3_common/ee3/common/lib/WorldEvents.java rename ee3_common/ee3/common/network/{PacketWorldTransmutation.java => PacketWorldEvent.java} (50%) diff --git a/ee3_client/ee3/client/core/ClientProxy.java b/ee3_client/ee3/client/core/ClientProxy.java index 5185012f..ec5dd991 100644 --- a/ee3_client/ee3/client/core/ClientProxy.java +++ b/ee3_client/ee3/client/core/ClientProxy.java @@ -9,6 +9,7 @@ import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.KeyBindingRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.Side; +import cpw.mods.fml.common.network.PacketDispatcher; import cpw.mods.fml.common.registry.LanguageRegistry; import cpw.mods.fml.common.registry.TickRegistry; import ee3.client.core.handlers.DrawBlockHighlightHandler; @@ -24,6 +25,8 @@ import ee3.common.core.CommonProxy; import ee3.common.lib.BlockIds; import ee3.common.lib.RenderIds; import ee3.common.lib.Sprites; +import ee3.common.network.PacketTypeHandler; +import ee3.common.network.PacketWorldEvent; import ee3.common.tile.TileCalcinator; import static ee3.common.lib.CustomItemRarity.*; @@ -112,5 +115,11 @@ public class ClientProxy extends CommonProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileCalcinator.class, new RenderCalcinator()); } - + + @Override + public void sendWorldEventPacket(byte eventType, int originX, int originY, int originZ, byte sideHit, byte rangeX, byte rangeY, byte rangeZ, int targetID, int targetMeta) { + + PacketDispatcher.sendPacketToServer(PacketTypeHandler.populatePacket(new PacketWorldEvent(eventType, originX, originY, originZ, sideHit, rangeX, rangeY, rangeZ, targetID, targetMeta))); + } + } diff --git a/ee3_common/ee3/common/core/CommonProxy.java b/ee3_common/ee3/common/core/CommonProxy.java index 35fd2dc4..4c163fbe 100644 --- a/ee3_common/ee3/common/core/CommonProxy.java +++ b/ee3_common/ee3/common/core/CommonProxy.java @@ -25,51 +25,73 @@ import ee3.common.tile.TileCalcinator; */ public class CommonProxy implements IGuiHandler { - public void registerKeyBindingHandler() {} - - public void registerRenderTickHandler() {} - - public void registerDrawBlockHighlightHandler() {} + public void registerKeyBindingHandler() { - public void setKeyBinding(String name, int value) {} + } - public void registerSoundHandler() {} + public void registerRenderTickHandler() { - public void initCustomRarityTypes() {} + } + + public void registerDrawBlockHighlightHandler() { + + } + + public void setKeyBinding(String name, int value) { + + } + + public void registerSoundHandler() { + + } + + public void initCustomRarityTypes() { + + } public EnumRarity getCustomRarityType(String customRarity) { + return null; } - - public void initRenderingAndTextures() {} - - public void initTileEntities() { - GameRegistry.registerTileEntity(TileCalcinator.class, Strings.TE_CALCINATOR_NAME); + + public void initRenderingAndTextures() { + } - + + public void initTileEntities() { + + GameRegistry.registerTileEntity(TileCalcinator.class, Strings.TE_CALCINATOR_NAME); + } + + public void sendWorldEventPacket(byte eventType, int originX, int originY, int originZ, byte sideHit, byte rangeX, byte rangeY, byte rangeZ, int targetID, int targetMeta) { + + } + @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { + if (ID == GuiIds.PORTABLE_CRAFTING) { return new ContainerPortableCrafting(player.inventory, world, x, y, z); } else if (ID == GuiIds.CALCINATOR) { - TileCalcinator calcinator = (TileCalcinator)world.getBlockTileEntity(x, y, z); + TileCalcinator calcinator = (TileCalcinator) world.getBlockTileEntity(x, y, z); return new ContainerCalcinator(player.inventory, calcinator); } - + return null; } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { + if (ID == GuiIds.PORTABLE_CRAFTING) { return new GuiPortableCrafting(player, world, x, y, z); } else if (ID == GuiIds.CALCINATOR) { - TileCalcinator calcinator = (TileCalcinator)world.getBlockTileEntity(x, y, z); + TileCalcinator calcinator = (TileCalcinator) world.getBlockTileEntity(x, y, z); return new GuiCalcinator(player.inventory, calcinator); } - + return null; } diff --git a/ee3_common/ee3/common/item/ItemMiniumStone.java b/ee3_common/ee3/common/item/ItemMiniumStone.java index cd58846d..53a82afd 100644 --- a/ee3_common/ee3/common/item/ItemMiniumStone.java +++ b/ee3_common/ee3/common/item/ItemMiniumStone.java @@ -67,7 +67,7 @@ public class ItemMiniumStone extends ItemEE } @Override - public boolean onItemUse(ItemStack itemStack, EntityPlayer entityPlayer, World world, int x, int y, int z, int l, float f1, float f2, float f3) { + public boolean onItemUse(ItemStack itemStack, EntityPlayer entityPlayer, World world, int x, int y, int z, int sideHit, float hitVecX, float hitVecY, float hitVecZ) { boolean result = TransmutationHelper.transmuteInWorld(world, entityPlayer, itemStack, x, y, z); diff --git a/ee3_common/ee3/common/item/ItemPhilosopherStone.java b/ee3_common/ee3/common/item/ItemPhilosopherStone.java index 7d71ad16..4c632472 100644 --- a/ee3_common/ee3/common/item/ItemPhilosopherStone.java +++ b/ee3_common/ee3/common/item/ItemPhilosopherStone.java @@ -3,7 +3,6 @@ package ee3.common.item; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.Side; import cpw.mods.fml.common.asm.SideOnly; -import cpw.mods.fml.common.network.PacketDispatcher; import ee3.common.EquivalentExchange3; import ee3.common.core.helper.NBTHelper; import ee3.common.core.helper.TransmutationHelper; @@ -13,8 +12,10 @@ import ee3.common.lib.GuiIds; import ee3.common.lib.Reference; import ee3.common.lib.Sounds; import ee3.common.lib.Strings; +import ee3.common.lib.WorldEvents; import ee3.common.network.PacketKeyPressed; import ee3.common.network.PacketTypeHandler; +import ee3.common.network.PacketWorldEvent; import net.minecraft.src.EntityPlayer; import net.minecraft.src.EnumRarity; import net.minecraft.src.ItemStack; @@ -77,10 +78,12 @@ public class ItemPhilosopherStone extends ItemEE } @Override - public boolean onItemUse(ItemStack itemStack, EntityPlayer entityPlayer, World world, int x, int y, int z, int l, float f1, float f2, float f3) { + public boolean onItemUse(ItemStack itemStack, EntityPlayer entityPlayer, World world, int x, int y, int z, int sideHit, float hitVecX, float hitVecY, float hitVecZ) { boolean result = TransmutationHelper.transmuteInWorld(world, entityPlayer, itemStack, x, y, z); - + + EquivalentExchange3.proxy.sendWorldEventPacket(WorldEvents.TRANSMUTATION, x, y, z, (byte)sideHit, (byte)getCharge(itemStack), (byte)getCharge(itemStack), (byte)getCharge(itemStack), 50, 0); + if (result) { itemStack.damageItem(1, entityPlayer); } diff --git a/ee3_common/ee3/common/lib/WorldEvents.java b/ee3_common/ee3/common/lib/WorldEvents.java new file mode 100644 index 00000000..5bf67236 --- /dev/null +++ b/ee3_common/ee3/common/lib/WorldEvents.java @@ -0,0 +1,8 @@ +package ee3.common.lib; + + +public class WorldEvents { + + public static final byte TRANSMUTATION = 0; + +} diff --git a/ee3_common/ee3/common/network/PacketTypeHandler.java b/ee3_common/ee3/common/network/PacketTypeHandler.java index 7ab8af91..f1d8da89 100644 --- a/ee3_common/ee3/common/network/PacketTypeHandler.java +++ b/ee3_common/ee3/common/network/PacketTypeHandler.java @@ -20,7 +20,7 @@ import net.minecraft.src.Packet250CustomPayload; public enum PacketTypeHandler { KEY(PacketKeyPressed.class), TILE(PacketTileUpdate.class), - WORLD_TRANSMUTATION(PacketWorldTransmutation.class); + WORLD_EVENT(PacketWorldEvent.class); private Class clazz; diff --git a/ee3_common/ee3/common/network/PacketWorldTransmutation.java b/ee3_common/ee3/common/network/PacketWorldEvent.java similarity index 50% rename from ee3_common/ee3/common/network/PacketWorldTransmutation.java rename to ee3_common/ee3/common/network/PacketWorldEvent.java index 0956b40a..8a03c3f2 100644 --- a/ee3_common/ee3/common/network/PacketWorldTransmutation.java +++ b/ee3_common/ee3/common/network/PacketWorldEvent.java @@ -7,59 +7,103 @@ import java.io.IOException; import net.minecraft.src.INetworkManager; import cpw.mods.fml.common.network.Player; -public class PacketWorldTransmutation extends PacketEE { +public class PacketWorldEvent extends PacketEE { + public byte eventType; public int originX, originY, originZ; + public byte sideHit; public byte rangeX, rangeY, rangeZ; public int targetID, targetMeta; - // TODO: Decide if this will be a general "action" packet or specific - - public PacketWorldTransmutation() { - super(PacketTypeHandler.TILE, false); + public PacketWorldEvent() { + + super(PacketTypeHandler.WORLD_EVENT, false); } - + + public PacketWorldEvent(byte eventType, int originX, int originY, int originZ, byte sideHit, byte rangeX, byte rangeY, byte rangeZ, int targetID, int targetMeta) { + + super(PacketTypeHandler.WORLD_EVENT, false); + this.eventType = eventType; + this.originX = originX; + this.originY = originY; + this.originZ = originZ; + this.sideHit = sideHit; + this.rangeX = rangeX; + this.rangeY = rangeY; + this.rangeZ = rangeZ; + this.targetID = targetID; + this.targetMeta = targetMeta; + } + + public void setEventType(byte eventType) { + + this.eventType = eventType; + } + public void setOrigin(int originX, int originY, int originZ) { + this.originX = originX; this.originY = originY; this.originZ = originZ; } + public void setSideHit(byte sideHit) { + this.sideHit = sideHit; + } + public void setRange(byte rangeX, byte rangeY, byte rangeZ) { + this.rangeX = rangeX; this.rangeY = rangeY; this.rangeZ = rangeZ; } - + public void setTransmutationTarget(int targetID, int targetMeta) { + this.targetID = targetID; this.targetMeta = targetMeta; } - + public void writeData(DataOutputStream data) throws IOException { + + data.writeByte(eventType); data.writeInt(originX); data.writeInt(originY); data.writeInt(originZ); + data.writeByte(sideHit); data.writeByte(rangeX); data.writeByte(rangeY); data.writeByte(rangeZ); data.writeInt(targetID); data.writeInt(targetMeta); } - + public void readData(DataInputStream data) throws IOException { + + this.eventType = data.readByte(); this.originX = data.readInt(); this.originY = data.readInt(); this.originZ = data.readInt(); + this.sideHit = data.readByte(); this.rangeX = data.readByte(); this.rangeY = data.readByte(); this.rangeZ = data.readByte(); this.targetID = data.readInt(); this.targetMeta = data.readInt(); } - + public void execute(INetworkManager manager, Player player) { - // TODO: Stuff here + + System.out.println("World Event Packet received"); + System.out.println("originX: " + originX); + System.out.println("originY: " + originY); + System.out.println("originZ: " + originZ); + System.out.println("sideHit: " + sideHit); + System.out.println("rangeX: " + rangeX); + System.out.println("rangeY: " + rangeY); + System.out.println("rangeZ: " + rangeZ); + System.out.println("targetID: " + targetID); + System.out.println("targetMeta: " + targetMeta); } }