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
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) {
((TileGrid) world.getTileEntity(pos)).onGridOpened(player);
player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.GRID, world, pos.getX(), pos.getY(), pos.getZ());
((TileGrid) world.getTileEntity(pos)).onGridOpened(player);
}
return true;

View File

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

View File

@@ -1,5 +1,6 @@
package refinedstorage.tile.grid;
import net.minecraft.util.math.BlockPos;
import refinedstorage.block.EnumGridType;
import refinedstorage.storage.ItemGroup;
import refinedstorage.tile.config.IRedstoneModeConfig;
@@ -13,6 +14,8 @@ public interface IGrid {
void setItemGroups(List<ItemGroup> groups);
BlockPos getControllerPos();
void onItemPush(int playerSlot, boolean one);
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.crafting.CraftingManager;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.wrapper.InvWrapper;
import refinedstorage.RefinedStorage;
@@ -97,6 +98,11 @@ public class TileGrid extends TileMachine implements IGrid {
this.itemGroups = itemGroups;
}
@Override
public BlockPos getControllerPos() {
return controller != null ? controller.getPos() : null;
}
public void onGridOpened(EntityPlayer player) {
if (isConnected()) {
controller.syncItemsWithClient((EntityPlayerMP) player);

View File

@@ -21,8 +21,8 @@ import java.util.ArrayList;
import java.util.List;
public class WirelessGrid implements IGrid {
private ItemStack stack;
private EnumHand hand;
private BlockPos controllerPos;
private int sortingType;
private int sortingDirection;
private int searchBoxMode;
@@ -30,8 +30,8 @@ public class WirelessGrid implements IGrid {
private long lastUpdate;
public WirelessGrid(ItemStack stack, EnumHand hand) {
this.stack = stack;
this.hand = hand;
this.controllerPos = new BlockPos(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack));
this.sortingType = ItemWirelessGrid.getSortingType(stack);
this.sortingDirection = ItemWirelessGrid.getSortingDirection(stack);
this.searchBoxMode = ItemWirelessGrid.getSearchBoxMode(stack);
@@ -53,18 +53,23 @@ public class WirelessGrid implements IGrid {
this.lastUpdate = System.currentTimeMillis();
}
@Override
public BlockPos getControllerPos() {
return controllerPos;
}
@Override
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
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) {
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) {
((TileController) tile).getWirelessGridHandler().handleClose(player);
@@ -109,7 +114,7 @@ public class WirelessGrid implements IGrid {
@Override
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