This commit is contained in:
Raoul Van den Berge
2016-05-25 20:37:26 +02:00
parent c332c3b58d
commit 63d4f63efe
5 changed files with 25 additions and 18 deletions

View File

@@ -61,9 +61,9 @@ public class BlockGrid extends BlockMachine {
@Override @Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) { public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) { if (!world.isRemote) {
((TileGrid) world.getTileEntity(pos)).onGridOpened(player);
player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.GRID, world, pos.getX(), pos.getY(), pos.getZ()); player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.GRID, world, pos.getX(), pos.getY(), pos.getZ());
((TileGrid) world.getTileEntity(pos)).onGridOpened(player);
} }
return true; return true;

View File

@@ -79,7 +79,6 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
private int wirelessGridRange; private int wirelessGridRange;
private boolean couldRun; private boolean couldRun;
private boolean syncing;
private long lastEnergyUpdate; private long lastEnergyUpdate;
@@ -310,8 +309,6 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
} }
private void syncItems() { private void syncItems() {
this.syncing = true;
itemGroups.clear(); itemGroups.clear();
for (IStorage storage : storages) { for (IStorage storage : storages) {
@@ -361,19 +358,15 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
} }
itemGroups.removeAll(combinedGroups); itemGroups.removeAll(combinedGroups);
this.syncing = false;
} }
public void syncItemsWithClients() { public void syncItemsWithClients() {
if (!syncing) {
for (EntityPlayer player : worldObj.playerEntities) { for (EntityPlayer player : worldObj.playerEntities) {
if (player.openContainer.getClass() == ContainerGrid.class) { if (player.openContainer.getClass() == ContainerGrid.class && pos.equals(((ContainerGrid) player.openContainer).getGrid().getControllerPos())) {
syncItemsWithClient((EntityPlayerMP) player); syncItemsWithClient((EntityPlayerMP) player);
} }
} }
} }
}
public void syncItemsWithClient(EntityPlayerMP player) { public void syncItemsWithClient(EntityPlayerMP player) {
RefinedStorage.NETWORK.sendTo(new MessageGridItems(this), player); RefinedStorage.NETWORK.sendTo(new MessageGridItems(this), player);

View File

@@ -1,5 +1,6 @@
package refinedstorage.tile.grid; package refinedstorage.tile.grid;
import net.minecraft.util.math.BlockPos;
import refinedstorage.block.EnumGridType; import refinedstorage.block.EnumGridType;
import refinedstorage.storage.ItemGroup; import refinedstorage.storage.ItemGroup;
import refinedstorage.tile.config.IRedstoneModeConfig; import refinedstorage.tile.config.IRedstoneModeConfig;
@@ -13,6 +14,8 @@ public interface IGrid {
void setItemGroups(List<ItemGroup> groups); void setItemGroups(List<ItemGroup> groups);
BlockPos getControllerPos();
void onItemPush(int playerSlot, boolean one); void onItemPush(int playerSlot, boolean one);
void onItemPull(int id, int flags); void onItemPull(int id, int flags);

View File

@@ -7,6 +7,7 @@ import net.minecraft.inventory.*;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.wrapper.InvWrapper; import net.minecraftforge.items.wrapper.InvWrapper;
import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorage;
@@ -97,6 +98,11 @@ public class TileGrid extends TileMachine implements IGrid {
this.itemGroups = itemGroups; this.itemGroups = itemGroups;
} }
@Override
public BlockPos getControllerPos() {
return controller != null ? controller.getPos() : null;
}
public void onGridOpened(EntityPlayer player) { public void onGridOpened(EntityPlayer player) {
if (isConnected()) { if (isConnected()) {
controller.syncItemsWithClient((EntityPlayerMP) player); controller.syncItemsWithClient((EntityPlayerMP) player);

View File

@@ -21,8 +21,8 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
public class WirelessGrid implements IGrid { public class WirelessGrid implements IGrid {
private ItemStack stack;
private EnumHand hand; private EnumHand hand;
private BlockPos controllerPos;
private int sortingType; private int sortingType;
private int sortingDirection; private int sortingDirection;
private int searchBoxMode; private int searchBoxMode;
@@ -30,8 +30,8 @@ public class WirelessGrid implements IGrid {
private long lastUpdate; private long lastUpdate;
public WirelessGrid(ItemStack stack, EnumHand hand) { public WirelessGrid(ItemStack stack, EnumHand hand) {
this.stack = stack;
this.hand = hand; this.hand = hand;
this.controllerPos = new BlockPos(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack));
this.sortingType = ItemWirelessGrid.getSortingType(stack); this.sortingType = ItemWirelessGrid.getSortingType(stack);
this.sortingDirection = ItemWirelessGrid.getSortingDirection(stack); this.sortingDirection = ItemWirelessGrid.getSortingDirection(stack);
this.searchBoxMode = ItemWirelessGrid.getSearchBoxMode(stack); this.searchBoxMode = ItemWirelessGrid.getSearchBoxMode(stack);
@@ -53,18 +53,23 @@ public class WirelessGrid implements IGrid {
this.lastUpdate = System.currentTimeMillis(); this.lastUpdate = System.currentTimeMillis();
} }
@Override
public BlockPos getControllerPos() {
return controllerPos;
}
@Override @Override
public void onItemPush(int playerSlot, boolean one) { public void onItemPush(int playerSlot, boolean one) {
RefinedStorage.NETWORK.sendToServer(new MessageWirelessGridStoragePush(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack), playerSlot, one)); RefinedStorage.NETWORK.sendToServer(new MessageWirelessGridStoragePush(controllerPos.getX(), controllerPos.getY(), controllerPos.getZ(), playerSlot, one));
} }
@Override @Override
public void onItemPull(int id, int flags) { public void onItemPull(int id, int flags) {
RefinedStorage.NETWORK.sendToServer(new MessageWirelessGridStoragePull(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack), id, flags)); RefinedStorage.NETWORK.sendToServer(new MessageWirelessGridStoragePull(controllerPos.getX(), controllerPos.getY(), controllerPos.getZ(), id, flags));
} }
public void onClose(EntityPlayer player) { public void onClose(EntityPlayer player) {
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack))); TileEntity tile = player.worldObj.getTileEntity(controllerPos);
if (tile instanceof TileController) { if (tile instanceof TileController) {
((TileController) tile).getWirelessGridHandler().handleClose(player); ((TileController) tile).getWirelessGridHandler().handleClose(player);
@@ -109,7 +114,7 @@ public class WirelessGrid implements IGrid {
@Override @Override
public void onCraftingRequested(int id, int quantity) { public void onCraftingRequested(int id, int quantity) {
RefinedStorage.NETWORK.sendToServer(new MessageWirelessGridCraftingStart(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack), id, quantity)); RefinedStorage.NETWORK.sendToServer(new MessageWirelessGridCraftingStart(controllerPos.getX(), controllerPos.getY(), controllerPos.getZ(), id, quantity));
} }
@Override @Override