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
This commit is contained in:
parent
f5dcb31ace
commit
69293538b9
7 changed files with 121 additions and 35 deletions
|
@ -9,6 +9,7 @@ import cpw.mods.fml.client.registry.ClientRegistry;
|
||||||
import cpw.mods.fml.client.registry.KeyBindingRegistry;
|
import cpw.mods.fml.client.registry.KeyBindingRegistry;
|
||||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||||
import cpw.mods.fml.common.Side;
|
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.LanguageRegistry;
|
||||||
import cpw.mods.fml.common.registry.TickRegistry;
|
import cpw.mods.fml.common.registry.TickRegistry;
|
||||||
import ee3.client.core.handlers.DrawBlockHighlightHandler;
|
import ee3.client.core.handlers.DrawBlockHighlightHandler;
|
||||||
|
@ -24,6 +25,8 @@ import ee3.common.core.CommonProxy;
|
||||||
import ee3.common.lib.BlockIds;
|
import ee3.common.lib.BlockIds;
|
||||||
import ee3.common.lib.RenderIds;
|
import ee3.common.lib.RenderIds;
|
||||||
import ee3.common.lib.Sprites;
|
import ee3.common.lib.Sprites;
|
||||||
|
import ee3.common.network.PacketTypeHandler;
|
||||||
|
import ee3.common.network.PacketWorldEvent;
|
||||||
import ee3.common.tile.TileCalcinator;
|
import ee3.common.tile.TileCalcinator;
|
||||||
import static ee3.common.lib.CustomItemRarity.*;
|
import static ee3.common.lib.CustomItemRarity.*;
|
||||||
|
|
||||||
|
@ -112,5 +115,11 @@ public class ClientProxy extends CommonProxy {
|
||||||
|
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(TileCalcinator.class, new RenderCalcinator());
|
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)));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,51 +25,73 @@ import ee3.common.tile.TileCalcinator;
|
||||||
*/
|
*/
|
||||||
public class CommonProxy implements IGuiHandler {
|
public class CommonProxy implements IGuiHandler {
|
||||||
|
|
||||||
public void registerKeyBindingHandler() {}
|
public void registerKeyBindingHandler() {
|
||||||
|
|
||||||
public void registerRenderTickHandler() {}
|
|
||||||
|
|
||||||
public void registerDrawBlockHighlightHandler() {}
|
|
||||||
|
|
||||||
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) {
|
public EnumRarity getCustomRarityType(String customRarity) {
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initRenderingAndTextures() {}
|
public void initRenderingAndTextures() {
|
||||||
|
|
||||||
public void initTileEntities() {
|
|
||||||
GameRegistry.registerTileEntity(TileCalcinator.class, Strings.TE_CALCINATOR_NAME);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
@Override
|
||||||
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||||
|
|
||||||
if (ID == GuiIds.PORTABLE_CRAFTING) {
|
if (ID == GuiIds.PORTABLE_CRAFTING) {
|
||||||
return new ContainerPortableCrafting(player.inventory, world, x, y, z);
|
return new ContainerPortableCrafting(player.inventory, world, x, y, z);
|
||||||
}
|
}
|
||||||
else if (ID == GuiIds.CALCINATOR) {
|
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 new ContainerCalcinator(player.inventory, calcinator);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||||
|
|
||||||
if (ID == GuiIds.PORTABLE_CRAFTING) {
|
if (ID == GuiIds.PORTABLE_CRAFTING) {
|
||||||
return new GuiPortableCrafting(player, world, x, y, z);
|
return new GuiPortableCrafting(player, world, x, y, z);
|
||||||
}
|
}
|
||||||
else if (ID == GuiIds.CALCINATOR) {
|
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 new GuiCalcinator(player.inventory, calcinator);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ public class ItemMiniumStone extends ItemEE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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);
|
boolean result = TransmutationHelper.transmuteInWorld(world, entityPlayer, itemStack, x, y, z);
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,6 @@ package ee3.common.item;
|
||||||
import cpw.mods.fml.client.FMLClientHandler;
|
import cpw.mods.fml.client.FMLClientHandler;
|
||||||
import cpw.mods.fml.common.Side;
|
import cpw.mods.fml.common.Side;
|
||||||
import cpw.mods.fml.common.asm.SideOnly;
|
import cpw.mods.fml.common.asm.SideOnly;
|
||||||
import cpw.mods.fml.common.network.PacketDispatcher;
|
|
||||||
import ee3.common.EquivalentExchange3;
|
import ee3.common.EquivalentExchange3;
|
||||||
import ee3.common.core.helper.NBTHelper;
|
import ee3.common.core.helper.NBTHelper;
|
||||||
import ee3.common.core.helper.TransmutationHelper;
|
import ee3.common.core.helper.TransmutationHelper;
|
||||||
|
@ -13,8 +12,10 @@ import ee3.common.lib.GuiIds;
|
||||||
import ee3.common.lib.Reference;
|
import ee3.common.lib.Reference;
|
||||||
import ee3.common.lib.Sounds;
|
import ee3.common.lib.Sounds;
|
||||||
import ee3.common.lib.Strings;
|
import ee3.common.lib.Strings;
|
||||||
|
import ee3.common.lib.WorldEvents;
|
||||||
import ee3.common.network.PacketKeyPressed;
|
import ee3.common.network.PacketKeyPressed;
|
||||||
import ee3.common.network.PacketTypeHandler;
|
import ee3.common.network.PacketTypeHandler;
|
||||||
|
import ee3.common.network.PacketWorldEvent;
|
||||||
import net.minecraft.src.EntityPlayer;
|
import net.minecraft.src.EntityPlayer;
|
||||||
import net.minecraft.src.EnumRarity;
|
import net.minecraft.src.EnumRarity;
|
||||||
import net.minecraft.src.ItemStack;
|
import net.minecraft.src.ItemStack;
|
||||||
|
@ -77,10 +78,12 @@ public class ItemPhilosopherStone extends ItemEE
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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);
|
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) {
|
if (result) {
|
||||||
itemStack.damageItem(1, entityPlayer);
|
itemStack.damageItem(1, entityPlayer);
|
||||||
}
|
}
|
||||||
|
|
8
ee3_common/ee3/common/lib/WorldEvents.java
Normal file
8
ee3_common/ee3/common/lib/WorldEvents.java
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
package ee3.common.lib;
|
||||||
|
|
||||||
|
|
||||||
|
public class WorldEvents {
|
||||||
|
|
||||||
|
public static final byte TRANSMUTATION = 0;
|
||||||
|
|
||||||
|
}
|
|
@ -20,7 +20,7 @@ import net.minecraft.src.Packet250CustomPayload;
|
||||||
public enum PacketTypeHandler {
|
public enum PacketTypeHandler {
|
||||||
KEY(PacketKeyPressed.class),
|
KEY(PacketKeyPressed.class),
|
||||||
TILE(PacketTileUpdate.class),
|
TILE(PacketTileUpdate.class),
|
||||||
WORLD_TRANSMUTATION(PacketWorldTransmutation.class);
|
WORLD_EVENT(PacketWorldEvent.class);
|
||||||
|
|
||||||
private Class<? extends PacketEE> clazz;
|
private Class<? extends PacketEE> clazz;
|
||||||
|
|
||||||
|
|
|
@ -7,59 +7,103 @@ import java.io.IOException;
|
||||||
import net.minecraft.src.INetworkManager;
|
import net.minecraft.src.INetworkManager;
|
||||||
import cpw.mods.fml.common.network.Player;
|
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 int originX, originY, originZ;
|
||||||
|
public byte sideHit;
|
||||||
public byte rangeX, rangeY, rangeZ;
|
public byte rangeX, rangeY, rangeZ;
|
||||||
public int targetID, targetMeta;
|
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) {
|
public void setOrigin(int originX, int originY, int originZ) {
|
||||||
|
|
||||||
this.originX = originX;
|
this.originX = originX;
|
||||||
this.originY = originY;
|
this.originY = originY;
|
||||||
this.originZ = originZ;
|
this.originZ = originZ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSideHit(byte sideHit) {
|
||||||
|
this.sideHit = sideHit;
|
||||||
|
}
|
||||||
|
|
||||||
public void setRange(byte rangeX, byte rangeY, byte rangeZ) {
|
public void setRange(byte rangeX, byte rangeY, byte rangeZ) {
|
||||||
|
|
||||||
this.rangeX = rangeX;
|
this.rangeX = rangeX;
|
||||||
this.rangeY = rangeY;
|
this.rangeY = rangeY;
|
||||||
this.rangeZ = rangeZ;
|
this.rangeZ = rangeZ;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTransmutationTarget(int targetID, int targetMeta) {
|
public void setTransmutationTarget(int targetID, int targetMeta) {
|
||||||
|
|
||||||
this.targetID = targetID;
|
this.targetID = targetID;
|
||||||
this.targetMeta = targetMeta;
|
this.targetMeta = targetMeta;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeData(DataOutputStream data) throws IOException {
|
public void writeData(DataOutputStream data) throws IOException {
|
||||||
|
|
||||||
|
data.writeByte(eventType);
|
||||||
data.writeInt(originX);
|
data.writeInt(originX);
|
||||||
data.writeInt(originY);
|
data.writeInt(originY);
|
||||||
data.writeInt(originZ);
|
data.writeInt(originZ);
|
||||||
|
data.writeByte(sideHit);
|
||||||
data.writeByte(rangeX);
|
data.writeByte(rangeX);
|
||||||
data.writeByte(rangeY);
|
data.writeByte(rangeY);
|
||||||
data.writeByte(rangeZ);
|
data.writeByte(rangeZ);
|
||||||
data.writeInt(targetID);
|
data.writeInt(targetID);
|
||||||
data.writeInt(targetMeta);
|
data.writeInt(targetMeta);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void readData(DataInputStream data) throws IOException {
|
public void readData(DataInputStream data) throws IOException {
|
||||||
|
|
||||||
|
this.eventType = data.readByte();
|
||||||
this.originX = data.readInt();
|
this.originX = data.readInt();
|
||||||
this.originY = data.readInt();
|
this.originY = data.readInt();
|
||||||
this.originZ = data.readInt();
|
this.originZ = data.readInt();
|
||||||
|
this.sideHit = data.readByte();
|
||||||
this.rangeX = data.readByte();
|
this.rangeX = data.readByte();
|
||||||
this.rangeY = data.readByte();
|
this.rangeY = data.readByte();
|
||||||
this.rangeZ = data.readByte();
|
this.rangeZ = data.readByte();
|
||||||
this.targetID = data.readInt();
|
this.targetID = data.readInt();
|
||||||
this.targetMeta = data.readInt();
|
this.targetMeta = data.readInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void execute(INetworkManager manager, Player player) {
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in a new issue