diff options
author | Tec <daniel112092@gmail.com> | 2020-04-28 21:47:13 +0200 |
---|---|---|
committer | Tec <daniel112092@gmail.com> | 2020-04-28 21:47:13 +0200 |
commit | c6615bd442b41170c6ab46d948d832bc063f2b4a (patch) | |
tree | 4438881131418c70dc37bb2cd6d235ef6e7df464 /src/main/java/com | |
parent | d58f2055aab235a3f3ead64ef86d1dc39396cae5 (diff) | |
download | GT5-Unofficial-c6615bd442b41170c6ab46d948d832bc063f2b4a.tar.gz GT5-Unofficial-c6615bd442b41170c6ab46d948d832bc063f2b4a.tar.bz2 GT5-Unofficial-c6615bd442b41170c6ab46d948d832bc063f2b4a.zip |
Add optional hatch adders
Diffstat (limited to 'src/main/java/com')
2 files changed, 62 insertions, 7 deletions
diff --git a/src/main/java/com/github/technus/tectech/mechanics/structure/StructureUtility.java b/src/main/java/com/github/technus/tectech/mechanics/structure/StructureUtility.java index 1658620d2e..467140cb2c 100644 --- a/src/main/java/com/github/technus/tectech/mechanics/structure/StructureUtility.java +++ b/src/main/java/com/github/technus/tectech/mechanics/structure/StructureUtility.java @@ -390,6 +390,34 @@ public class StructureUtility { }; } + public static <T> IStructureElement<T> ofHatchAdderOptional(IHatchAdder<T> iHatchAdder, int textureIndex, int dots, Block placeCasing,int placeCasingMeta){ + int meta=dots-1; + if(iHatchAdder==null){ + throw new IllegalArgumentException(); + } + return new IStructureElement<T>() { + @Override + public boolean check(T t, World world, int x, int y, int z) { + TileEntity tileEntity = world.getTileEntity(x, y, z); + return tileEntity instanceof IGregTechTileEntity && + (iHatchAdder.apply(t,(IGregTechTileEntity) tileEntity, (short)textureIndex) || + (world.getBlock(x,y,z)==placeCasing&&world.getBlockMetadata(x,y,z)==placeCasingMeta)); + } + + @Override + public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) { + TecTech.proxy.hint_particle(world,x,y,z,sHintCasingsTT,meta); + return true; + } + + @Override + public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) { + world.setBlock(x,y,z,placeCasing,placeCasingMeta,2); + return true; + } + }; + } + public static <T> IStructureElement<T> ofHatchAdder(IHatchAdder<T> iHatchAdder, int textureIndex, Block hintBlock, int hintMeta){ if(iHatchAdder==null ||hintBlock==null){ throw new IllegalArgumentException(); @@ -434,6 +462,33 @@ public class StructureUtility { }; } + public static <T> IStructureElement<T> ofHatchAdderOptional(IHatchAdder<T> iHatchAdder, int textureIndex, Block hintBlock, int hintMeta, Block placeCasing,int placeCasingMeta){ + if(iHatchAdder==null ||hintBlock==null){ + throw new IllegalArgumentException(); + } + return new IStructureElement<T>() { + @Override + public boolean check(T t, World world, int x, int y, int z) { + TileEntity tileEntity = world.getTileEntity(x, y, z); + return tileEntity instanceof IGregTechTileEntity && + (iHatchAdder.apply(t,(IGregTechTileEntity) tileEntity, (short)textureIndex) || + (world.getBlock(x,y,z)==placeCasing&&world.getBlockMetadata(x,y,z)==placeCasingMeta)); + } + + @Override + public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) { + TecTech.proxy.hint_particle(world,x,y,z,hintBlock,hintMeta); + return true; + } + + @Override + public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) { + world.setBlock(x,y,z,placeCasing,placeCasingMeta,2); + return true; + } + }; + } + public static <T> IStructureElement<T> onElementPass(Consumer<T> onCheckPass, IStructureElement<T> element){ return new IStructureElement<T>() { @Override diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_collider.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_collider.java index 924353cd29..2782e7924f 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_collider.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_collider.java @@ -325,20 +325,20 @@ public class GT_MetaTileEntity_EM_collider extends GT_MetaTileEntity_MultiblockB }) .addElement('0', ofBlock(sBlockCasingsTT,4)) .addElement('1', ofBlock(sBlockCasingsTT,7)) - .addElement('2', defer(t->(int)t.eTier,(t,item)->(item.stackSize%2)+1, + .addElement('2', defer(t->(int)t.eTier,(t,item)->(item.stackSize&1)+1, error(),ofBlock(sBlockCasingsTT,4),ofBlock(sBlockCasingsTT,5))) .addElement('3', ofBlock(QuantumGlassBlock.INSTANCE,0)) - .addElement('4', defer(t->(int)t.eTier,(t,item)->(item.stackSize%2)+1, + .addElement('4', defer(t->(int)t.eTier,(t,item)->(item.stackSize&1)+1, error(),ofBlock(sBlockCasingsTT,4),ofBlock(sBlockCasingsTT,6))) - .addElement('5', defer(t->(int)t.eTier,(t,item)->(item.stackSize%2)+1, + .addElement('5', defer(t->(int)t.eTier,(t,item)->(item.stackSize&1)+1, error(),ofBlock(sBlockCasingsTT,8),ofBlock(sBlockCasingsTT,9))) - .addElement('&', ofHatchAdder(GT_MetaTileEntity_EM_collider::addClassicToMachineList, + .addElement('&', ofHatchAdderOptional(GT_MetaTileEntity_EM_collider::addClassicToMachineList, textureOffset,1,sBlockCasingsTT,0)) - .addElement('!', ofHatchAdder(GT_MetaTileEntity_EM_collider::addElementalInputToMachineList, + .addElement('!', ofHatchAdderOptional(GT_MetaTileEntity_EM_collider::addElementalInputToMachineList, textureOffset + 4,2,sBlockCasingsTT,4)) - .addElement('$', ofHatchAdder(GT_MetaTileEntity_EM_collider::addElementalOutputToMachineList, + .addElement('$', ofHatchAdderOptional(GT_MetaTileEntity_EM_collider::addElementalOutputToMachineList, textureOffset + 4,3,sBlockCasingsTT,4)) - .addElement('#', ofHatchAdder(GT_MetaTileEntity_EM_collider::addElementalMufflerToMachineList, + .addElement('#', ofHatchAdderOptional(GT_MetaTileEntity_EM_collider::addElementalMufflerToMachineList, textureOffset + 4,4,sBlockCasingsTT,4)) .build(); private static final String[] description = new String[]{ |