use of powercrystals.minefactoryreloaded.tile.rednet.TileEntityRedNetLogic in project MineFactoryReloaded by powercrystals.
the class ItemRedNetMeter method onItemUse.
@Override
public boolean onItemUse(ItemStack itemstack, EntityPlayer player, World world, int x, int y, int z, int side, float xOffset, float yOffset, float zOffset) {
if (world.isRemote) {
return true;
}
TileEntity te = world.getBlockTileEntity(x, y, z);
if (te instanceof TileEntityRedNetCable) {
int value;
boolean foundNonZero = false;
for (int i = 0; i < 16; i++) {
value = ((TileEntityRedNetCable) te).getNetwork().getPowerLevelOutput(i);
if (value != 0) {
player.sendChatToPlayer(_colorNames[i] + ": " + value);
foundNonZero = true;
}
}
if (!foundNonZero) {
player.sendChatToPlayer("All RedNet subnets are 0");
} else {
player.sendChatToPlayer("All other RedNet subnets are 0");
}
return true;
} else if (te instanceof TileEntityRedNetLogic) {
int value;
boolean foundNonZero = false;
for (int i = 0; i < ((TileEntityRedNetLogic) te).getBufferLength(13); i++) {
value = ((TileEntityRedNetLogic) te).getVariableValue(i);
if (value != 0) {
player.sendChatToPlayer("Variable " + i + ": " + value);
foundNonZero = true;
}
}
if (!foundNonZero) {
player.sendChatToPlayer("All variables are 0");
} else {
player.sendChatToPlayer("All other variables are 0");
}
return true;
} else if (world.getBlockId(x, y, z) == Block.redstoneWire.blockID) {
player.sendChatToPlayer("Dust: " + world.getBlockMetadata(x, y, z));
}
return false;
}
use of powercrystals.minefactoryreloaded.tile.rednet.TileEntityRedNetLogic in project MineFactoryReloaded by powercrystals.
the class BlockRedNetLogic method rotateBlock.
@Override
public boolean rotateBlock(World world, int x, int y, int z, ForgeDirection axis) {
if (world.isRemote) {
return false;
}
TileEntity te = world.getBlockTileEntity(x, y, z);
if (te instanceof TileEntityRedNetLogic) {
if (((TileEntityRedNetLogic) te).crafters > 0) {
return false;
}
}
// % 4
int nextMeta = (world.getBlockMetadata(x, y, z) + 1) & 3;
world.setBlockMetadataWithNotify(x, y, z, nextMeta, 3);
return true;
}
use of powercrystals.minefactoryreloaded.tile.rednet.TileEntityRedNetLogic in project MineFactoryReloaded by powercrystals.
the class ServerPacketHandler method onPacketData.
@SuppressWarnings("rawtypes")
@Override
public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player) {
DataInputStream data = new DataInputStream(new ByteArrayInputStream(packet.data));
int packetType = PacketWrapper.readPacketID(data);
if (// client -> server: autoenchanter GUI buttons
packetType == Packets.EnchanterButton) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class, Integer.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
TileEntity te = ((EntityPlayer) player).worldObj.getBlockTileEntity((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
if (te instanceof TileEntityAutoEnchanter) {
((TileEntityAutoEnchanter) te).setTargetLevel(((TileEntityAutoEnchanter) te).getTargetLevel() + (Integer) packetReadout[3]);
} else if (te instanceof TileEntityBlockSmasher) {
((TileEntityBlockSmasher) te).setFortune(((TileEntityBlockSmasher) te).getFortune() + (Integer) packetReadout[3]);
} else if (te instanceof TileEntityAutoDisenchanter) {
Integer v = (Integer) packetReadout[3];
((TileEntityAutoDisenchanter) te).setRepeatDisenchant(v == 1 ? true : false);
}
} else if (// client -> server: harvester setting
packetType == Packets.HarvesterButton) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class, String.class, Boolean.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
TileEntity te = ((EntityPlayer) player).worldObj.getBlockTileEntity((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
if (te instanceof TileEntityHarvester) {
((TileEntityHarvester) te).getSettings().put((String) packetReadout[3], (Boolean) packetReadout[4]);
}
} else if (// client -> server: toggle chronotyper
packetType == Packets.ChronotyperButton) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
TileEntity te = ((EntityPlayer) player).worldObj.getBlockTileEntity((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
if (te instanceof TileEntityChronotyper) {
((TileEntityChronotyper) te).setMoveOld(!((TileEntityChronotyper) te).getMoveOld());
}
} else if (// client -> server: toggle DSU output side
packetType == Packets.DSUButton) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class, Integer.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
TileEntity te = ((EntityPlayer) player).worldObj.getBlockTileEntity((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
if (te instanceof TileEntityDeepStorageUnit) {
int side = (Integer) packetReadout[3];
((TileEntityDeepStorageUnit) te).setSideIsOutput(side, (!((TileEntityDeepStorageUnit) te).getIsSideOutput(side)));
}
} else if (// client -> server: copy record
packetType == Packets.AutoJukeboxButton) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class, Integer.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
TileEntity te = ((EntityPlayer) player).worldObj.getBlockTileEntity((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
if (te instanceof TileEntityAutoJukebox) {
TileEntityAutoJukebox j = ((TileEntityAutoJukebox) te);
int button = (Integer) packetReadout[3];
if (button == 1)
j.playRecord();
else if (button == 2)
j.stopRecord();
else if (button == 3)
j.copyRecord();
}
} else if (// client -> server: toggle autospawner
packetType == Packets.AutoSpawnerButton) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
TileEntity te = ((EntityPlayer) player).worldObj.getBlockTileEntity((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
if (te instanceof TileEntityAutoSpawner) {
((TileEntityAutoSpawner) te).setSpawnExact(!((TileEntityAutoSpawner) te).getSpawnExact());
}
} else if (// client -> server: request circuit from server
packetType == Packets.LogicRequestCircuitDefinition) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class, Integer.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
TileEntity te = ((EntityPlayer) player).worldObj.getBlockTileEntity((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
if (te instanceof TileEntityRedNetLogic) {
((TileEntityRedNetLogic) te).sendCircuitDefinition((Integer) packetReadout[3]);
}
} else if (// client -> server: set circuit
packetType == Packets.LogicSetCircuit) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class, Integer.class, String.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
TileEntity te = ((EntityPlayer) player).worldObj.getBlockTileEntity((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
if (te instanceof TileEntityRedNetLogic) {
((TileEntityRedNetLogic) te).initCircuit((Integer) packetReadout[3], (String) packetReadout[4]);
((TileEntityRedNetLogic) te).sendCircuitDefinition((Integer) packetReadout[3]);
}
} else if (// client -> server: set pin
packetType == Packets.LogicSetPin) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class, Integer.class, Integer.class, Integer.class, Integer.class, Integer.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
TileEntity te = ((EntityPlayer) player).worldObj.getBlockTileEntity((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
if (te instanceof TileEntityRedNetLogic) {
if ((Integer) packetReadout[3] == 0) {
((TileEntityRedNetLogic) te).setInputPinMapping((Integer) packetReadout[4], (Integer) packetReadout[5], (Integer) packetReadout[6], (Integer) packetReadout[7]);
} else if ((Integer) packetReadout[3] == 1) {
((TileEntityRedNetLogic) te).setOutputPinMapping((Integer) packetReadout[4], (Integer) packetReadout[5], (Integer) packetReadout[6], (Integer) packetReadout[7]);
}
((TileEntityRedNetLogic) te).sendCircuitDefinition((Integer) packetReadout[4]);
}
} else if (// client -> server: set circuit
packetType == Packets.LogicReinitialize) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
TileEntity te = ((EntityPlayer) player).worldObj.getBlockTileEntity((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
if (te instanceof TileEntityRedNetLogic) {
((TileEntityRedNetLogic) te).reinitialize((EntityPlayer) player);
}
} else if (// client -> server: toggle 'levels'/'reject unmapped' mode
packetType == Packets.RouterButton) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
TileEntity te = ((EntityPlayer) player).worldObj.getBlockTileEntity((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
if (te instanceof TileEntityEnchantmentRouter) {
((TileEntityEnchantmentRouter) te).setMatchLevels(!((TileEntityEnchantmentRouter) te).getMatchLevels());
} else if (te instanceof TileEntityItemRouter) {
((TileEntityItemRouter) te).setRejectUnmapped(!((TileEntityItemRouter) te).getRejectUnmapped());
}
} else if (// client -> server: client clicked on a fake slot
packetType == Packets.FakeSlotChange) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class, Integer.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
ItemStack playerStack = ((EntityPlayer) player).inventory.getItemStack();
Integer slotNumber = (Integer) packetReadout[3];
TileEntity te = ((EntityPlayer) player).worldObj.getBlockTileEntity((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
if (te instanceof IInventory) {
if (playerStack == null) {
((IInventory) te).setInventorySlotContents(slotNumber, null);
} else {
playerStack = playerStack.copy();
playerStack.stackSize = 1;
((IInventory) te).setInventorySlotContents(slotNumber, playerStack);
}
}
} else if (packetType == Packets.RocketLaunchWithLock) {
Class[] decodeAs = { Integer.class, Integer.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
World world = ((EntityPlayer) player).worldObj;
Entity owner = world.getEntityByID((Integer) packetReadout[0]);
Entity target = null;
if (((Integer) packetReadout[1]) != Integer.MIN_VALUE) {
target = world.getEntityByID((Integer) packetReadout[1]);
}
if (owner instanceof EntityLiving) {
EntityRocket r = new EntityRocket(world, ((EntityLiving) owner), target);
world.spawnEntityInWorld(r);
}
}
}
use of powercrystals.minefactoryreloaded.tile.rednet.TileEntityRedNetLogic in project MineFactoryReloaded by powercrystals.
the class ClientPacketHandler method onPacketData.
@SuppressWarnings("rawtypes")
@Override
public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player) {
DataInputStream data = new DataInputStream(new ByteArrayInputStream(packet.data));
int packetType = PacketWrapper.readPacketID(data);
if (// server -> client; server propagating machine rotation; args X Y Z rotation isActive
packetType == Packets.TileDescription) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class, Integer.class, Boolean.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
TileEntity te = ((EntityPlayer) player).worldObj.getBlockTileEntity((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
if (te instanceof TileEntityFactory) {
TileEntityFactory tef = (TileEntityFactory) te;
tef.rotateDirectlyTo((Integer) packetReadout[3]);
tef.setIsActive((Boolean) packetReadout[4]);
}
} else if (// server -> client; server propagating conveyor color, activity state
packetType == Packets.ConveyorDescription) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class, Integer.class, Boolean.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
TileEntity te = ((EntityPlayer) player).worldObj.getBlockTileEntity((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
if (te instanceof TileEntityConveyor) {
TileEntityConveyor tec = (TileEntityConveyor) te;
tec.setDyeColor((Integer) packetReadout[3]);
tec.setConveyorActive((Boolean) packetReadout[4]);
}
} else if (// server -> client; server playing a record
packetType == Packets.AutoJukeboxPlay) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class, Integer.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
TileEntity te = ((EntityPlayer) player).worldObj.getBlockTileEntity((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
if (te instanceof TileEntityAutoJukebox) {
Minecraft.getMinecraft().ingameGUI.setRecordPlayingMessage(((ItemRecord) Item.itemsList[(Integer) packetReadout[3]]).recordName);
}
} else if (// server -> client; road block light changed
packetType == Packets.RoadBlockUpdate) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class, Integer.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
((EntityPlayer) player).worldObj.setBlock((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2], MineFactoryReloadedCore.factoryRoadBlock.blockID, (Integer) packetReadout[3], 6);
((EntityPlayer) player).worldObj.markBlockForRenderUpdate((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
} else if (// server -> client; cable side colors
packetType == Packets.CableDescription) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class, Integer.class, Integer.class, Integer.class, Integer.class, Integer.class, Integer.class, Byte.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
TileEntity te = ((EntityPlayer) player).worldObj.getBlockTileEntity((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
if (te instanceof TileEntityRedNetCable) {
TileEntityRedNetCable tec = (TileEntityRedNetCable) te;
tec.setSideColor(ForgeDirection.DOWN, (Integer) packetReadout[3]);
tec.setSideColor(ForgeDirection.UP, (Integer) packetReadout[4]);
tec.setSideColor(ForgeDirection.NORTH, (Integer) packetReadout[5]);
tec.setSideColor(ForgeDirection.SOUTH, (Integer) packetReadout[6]);
tec.setSideColor(ForgeDirection.WEST, (Integer) packetReadout[7]);
tec.setSideColor(ForgeDirection.EAST, (Integer) packetReadout[8]);
tec.setMode((Byte) packetReadout[9]);
}
} else if (// server -> client: logic circuit (class and pins)
packetType == Packets.LogicCircuitDefinition) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
TileEntity te = ((EntityPlayer) player).worldObj.getBlockTileEntity((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
if (te instanceof TileEntityRedNetLogic) {
((TileEntityRedNetLogic) te).setCircuitFromPacket(data);
}
} else if (packetType == Packets.HistorianValueChanged) {
Class[] decodeAs = { Integer.class, Integer.class, Integer.class, Integer.class };
Object[] packetReadout = PacketWrapper.readPacketData(data, decodeAs);
TileEntity te = ((EntityPlayer) player).worldObj.getBlockTileEntity((Integer) packetReadout[0], (Integer) packetReadout[1], (Integer) packetReadout[2]);
if (te instanceof TileEntityRedNetHistorian) {
((TileEntityRedNetHistorian) te).setClientValue((Integer) packetReadout[3]);
}
}
}
use of powercrystals.minefactoryreloaded.tile.rednet.TileEntityRedNetLogic in project MineFactoryReloaded by powercrystals.
the class ItemRedNetMemoryCard method onItemUse.
@Override
public boolean onItemUse(ItemStack itemstack, EntityPlayer player, World world, int x, int y, int z, int side, float xOffset, float yOffset, float zOffset) {
if (world.isRemote) {
return true;
}
TileEntity te = world.getBlockTileEntity(x, y, z);
if (te instanceof TileEntityRedNetLogic) {
if (itemstack.getTagCompound() == null) {
NBTTagCompound tag = new NBTTagCompound();
te.writeToNBT(tag);
itemstack.setTagCompound(tag);
player.sendChatToPlayer("PRC program uploaded to memory card from PRC");
} else {
int circuitCount = itemstack.getTagCompound().getTagList("circuits").tagCount();
if (circuitCount > ((TileEntityRedNetLogic) te).getCircuitCount()) {
player.sendChatToPlayer("PRC contains insufficient circuits to hold this program");
} else {
((TileEntityRedNetLogic) te).readCircuitsOnly(itemstack.getTagCompound());
player.sendChatToPlayer("PRC program downloaded from memory card to PRC");
}
}
return true;
}
return false;
}
Aggregations