From 425d3868ddd92ebe6855068628479e6584f65b38 Mon Sep 17 00:00:00 2001 From: Timo Ley Date: Sun, 28 Mar 2021 18:20:02 +0200 Subject: [PATCH] Added legacy Crafting Terminal --- .../block/legacy/BlockCraftTerminal.java | 36 +++++++++++++++ .../ContainerCraftingTerm.java | 6 +-- .../ContainerMEMonitorable.java | 4 ++ .../appeng/core/api/ICraftingTerminal.java | 10 ++++ .../core/api/definitions/ApiBlocks.java | 3 ++ src/main/java/appeng/core/sync/GuiBridge.java | 4 +- .../parts/reporting/PartCraftingTerminal.java | 3 +- src/main/java/appeng/tile/AEBaseTile.java | 4 +- .../appeng/tile/legacy/TileCraftTerminal.java | 43 ++++++++++++++++++ .../java/appeng/tile/legacy/TileTerminal.java | 4 -- .../appliedenergistics2/lang/en_US.lang | 1 + .../recipes/legacy/index.recipe | 6 +++ .../textures/blocks/BlockCraftTerminal.png | Bin 0 -> 398 bytes .../blocks/BlockCraftTerminalBottom.png | Bin 0 -> 398 bytes .../blocks/BlockCraftTerminalFront.png | Bin 0 -> 364 bytes .../blocks/BlockCraftTerminalSide.png | Bin 0 -> 438 bytes 16 files changed, 112 insertions(+), 12 deletions(-) create mode 100644 src/main/java/appeng/block/legacy/BlockCraftTerminal.java create mode 100644 src/main/java/appeng/core/api/ICraftingTerminal.java create mode 100644 src/main/java/appeng/tile/legacy/TileCraftTerminal.java create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftTerminal.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftTerminalBottom.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftTerminalFront.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftTerminalSide.png diff --git a/src/main/java/appeng/block/legacy/BlockCraftTerminal.java b/src/main/java/appeng/block/legacy/BlockCraftTerminal.java new file mode 100644 index 00000000..9e4136de --- /dev/null +++ b/src/main/java/appeng/block/legacy/BlockCraftTerminal.java @@ -0,0 +1,36 @@ +package appeng.block.legacy; + +import appeng.block.AEBaseTileBlock; +import appeng.core.features.AEFeature; +import appeng.core.sync.GuiBridge; +import appeng.tile.legacy.TileCraftTerminal; +import appeng.util.Platform; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +import java.util.EnumSet; + +public class BlockCraftTerminal extends AEBaseTileBlock { + + public BlockCraftTerminal() { + super(Material.iron); + this.setTileEntity(TileCraftTerminal.class); + this.setFeature( EnumSet.of(AEFeature.Legacy) ); + } + + @Override + public boolean onActivated(World w, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + final TileCraftTerminal tile = this.getTileEntity(w, x, y, z); + if( tile != null && !player.isSneaking() ) { + if( Platform.isClient() ) + { + return true; + } + Platform.openGUI(player, tile, ForgeDirection.getOrientation(side), GuiBridge.GUI_CRAFTING_TERMINAL); + return true; + } + return false; + } +} diff --git a/src/main/java/appeng/container/implementations/ContainerCraftingTerm.java b/src/main/java/appeng/container/implementations/ContainerCraftingTerm.java index 4ff9a2be..3584f7d1 100644 --- a/src/main/java/appeng/container/implementations/ContainerCraftingTerm.java +++ b/src/main/java/appeng/container/implementations/ContainerCraftingTerm.java @@ -23,8 +23,8 @@ import appeng.api.storage.ITerminalHost; import appeng.container.ContainerNull; import appeng.container.slot.SlotCraftingMatrix; import appeng.container.slot.SlotCraftingTerm; +import appeng.core.api.ICraftingTerminal; import appeng.helpers.IContainerCraftingPacket; -import appeng.parts.reporting.PartCraftingTerminal; import appeng.tile.inventory.AppEngInternalInventory; import appeng.tile.inventory.IAEAppEngInventory; import appeng.tile.inventory.InvOperation; @@ -38,7 +38,7 @@ import net.minecraft.item.crafting.CraftingManager; public class ContainerCraftingTerm extends ContainerMEMonitorable implements IAEAppEngInventory, IContainerCraftingPacket { - private final PartCraftingTerminal ct; + private final ICraftingTerminal ct; private final AppEngInternalInventory output = new AppEngInternalInventory( this, 1 ); private final SlotCraftingMatrix[] craftingSlots = new SlotCraftingMatrix[9]; private final SlotCraftingTerm outputSlot; @@ -46,7 +46,7 @@ public class ContainerCraftingTerm extends ContainerMEMonitorable implements IAE public ContainerCraftingTerm( final InventoryPlayer ip, final ITerminalHost monitorable ) { super( ip, monitorable, false ); - this.ct = (PartCraftingTerminal) monitorable; + this.ct = (ICraftingTerminal) monitorable; final IInventory crafting = this.ct.getInventoryByName( "crafting" ); diff --git a/src/main/java/appeng/container/implementations/ContainerMEMonitorable.java b/src/main/java/appeng/container/implementations/ContainerMEMonitorable.java index 83d08187..1ade1340 100644 --- a/src/main/java/appeng/container/implementations/ContainerMEMonitorable.java +++ b/src/main/java/appeng/container/implementations/ContainerMEMonitorable.java @@ -47,6 +47,7 @@ import appeng.core.sync.network.NetworkHandler; import appeng.core.sync.packets.PacketMEInventoryUpdate; import appeng.core.sync.packets.PacketValueConfig; import appeng.me.helpers.ChannelPowerSrc; +import appeng.tile.legacy.TileTerminal; import appeng.util.ConfigManager; import appeng.util.IConfigManagerHost; import appeng.util.Platform; @@ -402,6 +403,9 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa public ItemStack[] getViewCells() { + if (host instanceof TileTerminal) { + return new ItemStack[0]; + } final ItemStack[] list = new ItemStack[this.cellView.length]; for( int x = 0; x < this.cellView.length; x++ ) diff --git a/src/main/java/appeng/core/api/ICraftingTerminal.java b/src/main/java/appeng/core/api/ICraftingTerminal.java new file mode 100644 index 00000000..528334b2 --- /dev/null +++ b/src/main/java/appeng/core/api/ICraftingTerminal.java @@ -0,0 +1,10 @@ +package appeng.core.api; + +import appeng.api.storage.ITerminalHost; +import net.minecraft.inventory.IInventory; + +public interface ICraftingTerminal extends ITerminalHost { + + IInventory getInventoryByName(final String name); + +} diff --git a/src/main/java/appeng/core/api/definitions/ApiBlocks.java b/src/main/java/appeng/core/api/definitions/ApiBlocks.java index da087dc4..1ff7ac58 100644 --- a/src/main/java/appeng/core/api/definitions/ApiBlocks.java +++ b/src/main/java/appeng/core/api/definitions/ApiBlocks.java @@ -27,6 +27,7 @@ import appeng.block.AEBaseSlabBlock; import appeng.block.crafting.*; import appeng.block.grindstone.BlockCrank; import appeng.block.grindstone.BlockGrinder; +import appeng.block.legacy.BlockCraftTerminal; import appeng.block.legacy.BlockTerminal; import appeng.block.misc.*; import appeng.block.networking.*; @@ -132,6 +133,7 @@ public final class ApiBlocks implements IBlocks //Legacy private final ITileDefinition terminal; + private final ITileDefinition craftTerminal; public ApiBlocks( final DefinitionConstructor constructor ) { @@ -224,6 +226,7 @@ public final class ApiBlocks implements IBlocks //Legacy this.terminal = constructor.registerTileDefinition( new BlockTerminal() ); + this.craftTerminal = constructor.registerTileDefinition( new BlockCraftTerminal() ); } diff --git a/src/main/java/appeng/core/sync/GuiBridge.java b/src/main/java/appeng/core/sync/GuiBridge.java index 4a484c49..83451b0b 100644 --- a/src/main/java/appeng/core/sync/GuiBridge.java +++ b/src/main/java/appeng/core/sync/GuiBridge.java @@ -43,6 +43,7 @@ import appeng.container.AEBaseContainer; import appeng.container.ContainerNull; import appeng.container.ContainerOpenContext; import appeng.container.implementations.*; +import appeng.core.api.ICraftingTerminal; import appeng.core.stats.Achievements; import appeng.helpers.IInterfaceHost; import appeng.helpers.IPriorityHost; @@ -51,7 +52,6 @@ import appeng.items.contents.QuartzKnifeObj; import appeng.parts.automation.PartFormationPlane; import appeng.parts.automation.PartLevelEmitter; import appeng.parts.misc.PartStorageBus; -import appeng.parts.reporting.PartCraftingTerminal; import appeng.parts.reporting.PartInterfaceTerminal; import appeng.parts.reporting.PartPatternTerminal; import appeng.tile.crafting.TileCraftingTile; @@ -129,7 +129,7 @@ public enum GuiBridge implements IGuiHandler GUI_SECURITY( ContainerSecurity.class, TileSecurity.class, GuiHostType.WORLD, SecurityPermissions.SECURITY ), - GUI_CRAFTING_TERMINAL( ContainerCraftingTerm.class, PartCraftingTerminal.class, GuiHostType.WORLD, SecurityPermissions.CRAFT ), + GUI_CRAFTING_TERMINAL( ContainerCraftingTerm.class, ICraftingTerminal.class, GuiHostType.WORLD, SecurityPermissions.CRAFT ), GUI_PATTERN_TERMINAL( ContainerPatternTerm.class, PartPatternTerminal.class, GuiHostType.WORLD, SecurityPermissions.CRAFT ), diff --git a/src/main/java/appeng/parts/reporting/PartCraftingTerminal.java b/src/main/java/appeng/parts/reporting/PartCraftingTerminal.java index 2f2fb897..e595dff2 100644 --- a/src/main/java/appeng/parts/reporting/PartCraftingTerminal.java +++ b/src/main/java/appeng/parts/reporting/PartCraftingTerminal.java @@ -20,6 +20,7 @@ package appeng.parts.reporting; import appeng.client.texture.CableBusTextures; +import appeng.core.api.ICraftingTerminal; import appeng.core.sync.GuiBridge; import appeng.helpers.Reflected; import appeng.tile.inventory.AppEngInternalInventory; @@ -31,7 +32,7 @@ import net.minecraft.nbt.NBTTagCompound; import java.util.List; -public class PartCraftingTerminal extends AbstractPartTerminal +public class PartCraftingTerminal extends AbstractPartTerminal implements ICraftingTerminal { private static final CableBusTextures FRONT_BRIGHT_ICON = CableBusTextures.PartCraftingTerm_Bright; private static final CableBusTextures FRONT_DARK_ICON = CableBusTextures.PartCraftingTerm_Dark; diff --git a/src/main/java/appeng/tile/AEBaseTile.java b/src/main/java/appeng/tile/AEBaseTile.java index 740db033..ad9e6e13 100644 --- a/src/main/java/appeng/tile/AEBaseTile.java +++ b/src/main/java/appeng/tile/AEBaseTile.java @@ -111,7 +111,7 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile, @Override // NOTE: WAS FINAL, changed for Immibis - public final void readFromNBT( final NBTTagCompound data ) + public void readFromNBT(final NBTTagCompound data) { super.readFromNBT( data ); @@ -144,7 +144,7 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile, @Override // NOTE: WAS FINAL, changed for Immibis - public final void writeToNBT( final NBTTagCompound data ) + public void writeToNBT(final NBTTagCompound data) { super.writeToNBT( data ); diff --git a/src/main/java/appeng/tile/legacy/TileCraftTerminal.java b/src/main/java/appeng/tile/legacy/TileCraftTerminal.java new file mode 100644 index 00000000..07407f77 --- /dev/null +++ b/src/main/java/appeng/tile/legacy/TileCraftTerminal.java @@ -0,0 +1,43 @@ +package appeng.tile.legacy; + +import appeng.core.api.ICraftingTerminal; +import appeng.tile.inventory.AppEngInternalInventory; +import appeng.tile.inventory.IAEAppEngInventory; +import appeng.tile.inventory.InvOperation; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class TileCraftTerminal extends TileTerminal implements ICraftingTerminal, IAEAppEngInventory { + + private final AppEngInternalInventory craftingGrid = new AppEngInternalInventory( this, 9 ); + + @Override + public IInventory getInventoryByName(String name) { + if( name.equals( "crafting" ) ) + { + return this.craftingGrid; + } + return null; + } + + @Override + public void onChangeInventory(IInventory inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack) { + this.markDirty(); + } + + @Override + public void readFromNBT( final NBTTagCompound data ) + { + super.readFromNBT( data ); + this.craftingGrid.readFromNBT( data, "craftingGrid" ); + } + + @Override + public void writeToNBT( final NBTTagCompound data ) + { + super.writeToNBT( data ); + this.craftingGrid.writeToNBT( data, "craftingGrid" ); + } + +} diff --git a/src/main/java/appeng/tile/legacy/TileTerminal.java b/src/main/java/appeng/tile/legacy/TileTerminal.java index 845123c3..0aeabdb5 100644 --- a/src/main/java/appeng/tile/legacy/TileTerminal.java +++ b/src/main/java/appeng/tile/legacy/TileTerminal.java @@ -9,14 +9,10 @@ import appeng.api.storage.*; import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEItemStack; import appeng.api.util.IConfigManager; -import appeng.core.sync.GuiBridge; import appeng.me.GridAccessException; import appeng.tile.grid.AENetworkTile; -import appeng.tile.storage.TileChest; import appeng.util.ConfigManager; import appeng.util.IConfigManagerHost; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; import net.minecraftforge.common.util.ForgeDirection; import java.util.EnumSet; diff --git a/src/main/resources/assets/appliedenergistics2/lang/en_US.lang b/src/main/resources/assets/appliedenergistics2/lang/en_US.lang index f6d80ec0..2a2388a9 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/en_US.lang +++ b/src/main/resources/assets/appliedenergistics2/lang/en_US.lang @@ -53,6 +53,7 @@ tile.appliedenergistics2.BlockMolecularAssembler.name=Molecular Assembler #Legacy tile.appliedenergistics2.BlockTerminal.name=ME Access Terminal +tile.appliedenergistics2.BlockCraftTerminal.name=ME Crafting Terminal item.appliedenergistics2.ItemMaterial.ConversionMatrix.name=Conversion Matrix diff --git a/src/main/resources/assets/appliedenergistics2/recipes/legacy/index.recipe b/src/main/resources/assets/appliedenergistics2/recipes/legacy/index.recipe index c1626281..0a3fc72e 100644 --- a/src/main/resources/assets/appliedenergistics2/recipes/legacy/index.recipe +++ b/src/main/resources/assets/appliedenergistics2/recipes/legacy/index.recipe @@ -15,3 +15,9 @@ shaped= ae2:CableGlass.Fluix ae2:ItemMaterial.ConversionMatrix glass, oredictionary:ingotIron oredictionary:ingotIron glass -> ae2:BlockTerminal + +shaped= + oredictionary:ingotIron oredictionary:ingotIron glass, + oredictionary:craftingTableWood ae2:ItemMaterial.Cell1kPart ae2:BlockTerminal, + oredictionary:ingotIron oredictionary:ingotIron glass + -> ae2:BlockCraftTerminal diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftTerminal.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftTerminal.png new file mode 100644 index 0000000000000000000000000000000000000000..7ec66578158e7a321dc0d6e99aeaeb072c4130f4 GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF8om~%3A2F8tJP2|NnnClN={dJ!6u$y9>Ac^&9L@rd$YKTt zzGWcH*nVeaK2Xr!)5S4_<9c#}NJvl+5TykaGBUfjO)xPiNDpW2OC7#SEE z>lzsA8XAQdSXdbwTNzsD8kkxc7+iBbxgSMCZhlH;S|wbAfk}vwv6TT3ndlmr0X2NR z%Do<_K?-C;aDG}zd16s2LqK9?UWuNcYluRbv7V`(p@G4dqJ=eN`=0SqpttBVD!s|NqYv?RyDS&zR)x?!qm9{m20zhqJ&VvY3H^ zZy5+Pw%=Kq4-~Zbba4#fxSpIK5)u>yL}>wqjLhzB6HE*W(gPX|=190G@VK{laL$ra z(VVkO#<0ZlpiXI0#(XKsC2?}191KoVwPdSO8NLFIQY~?fC`m~yNwrEYN(E93Mh1q) zx(3F&hDIR<7FNc_R)!Y32Bua92G?9q?nlv(o1c=IRteW&U=m_vY-IpMCb|Y@Kn-87 za<2z!kOJ8doS#-wo>-L15RjOeSEA?V8lq5UtY@lcXkhTAXdzG)gQu&X%Q~loCIDqY BYh3^U literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftTerminalFront.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftTerminalFront.png new file mode 100644 index 0000000000000000000000000000000000000000..ff40036f6d77f52b2ec637906154312292a022d1 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z_$#98Qbry z%m)femAFQf1m~xflqVLYG6W=M=9TFAxrQi|8S9zq85$UTDOw0rwa3%NF~q`u?c`Xl zLk0pZ#r&Ff8LKq5U3qk#(WXuOliI!tw)GElllGs`Td1}vft{_bEZyjK!1lGz7v}Hz zbY<YVFwlG^@l&nDKrdx##z?BEo`%>P*F}hgH*@Qvc0o8K0GMB;=#P+o<8q~ zBcjK6y_SVA=N^#DY-nZh|0X@f&)4*T@ma3N4BU-ue~P(pvZ)5IYGm^%;#TqQU_JBb zqUaJieVr*kB{qBvT~j1?qMy~(c*5hl?=xRZ%ip_hUt9G{{J|TbKNvh+{an^LB{Ts5 DH}Zm4 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftTerminalSide.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftTerminalSide.png new file mode 100644 index 0000000000000000000000000000000000000000..6c7e4831f00092a2dd623bf67ad9459ea03435c6 GIT binary patch literal 438 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>!~(0G-#;Ey4VVSyJMySIh+L^k;M!Qe9J(XvHi}XUXZc~`OR4l}sqx!r49 z{saW3Id1C^Qz^E+$In#AS<3zX@l2r6swJ)wB`Jv|saDBFsX&Us$iUE8*T7iU&?v;f z!phj#%FsgBz|_jX;F{~n{U{o8^HVa@D&ZOoOhSx|tqg$3MAyI!sNw5X?)5+oQXm_G t^V3So6N^$A0unRxO7#3(Llnx4^-T2)4Gg{%Ed;7!@O1TaS?83{1OV!5doch2 literal 0 HcmV?d00001