aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/github/technus/tectech/loader/MainLoader.java3
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/network/PipeActivityMessage.java134
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/network/PipeActivityPacketDispatcher.java21
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Data.java33
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_EM.java33
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Energy.java33
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/IActivePipe.java8
7 files changed, 246 insertions, 19 deletions
diff --git a/src/main/java/com/github/technus/tectech/loader/MainLoader.java b/src/main/java/com/github/technus/tectech/loader/MainLoader.java
index de53fb225f..3420298cfa 100644
--- a/src/main/java/com/github/technus/tectech/loader/MainLoader.java
+++ b/src/main/java/com/github/technus/tectech/loader/MainLoader.java
@@ -17,6 +17,7 @@ import com.github.technus.tectech.loader.thing.ThingsLoader;
import com.github.technus.tectech.thing.casing.TT_Container_Casings;
import com.github.technus.tectech.thing.metaTileEntity.Textures;
import com.github.technus.tectech.thing.metaTileEntity.multi.GT_MetaTileEntity_EM_collider;
+import com.github.technus.tectech.thing.metaTileEntity.multi.base.network.PipeActivityPacketDispatcher;
import com.github.technus.tectech.thing.metaTileEntity.multi.base.network.RotationPacketDispatcher;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.ProgressManager;
@@ -46,7 +47,6 @@ import static com.github.technus.tectech.compatibility.thaumcraft.elementalMatte
import static com.github.technus.tectech.compatibility.thaumcraft.thing.metaTileEntity.multi.EssentiaCompat.essentiaContainerCompat;
import static com.github.technus.tectech.loader.TecTechConfig.DEBUG_MODE;
import static com.github.technus.tectech.loader.gui.CreativeTabTecTech.creativeTabTecTech;
-import static gregtech.api.enums.Dyes.*;
import static gregtech.api.enums.GT_Values.W;
public final class MainLoader {
@@ -107,6 +107,7 @@ public final class MainLoader {
progressBarLoad.step("Register Packet Dispatcher");
new RotationPacketDispatcher();
+ new PipeActivityPacketDispatcher();
LOGGER.info("Packet Dispatcher registered");
progressBarLoad.step("Register GUI Handler");
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/network/PipeActivityMessage.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/network/PipeActivityMessage.java
new file mode 100644
index 0000000000..35ca167d9d
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/network/PipeActivityMessage.java
@@ -0,0 +1,134 @@
+package com.github.technus.tectech.thing.metaTileEntity.multi.base.network;
+
+import com.github.technus.tectech.thing.metaTileEntity.pipe.IActivePipe;
+import cpw.mods.fml.common.network.ByteBufUtils;
+import cpw.mods.fml.common.network.simpleimpl.IMessage;
+import cpw.mods.fml.common.network.simpleimpl.MessageContext;
+import eu.usrv.yamcore.network.client.AbstractClientMessageHandler;
+import eu.usrv.yamcore.network.server.AbstractServerMessageHandler;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import io.netty.buffer.ByteBuf;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+import net.minecraftforge.common.DimensionManager;
+
+public class PipeActivityMessage implements IMessage {
+ int mPosX;
+ int mPosY;
+ int mPosZ;
+ int mPosD;
+ int mActive;
+
+ public PipeActivityMessage() {
+ }
+
+ private PipeActivityMessage(IActivePipe metaTile) {
+ IGregTechTileEntity base=metaTile.getBaseMetaTileEntity();
+ mPosX=base.getXCoord();
+ mPosY=base.getYCoord();
+ mPosZ=base.getZCoord();
+ mPosD=base.getWorld().provider.dimensionId;
+ mActive=metaTile.getActive()?1:0;
+ }
+
+ private PipeActivityMessage(World world, int x, int y, int z, boolean active) {
+ mPosX=x;
+ mPosY=y;
+ mPosZ=z;
+ mPosD=world.provider.dimensionId;
+ mActive=active?1:0;
+ }
+
+ @Override
+ public void fromBytes(ByteBuf pBuffer) {
+ NBTTagCompound tTag = ByteBufUtils.readTag(pBuffer);
+ mPosX = tTag.getInteger("posx");
+ mPosY = tTag.getInteger("posy");
+ mPosZ = tTag.getInteger("posz");
+ mPosD = tTag.getInteger("posd");
+ mActive = tTag.getInteger("active");
+ }
+
+ @Override
+ public void toBytes(ByteBuf pBuffer) {
+ NBTTagCompound tFXTag = new NBTTagCompound();
+ tFXTag.setInteger("posx", mPosX);
+ tFXTag.setInteger("posy", mPosY);
+ tFXTag.setInteger("posz", mPosZ);
+ tFXTag.setInteger("posd", mPosD);
+ tFXTag.setInteger("active", mActive);
+
+ ByteBufUtils.writeTag(pBuffer, tFXTag);
+ }
+
+ public static class PipeActivityQuery extends PipeActivityMessage {
+ public PipeActivityQuery() {
+ }
+
+ public PipeActivityQuery(IActivePipe metaTile) {
+ super(metaTile);
+ }
+
+ public PipeActivityQuery(World world, int x,int y,int z, boolean active) {
+ super(world,x,y,z,active);
+ }
+ }
+
+ public static class PipeActivityData extends PipeActivityMessage {
+ public PipeActivityData() {
+ }
+
+ private PipeActivityData(PipeActivityQuery query){
+ mPosX=query.mPosX;
+ mPosY=query.mPosY;
+ mPosZ=query.mPosZ;
+ mPosD=query.mPosD;
+ mActive=query.mActive;
+ }
+
+ public PipeActivityData(IActivePipe metaTile) {
+ super(metaTile);
+ }
+
+ public PipeActivityData(World world, int x,int y,int z, boolean active) {
+ super(world,x,y,z,active);
+ }
+ }
+
+ public static class ClientHandler extends AbstractClientMessageHandler<PipeActivityData> {
+ @Override
+ public IMessage handleClientMessage(EntityPlayer pPlayer, PipeActivityData pMessage, MessageContext pCtx) {
+ if(pPlayer.worldObj.provider.dimensionId==pMessage.mPosD){
+ TileEntity te=pPlayer.worldObj.getTileEntity(pMessage.mPosX,pMessage.mPosY,pMessage.mPosZ);
+ if(te instanceof IGregTechTileEntity){
+ IMetaTileEntity meta = ((IGregTechTileEntity) te).getMetaTileEntity();
+ if(meta instanceof IActivePipe){
+ ((IActivePipe) meta).setActive((byte)pMessage.mActive==1);
+ }
+ }
+ }
+ return null;
+ }
+ }
+
+ public static class ServerHandler extends AbstractServerMessageHandler<PipeActivityQuery> {
+ @Override
+ public IMessage handleServerMessage(EntityPlayer pPlayer, PipeActivityQuery pMessage, MessageContext pCtx) {
+ World world= DimensionManager.getWorld(pMessage.mPosD);
+ if(world!=null) {
+ TileEntity te = world.getTileEntity(pMessage.mPosX, pMessage.mPosY, pMessage.mPosZ);
+ if (te instanceof IGregTechTileEntity) {
+ IMetaTileEntity meta = ((IGregTechTileEntity) te).getMetaTileEntity();
+ if (meta instanceof IActivePipe) {
+ pMessage.mActive=((IActivePipe) meta).getActive()?1:0;
+ return new PipeActivityData(pMessage);
+ }
+ }
+ }
+ return null;
+ }
+ }
+} \ No newline at end of file
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/network/PipeActivityPacketDispatcher.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/network/PipeActivityPacketDispatcher.java
new file mode 100644
index 0000000000..0cc5ab61ca
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/network/PipeActivityPacketDispatcher.java
@@ -0,0 +1,21 @@
+package com.github.technus.tectech.thing.metaTileEntity.multi.base.network;
+
+import eu.usrv.yamcore.network.PacketDispatcher;
+
+import static com.github.technus.tectech.Reference.MODID;
+
+public class PipeActivityPacketDispatcher extends PacketDispatcher {
+ public static PipeActivityPacketDispatcher INSTANCE;
+
+ public PipeActivityPacketDispatcher() {
+ super(MODID);
+ INSTANCE = this;
+ registerPackets();
+ }
+
+ @Override
+ public void registerPackets() {
+ registerMessage(PipeActivityMessage.ServerHandler.class, PipeActivityMessage.PipeActivityQuery.class);
+ registerMessage(PipeActivityMessage.ClientHandler.class, PipeActivityMessage.PipeActivityData.class);
+ }
+}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Data.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Data.java
index 826f75696a..6a7bbae256 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Data.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Data.java
@@ -2,6 +2,8 @@ package com.github.technus.tectech.thing.metaTileEntity.pipe;
import com.github.technus.tectech.CommonValues;
import com.github.technus.tectech.TecTech;
+import com.github.technus.tectech.thing.metaTileEntity.multi.base.network.PipeActivityMessage;
+import com.github.technus.tectech.thing.metaTileEntity.multi.base.network.PipeActivityPacketDispatcher;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import gregtech.GT_Mod;
@@ -29,12 +31,12 @@ import static gregtech.api.enums.Dyes.MACHINE_METAL;
/**
* Created by Tec on 26.02.2017.
*/
-public class GT_MetaTileEntity_Pipe_Data extends MetaPipeEntity implements IConnectsToDataPipe {
+public class GT_MetaTileEntity_Pipe_Data extends MetaPipeEntity implements IConnectsToDataPipe,IActivePipe {
private static Textures.BlockIcons.CustomIcon EMpipe;
private static Textures.BlockIcons.CustomIcon EMbar,EMbarActive;
public byte connectionCount = 0;
- private boolean activity;
+ private boolean activity,active;
public GT_MetaTileEntity_Pipe_Data(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional, 0);
@@ -60,7 +62,7 @@ public class GT_MetaTileEntity_Pipe_Data extends MetaPipeEntity implements IConn
@Override
public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aConnections, byte aColorIndex, boolean aConnected, boolean aRedstone) {
- return new ITexture[]{new GT_RenderedTexture(EMpipe), new GT_RenderedTexture(aBaseMetaTileEntity.isActive()?EMbarActive:EMbar, Dyes.getModulation(aColorIndex, MACHINE_METAL.getRGBA()))};
+ return new ITexture[]{new GT_RenderedTexture(EMpipe), new GT_RenderedTexture(getActive()?EMbarActive:EMbar, Dyes.getModulation(aColorIndex, MACHINE_METAL.getRGBA()))};
}
@Override
@@ -113,12 +115,12 @@ public class GT_MetaTileEntity_Pipe_Data extends MetaPipeEntity implements IConn
if ((aTick & 31) == 31) {
if(activity){
if(TecTech.RANDOM.nextInt(15)==0) {
- aBaseMetaTileEntity.setActive(true);
+ setActive(true);
}
activity=false;
- }else if(aBaseMetaTileEntity.isActive()){
+ }else if(getActive()){
if(TecTech.RANDOM.nextInt(15)==0) {
- aBaseMetaTileEntity.setActive(false);
+ setActive(false);
}
}
mConnections = 0;
@@ -255,4 +257,23 @@ public class GT_MetaTileEntity_Pipe_Data extends MetaPipeEntity implements IConn
public void markUsed() {
this.activity = true;
}
+
+ @Override
+ public void setActive(boolean active) {
+ this.active=active;
+ IGregTechTileEntity base=getBaseMetaTileEntity();
+ if(base.isServerSide()) {
+ PipeActivityPacketDispatcher.INSTANCE.sendToAllAround(new PipeActivityMessage.PipeActivityData(this),
+ base.getWorld().provider.dimensionId,
+ base.getXCoord(),
+ base.getYCoord(),
+ base.getZCoord(),
+ 256);
+ }
+ }
+
+ @Override
+ public boolean getActive() {
+ return active;
+ }
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_EM.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_EM.java
index ef17d9b688..c0c3396607 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_EM.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_EM.java
@@ -2,6 +2,8 @@ package com.github.technus.tectech.thing.metaTileEntity.pipe;
import com.github.technus.tectech.CommonValues;
import com.github.technus.tectech.TecTech;
+import com.github.technus.tectech.thing.metaTileEntity.multi.base.network.PipeActivityMessage;
+import com.github.technus.tectech.thing.metaTileEntity.multi.base.network.PipeActivityPacketDispatcher;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import gregtech.GT_Mod;
@@ -30,12 +32,12 @@ import static gregtech.api.enums.Dyes.MACHINE_METAL;
/**
* Created by Tec on 26.02.2017.
*/
-public class GT_MetaTileEntity_Pipe_EM extends MetaPipeEntity implements IConnectsToElementalPipe {
+public class GT_MetaTileEntity_Pipe_EM extends MetaPipeEntity implements IConnectsToElementalPipe,IActivePipe {
private static Textures.BlockIcons.CustomIcon EMpipe;
static Textures.BlockIcons.CustomIcon EMcandy,EMCandyActive;
public byte connectionCount = 0;
- private boolean activity;
+ private boolean activity,active;
public GT_MetaTileEntity_Pipe_EM(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional, 0);
@@ -61,7 +63,7 @@ public class GT_MetaTileEntity_Pipe_EM extends MetaPipeEntity implements IConnec
@Override
public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aConnections, byte aColorIndex, boolean aConnected, boolean aRedstone) {
- return new ITexture[]{new GT_RenderedTexture(EMpipe), new GT_RenderedTexture(aBaseMetaTileEntity.isActive()?EMCandyActive:EMcandy, Dyes.getModulation(aColorIndex, MACHINE_METAL.getRGBA()))};
+ return new ITexture[]{new GT_RenderedTexture(EMpipe), new GT_RenderedTexture(getActive()?EMCandyActive:EMcandy, Dyes.getModulation(aColorIndex, MACHINE_METAL.getRGBA()))};
}
@Override
@@ -114,12 +116,12 @@ public class GT_MetaTileEntity_Pipe_EM extends MetaPipeEntity implements IConnec
if ((aTick & 31) == 31) {
if(activity){
if(TecTech.RANDOM.nextInt(7)==0) {
- aBaseMetaTileEntity.setActive(true);
+ setActive(true);
}
activity=false;
- }else if(aBaseMetaTileEntity.isActive()){
+ }else if(getActive()){
if(TecTech.RANDOM.nextInt(7)==0) {
- aBaseMetaTileEntity.setActive(false);
+ setActive(false);
}
}
mConnections = 0;
@@ -220,4 +222,23 @@ public class GT_MetaTileEntity_Pipe_EM extends MetaPipeEntity implements IConnec
public void markUsed() {
this.activity = true;
}
+
+ @Override
+ public void setActive(boolean active) {
+ this.active=active;
+ IGregTechTileEntity base=getBaseMetaTileEntity();
+ if(base.isServerSide()) {
+ PipeActivityPacketDispatcher.INSTANCE.sendToAllAround(new PipeActivityMessage.PipeActivityData(this),
+ base.getWorld().provider.dimensionId,
+ base.getXCoord(),
+ base.getYCoord(),
+ base.getZCoord(),
+ 256);
+ }
+ }
+
+ @Override
+ public boolean getActive() {
+ return active;
+ }
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Energy.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Energy.java
index 3d49077c3a..fdbca746ef 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Energy.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Energy.java
@@ -2,6 +2,8 @@ package com.github.technus.tectech.thing.metaTileEntity.pipe;
import com.github.technus.tectech.CommonValues;
import com.github.technus.tectech.TecTech;
+import com.github.technus.tectech.thing.metaTileEntity.multi.base.network.PipeActivityMessage;
+import com.github.technus.tectech.thing.metaTileEntity.multi.base.network.PipeActivityPacketDispatcher;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import gregtech.GT_Mod;
@@ -29,11 +31,11 @@ import static com.github.technus.tectech.thing.metaTileEntity.pipe.GT_MetaTileEn
import static com.github.technus.tectech.thing.metaTileEntity.pipe.GT_MetaTileEntity_Pipe_EM.EMcandy;
import static gregtech.api.enums.Dyes.MACHINE_METAL;
-public class GT_MetaTileEntity_Pipe_Energy extends MetaPipeEntity implements IConnectsToEnergyTunnel {
+public class GT_MetaTileEntity_Pipe_Energy extends MetaPipeEntity implements IConnectsToEnergyTunnel,IActivePipe {
private static Textures.BlockIcons.CustomIcon EMpipe;
public byte connectionCount = 0;
- private boolean activity;
+ private boolean activity,active;
public GT_MetaTileEntity_Pipe_Energy(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional, 0);
@@ -57,7 +59,7 @@ public class GT_MetaTileEntity_Pipe_Energy extends MetaPipeEntity implements ICo
@Override
public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aConnections, byte aColorIndex, boolean aConnected, boolean aRedstone) {
- return new ITexture[]{new GT_RenderedTexture(EMpipe), new GT_RenderedTexture(aBaseMetaTileEntity.isActive()?EMCandyActive:EMcandy, Dyes.getModulation(aColorIndex, MACHINE_METAL.getRGBA()))};
+ return new ITexture[]{new GT_RenderedTexture(EMpipe), new GT_RenderedTexture(getActive()?EMCandyActive:EMcandy, Dyes.getModulation(aColorIndex, MACHINE_METAL.getRGBA()))};
}
@Override
@@ -110,12 +112,12 @@ public class GT_MetaTileEntity_Pipe_Energy extends MetaPipeEntity implements ICo
if ((aTick & 31) == 31) {
if(activity){
if(TecTech.RANDOM.nextInt(31)==0) {
- aBaseMetaTileEntity.setActive(true);
+ setActive(true);
}
activity=false;
- }else if(aBaseMetaTileEntity.isActive()){
+ }else if(getActive()){
if(TecTech.RANDOM.nextInt(31)==0) {
- aBaseMetaTileEntity.setActive(false);
+ setActive(false);
}
}
mConnections = 0;
@@ -162,6 +164,25 @@ public class GT_MetaTileEntity_Pipe_Energy extends MetaPipeEntity implements ICo
}
@Override
+ public void setActive(boolean state){
+ this.active=state;
+ IGregTechTileEntity base=getBaseMetaTileEntity();
+ if(base.isServerSide()) {
+ PipeActivityPacketDispatcher.INSTANCE.sendToAllAround(new PipeActivityMessage.PipeActivityData(this),
+ base.getWorld().provider.dimensionId,
+ base.getXCoord(),
+ base.getYCoord(),
+ base.getZCoord(),
+ 256);
+ }
+ }
+
+ @Override
+ public boolean getActive() {
+ return active;
+ }
+
+ @Override
public boolean canConnect(byte side) {
return true;
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/IActivePipe.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/IActivePipe.java
new file mode 100644
index 0000000000..d618826de7
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/IActivePipe.java
@@ -0,0 +1,8 @@
+package com.github.technus.tectech.thing.metaTileEntity.pipe;
+
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+
+public interface IActivePipe extends IMetaTileEntity {
+ void setActive(boolean active);
+ boolean getActive();
+}