mirror of
https://github.com/GTNewHorizons/AE2FluidCraft-Rework.git
synced 2026-11-15 09:34:42 +00:00
restore restock
This commit is contained in:
1 parent
6c922c3f02
commit
226467ce13
3 files changed
+65
-40
No files matched your search
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<Integer, ItemStack> 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user