fix detectors.. NEXT!
This commit is contained in:
		@@ -34,12 +34,14 @@ public class BlockDetector extends BlockBase implements ITileEntityProvider {
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int side) {
 | 
			
		||||
		return ((TileDetector) world.getTileEntity(x, y, z)).providesPower() ? 15 : 0;
 | 
			
		||||
		return isProvidingStrongPower(world, x, y, z, side);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public int isProvidingStrongPower(IBlockAccess world, int x, int y, int z, int side) {
 | 
			
		||||
		return ((TileDetector) world.getTileEntity(x, y, z)).providesPower() ? 15 : 0;
 | 
			
		||||
		TileDetector detector = (TileDetector) world.getTileEntity(x, y, z);
 | 
			
		||||
 | 
			
		||||
		return detector.providesPower() ? 15 : 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
 
 | 
			
		||||
@@ -6,8 +6,7 @@ import storagecraft.StorageCraft;
 | 
			
		||||
import storagecraft.container.ContainerDetector;
 | 
			
		||||
import storagecraft.gui.sidebutton.SideButtonCompare;
 | 
			
		||||
import storagecraft.gui.sidebutton.SideButtonDetectorMode;
 | 
			
		||||
import storagecraft.gui.sidebutton.SideButtonRedstoneMode;
 | 
			
		||||
import storagecraft.network.MessageDetectorModeUpdate;
 | 
			
		||||
import storagecraft.network.MessageDetectorAmountUpdate;
 | 
			
		||||
import storagecraft.tile.TileDetector;
 | 
			
		||||
import storagecraft.util.InventoryUtils;
 | 
			
		||||
 | 
			
		||||
@@ -24,8 +23,6 @@ public class GuiDetector extends GuiBase {
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void init(int x, int y) {
 | 
			
		||||
		addSideButton(new SideButtonRedstoneMode(detector));
 | 
			
		||||
 | 
			
		||||
		addSideButton(new SideButtonCompare(detector, InventoryUtils.COMPARE_DAMAGE));
 | 
			
		||||
		addSideButton(new SideButtonCompare(detector, InventoryUtils.COMPARE_NBT));
 | 
			
		||||
 | 
			
		||||
@@ -65,7 +62,7 @@ public class GuiDetector extends GuiBase {
 | 
			
		||||
			Integer result = Ints.tryParse(amountField.getText());
 | 
			
		||||
 | 
			
		||||
			if (result != null) {
 | 
			
		||||
				StorageCraft.NETWORK.sendToServer(new MessageDetectorModeUpdate(detector, result));
 | 
			
		||||
				StorageCraft.NETWORK.sendToServer(new MessageDetectorAmountUpdate(detector, result));
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			super.keyTyped(character, keyCode);
 | 
			
		||||
 
 | 
			
		||||
@@ -30,6 +30,6 @@ public class SideButtonDetectorMode extends SideButton {
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void actionPerformed() {
 | 
			
		||||
		StorageCraft.NETWORK.sendToServer(new MessageDetectorModeUpdate(detector, detector.getAmount()));
 | 
			
		||||
		StorageCraft.NETWORK.sendToServer(new MessageDetectorModeUpdate(detector));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,55 @@
 | 
			
		||||
package storagecraft.network;
 | 
			
		||||
 | 
			
		||||
import cpw.mods.fml.common.network.simpleimpl.IMessage;
 | 
			
		||||
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
 | 
			
		||||
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
 | 
			
		||||
import io.netty.buffer.ByteBuf;
 | 
			
		||||
import net.minecraft.entity.player.EntityPlayerMP;
 | 
			
		||||
import net.minecraft.tileentity.TileEntity;
 | 
			
		||||
import storagecraft.tile.TileDetector;
 | 
			
		||||
 | 
			
		||||
public class MessageDetectorAmountUpdate implements IMessage, IMessageHandler<MessageDetectorAmountUpdate, IMessage> {
 | 
			
		||||
	private int x;
 | 
			
		||||
	private int y;
 | 
			
		||||
	private int z;
 | 
			
		||||
	private int amount;
 | 
			
		||||
 | 
			
		||||
	public MessageDetectorAmountUpdate() {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public MessageDetectorAmountUpdate(TileDetector detector, int amount) {
 | 
			
		||||
		this.x = detector.xCoord;
 | 
			
		||||
		this.y = detector.yCoord;
 | 
			
		||||
		this.z = detector.zCoord;
 | 
			
		||||
		this.amount = amount;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void fromBytes(ByteBuf buf) {
 | 
			
		||||
		x = buf.readInt();
 | 
			
		||||
		y = buf.readInt();
 | 
			
		||||
		z = buf.readInt();
 | 
			
		||||
		amount = buf.readInt();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void toBytes(ByteBuf buf) {
 | 
			
		||||
		buf.writeInt(x);
 | 
			
		||||
		buf.writeInt(y);
 | 
			
		||||
		buf.writeInt(z);
 | 
			
		||||
		buf.writeInt(amount);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public IMessage onMessage(MessageDetectorAmountUpdate message, MessageContext context) {
 | 
			
		||||
		EntityPlayerMP player = context.getServerHandler().playerEntity;
 | 
			
		||||
 | 
			
		||||
		TileEntity tile = player.worldObj.getTileEntity(message.x, message.y, message.z);
 | 
			
		||||
 | 
			
		||||
		if (tile instanceof TileDetector && message.amount >= 0) {
 | 
			
		||||
			((TileDetector) tile).setAmount(message.amount);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return null;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -12,16 +12,14 @@ public class MessageDetectorModeUpdate implements IMessage, IMessageHandler<Mess
 | 
			
		||||
	private int x;
 | 
			
		||||
	private int y;
 | 
			
		||||
	private int z;
 | 
			
		||||
	private int amount;
 | 
			
		||||
 | 
			
		||||
	public MessageDetectorModeUpdate() {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public MessageDetectorModeUpdate(TileDetector detector, int amount) {
 | 
			
		||||
	public MessageDetectorModeUpdate(TileDetector detector) {
 | 
			
		||||
		this.x = detector.xCoord;
 | 
			
		||||
		this.y = detector.yCoord;
 | 
			
		||||
		this.z = detector.zCoord;
 | 
			
		||||
		this.amount = amount;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
@@ -29,7 +27,6 @@ public class MessageDetectorModeUpdate implements IMessage, IMessageHandler<Mess
 | 
			
		||||
		x = buf.readInt();
 | 
			
		||||
		y = buf.readInt();
 | 
			
		||||
		z = buf.readInt();
 | 
			
		||||
		amount = buf.readInt();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
@@ -37,7 +34,6 @@ public class MessageDetectorModeUpdate implements IMessage, IMessageHandler<Mess
 | 
			
		||||
		buf.writeInt(x);
 | 
			
		||||
		buf.writeInt(y);
 | 
			
		||||
		buf.writeInt(z);
 | 
			
		||||
		buf.writeInt(amount);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
@@ -60,10 +56,6 @@ public class MessageDetectorModeUpdate implements IMessage, IMessageHandler<Mess
 | 
			
		||||
					detector.setMode(TileDetector.MODE_UNDER);
 | 
			
		||||
					break;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if (message.amount >= 0) {
 | 
			
		||||
				detector.setAmount(message.amount);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return null;
 | 
			
		||||
 
 | 
			
		||||
@@ -12,6 +12,7 @@ import storagecraft.StorageCraftItems;
 | 
			
		||||
import storagecraft.gui.GuiHandler;
 | 
			
		||||
import storagecraft.item.ItemBlockCable;
 | 
			
		||||
import storagecraft.network.MessageCompareUpdate;
 | 
			
		||||
import storagecraft.network.MessageDetectorAmountUpdate;
 | 
			
		||||
import storagecraft.network.MessageDetectorModeUpdate;
 | 
			
		||||
import storagecraft.network.MessageImporterModeUpdate;
 | 
			
		||||
import storagecraft.network.MessageRedstoneModeUpdate;
 | 
			
		||||
@@ -36,6 +37,7 @@ public class CommonProxy {
 | 
			
		||||
		StorageCraft.NETWORK.registerMessage(MessageCompareUpdate.class, MessageCompareUpdate.class, 4, Side.SERVER);
 | 
			
		||||
		StorageCraft.NETWORK.registerMessage(MessageImporterModeUpdate.class, MessageImporterModeUpdate.class, 5, Side.SERVER);
 | 
			
		||||
		StorageCraft.NETWORK.registerMessage(MessageDetectorModeUpdate.class, MessageDetectorModeUpdate.class, 6, Side.SERVER);
 | 
			
		||||
		StorageCraft.NETWORK.registerMessage(MessageDetectorAmountUpdate.class, MessageDetectorAmountUpdate.class, 7, Side.SERVER);
 | 
			
		||||
 | 
			
		||||
		NetworkRegistry.INSTANCE.registerGuiHandler(StorageCraft.INSTANCE, new GuiHandler());
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,7 @@ import net.minecraft.inventory.IInventory;
 | 
			
		||||
import net.minecraft.inventory.ISidedInventory;
 | 
			
		||||
import net.minecraft.item.ItemStack;
 | 
			
		||||
import net.minecraft.nbt.NBTTagCompound;
 | 
			
		||||
import storagecraft.StorageCraftBlocks;
 | 
			
		||||
import storagecraft.inventory.InventorySimple;
 | 
			
		||||
import storagecraft.storage.StorageItem;
 | 
			
		||||
import storagecraft.util.InventoryUtils;
 | 
			
		||||
@@ -27,6 +28,10 @@ public class TileDetector extends TileMachine implements IInventory, ISidedInven
 | 
			
		||||
 | 
			
		||||
	private boolean providesPower = false;
 | 
			
		||||
 | 
			
		||||
	public TileDetector() {
 | 
			
		||||
		this.redstoneControlled = false;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public int getEnergyUsage() {
 | 
			
		||||
		return 4;
 | 
			
		||||
@@ -37,6 +42,8 @@ public class TileDetector extends TileMachine implements IInventory, ISidedInven
 | 
			
		||||
		if (ticks % 5 == 0) {
 | 
			
		||||
			ItemStack slot = inventory.getStackInSlot(0);
 | 
			
		||||
 | 
			
		||||
			boolean lastProvidesPower = providesPower;
 | 
			
		||||
 | 
			
		||||
			if (slot != null) {
 | 
			
		||||
				boolean foundAny = false;
 | 
			
		||||
 | 
			
		||||
@@ -55,25 +62,28 @@ public class TileDetector extends TileMachine implements IInventory, ISidedInven
 | 
			
		||||
								providesPower = item.getQuantity() > amount;
 | 
			
		||||
								break;
 | 
			
		||||
						}
 | 
			
		||||
 | 
			
		||||
						break;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if (!foundAny) {
 | 
			
		||||
					switch (mode) {
 | 
			
		||||
						case MODE_UNDER:
 | 
			
		||||
							providesPower = amount != 0;
 | 
			
		||||
							break;
 | 
			
		||||
						case MODE_EQUAL:
 | 
			
		||||
							providesPower = amount == 0;
 | 
			
		||||
							break;
 | 
			
		||||
						default:
 | 
			
		||||
							providesPower = false;
 | 
			
		||||
							break;
 | 
			
		||||
					if (mode == MODE_UNDER && amount != 0) {
 | 
			
		||||
						providesPower = true;
 | 
			
		||||
					} else if (mode == MODE_EQUAL && amount == 0) {
 | 
			
		||||
						providesPower = true;
 | 
			
		||||
					} else {
 | 
			
		||||
						providesPower = false;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				providesPower = false;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if (providesPower != lastProvidesPower) {
 | 
			
		||||
				worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
 | 
			
		||||
				worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, StorageCraftBlocks.DETECTOR);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -5,8 +5,9 @@ import net.minecraft.nbt.NBTTagCompound;
 | 
			
		||||
 | 
			
		||||
public abstract class TileMachine extends TileBase implements INetworkTile, IRedstoneModeSetting {
 | 
			
		||||
	protected boolean connected = false;
 | 
			
		||||
	protected boolean redstoneControlled = true;
 | 
			
		||||
 | 
			
		||||
	private RedstoneMode redstoneMode = RedstoneMode.LOW;
 | 
			
		||||
	private RedstoneMode redstoneMode = RedstoneMode.IGNORE;
 | 
			
		||||
 | 
			
		||||
	private int xController;
 | 
			
		||||
	private int yController;
 | 
			
		||||
@@ -48,7 +49,9 @@ public abstract class TileMachine extends TileBase implements INetworkTile, IRed
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void setRedstoneMode(RedstoneMode mode) {
 | 
			
		||||
		this.redstoneMode = mode;
 | 
			
		||||
		if (redstoneControlled) {
 | 
			
		||||
			this.redstoneMode = mode;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user