add wireless fluid pattern terminal

This commit is contained in:
asdflj committed 2023-01-31 15:50:45 +08:00
1 parent a22814940b
commit 7f53e01184
25 files changed
+708 -91

No files matched your search

@@ -0,0 +1,85 @@
package com.glodblock.github.common.item;
import java.util.Optional;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import appeng.api.AEApi;
import appeng.api.features.ILocatable;
import appeng.api.features.IWirelessTermHandler;
import appeng.api.features.IWirelessTermRegistry;
import appeng.core.localization.PlayerMessages;
import appeng.items.tools.powered.ToolWirelessTerminal;
import com.glodblock.github.inventory.InventoryHandler;
import com.glodblock.github.inventory.gui.GuiType;
import com.glodblock.github.inventory.item.IItemInventory;
import com.glodblock.github.util.BlockPos;
public class ItemBaseWirelessTerminal extends ToolWirelessTerminal implements IItemInventory {
protected GuiType type;
public ItemBaseWirelessTerminal(GuiType t) {
super();
this.type = Optional.of(t).get();
}
@Override
public ItemStack onItemRightClick(final ItemStack item, final World w, final EntityPlayer player) {
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.type);
} else {
player.addChatMessage(PlayerMessages.DeviceNotPowered.get());
}
return item;
}
@Override
public boolean canHandle(final ItemStack is) {
return is.getItem() == this;
}
public ItemStack stack() {
return new ItemStack(this, 1);
}
@Override
public Object getInventory(ItemStack stack, World world, int x, int y, int z, EntityPlayer player) {
return null;
}
public void setGuiType(GuiType type) {
this.type = type;
}
public GuiType guiGuiType() {
return this.type;
}
}
@@ -3,74 +3,31 @@ package com.glodblock.github.common.item;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import appeng.api.AEApi;
import appeng.api.features.ILocatable;
import appeng.api.features.IWirelessTermHandler;
import appeng.api.features.IWirelessTermRegistry;
import appeng.api.networking.IGridNode;
import appeng.core.localization.PlayerMessages;
import appeng.items.tools.powered.ToolWirelessTerminal;
import appeng.util.Platform;
import com.glodblock.github.FluidCraft;
import com.glodblock.github.common.tabs.FluidCraftingTabs;
import com.glodblock.github.inventory.InventoryHandler;
import com.glodblock.github.inventory.gui.GuiType;
import com.glodblock.github.inventory.item.IItemInventory;
import com.glodblock.github.inventory.item.WirelessTerminal;
import com.glodblock.github.inventory.item.WirelessFluidTerminal;
import com.glodblock.github.loader.IRegister;
import com.glodblock.github.util.BlockPos;
import com.glodblock.github.util.NameConst;
import com.glodblock.github.util.Util;
import cpw.mods.fml.common.registry.GameRegistry;
public class ItemWirelessFluidTerminal extends ToolWirelessTerminal
implements IItemInventory, IRegister<ItemWirelessFluidTerminal> {
public class ItemWirelessFluidTerminal extends ItemBaseWirelessTerminal
implements IRegister<ItemWirelessFluidTerminal> {
public ItemWirelessFluidTerminal() {
super();
super(GuiType.WIRELESS_FLUID_TERMINAL);
AEApi.instance().registries().wireless().registerWirelessHandler(this);
setUnlocalizedName(NameConst.ITEM_WIRELESS_FLUID_TERMINAL);
setTextureName(FluidCraft.resource(NameConst.ITEM_WIRELESS_FLUID_TERMINAL).toString());
}
@Override
public ItemStack onItemRightClick(final ItemStack item, final World w, final EntityPlayer player) {
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((int) player.posX, (int) player.posY, (int) player.posZ),
ForgeDirection.UNKNOWN,
GuiType.WIRELESS_FLUID_TERMINAL);
} else {
player.addChatMessage(PlayerMessages.DeviceNotPowered.get());
}
return item;
}
@Override
public boolean canHandle(final ItemStack is) {
return is.getItem() == this;
}
@Override
public ItemWirelessFluidTerminal register() {
GameRegistry.registerItem(this, NameConst.ITEM_WIRELESS_FLUID_TERMINAL, FluidCraft.MODID);
@@ -81,14 +38,14 @@ public class ItemWirelessFluidTerminal extends ToolWirelessTerminal
@Override
public Object getInventory(ItemStack stack, World world, int x, int y, int z, EntityPlayer player) {
try {
return new WirelessTerminal(stack, new BlockPos(x, y, z, world), player);
IGridNode gridNode = Util.getWirelessGrid(stack);
if (gridNode != null) {
return new WirelessFluidTerminal(stack, x, gridNode, player);
}
} catch (Exception e) {
player.addChatMessage(PlayerMessages.OutOfRange.get());
return null;
if (Platform.isClient()) player.addChatMessage(PlayerMessages.OutOfRange.get());
}
return null;
}
public ItemStack stack() {
return new ItemStack(this, 1);
}
}
@@ -0,0 +1,50 @@
package com.glodblock.github.common.item;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import appeng.api.AEApi;
import appeng.api.networking.IGridNode;
import appeng.core.localization.PlayerMessages;
import appeng.util.Platform;
import com.glodblock.github.FluidCraft;
import com.glodblock.github.common.tabs.FluidCraftingTabs;
import com.glodblock.github.inventory.gui.GuiType;
import com.glodblock.github.inventory.item.WirelessPatternTerminal;
import com.glodblock.github.loader.IRegister;
import com.glodblock.github.util.NameConst;
import com.glodblock.github.util.Util;
import cpw.mods.fml.common.registry.GameRegistry;
public class ItemWirelessPatternTerminal extends ItemBaseWirelessTerminal
implements IRegister<ItemWirelessPatternTerminal> {
public ItemWirelessPatternTerminal() {
super(GuiType.WIRELESS_FLUID_PATTERN_TERMINAL);
AEApi.instance().registries().wireless().registerWirelessHandler(this);
setUnlocalizedName(NameConst.ITEM_WIRELESS_FLUID_PATTERN_TERMINAL);
setTextureName(FluidCraft.resource(NameConst.ITEM_WIRELESS_FLUID_PATTERN_TERMINAL).toString());
}
@Override
public ItemWirelessPatternTerminal register() {
GameRegistry.registerItem(this, NameConst.ITEM_WIRELESS_FLUID_PATTERN_TERMINAL, FluidCraft.MODID);
setCreativeTab(FluidCraftingTabs.INSTANCE);
return this;
}
@Override
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 WirelessPatternTerminal(stack, x, gridNode, player);
}
} catch (Exception e) {
if (Platform.isClient()) player.addChatMessage(PlayerMessages.OutOfRange.get());
}
return null;
}
}
@@ -11,8 +11,9 @@ import appeng.api.storage.data.IAEItemStack;
import appeng.tile.inventory.AppEngInternalInventory;
import com.glodblock.github.common.item.ItemFluidPacket;
import com.glodblock.github.inventory.item.PatternTerminal;
public abstract class FCFluidEncodeTerminal extends FCPart {
public abstract class FCFluidEncodeTerminal extends FCPart implements PatternTerminal {
protected AppEngInternalInventory crafting;
protected AppEngInternalInventory output;