From ab566297fab959619b883c4c4b247b76cdb00f64 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Tue, 20 Oct 2015 00:22:36 +0200 Subject: [PATCH] Added Laser Relay Functionality: -Connections & Networks -Power Transfer Yet to do: -NBT Saving -Graphics --- .../blocks/BlockLaserRelay.java | 2 +- .../blocks/render/ModelLaserRelay.java | 531 +++++------------- .../actuallyadditions/items/InitItems.java | 5 + .../items/ItemLaserWrench.java | 99 ++++ .../items/ItemPhantomConnector.java | 18 +- .../misc/LaserRelayConnectionHandler.java | 74 ++- .../actuallyadditions/misc/WorldData.java | 6 +- .../actuallyadditions/proxy/ClientProxy.java | 4 +- .../tile/TileEntityLaserRelay.java | 27 +- .../actuallyadditions/util/WorldPos.java | 4 + 10 files changed, 357 insertions(+), 413 deletions(-) create mode 100644 src/main/java/ellpeck/actuallyadditions/items/ItemLaserWrench.java diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/BlockLaserRelay.java b/src/main/java/ellpeck/actuallyadditions/blocks/BlockLaserRelay.java index f41622aa8..094194e80 100644 --- a/src/main/java/ellpeck/actuallyadditions/blocks/BlockLaserRelay.java +++ b/src/main/java/ellpeck/actuallyadditions/blocks/BlockLaserRelay.java @@ -62,7 +62,7 @@ public class BlockLaserRelay extends BlockContainerBase implements IActAddItemOr @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconReg){ - this.blockIcon = Blocks.beacon.getIcon(0, 0); + this.blockIcon = Blocks.coal_block.getIcon(0, 0); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/blocks/render/ModelLaserRelay.java b/src/main/java/ellpeck/actuallyadditions/blocks/render/ModelLaserRelay.java index 2dbb77ea7..aa3b65fde 100644 --- a/src/main/java/ellpeck/actuallyadditions/blocks/render/ModelLaserRelay.java +++ b/src/main/java/ellpeck/actuallyadditions/blocks/render/ModelLaserRelay.java @@ -11,406 +11,157 @@ package ellpeck.actuallyadditions.blocks.render; import net.minecraft.client.model.ModelRenderer; +import org.lwjgl.opengl.GL11; public class ModelLaserRelay extends ModelBaseAA{ - private ModelRenderer[] shapes = new ModelRenderer[64]; + ModelRenderer bottom; + ModelRenderer laserPillar; + ModelRenderer laserBase; + ModelRenderer covering1; + ModelRenderer covering2; + ModelRenderer covering3; + ModelRenderer covering4; + ModelRenderer covering5; + ModelRenderer covering6; + ModelRenderer covering7; + ModelRenderer covering8; + ModelRenderer top; + ModelRenderer covering9; + ModelRenderer covering10; + ModelRenderer covering11; + ModelRenderer covering12; + ModelRenderer energyBall; public ModelLaserRelay(){ - textureWidth = 128; - textureHeight = 128; + textureWidth = 64; + textureHeight = 64; - this.shapes[0] = new ModelRenderer(this, 0, 0); - this.shapes[0].addBox(0F, 0F, 0F, 10, 1, 10); - this.shapes[0].setRotationPoint(-5F, 23F, -5F); - this.shapes[0].setTextureSize(128, 128); - this.shapes[0].mirror = true; - setRotation(this.shapes[0], 0F, 0F, 0F); - this.shapes[1] = new ModelRenderer(this, 0, 12); - this.shapes[1].addBox(0F, 0F, 0F, 1, 3, 10); - this.shapes[1].setRotationPoint(-6F, 20F, -5F); - this.shapes[1].setTextureSize(128, 128); - this.shapes[1].mirror = true; - setRotation(this.shapes[1], 0F, 0F, 0F); - this.shapes[2] = new ModelRenderer(this, 0, 12); - this.shapes[2].addBox(0F, 0F, 0F, 1, 3, 10); - this.shapes[2].setRotationPoint(5F, 20F, -5F); - this.shapes[2].setTextureSize(128, 128); - this.shapes[2].mirror = true; - setRotation(this.shapes[2], 0F, 0F, 0F); - this.shapes[3] = new ModelRenderer(this, 0, 12); - this.shapes[3].addBox(0F, 0F, 0F, 1, 3, 10); - this.shapes[3].setRotationPoint(-5F, 20F, -5F); - this.shapes[3].setTextureSize(128, 128); - this.shapes[3].mirror = true; - setRotation(this.shapes[3], 0F, 1.579523F, 0F); - this.shapes[4] = new ModelRenderer(this, 0, 12); - this.shapes[4].addBox(0F, 0F, 0F, 1, 3, 10); - this.shapes[4].setRotationPoint(-5F, 20F, 6F); - this.shapes[4].setTextureSize(128, 128); - this.shapes[4].mirror = true; - setRotation(this.shapes[4], 0F, 1.579523F, 0F); - this.shapes[5] = new ModelRenderer(this, 23, 12); - this.shapes[5].addBox(0F, 0F, 0F, 1, 1, 8); - this.shapes[5].setRotationPoint(-7F, 14F, -4F); - this.shapes[5].setTextureSize(128, 128); - this.shapes[5].mirror = true; - setRotation(this.shapes[5], 0F, 0F, 0F); - this.shapes[6] = new ModelRenderer(this, 23, 12); - this.shapes[6].addBox(0F, 0F, 0F, 1, 1, 8); - this.shapes[6].setRotationPoint(6F, 14F, -4F); - this.shapes[6].setTextureSize(128, 128); - this.shapes[6].mirror = true; - setRotation(this.shapes[6], 0F, 0F, 0F); - this.shapes[7] = new ModelRenderer(this, 23, 12); - this.shapes[7].addBox(0F, 0F, 0F, 1, 1, 8); - this.shapes[7].setRotationPoint(-4F, 14F, -6F); - this.shapes[7].setTextureSize(128, 128); - this.shapes[7].mirror = true; - setRotation(this.shapes[7], 0F, 1.579523F, 0F); - this.shapes[8] = new ModelRenderer(this, 23, 12); - this.shapes[8].addBox(0F, 0F, 0F, 1, 1, 8); - this.shapes[8].setRotationPoint(-4F, 14F, 7F); - this.shapes[8].setTextureSize(128, 128); - this.shapes[8].mirror = true; - setRotation(this.shapes[8], 0F, 1.579523F, 0F); - this.shapes[9] = new ModelRenderer(this, 0, 26); - this.shapes[9].addBox(0F, 0F, 0F, 12, 1, 2); - this.shapes[9].setRotationPoint(-6F, 18F, -1F); - this.shapes[9].setTextureSize(128, 128); - this.shapes[9].mirror = true; - setRotation(this.shapes[9], 0F, 0F, 0F); - this.shapes[10] = new ModelRenderer(this, 41, 0); - this.shapes[10].addBox(0F, 0F, 0F, 2, 1, 5); - this.shapes[10].setRotationPoint(-1F, 18F, 1F); - this.shapes[10].setTextureSize(128, 128); - this.shapes[10].mirror = true; - setRotation(this.shapes[10], 0F, 0F, 0F); - this.shapes[11] = new ModelRenderer(this, 41, 0); - this.shapes[11].addBox(0F, 0F, 0F, 2, 1, 5); - this.shapes[11].setRotationPoint(-1F, 18F, -6F); - this.shapes[11].setTextureSize(128, 128); - this.shapes[11].mirror = true; - setRotation(this.shapes[11], 0F, 0F, 0F); - this.shapes[12] = new ModelRenderer(this, 41, 7); - this.shapes[12].addBox(0F, 0F, 0F, 1, 2, 4); - this.shapes[12].setRotationPoint(-2F, 16F, 2F); - this.shapes[12].setTextureSize(128, 128); - this.shapes[12].mirror = true; - setRotation(this.shapes[12], 0F, 0F, 0F); - this.shapes[13] = new ModelRenderer(this, 41, 7); - this.shapes[13].addBox(0F, 0F, 0F, 1, 2, 4); - this.shapes[13].setRotationPoint(1F, 16F, 2F); - this.shapes[13].setTextureSize(128, 128); - this.shapes[13].mirror = true; - setRotation(this.shapes[13], 0F, 0F, 0F); - this.shapes[14] = new ModelRenderer(this, 41, 7); - this.shapes[14].addBox(0F, 0F, 0F, 1, 2, 4); - this.shapes[14].setRotationPoint(-2F, 16F, -6F); - this.shapes[14].setTextureSize(128, 128); - this.shapes[14].mirror = true; - setRotation(this.shapes[14], 0F, 0F, 0F); - this.shapes[15] = new ModelRenderer(this, 41, 7); - this.shapes[15].addBox(0F, 0F, 0F, 1, 2, 4); - this.shapes[15].setRotationPoint(1F, 16F, -6F); - this.shapes[15].setTextureSize(128, 128); - this.shapes[15].mirror = true; - setRotation(this.shapes[15], 0F, 0F, 0F); - this.shapes[16] = new ModelRenderer(this, 41, 7); - this.shapes[16].addBox(0F, 0F, 0F, 1, 2, 4); - this.shapes[16].setRotationPoint(-6F, 16F, 2F); - this.shapes[16].setTextureSize(128, 128); - this.shapes[16].mirror = true; - setRotation(this.shapes[16], 0F, 1.579523F, 0F); - this.shapes[17] = new ModelRenderer(this, 41, 7); - this.shapes[17].addBox(0F, 0F, 0F, 1, 2, 4); - this.shapes[17].setRotationPoint(-6F, 16F, -1F); - this.shapes[17].setTextureSize(128, 128); - this.shapes[17].mirror = true; - setRotation(this.shapes[17], 0F, 1.579523F, 0F); - this.shapes[18] = new ModelRenderer(this, 41, 7); - this.shapes[18].addBox(0F, 0F, 0F, 1, 2, 4); - this.shapes[18].setRotationPoint(2F, 16F, 2F); - this.shapes[18].setTextureSize(128, 128); - this.shapes[18].mirror = true; - setRotation(this.shapes[18], 0F, 1.579523F, 0F); - this.shapes[19] = new ModelRenderer(this, 41, 7); - this.shapes[19].addBox(0F, 0F, 0F, 1, 2, 4); - this.shapes[19].setRotationPoint(2F, 16F, -1F); - this.shapes[19].setTextureSize(128, 128); - this.shapes[19].mirror = true; - setRotation(this.shapes[19], 0F, 1.579523F, 0F); - this.shapes[20] = new ModelRenderer(this, 0, 26); - this.shapes[20].addBox(0F, 0F, 0F, 12, 1, 2); - this.shapes[20].setRotationPoint(-6F, 15F, -1F); - this.shapes[20].setTextureSize(128, 128); - this.shapes[20].mirror = true; - setRotation(this.shapes[20], 0F, 0F, 0F); - this.shapes[21] = new ModelRenderer(this, 41, 0); - this.shapes[21].addBox(0F, 0F, 0F, 2, 1, 5); - this.shapes[21].setRotationPoint(-1F, 15F, 1F); - this.shapes[21].setTextureSize(128, 128); - this.shapes[21].mirror = true; - setRotation(this.shapes[21], 0F, 0F, 0F); - this.shapes[22] = new ModelRenderer(this, 41, 0); - this.shapes[22].addBox(0F, 0F, 0F, 2, 1, 5); - this.shapes[22].setRotationPoint(-1F, 15F, -6F); - this.shapes[22].setTextureSize(128, 128); - this.shapes[22].mirror = true; - setRotation(this.shapes[22], 0F, 0F, 0F); - this.shapes[23] = new ModelRenderer(this, 23, 23); - this.shapes[23].addBox(0F, 0F, 0F, 3, 1, 1); - this.shapes[23].setRotationPoint(-4F, 18F, -7F); - this.shapes[23].setTextureSize(128, 128); - this.shapes[23].mirror = true; - setRotation(this.shapes[23], 0F, 0F, 0F); - this.shapes[24] = new ModelRenderer(this, 23, 23); - this.shapes[24].addBox(0F, 0F, 0F, 3, 1, 1); - this.shapes[24].setRotationPoint(1F, 18F, -7F); - this.shapes[24].setTextureSize(128, 128); - this.shapes[24].mirror = true; - setRotation(this.shapes[24], 0F, 0F, 0F); - this.shapes[25] = new ModelRenderer(this, 23, 23); - this.shapes[25].addBox(0F, 0F, 0F, 3, 1, 1); - this.shapes[25].setRotationPoint(-4F, 18F, 6F); - this.shapes[25].setTextureSize(128, 128); - this.shapes[25].mirror = true; - setRotation(this.shapes[25], 0F, 0F, 0F); - this.shapes[26] = new ModelRenderer(this, 23, 23); - this.shapes[26].addBox(0F, 0F, 0F, 3, 1, 1); - this.shapes[26].setRotationPoint(1F, 18F, 6F); - this.shapes[26].setTextureSize(128, 128); - this.shapes[26].mirror = true; - setRotation(this.shapes[26], 0F, 0F, 0F); - this.shapes[27] = new ModelRenderer(this, 23, 23); - this.shapes[27].addBox(0F, 0F, 0F, 3, 1, 1); - this.shapes[27].setRotationPoint(-7F, 18F, 4F); - this.shapes[27].setTextureSize(128, 128); - this.shapes[27].mirror = true; - setRotation(this.shapes[27], 0F, 1.579523F, 0F); - this.shapes[28] = new ModelRenderer(this, 23, 23); - this.shapes[28].addBox(0F, 0F, 0F, 3, 1, 1); - this.shapes[28].setRotationPoint(-7F, 18F, -1F); - this.shapes[28].setTextureSize(128, 128); - this.shapes[28].mirror = true; - setRotation(this.shapes[28], 0F, 1.579523F, 0F); - this.shapes[29] = new ModelRenderer(this, 23, 23); - this.shapes[29].addBox(0F, 0F, 0F, 3, 1, 1); - this.shapes[29].setRotationPoint(6F, 18F, 4F); - this.shapes[29].setTextureSize(128, 128); - this.shapes[29].mirror = true; - setRotation(this.shapes[29], 0F, 1.579523F, 0F); - this.shapes[30] = new ModelRenderer(this, 23, 23); - this.shapes[30].addBox(0F, 0F, 0F, 3, 1, 1); - this.shapes[30].setRotationPoint(6F, 18F, -1F); - this.shapes[30].setTextureSize(128, 128); - this.shapes[30].mirror = true; - setRotation(this.shapes[30], 0F, 1.579523F, 0F); - this.shapes[31] = new ModelRenderer(this, 42, 14); - this.shapes[31].addBox(0F, 0F, 0F, 1, 2, 2); - this.shapes[31].setRotationPoint(-7F, 16F, -4F); - this.shapes[31].setTextureSize(128, 128); - this.shapes[31].mirror = true; - setRotation(this.shapes[31], 0F, 0F, 0F); - this.shapes[32] = new ModelRenderer(this, 42, 14); - this.shapes[32].addBox(0F, 0F, 0F, 1, 2, 2); - this.shapes[32].setRotationPoint(-7F, 16F, 2F); - this.shapes[32].setTextureSize(128, 128); - this.shapes[32].mirror = true; - setRotation(this.shapes[32], 0F, 0F, 0F); - this.shapes[33] = new ModelRenderer(this, 42, 14); - this.shapes[33].addBox(0F, 0F, 0F, 1, 2, 2); - this.shapes[33].setRotationPoint(6F, 16F, 2F); - this.shapes[33].setTextureSize(128, 128); - this.shapes[33].mirror = true; - setRotation(this.shapes[33], 0F, 0F, 0F); - this.shapes[34] = new ModelRenderer(this, 42, 14); - this.shapes[34].addBox(0F, 0F, 0F, 1, 2, 2); - this.shapes[34].setRotationPoint(6F, 16F, -4F); - this.shapes[34].setTextureSize(128, 128); - this.shapes[34].mirror = true; - setRotation(this.shapes[34], 0F, 0F, 0F); - this.shapes[35] = new ModelRenderer(this, 42, 14); - this.shapes[35].addBox(0F, 0F, 0F, 1, 2, 2); - this.shapes[35].setRotationPoint(2F, 16F, -6F); - this.shapes[35].setTextureSize(128, 128); - this.shapes[35].mirror = true; - setRotation(this.shapes[35], 0F, 1.579523F, 0F); - this.shapes[36] = new ModelRenderer(this, 42, 14); - this.shapes[36].addBox(0F, 0F, 0F, 1, 2, 2); - this.shapes[36].setRotationPoint(-4F, 16F, -6F); - this.shapes[36].setTextureSize(128, 128); - this.shapes[36].mirror = true; - setRotation(this.shapes[36], 0F, 1.579523F, 0F); - this.shapes[37] = new ModelRenderer(this, 42, 14); - this.shapes[37].addBox(0F, 0F, 0F, 1, 2, 2); - this.shapes[37].setRotationPoint(2F, 16F, 7F); - this.shapes[37].setTextureSize(128, 128); - this.shapes[37].mirror = true; - setRotation(this.shapes[37], 0F, 1.579523F, 0F); - this.shapes[38] = new ModelRenderer(this, 42, 14); - this.shapes[38].addBox(0F, 0F, 0F, 1, 2, 2); - this.shapes[38].setRotationPoint(-4F, 16F, 7F); - this.shapes[38].setTextureSize(128, 128); - this.shapes[38].mirror = true; - setRotation(this.shapes[38], 0F, 1.579523F, 0F); - this.shapes[39] = new ModelRenderer(this, 23, 23); - this.shapes[39].addBox(0F, 0F, 0F, 3, 1, 1); - this.shapes[39].setRotationPoint(6F, 15F, 4F); - this.shapes[39].setTextureSize(128, 128); - this.shapes[39].mirror = true; - setRotation(this.shapes[39], 0F, 1.579523F, 0F); - this.shapes[40] = new ModelRenderer(this, 23, 23); - this.shapes[40].addBox(0F, 0F, 0F, 3, 1, 1); - this.shapes[40].setRotationPoint(6F, 15F, -1F); - this.shapes[40].setTextureSize(128, 128); - this.shapes[40].mirror = true; - setRotation(this.shapes[40], 0F, 1.579523F, 0F); - this.shapes[41] = new ModelRenderer(this, 23, 23); - this.shapes[41].addBox(0F, 0F, 0F, 3, 1, 1); - this.shapes[41].setRotationPoint(1F, 15F, -7F); - this.shapes[41].setTextureSize(128, 128); - this.shapes[41].mirror = true; - setRotation(this.shapes[41], 0F, 0F, 0F); - this.shapes[42] = new ModelRenderer(this, 23, 23); - this.shapes[42].addBox(0F, 0F, 0F, 3, 1, 1); - this.shapes[42].setRotationPoint(-4F, 15F, -7F); - this.shapes[42].setTextureSize(128, 128); - this.shapes[42].mirror = true; - setRotation(this.shapes[42], 0F, 0F, 0F); - this.shapes[43] = new ModelRenderer(this, 23, 23); - this.shapes[43].addBox(0F, 0F, 0F, 3, 1, 1); - this.shapes[43].setRotationPoint(-7F, 15F, -1F); - this.shapes[43].setTextureSize(128, 128); - this.shapes[43].mirror = true; - setRotation(this.shapes[43], 0F, 1.579523F, 0F); - this.shapes[44] = new ModelRenderer(this, 23, 23); - this.shapes[44].addBox(0F, 0F, 0F, 3, 1, 1); - this.shapes[44].setRotationPoint(-7F, 15F, 4F); - this.shapes[44].setTextureSize(128, 128); - this.shapes[44].mirror = true; - setRotation(this.shapes[44], 0F, 1.579523F, 0F); - this.shapes[45] = new ModelRenderer(this, 23, 23); - this.shapes[45].addBox(0F, 0F, 0F, 3, 1, 1); - this.shapes[45].setRotationPoint(-4F, 15F, 6F); - this.shapes[45].setTextureSize(128, 128); - this.shapes[45].mirror = true; - setRotation(this.shapes[45], 0F, 0F, 0F); - this.shapes[46] = new ModelRenderer(this, 23, 23); - this.shapes[46].addBox(0F, 0F, 0F, 3, 1, 1); - this.shapes[46].setRotationPoint(1F, 15F, 6F); - this.shapes[46].setTextureSize(128, 128); - this.shapes[46].mirror = true; - setRotation(this.shapes[46], 0F, 0F, 0F); - this.shapes[47] = new ModelRenderer(this, 0, 12); - this.shapes[47].addBox(0F, 0F, 0F, 1, 3, 10); - this.shapes[47].setRotationPoint(-5F, 11F, -5F); - this.shapes[47].setTextureSize(128, 128); - this.shapes[47].mirror = true; - setRotation(this.shapes[47], 0F, 1.579523F, 0F); - this.shapes[48] = new ModelRenderer(this, 0, 12); - this.shapes[48].addBox(0F, 0F, 0F, 1, 3, 10); - this.shapes[48].setRotationPoint(-6F, 11F, -5F); - this.shapes[48].setTextureSize(128, 128); - this.shapes[48].mirror = true; - setRotation(this.shapes[48], 0F, 0F, 0F); - this.shapes[49] = new ModelRenderer(this, 0, 12); - this.shapes[49].addBox(0F, 0F, 0F, 1, 3, 10); - this.shapes[49].setRotationPoint(-5F, 11F, 6F); - this.shapes[49].setTextureSize(128, 128); - this.shapes[49].mirror = true; - setRotation(this.shapes[49], 0F, 1.579523F, 0F); - this.shapes[50] = new ModelRenderer(this, 0, 12); - this.shapes[50].addBox(0F, 0F, 0F, 1, 3, 10); - this.shapes[50].setRotationPoint(5F, 11F, -5F); - this.shapes[50].setTextureSize(128, 128); - this.shapes[50].mirror = true; - setRotation(this.shapes[50], 0F, 0F, 0F); - this.shapes[51] = new ModelRenderer(this, 56, 0); - this.shapes[51].addBox(0F, 0F, 0F, 1, 14, 1); - this.shapes[51].setRotationPoint(-2F, 9F, -2F); - this.shapes[51].setTextureSize(128, 128); - this.shapes[51].mirror = true; - setRotation(this.shapes[51], 0F, 0F, 0F); - this.shapes[52] = new ModelRenderer(this, 23, 12); - this.shapes[52].addBox(0F, 0F, 0F, 1, 1, 8); - this.shapes[52].setRotationPoint(6F, 19F, -4F); - this.shapes[52].setTextureSize(128, 128); - this.shapes[52].mirror = true; - setRotation(this.shapes[52], 0F, 0F, 0F); - this.shapes[53] = new ModelRenderer(this, 23, 12); - this.shapes[53].addBox(0F, 0F, 0F, 1, 1, 8); - this.shapes[53].setRotationPoint(-4F, 19F, 7F); - this.shapes[53].setTextureSize(128, 128); - this.shapes[53].mirror = true; - setRotation(this.shapes[53], 0F, 1.579523F, 0F); - this.shapes[54] = new ModelRenderer(this, 23, 12); - this.shapes[54].addBox(0F, 0F, 0F, 1, 1, 8); - this.shapes[54].setRotationPoint(-7F, 19F, -4F); - this.shapes[54].setTextureSize(128, 128); - this.shapes[54].mirror = true; - setRotation(this.shapes[54], 0F, 0F, 0F); - this.shapes[55] = new ModelRenderer(this, 23, 12); - this.shapes[55].addBox(0F, 0F, 0F, 1, 1, 8); - this.shapes[55].setRotationPoint(-4F, 19F, -6F); - this.shapes[55].setTextureSize(128, 128); - this.shapes[55].mirror = true; - setRotation(this.shapes[55], 0F, 1.579523F, 0F); - this.shapes[56] = new ModelRenderer(this, 56, 0); - this.shapes[56].addBox(0F, 0F, 0F, 1, 14, 1); - this.shapes[56].setRotationPoint(1F, 9F, -2F); - this.shapes[56].setTextureSize(128, 128); - this.shapes[56].mirror = true; - setRotation(this.shapes[56], 0F, 0F, 0F); - this.shapes[57] = new ModelRenderer(this, 56, 0); - this.shapes[57].addBox(0F, 0F, 0F, 1, 14, 1); - this.shapes[57].setRotationPoint(-2F, 9F, 1F); - this.shapes[57].setTextureSize(128, 128); - this.shapes[57].mirror = true; - setRotation(this.shapes[57], 0F, 0F, 0F); - this.shapes[58] = new ModelRenderer(this, 56, 0); - this.shapes[58].addBox(0F, 0F, 0F, 1, 14, 1); - this.shapes[58].setRotationPoint(1F, 9F, 1F); - this.shapes[58].setTextureSize(128, 128); - this.shapes[58].mirror = true; - setRotation(this.shapes[58], 0F, 0F, 0F); - this.shapes[59] = new ModelRenderer(this, 29, 26); - this.shapes[59].addBox(0F, 0F, 0F, 8, 2, 1); - this.shapes[59].setRotationPoint(-4F, 9F, -5F); - this.shapes[59].setTextureSize(128, 128); - this.shapes[59].mirror = true; - setRotation(this.shapes[59], 0F, 0F, 0F); - this.shapes[60] = new ModelRenderer(this, 29, 26); - this.shapes[60].addBox(0F, 0F, 0F, 8, 2, 1); - this.shapes[60].setRotationPoint(-4F, 9F, 4F); - this.shapes[60].setTextureSize(128, 128); - this.shapes[60].mirror = true; - setRotation(this.shapes[60], 0F, 0F, 0F); - this.shapes[61] = new ModelRenderer(this, 29, 26); - this.shapes[61].addBox(0F, 0F, 0F, 8, 2, 1); - this.shapes[61].setRotationPoint(-5F, 9F, 4F); - this.shapes[61].setTextureSize(128, 128); - this.shapes[61].mirror = true; - setRotation(this.shapes[61], 0F, 1.579523F, 0F); - this.shapes[62] = new ModelRenderer(this, 29, 26); - this.shapes[62].addBox(0F, 0F, 0F, 8, 2, 1); - this.shapes[62].setRotationPoint(4F, 9F, 4F); - this.shapes[62].setTextureSize(128, 128); - this.shapes[62].mirror = true; - setRotation(this.shapes[62], 0F, 1.579523F, 0F); - this.shapes[63] = new ModelRenderer(this, 0, 31); - this.shapes[63].addBox(0F, 0F, 0F, 8, 1, 8); - this.shapes[63].setRotationPoint(-4F, 8F, -4F); - this.shapes[63].setTextureSize(128, 128); - this.shapes[63].mirror = true; - setRotation(this.shapes[63], 0F, 0F, 0F); + bottom = new ModelRenderer(this, 0, 0); + bottom.addBox(0F, 0F, 0F, 8, 1, 8); + bottom.setRotationPoint(-4F, 23F, -4F); + bottom.setTextureSize(64, 64); + bottom.mirror = true; + setRotation(bottom, 0F, 0F, 0F); + laserPillar = new ModelRenderer(this, 54, 0); + laserPillar.addBox(0F, 0F, 0F, 2, 11, 2); + laserPillar.setRotationPoint(-1F, 10F, -1F); + laserPillar.setTextureSize(64, 64); + laserPillar.mirror = true; + setRotation(laserPillar, 0F, 0F, 0F); + laserBase = new ModelRenderer(this, 33, 0); + laserBase.addBox(0F, 0F, 0F, 5, 2, 5); + laserBase.setRotationPoint(-2.5F, 21F, -2.5F); + laserBase.setTextureSize(64, 64); + laserBase.mirror = true; + setRotation(laserBase, 0F, 0F, 0F); + covering1 = new ModelRenderer(this, 0, 10); + covering1.addBox(0F, 0F, 0F, 8, 3, 1); + covering1.setRotationPoint(-4F, 20F, -5F); + covering1.setTextureSize(64, 64); + covering1.mirror = true; + setRotation(covering1, 0F, 0F, 0F); + covering2 = new ModelRenderer(this, 0, 10); + covering2.addBox(0F, 0F, 0F, 8, 3, 1); + covering2.setRotationPoint(-4F, 20F, 4F); + covering2.setTextureSize(64, 64); + covering2.mirror = true; + setRotation(covering2, 0F, 0F, 0F); + covering3 = new ModelRenderer(this, 0, 10); + covering3.addBox(0F, 0F, 0F, 8, 3, 1); + covering3.setRotationPoint(-5F, 20F, 4F); + covering3.setTextureSize(64, 64); + covering3.mirror = true; + setRotation(covering3, 0F, 1.579523F, 0F); + covering4 = new ModelRenderer(this, 0, 10); + covering4.addBox(0F, 0F, 0F, 8, 3, 1); + covering4.setRotationPoint(4F, 20F, 4F); + covering4.setTextureSize(64, 64); + covering4.mirror = true; + setRotation(covering4, 0F, 1.579523F, 0F); + covering5 = new ModelRenderer(this, 0, 10); + covering5.addBox(0F, 0F, 0F, 8, 3, 1); + covering5.setRotationPoint(-4F, 10F, -5F); + covering5.setTextureSize(64, 64); + covering5.mirror = true; + setRotation(covering5, 0F, 0F, 0F); + covering6 = new ModelRenderer(this, 0, 10); + covering6.addBox(0F, 0F, 0F, 8, 3, 1); + covering6.setRotationPoint(-4F, 10F, 4F); + covering6.setTextureSize(64, 64); + covering6.mirror = true; + setRotation(covering6, 0F, 0F, 0F); + covering7 = new ModelRenderer(this, 0, 10); + covering7.addBox(0F, 0F, 0F, 8, 3, 1); + covering7.setRotationPoint(-5F, 10F, 4F); + covering7.setTextureSize(64, 64); + covering7.mirror = true; + setRotation(covering7, 0F, 1.579523F, 0F); + covering8 = new ModelRenderer(this, 0, 10); + covering8.addBox(0F, 0F, 0F, 8, 3, 1); + covering8.setRotationPoint(4F, 10F, 4F); + covering8.setTextureSize(64, 64); + covering8.mirror = true; + setRotation(covering8, 0F, 1.579523F, 0F); + top = new ModelRenderer(this, 0, 0); + top.addBox(0F, 0F, 0F, 8, 1, 8); + top.setRotationPoint(-4F, 9F, -4F); + top.setTextureSize(64, 64); + top.mirror = true; + setRotation(top, 0F, 0F, 0F); + covering9 = new ModelRenderer(this, 19, 10); + covering9.addBox(0F, 0F, 0F, 8, 7, 1); + covering9.setRotationPoint(-4F, 13F, 5F); + covering9.setTextureSize(64, 64); + covering9.mirror = true; + setRotation(covering9, 0F, 0F, 0F); + covering10 = new ModelRenderer(this, 19, 10); + covering10.addBox(0F, 0F, 0F, 8, 7, 1); + covering10.setRotationPoint(-4F, 13F, -6F); + covering10.setTextureSize(64, 64); + covering10.mirror = true; + setRotation(covering10, 0F, 0F, 0F); + covering11 = new ModelRenderer(this, 19, 10); + covering11.addBox(0F, 0F, 0F, 8, 7, 1); + covering11.setRotationPoint(-6F, 13F, 4F); + covering11.setTextureSize(64, 64); + covering11.mirror = true; + setRotation(covering11, 0F, 1.579523F, 0F); + covering12 = new ModelRenderer(this, 19, 10); + covering12.addBox(0F, 0F, 0F, 8, 7, 1); + covering12.setRotationPoint(5F, 13F, 4F); + covering12.setTextureSize(64, 64); + covering12.mirror = true; + setRotation(covering12, 0F, 1.579523F, 0F); + energyBall = new ModelRenderer(this, 0, 15); + energyBall.addBox(0F, 0F, 0F, 3, 3, 3); + energyBall.setRotationPoint(-1.5F, 15F, -1.5F); + energyBall.setTextureSize(64, 64); + energyBall.mirror = true; + setRotation(energyBall, 0F, 0F, 0F); } @Override public void render(float f){ - for(ModelRenderer renderer : this.shapes){ - renderer.render(f); - } + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + bottom.render(f); + laserPillar.render(f); + laserBase.render(f); + covering1.render(f); + covering2.render(f); + covering3.render(f); + covering4.render(f); + covering5.render(f); + covering6.render(f); + covering7.render(f); + covering8.render(f); + top.render(f); + covering9.render(f); + covering10.render(f); + covering11.render(f); + covering12.render(f); + energyBall.render(f); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/items/InitItems.java b/src/main/java/ellpeck/actuallyadditions/items/InitItems.java index 345ed051d..d50739037 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/InitItems.java +++ b/src/main/java/ellpeck/actuallyadditions/items/InitItems.java @@ -127,9 +127,14 @@ public class InitItems{ public static Item itemChestToCrateUpgrade; + public static Item itemLaserWrench; + public static void init(){ ModUtil.LOGGER.info("Initializing Items..."); + itemLaserWrench = new ItemLaserWrench(); + ItemUtil.register(itemLaserWrench); + itemChestToCrateUpgrade = new ItemChestToCrateUpgrade(); ItemUtil.register(itemChestToCrateUpgrade); diff --git a/src/main/java/ellpeck/actuallyadditions/items/ItemLaserWrench.java b/src/main/java/ellpeck/actuallyadditions/items/ItemLaserWrench.java new file mode 100644 index 000000000..aa375cfb3 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/items/ItemLaserWrench.java @@ -0,0 +1,99 @@ +/* + * This file ("ItemLaserWrench.java") is part of the Actually Additions Mod for Minecraft. + * It is created and owned by Ellpeck and distributed + * under the Actually Additions License to be found at + * http://github.com/Ellpeck/ActuallyAdditions/blob/master/README.md + * View the source code at https://github.com/Ellpeck/ActuallyAdditions + * + * © 2015 Ellpeck + */ + +package ellpeck.actuallyadditions.items; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.misc.LaserRelayConnectionHandler; +import ellpeck.actuallyadditions.tile.TileEntityLaserRelay; +import ellpeck.actuallyadditions.util.IActAddItemOrBlock; +import ellpeck.actuallyadditions.util.ModUtil; +import ellpeck.actuallyadditions.util.WorldPos; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class ItemLaserWrench extends Item implements IActAddItemOrBlock{ + + public ItemLaserWrench(){ + this.setMaxStackSize(1); + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int par7, float par8, float par9, float par10){ + TileEntity tile = world.getTileEntity(x, y, z); + if(tile instanceof TileEntityLaserRelay){ + if(!world.isRemote){ + if(ItemPhantomConnector.getStoredPosition(stack) == null){ + ItemPhantomConnector.storeConnection(stack, x, y, z, world); + player.addChatComponentMessage(new ChatComponentText("Stored!")); + } + else{ + WorldPos savedPos = ItemPhantomConnector.getStoredPosition(stack); + if(savedPos.getTileEntity() instanceof TileEntityLaserRelay){ + WorldPos otherPos = new WorldPos(world, x, y, z); + if(!savedPos.isEqual(otherPos) && savedPos.getWorld() == otherPos.getWorld()){ + LaserRelayConnectionHandler.getInstance().addConnection(savedPos, otherPos); + player.addChatComponentMessage(new ChatComponentText("Connected!")); + ItemPhantomConnector.clearStorage(stack); + } + } + else{ + ItemPhantomConnector.clearStorage(stack); + player.addChatComponentMessage(new ChatComponentText("The Laser Relay you were trying to connect to doesn't exist anymore!")); + } + } + } + return true; + } + return false; + } + + @Override + public boolean getShareTag(){ + return true; + } + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5){ + if(ItemPhantomConnector.getStoredPosition(stack) == null){ + ItemPhantomConnector.clearStorage(stack); + } + } + + @Override + public EnumRarity getRarity(ItemStack stack){ + return EnumRarity.epic; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconReg){ + this.itemIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER+":"+this.getName()); + } + + @Override + public IIcon getIcon(ItemStack stack, int pass){ + return this.itemIcon; + } + + @Override + public String getName(){ + return "itemLaserWrench"; + } +} diff --git a/src/main/java/ellpeck/actuallyadditions/items/ItemPhantomConnector.java b/src/main/java/ellpeck/actuallyadditions/items/ItemPhantomConnector.java index c34a43179..812200431 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/ItemPhantomConnector.java +++ b/src/main/java/ellpeck/actuallyadditions/items/ItemPhantomConnector.java @@ -45,8 +45,8 @@ public class ItemPhantomConnector extends Item implements IActAddItemOrBlock{ //Passing to Phantom if(tile instanceof IPhantomTile){ if(this.checkHasConnection(stack, player, tile)){ - ((IPhantomTile)tile).setBoundPosition(this.getStoredPosition(stack)); - this.clearStorage(stack); + ((IPhantomTile)tile).setBoundPosition(getStoredPosition(stack)); + clearStorage(stack); player.addChatComponentMessage(new ChatComponentText(StringUtil.localize("tooltip."+ModUtil.MOD_ID_LOWER+".phantom.connected.desc"))); return true; } @@ -54,14 +54,14 @@ public class ItemPhantomConnector extends Item implements IActAddItemOrBlock{ } } //Storing Connections - this.storeConnection(stack, x, y, z, world); + storeConnection(stack, x, y, z, world); player.addChatComponentMessage(new ChatComponentText(StringUtil.localize("tooltip."+ModUtil.MOD_ID_LOWER+".phantom.stored.desc"))); } return true; } public boolean checkHasConnection(ItemStack stack, EntityPlayer player, TileEntity tile){ - if(this.getStoredPosition(stack) != null){ + if(getStoredPosition(stack) != null){ return true; } else{ @@ -73,7 +73,7 @@ public class ItemPhantomConnector extends Item implements IActAddItemOrBlock{ } } - public WorldPos getStoredPosition(ItemStack stack){ + public static WorldPos getStoredPosition(ItemStack stack){ NBTTagCompound tag = stack.getTagCompound(); if(tag != null){ int x = tag.getInteger("XCoordOfTileStored"); @@ -87,11 +87,11 @@ public class ItemPhantomConnector extends Item implements IActAddItemOrBlock{ return null; } - public void clearStorage(ItemStack stack){ + public static void clearStorage(ItemStack stack){ stack.setTagCompound(new NBTTagCompound()); } - public void storeConnection(ItemStack stack, int x, int y, int z, World world){ + public static void storeConnection(ItemStack stack, int x, int y, int z, World world){ NBTTagCompound tag = stack.getTagCompound(); if(tag == null){ tag = new NBTTagCompound(); @@ -112,8 +112,8 @@ public class ItemPhantomConnector extends Item implements IActAddItemOrBlock{ @Override public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5){ - if(this.getStoredPosition(stack) == null){ - this.clearStorage(stack); + if(getStoredPosition(stack) == null){ + clearStorage(stack); } } diff --git a/src/main/java/ellpeck/actuallyadditions/misc/LaserRelayConnectionHandler.java b/src/main/java/ellpeck/actuallyadditions/misc/LaserRelayConnectionHandler.java index 41163cb9f..126e0c691 100644 --- a/src/main/java/ellpeck/actuallyadditions/misc/LaserRelayConnectionHandler.java +++ b/src/main/java/ellpeck/actuallyadditions/misc/LaserRelayConnectionHandler.java @@ -10,9 +10,14 @@ package ellpeck.actuallyadditions.misc; +import cofh.api.energy.IEnergyReceiver; import ellpeck.actuallyadditions.util.WorldPos; +import ellpeck.actuallyadditions.util.WorldUtil; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; import java.util.ArrayList; +import java.util.Iterator; public class LaserRelayConnectionHandler{ @@ -53,16 +58,31 @@ public class LaserRelayConnectionHandler{ ArrayList firstNetwork = this.getNetworkFor(firstRelay); ArrayList secondNetwork = this.getNetworkFor(secondRelay); - if(firstNetwork != null && secondNetwork != null){ + //No Network exists + if(firstNetwork == null && secondNetwork == null){ + firstNetwork = new ArrayList(); + this.networks.add(firstNetwork); + firstNetwork.add(new ConnectionPair(firstRelay, secondRelay)); + } + //The same Network + else if(firstNetwork == secondNetwork){ + return; + } + //Both relays have networks + else if(firstNetwork != null && secondNetwork != null){ this.mergeNetworks(firstNetwork, secondNetwork); } + //Only first network exists else if(firstNetwork != null){ firstNetwork.add(new ConnectionPair(firstRelay, secondRelay)); } + //Only second network exists else if(secondNetwork != null){ secondNetwork.add(new ConnectionPair(firstRelay, secondRelay)); } WorldData.makeDirty(); + System.out.println("Connected "+firstRelay.toString()+" to "+secondRelay.toString()); + System.out.println(firstNetwork == null ? secondNetwork.toString() : firstNetwork.toString()); } /** @@ -71,11 +91,21 @@ public class LaserRelayConnectionHandler{ public void removeRelayFromNetwork(WorldPos relay){ ArrayList network = this.getNetworkFor(relay); if(network != null){ - for(ConnectionPair pair : network){ - if(pair.contains(relay)){ - network.remove(pair); + //Remove the relay from the network + Iterator iterator = network.iterator(); + while(iterator.hasNext()){ + ConnectionPair next = iterator.next(); + if(next.contains(relay)){ + iterator.remove(); + System.out.println("Removed "+relay.toString()+" from Network "+network.toString()); } } + + //Setup new network (so that splitting a network will cause it to break into two) + this.networks.remove(network); + for(ConnectionPair pair : network){ + this.addConnection(pair.firstRelay, pair.secondRelay); + } } WorldData.makeDirty(); } @@ -89,6 +119,37 @@ public class LaserRelayConnectionHandler{ firstNetwork.add(secondPair); } this.networks.remove(secondNetwork); + WorldData.makeDirty(); + System.out.println("Merged Two Networks!"); + } + + public int transferEnergyToReceiverInNeed(ArrayList network, int maxTransfer, boolean simulate){ + //Go through all of the connections in the network + for(ConnectionPair pair : network){ + WorldPos[] relays = new WorldPos[]{pair.firstRelay, pair.secondRelay}; + //Go through both relays in the connection + for(WorldPos relay : relays){ + if(relay != null){ + //Get every side of the relay + for(int i = 0; i <= 5; i++){ + ForgeDirection side = ForgeDirection.getOrientation(i); + //Get the TileEntity at the side + TileEntity tile = WorldUtil.getTileEntityFromSide(side, relay.getWorld(), relay.getX(), relay.getY(), relay.getZ()); + if(tile instanceof IEnergyReceiver){ + IEnergyReceiver receiver = (IEnergyReceiver)tile; + //Does it need Energy? + if(receiver.getEnergyStored(side.getOpposite()) < receiver.getMaxEnergyStored(side.getOpposite())){ + if(receiver.canConnectEnergy(side.getOpposite())){ + //Transfer the energy + return ((IEnergyReceiver)tile).receiveEnergy(side.getOpposite(), maxTransfer, simulate); + } + } + } + } + } + } + } + return 0; } public static class ConnectionPair{ @@ -104,5 +165,10 @@ public class LaserRelayConnectionHandler{ public boolean contains(WorldPos relay){ return (this.firstRelay != null && this.firstRelay.isEqual(relay)) || (this.secondRelay != null && this.secondRelay.isEqual(relay)); } + + @Override + public String toString(){ + return (this.firstRelay == null ? "-" : this.firstRelay.toString())+" | "+(this.secondRelay == null ? "-" : this.secondRelay.toString()); + } } } diff --git a/src/main/java/ellpeck/actuallyadditions/misc/WorldData.java b/src/main/java/ellpeck/actuallyadditions/misc/WorldData.java index fb593566e..b884420f2 100644 --- a/src/main/java/ellpeck/actuallyadditions/misc/WorldData.java +++ b/src/main/java/ellpeck/actuallyadditions/misc/WorldData.java @@ -20,8 +20,8 @@ public class WorldData extends WorldSavedData{ public static final String DATA_TAG = ModUtil.MOD_ID+"WorldData"; - public WorldData(){ - super(DATA_TAG); + public WorldData(String tag){ + super(tag); } public static WorldData instance; @@ -49,7 +49,7 @@ public class WorldData extends WorldSavedData{ WorldSavedData savedData = world.loadItemData(WorldData.class, WorldData.DATA_TAG); //Generate new SavedData if(savedData == null){ - savedData = new WorldData(); + savedData = new WorldData(WorldData.DATA_TAG); world.setItemData(WorldData.DATA_TAG, savedData); } //Set the current SavedData to the retreived one diff --git a/src/main/java/ellpeck/actuallyadditions/proxy/ClientProxy.java b/src/main/java/ellpeck/actuallyadditions/proxy/ClientProxy.java index 28c112836..89f468235 100644 --- a/src/main/java/ellpeck/actuallyadditions/proxy/ClientProxy.java +++ b/src/main/java/ellpeck/actuallyadditions/proxy/ClientProxy.java @@ -83,8 +83,8 @@ public class ClientProxy implements IProxy{ ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySmileyCloud.class, new RenderSmileyCloud(new ModelSmileyCloud())); MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(InitBlocks.blockSmileyCloud), new RenderItems(new ModelSmileyCloud())); - //ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLaserRelay.class, new RenderTileEntity(new ModelLaserRelay())); - //MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(InitBlocks.blockLaserRelay), new RenderItems(new ModelLaserRelay())); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLaserRelay.class, new RenderTileEntity(new ModelLaserRelay())); + MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(InitBlocks.blockLaserRelay), new RenderItems(new ModelLaserRelay())); VillagerRegistry.instance().registerVillagerSkin(ConfigIntValues.JAM_VILLAGER_ID.getValue(), new ResourceLocation(ModUtil.MOD_ID_LOWER, "textures/entity/villager/jamVillager.png")); } diff --git a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityLaserRelay.java b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityLaserRelay.java index 0fb15c415..7564dd80f 100644 --- a/src/main/java/ellpeck/actuallyadditions/tile/TileEntityLaserRelay.java +++ b/src/main/java/ellpeck/actuallyadditions/tile/TileEntityLaserRelay.java @@ -11,9 +11,13 @@ package ellpeck.actuallyadditions.tile; import cofh.api.energy.IEnergyReceiver; +import ellpeck.actuallyadditions.misc.LaserRelayConnectionHandler; +import ellpeck.actuallyadditions.util.WorldPos; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; + public class TileEntityLaserRelay extends TileEntityBase implements IEnergyReceiver{ @Override @@ -21,6 +25,14 @@ public class TileEntityLaserRelay extends TileEntityBase implements IEnergyRecei return false; } + @Override + public void invalidate(){ + super.invalidate(); + if(!worldObj.isRemote){ + LaserRelayConnectionHandler.getInstance().removeRelayFromNetwork(new WorldPos(this.worldObj, this.xCoord, this.yCoord, this.zCoord)); + } + } + @Override public void writeSyncableNBT(NBTTagCompound compound, boolean isForSync){ @@ -38,20 +50,27 @@ public class TileEntityLaserRelay extends TileEntityBase implements IEnergyRecei @Override public int getEnergyStored(ForgeDirection from){ - return 0; //TODO Get Energy in Network + return 0; } @Override public int getMaxEnergyStored(ForgeDirection from){ - return 0; //TODO Get Max Energy in Network + return 0; } @Override public boolean canConnectEnergy(ForgeDirection from){ - return false; + return true; } public int transmitEnergy(int maxTransmit, boolean simulate){ - return 0; + int transmitted = 0; + if(maxTransmit > 0){ + ArrayList network = LaserRelayConnectionHandler.getInstance().getNetworkFor(new WorldPos(this.worldObj, this.xCoord, this.yCoord, this.zCoord)); + if(network != null){ + transmitted = LaserRelayConnectionHandler.getInstance().transferEnergyToReceiverInNeed(network, maxTransmit, simulate); + } + } + return transmitted; } } diff --git a/src/main/java/ellpeck/actuallyadditions/util/WorldPos.java b/src/main/java/ellpeck/actuallyadditions/util/WorldPos.java index 40bd59acd..6c7a92934 100644 --- a/src/main/java/ellpeck/actuallyadditions/util/WorldPos.java +++ b/src/main/java/ellpeck/actuallyadditions/util/WorldPos.java @@ -73,4 +73,8 @@ public class WorldPos{ public WorldPos copy(){ return new WorldPos(this.world, this.x, this.y, this.z); } + + public String toString(){ + return "["+this.x+", "+this.y+", "+this.z+" in world "+this.world.provider.dimensionId+"]"; + } }