From a5f7d8bed20da4223dd05fd1067669eaf6850a40 Mon Sep 17 00:00:00 2001 From: GlodBlock <1356392126@qq.com> Date: Mon, 13 Feb 2023 14:59:31 +0800 Subject: [PATCH] fix wireless terminal not usable at server --- gradle.properties | 4 ++ .../common/item/ItemBaseWirelessTerminal.java | 61 +++++++++++-------- .../item/ItemWirelessFluidTerminal.java | 7 +-- .../item/ItemWirelessInterfaceTerminal.java | 7 +-- .../item/ItemWirelessPatternTerminal.java | 7 +-- .../item/ItemWirelessUltraTerminal.java | 46 +++++++------- .../github/inventory/InventoryHandler.java | 5 ++ .../java/com/glodblock/github/util/Util.java | 13 ++-- 8 files changed, 77 insertions(+), 73 deletions(-) diff --git a/gradle.properties b/gradle.properties index 82e78de0..ed06cc8d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -65,3 +65,7 @@ usesShadowedDependencies = false # Optional parameter to prevent the source code from being published # noPublishedSources = +systemProp.http.proxyHost=127.0.0.1 +systemProp.http.proxyPort=7890 +systemProp.https.proxyHost=127.0.0.1 +systemProp.https.proxyPort=7890 diff --git a/src/main/java/com/glodblock/github/common/item/ItemBaseWirelessTerminal.java b/src/main/java/com/glodblock/github/common/item/ItemBaseWirelessTerminal.java index f4940f62..b8429bac 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemBaseWirelessTerminal.java +++ b/src/main/java/com/glodblock/github/common/item/ItemBaseWirelessTerminal.java @@ -11,6 +11,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.event.ForgeEventFactory; import appeng.api.AEApi; import appeng.api.features.ILocatable; @@ -18,6 +19,7 @@ import appeng.api.features.IWirelessTermHandler; import appeng.api.features.IWirelessTermRegistry; import appeng.core.localization.PlayerMessages; import appeng.items.tools.powered.ToolWirelessTerminal; +import appeng.util.Platform; import com.glodblock.github.inventory.InventoryHandler; import com.glodblock.github.inventory.gui.GuiType; @@ -41,32 +43,37 @@ public class ItemBaseWirelessTerminal extends ToolWirelessTerminal implements II @Override public ItemStack onItemRightClick(final ItemStack item, final World w, final EntityPlayer player) { if (player.isSneaking()) return removeInfinityBoosterCard(player, item); - IWirelessTermRegistry term = AEApi.instance().registries().wireless(); - if (!term.isWirelessTerminal(item)) { - player.addChatMessage(PlayerMessages.DeviceNotWirelessTerminal.get()); - return item; - } - final IWirelessTermHandler handler = term.getWirelessTerminalHandler(item); - final String unparsedKey = handler.getEncryptionKey(item); - if (unparsedKey.isEmpty()) { - player.addChatMessage(PlayerMessages.DeviceNotLinked.get()); - return item; - } - final long parsedKey = Long.parseLong(unparsedKey); - final ILocatable securityStation = AEApi.instance().registries().locatable().getLocatableBy(parsedKey); - if (securityStation == null) { - player.addChatMessage(PlayerMessages.StationCanNotBeLocated.get()); - return item; - } - if (handler.hasPower(player, 0.5, item)) { - InventoryHandler.openGui( - player, - w, - new BlockPos(player.inventory.currentItem, 0, 0), - ForgeDirection.UNKNOWN, - this.guiGuiType(item)); - } else { - player.addChatMessage(PlayerMessages.DeviceNotPowered.get()); + if (ForgeEventFactory.onItemUseStart(player, item, 1) > 0) { + if (Platform.isClient()) { + return item; + } + IWirelessTermRegistry term = AEApi.instance().registries().wireless(); + if (!term.isWirelessTerminal(item)) { + player.addChatMessage(PlayerMessages.DeviceNotWirelessTerminal.get()); + return item; + } + final IWirelessTermHandler handler = term.getWirelessTerminalHandler(item); + final String unparsedKey = handler.getEncryptionKey(item); + if (unparsedKey.isEmpty()) { + player.addChatMessage(PlayerMessages.DeviceNotLinked.get()); + return item; + } + final long parsedKey = Long.parseLong(unparsedKey); + final ILocatable securityStation = AEApi.instance().registries().locatable().getLocatableBy(parsedKey); + if (securityStation == null) { + player.addChatMessage(PlayerMessages.StationCanNotBeLocated.get()); + return item; + } + if (handler.hasPower(player, 0.5, item)) { + InventoryHandler.openGui( + player, + w, + new BlockPos(player.inventory.currentItem, 0, 0), + ForgeDirection.UNKNOWN, + this.guiGuiType(item)); + } else { + player.addChatMessage(PlayerMessages.DeviceNotPowered.get()); + } } return item; @@ -99,7 +106,7 @@ public class ItemBaseWirelessTerminal extends ToolWirelessTerminal implements II @Override public boolean canHandle(final ItemStack is) { - return is.getItem() == this; + return is.getItem() instanceof ItemBaseWirelessTerminal; } public ItemStack stack() { diff --git a/src/main/java/com/glodblock/github/common/item/ItemWirelessFluidTerminal.java b/src/main/java/com/glodblock/github/common/item/ItemWirelessFluidTerminal.java index a963537a..31f65d58 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemWirelessFluidTerminal.java +++ b/src/main/java/com/glodblock/github/common/item/ItemWirelessFluidTerminal.java @@ -10,7 +10,6 @@ import appeng.api.AEApi; import appeng.api.networking.IGridNode; import appeng.core.features.AEFeature; import appeng.core.localization.PlayerMessages; -import appeng.util.Platform; import com.glodblock.github.FluidCraft; import com.glodblock.github.common.tabs.FluidCraftingTabs; @@ -43,11 +42,9 @@ public class ItemWirelessFluidTerminal extends ItemBaseWirelessTerminal public Object getInventory(ItemStack stack, World world, int x, int y, int z, EntityPlayer player) { try { IGridNode gridNode = Util.getWirelessGrid(stack); - if (gridNode != null) { - return new WirelessFluidTerminalInventory(stack, x, gridNode, player); - } + return new WirelessFluidTerminalInventory(stack, x, gridNode, player); } catch (Exception e) { - if (Platform.isClient()) player.addChatMessage(PlayerMessages.OutOfRange.get()); + player.addChatMessage(PlayerMessages.OutOfRange.get()); } return null; } diff --git a/src/main/java/com/glodblock/github/common/item/ItemWirelessInterfaceTerminal.java b/src/main/java/com/glodblock/github/common/item/ItemWirelessInterfaceTerminal.java index b7224e52..64c4b534 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemWirelessInterfaceTerminal.java +++ b/src/main/java/com/glodblock/github/common/item/ItemWirelessInterfaceTerminal.java @@ -10,7 +10,6 @@ import appeng.api.AEApi; import appeng.api.networking.IGridNode; import appeng.core.features.AEFeature; import appeng.core.localization.PlayerMessages; -import appeng.util.Platform; import com.glodblock.github.FluidCraft; import com.glodblock.github.common.tabs.FluidCraftingTabs; @@ -43,11 +42,9 @@ public class ItemWirelessInterfaceTerminal extends ItemBaseWirelessTerminal public Object getInventory(ItemStack stack, World world, int x, int y, int z, EntityPlayer player) { try { IGridNode gridNode = Util.getWirelessGrid(stack); - if (gridNode != null) { - return new WirelessInterfaceTerminalInventory(stack, x, gridNode, player); - } + return new WirelessInterfaceTerminalInventory(stack, x, gridNode, player); } catch (Exception e) { - if (Platform.isClient()) player.addChatMessage(PlayerMessages.OutOfRange.get()); + player.addChatMessage(PlayerMessages.OutOfRange.get()); } return null; } diff --git a/src/main/java/com/glodblock/github/common/item/ItemWirelessPatternTerminal.java b/src/main/java/com/glodblock/github/common/item/ItemWirelessPatternTerminal.java index 6144aea9..61d0723f 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemWirelessPatternTerminal.java +++ b/src/main/java/com/glodblock/github/common/item/ItemWirelessPatternTerminal.java @@ -10,7 +10,6 @@ import appeng.api.AEApi; import appeng.api.networking.IGridNode; import appeng.core.features.AEFeature; import appeng.core.localization.PlayerMessages; -import appeng.util.Platform; import com.glodblock.github.FluidCraft; import com.glodblock.github.common.tabs.FluidCraftingTabs; @@ -43,11 +42,9 @@ public class ItemWirelessPatternTerminal extends ItemBaseWirelessTerminal public Object getInventory(ItemStack stack, World world, int x, int y, int z, EntityPlayer player) { try { IGridNode gridNode = Util.getWirelessGrid(stack); - if (gridNode != null) { - return new WirelessPatternTerminalInventory(stack, x, gridNode, player); - } + return new WirelessPatternTerminalInventory(stack, x, gridNode, player); } catch (Exception e) { - if (Platform.isClient()) player.addChatMessage(PlayerMessages.OutOfRange.get()); + player.addChatMessage(PlayerMessages.OutOfRange.get()); } return null; } 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 b272c612..0789427a 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java +++ b/src/main/java/com/glodblock/github/common/item/ItemWirelessUltraTerminal.java @@ -86,32 +86,30 @@ public class ItemWirelessUltraTerminal extends ItemBaseWirelessTerminal public Object getInventory(ItemStack stack, World world, int x, int y, int z, EntityPlayer player) { try { IGridNode gridNode = Util.getWirelessGrid(stack); - if (gridNode != null) { - final GuiType gui; - if (Util.GuiHelper.decodeType(y).getLeft() == Util.GuiHelper.GuiType.ITEM && z > 0) { - gui = getGuis().get(Util.GuiHelper.decodeType(y).getRight()); - } else { - gui = readMode(stack); - } - if (gui == GuiType.WIRELESS_FLUID_PATTERN_TERMINAL) { - return new WirelessPatternTerminalInventory(stack, x, gridNode, player); - } else if (gui == GuiType.WIRELESS_CRAFTING_TERMINAL) { - return new WirelessCraftingTerminalInventory(stack, x, gridNode, player); - } else if (ModAndClassUtil.ThE && gui == GuiType.WIRELESS_ESSENTIA_TERMINAL) { - return new WirelessFluidTerminalInventory(stack, x, gridNode, player); - } else if (gui == GuiType.WIRELESS_FLUID_TERMINAL) { - return new WirelessFluidTerminalInventory(stack, x, gridNode, player); - } else if (gui == GuiType.WIRELESS_INTERFACE_TERMINAL) { - return new WirelessInterfaceTerminalInventory(stack, x, gridNode, player); - } else if (gui == GuiType.WIRELESS_FLUID_PATTERN_TERMINAL_EX) { - return new WirelessPatternTerminalExInventory(stack, x, gridNode, player); - } else { - this.setMode(GuiType.WIRELESS_FLUID_TERMINAL, stack); // set as default mode - return new WirelessFluidTerminalInventory(stack, x, gridNode, player); - } + final GuiType gui; + if (Util.GuiHelper.decodeType(y).getLeft() == Util.GuiHelper.GuiType.ITEM && z > 0) { + gui = getGuis().get(Util.GuiHelper.decodeType(y).getRight()); + } else { + gui = readMode(stack); + } + if (gui == GuiType.WIRELESS_FLUID_PATTERN_TERMINAL) { + return new WirelessPatternTerminalInventory(stack, x, gridNode, player); + } else if (gui == GuiType.WIRELESS_CRAFTING_TERMINAL) { + return new WirelessCraftingTerminalInventory(stack, x, gridNode, player); + } else if (ModAndClassUtil.ThE && gui == GuiType.WIRELESS_ESSENTIA_TERMINAL) { + return new WirelessFluidTerminalInventory(stack, x, gridNode, player); + } else if (gui == GuiType.WIRELESS_FLUID_TERMINAL) { + return new WirelessFluidTerminalInventory(stack, x, gridNode, player); + } else if (gui == GuiType.WIRELESS_INTERFACE_TERMINAL) { + return new WirelessInterfaceTerminalInventory(stack, x, gridNode, player); + } else if (gui == GuiType.WIRELESS_FLUID_PATTERN_TERMINAL_EX) { + return new WirelessPatternTerminalExInventory(stack, x, gridNode, player); + } else { + this.setMode(GuiType.WIRELESS_FLUID_TERMINAL, stack); // set as default mode + return new WirelessFluidTerminalInventory(stack, x, gridNode, player); } } catch (Exception e) { - if (Platform.isClient()) player.addChatMessage(PlayerMessages.OutOfRange.get()); + player.addChatMessage(PlayerMessages.OutOfRange.get()); } return null; } diff --git a/src/main/java/com/glodblock/github/inventory/InventoryHandler.java b/src/main/java/com/glodblock/github/inventory/InventoryHandler.java index 05837223..1c2c16b4 100644 --- a/src/main/java/com/glodblock/github/inventory/InventoryHandler.java +++ b/src/main/java/com/glodblock/github/inventory/InventoryHandler.java @@ -6,6 +6,8 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import appeng.util.Platform; + import com.glodblock.github.FluidCraft; import com.glodblock.github.inventory.gui.GuiType; import com.glodblock.github.network.CPacketSwitchGuis; @@ -22,6 +24,9 @@ public class InventoryHandler implements IGuiHandler { } public static void openGui(EntityPlayer player, World world, BlockPos pos, ForgeDirection face, GuiType guiType) { + if (Platform.isClient()) { + return; + } player.openGui( FluidCraft.INSTANCE, (guiType.ordinal() << 3) | face.ordinal(), diff --git a/src/main/java/com/glodblock/github/util/Util.java b/src/main/java/com/glodblock/github/util/Util.java index 0a0b3fd6..db31d585 100644 --- a/src/main/java/com/glodblock/github/util/Util.java +++ b/src/main/java/com/glodblock/github/util/Util.java @@ -27,15 +27,15 @@ import appeng.api.networking.IGrid; import appeng.api.networking.IGridHost; import appeng.api.networking.IGridNode; import appeng.api.networking.security.ISecurityGrid; -import appeng.api.networking.storage.IBaseMonitor; import appeng.api.networking.storage.IStorageGrid; import appeng.api.parts.IPart; +import appeng.api.storage.IMEInventoryHandler; import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEFluidStack; -import appeng.api.storage.data.IAEStack; import appeng.api.util.WorldCoord; import appeng.container.AEBaseContainer; import appeng.items.tools.powered.ToolWirelessTerminal; +import appeng.me.storage.NullInventory; import appeng.tile.networking.TileCableBus; import appeng.tile.networking.TileWireless; import appeng.util.Platform; @@ -117,12 +117,11 @@ public final class Util { return null; } - public static IBaseMonitor>> getWirelessInv(ItemStack is, - EntityPlayer player, StorageChannel channel) { + public static IMEInventoryHandler getWirelessInv(ItemStack is, EntityPlayer player, StorageChannel channel) { IGridNode gridNode = getWirelessGrid(is); - if (gridNode == null) return null; + if (gridNode == null) return new NullInventory<>(); IGrid grid = gridNode.getGrid(); - if (grid == null) return null; + if (grid == null) return new NullInventory<>(); boolean canConnect = false; if (hasInfinityBoosterCard(is)) { canConnect = true; @@ -150,7 +149,7 @@ public final class Util { } } } - return null; + return new NullInventory<>(); } public static int findItemInPlayerInvSlot(EntityPlayer player, ItemStack itemStack) {