diff --git a/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java b/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java index aef5c242..828a8b5b 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java +++ b/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java @@ -1,6 +1,5 @@ package com.glodblock.github.common.item; -import static com.glodblock.github.common.Config.reStockTime; import static net.minecraft.client.gui.GuiScreen.isShiftKeyDown; import java.util.ArrayList; @@ -8,7 +7,6 @@ import java.util.Arrays; import java.util.EnumSet; import java.util.List; -import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -41,9 +39,7 @@ import com.glodblock.github.util.NameConst; import com.glodblock.github.util.Util; import appeng.api.AEApi; -import appeng.api.config.Actionable; import appeng.api.networking.IGridNode; -import appeng.api.storage.data.IAEItemStack; import appeng.core.features.AEFeature; import appeng.core.localization.PlayerMessages; import appeng.util.Platform; @@ -276,48 +272,12 @@ public class ItemWirelessUltraTerminal extends ItemBaseWirelessTerminal return true; } - private static final Minecraft mc = Minecraft.getMinecraft(); - private static long refreshTick = System.currentTimeMillis(); - @Override public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int slot, boolean p_77663_5_) { if (Platform.isServer() && entityIn instanceof EntityPlayer player) { if (WirelessMagnet.getMode(stack) != WirelessMagnet.Mode.Off) { WirelessMagnet.doMagnet(stack, player.worldObj, player); } - - if (refreshTick + reStockTime < System.currentTimeMillis()) { - // try to stock items - if (mc.currentScreen == null && Util.isRestock(stack)) { - IGridNode gridNode = Util.getWirelessGrid(stack); - if (gridNode != null && Util.isRestock(stack) && Util.rangeCheck(stack, player, gridNode)) { - restockItems(stack, gridNode, slot, player); - } - } - refreshTick = System.currentTimeMillis(); - } - } - } - - private void restockItems(ItemStack terminal, IGridNode gridNode, int slot, EntityPlayer player) { - WirelessCraftingTerminalInventory inv = new WirelessCraftingTerminalInventory(terminal, slot, gridNode, player); - - for (int i = 0; i < 9; i++) { - ItemStack is = player.inventory.mainInventory[i]; - if (is != null) { - int maxSize = is.getMaxStackSize(); - if (is.stackSize < maxSize) { - int fillSize = maxSize - is.stackSize; - IAEItemStack ias = AEApi.instance().storage().createItemStack(is); - ias.setStackSize(fillSize); - - IAEItemStack extractedItem = (IAEItemStack) inv - .extractItems(ias, Actionable.MODULATE, inv.getActionSource()); - if (extractedItem != null) { - player.inventory.addItemStackToInventory(extractedItem.getItemStack()); - } - } - } } } } diff --git a/src/main/java/com/glodblock/github/network/CPacketValueConfig.java b/src/main/java/com/glodblock/github/network/CPacketValueConfig.java index 7111ac19..ba3be5ce 100644 --- a/src/main/java/com/glodblock/github/network/CPacketValueConfig.java +++ b/src/main/java/com/glodblock/github/network/CPacketValueConfig.java @@ -11,9 +11,14 @@ import org.apache.commons.lang3.tuple.ImmutablePair; import com.glodblock.github.client.gui.container.ContainerFluidLevelEmitter; import com.glodblock.github.common.item.ItemBaseWirelessTerminal; +import com.glodblock.github.inventory.item.WirelessCraftingTerminalInventory; import com.glodblock.github.util.NameConst; import com.glodblock.github.util.Util; +import appeng.api.AEApi; +import appeng.api.config.Actionable; +import appeng.api.networking.IGridNode; +import appeng.api.storage.data.IAEItemStack; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; @@ -65,11 +70,44 @@ public class CPacketValueConfig implements IMessage { !Util.isRestock(wirelessTerm) ? NameConst.TT_ULTRA_TERMINAL_RESTOCK_ON : NameConst.TT_ULTRA_TERMINAL_RESTOCK_OFF))); + } else { + IGridNode gridNode = Util.getWirelessGrid(wirelessTerm); + if (gridNode != null && Util.isRestock(wirelessTerm) + && Util.rangeCheck(wirelessTerm, player, gridNode)) { + restockItems(wirelessTerm, gridNode, result.getLeft(), player); + } } } } } return null; } + + @SuppressWarnings("unchecked") + private void restockItems(ItemStack terminal, IGridNode gridNode, int slot, EntityPlayer player) { + WirelessCraftingTerminalInventory inv = new WirelessCraftingTerminalInventory( + terminal, + slot, + gridNode, + player); + + for (int i = 0; i < 9; i++) { + ItemStack is = player.inventory.mainInventory[i]; + if (is != null) { + int maxSize = is.getMaxStackSize(); + if (is.stackSize < maxSize) { + int fillSize = maxSize - is.stackSize; + IAEItemStack ias = AEApi.instance().storage().createItemStack(is); + ias.setStackSize(fillSize); + + IAEItemStack extractedItem = (IAEItemStack) inv + .extractItems(ias, Actionable.MODULATE, inv.getActionSource()); + if (extractedItem != null) { + player.inventory.addItemStackToInventory(extractedItem.getItemStack()); + } + } + } + } + } } } diff --git a/src/main/java/com/glodblock/github/proxy/ClientProxy.java b/src/main/java/com/glodblock/github/proxy/ClientProxy.java index 6f3446f1..71fdce5a 100644 --- a/src/main/java/com/glodblock/github/proxy/ClientProxy.java +++ b/src/main/java/com/glodblock/github/proxy/ClientProxy.java @@ -1,18 +1,33 @@ package com.glodblock.github.proxy; +import static com.glodblock.github.common.Config.reStockTime; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +import org.apache.commons.lang3.tuple.ImmutablePair; + +import com.glodblock.github.FluidCraft; import com.glodblock.github.loader.KeybindLoader; import com.glodblock.github.loader.ListenerLoader; import com.glodblock.github.loader.RenderLoader; import com.glodblock.github.nei.recipes.DefaultExtractorLoader; +import com.glodblock.github.network.CPacketValueConfig; import com.glodblock.github.util.ModAndClassUtil; +import com.glodblock.github.util.Util; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLLoadCompleteEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.TickEvent; public class ClientProxy extends CommonProxy { + private static final Minecraft mc = Minecraft.getMinecraft(); + private static long refreshTick = System.currentTimeMillis(); + @Override public void preInit(FMLPreInitializationEvent event) { super.preInit(event); @@ -38,4 +53,16 @@ public class ClientProxy extends CommonProxy { new DefaultExtractorLoader().run(); } } + + @SubscribeEvent + public void tickEvent(TickEvent.PlayerTickEvent e) { + if (refreshTick + reStockTime < System.currentTimeMillis()) { + // try to stock items + ImmutablePair result = Util.getUltraWirelessTerm(mc.thePlayer); + if (result != null && mc.currentScreen == null && Util.isRestock(result.getRight())) { + FluidCraft.proxy.netHandler.sendToServer(new CPacketValueConfig(1, 0)); + } + refreshTick = System.currentTimeMillis(); + } + } }