This commit is contained in:
Raoul Van den Berge
2016-04-01 02:12:06 +02:00
parent 11712a762e
commit 5e5d2c9e35
6 changed files with 75 additions and 23 deletions

View File

@@ -3,7 +3,6 @@ package refinedstorage.gui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.network.IGuiHandler;
@@ -13,6 +12,7 @@ import refinedstorage.storage.IStorageGui;
import refinedstorage.tile.*;
import refinedstorage.tile.grid.TileGrid;
import refinedstorage.tile.grid.WirelessGrid;
import refinedstorage.util.HandUtils;
public class GuiHandler implements IGuiHandler {
private Container getContainer(int ID, EntityPlayer player, TileEntity tile) {
@@ -56,9 +56,7 @@ public class GuiHandler implements IGuiHandler {
}
private WirelessGrid getWirelessGrid(World world, EntityPlayer player, int hand) {
EnumHand realHand = hand == 0 ? EnumHand.MAIN_HAND : EnumHand.OFF_HAND;
return new WirelessGrid(player.getHeldItem(realHand), realHand, world);
return new WirelessGrid(player.getHeldItem(HandUtils.getHandById(hand)), HandUtils.getHandById(hand), world);
}
private ContainerGrid getWirelessGridContainer(World world, EntityPlayer player, int hand) {

View File

@@ -3,11 +3,11 @@ package refinedstorage.network;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumHand;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import refinedstorage.RefinedStorageItems;
import refinedstorage.item.ItemWirelessGrid;
import refinedstorage.tile.grid.TileGrid;
import refinedstorage.util.HandUtils;
public class MessageWirelessGridSettingsUpdate extends MessageHandlerPlayerToServer<MessageWirelessGridSettingsUpdate> implements IMessage {
private int hand;
@@ -43,7 +43,7 @@ public class MessageWirelessGridSettingsUpdate extends MessageHandlerPlayerToSer
@Override
public void handle(MessageWirelessGridSettingsUpdate message, EntityPlayerMP player) {
ItemStack held = player.getHeldItem(hand == 1 ? EnumHand.OFF_HAND : EnumHand.MAIN_HAND);
ItemStack held = player.getHeldItem(HandUtils.getHandById(message.hand));
if (held != null && held.getItem() == RefinedStorageItems.WIRELESS_GRID && held.getTagCompound() != null) {
if (message.sortingDirection == TileGrid.SORTING_DIRECTION_ASCENDING || message.sortingDirection == TileGrid.SORTING_DIRECTION_DESCENDING) {

View File

@@ -18,19 +18,15 @@ import refinedstorage.block.EnumControllerType;
import refinedstorage.storage.IStorage;
import refinedstorage.storage.IStorageProvider;
import refinedstorage.storage.StorageItem;
import refinedstorage.tile.grid.WirelessGridConsumer;
import refinedstorage.tile.settings.IRedstoneModeSetting;
import refinedstorage.tile.settings.RedstoneMode;
import refinedstorage.util.HandUtils;
import refinedstorage.util.InventoryUtils;
import java.util.*;
public class TileController extends TileBase implements IEnergyReceiver, INetworkTile, IRedstoneModeSetting {
public class WirelessGridConsumer {
public EntityPlayer player;
public EnumHand hand;
public ItemStack wirelessGrid;
}
private List<StorageItem> items = new ArrayList<StorageItem>();
private List<IStorage> storages = new ArrayList<IStorage>();
private List<WirelessGridConsumer> wirelessGridConsumers = new ArrayList<WirelessGridConsumer>();
@@ -120,12 +116,13 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
wirelessGridConsumersMarkedForRemoval.clear();
Iterator<WirelessGridConsumer> it = wirelessGridConsumers.iterator();
while (it.hasNext()) {
WirelessGridConsumer consumer = it.next();
if (!InventoryUtils.compareStack(consumer.wirelessGrid, consumer.player.getHeldItem(consumer.hand))) {
onCloseWirelessGrid(consumer.player);
consumer.player.closeScreen();
if (!InventoryUtils.compareStack(consumer.getWirelessGrid(), consumer.getPlayer().getHeldItem(consumer.getHand()))) {
onCloseWirelessGrid(consumer.getPlayer());
consumer.getPlayer().closeScreen();
}
}
@@ -271,13 +268,9 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
}
public void onOpenWirelessGrid(EntityPlayer player, EnumHand hand) {
WirelessGridConsumer consumer = new WirelessGridConsumer();
consumer.hand = hand;
consumer.player = player;
consumer.wirelessGrid = player.getHeldItem(hand);
wirelessGridConsumers.add(consumer);
wirelessGridConsumers.add(new WirelessGridConsumer(player, hand, player.getHeldItem(hand)));
player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.WIRELESS_GRID, worldObj, hand == EnumHand.OFF_HAND ? 1 : 0, 0, 0);
player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.WIRELESS_GRID, worldObj, HandUtils.getIdFromHand(hand), 0, 0);
}
public void onCloseWirelessGrid(EntityPlayer player) {
@@ -290,12 +283,15 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
public WirelessGridConsumer getWirelessGridConsumer(EntityPlayer player) {
Iterator<WirelessGridConsumer> it = wirelessGridConsumers.iterator();
while (it.hasNext()) {
WirelessGridConsumer consumer = it.next();
if (consumer.player == player) {
if (consumer.getPlayer() == player) {
return consumer;
}
}
return null;
}

View File

@@ -81,7 +81,9 @@ public class WirelessGrid implements IGrid {
@Override
public boolean isConnected() {
return getController() instanceof TileController && getController().isActive();
// Since getController().isActive() doesn't do anything clientside
// we just check if the energy usage is above 0.
return getController() instanceof TileController && getController().getEnergyUsage() > 0;
}
@Override

View File

@@ -0,0 +1,29 @@
package refinedstorage.tile.grid;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumHand;
public class WirelessGridConsumer {
private EntityPlayer player;
private EnumHand hand;
private ItemStack wirelessGrid;
public WirelessGridConsumer(EntityPlayer player, EnumHand hand, ItemStack wirelessGrid) {
this.player = player;
this.hand = hand;
this.wirelessGrid = wirelessGrid;
}
public ItemStack getWirelessGrid() {
return wirelessGrid;
}
public EnumHand getHand() {
return hand;
}
public EntityPlayer getPlayer() {
return player;
}
}

View File

@@ -0,0 +1,27 @@
package refinedstorage.util;
import net.minecraft.util.EnumHand;
public class HandUtils {
public static EnumHand getHandById(int id) {
switch (id) {
case 0:
return EnumHand.MAIN_HAND;
case 1:
return EnumHand.OFF_HAND;
}
return EnumHand.MAIN_HAND;
}
public static int getIdFromHand(EnumHand hand) {
switch (hand) {
case MAIN_HAND:
return 0;
case OFF_HAND:
return 1;
}
return 0;
}
}