aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/block/BlockDarkWorldPortal.java104
1 files changed, 67 insertions, 37 deletions
diff --git a/src/Java/gtPlusPlus/core/world/darkworld/block/BlockDarkWorldPortal.java b/src/Java/gtPlusPlus/core/world/darkworld/block/BlockDarkWorldPortal.java
index b366b41ba0..061e2c8dc3 100644
--- a/src/Java/gtPlusPlus/core/world/darkworld/block/BlockDarkWorldPortal.java
+++ b/src/Java/gtPlusPlus/core/world/darkworld/block/BlockDarkWorldPortal.java
@@ -20,6 +20,8 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import gtPlusPlus.api.interfaces.ITileTooltip;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.minecraft.BlockPos;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.world.darkworld.Dimension_DarkWorld;
@@ -35,7 +37,7 @@ public class BlockDarkWorldPortal extends BlockBreakable implements ITileTooltip
this.setLightLevel(0.75F);
this.setCreativeTab(CreativeTabs.tabBlock);
this.setBlockName("blockDarkWorldPortal");
-
+
}
@SideOnly(Side.CLIENT)
@@ -80,24 +82,22 @@ public class BlockDarkWorldPortal extends BlockBreakable implements ITileTooltip
* Ticks the block if it's been scheduled
*/
@Override
- public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) {
- super.updateTick(par1World, par2, par3, par4, par5Random);
- /*if (par1World.provider.isSurfaceWorld()) {
- int l;
- for (l = par3; !World.doesBlockHaveSolidTopSurface(par1World, par2, l, par4) && l > 0; --l) {
- ;
- }
- if (l > 0 && !par1World.isBlockNormalCubeDefault(par2, l + 1, par4, true)) {
- Entity entity = ItemMonsterPlacer.spawnCreature(par1World, 65, par2 + 0.5D, l + 1.1D, par4 + 0.5D);
- if (entity != null && globalDarkWorldPortalSpawnTimer >= 100000) {
- globalDarkWorldPortalSpawnTimer = 0;
- if (MathUtils.randInt(0, 100)>=95){
- entity.timeUntilPortal = entity.getPortalCooldown();
- }
- }
+ public void updateTick(World par1World, int x, int y, int z, Random par5Random) {
+ super.updateTick(par1World, x, y, z, par5Random);
+
+ int blockCount = 0;
+ BlockPos portal = new BlockPos(x, y, z, par1World.provider.dimensionId);
+
+ for (BlockPos side : portal.getSurroundingBlocks()) {
+ Block b = side.getBlockAtPos();
+ if (b == Dimension_DarkWorld.blockPortalFrame || b == Dimension_DarkWorld.portalBlock) {
+ blockCount++;
}
- }
- globalDarkWorldPortalSpawnTimer++;*/
+ }
+ if (blockCount < 4) {
+ par1World.setBlockToAir(x, y, z);
+ }
+
}
/**
@@ -203,44 +203,74 @@ public class BlockDarkWorldPortal extends BlockBreakable implements ITileTooltip
* which neighbor changed (coordinates passed are their own) Args: x, y,
* z, neighbor blockID
*/
- public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5) {
+ public void onNeighborBlockChange(BlockPos pos) {
+ int x = pos.xPos, y = pos.yPos, z = pos.zPos;
+ Logger.INFO("Trigger");
+ int blockCount = 0;
+ BlockPos portal = pos;
+ World par1World = portal.world;
+ for (BlockPos side : portal.getSurroundingBlocks()) {
+ Block b = side.getBlockAtPos();
+ if (b == Dimension_DarkWorld.blockPortalFrame || b == Dimension_DarkWorld.portalBlock) {
+ blockCount++;
+ }
+ }
+ if (blockCount < 4) {
+ par1World.setBlockToAir(x, y, z);
+ par1World.scheduleBlockUpdate(x, y, z, portal.getBlockAtPos(), 0);
+ }
+
+
+
byte b0 = 0;
byte b1 = 1;
- if (par1World.getBlock(par2 - 1, par3, par4) == this || par1World.getBlock(par2 + 1, par3, par4) == this) {
+ if (par1World.getBlock(x - 1, y, z) == this || par1World.getBlock(x + 1, y, z) == this) {
b0 = 1;
b1 = 0;
}
int i1;
- for (i1 = par3; par1World.getBlock(par2, i1 - 1, par4) == this; --i1) {
+ for (i1 = y; par1World.getBlock(x, i1 - 1, z) == this; --i1) {
;
}
- if (par1World.getBlock(par2, i1 - 1, par4) != Dimension_DarkWorld.blockPortalFrame) {
- par1World.setBlockToAir(par2, par3, par4);
+ if (par1World.getBlock(x, i1 - 1, z) != Dimension_DarkWorld.blockPortalFrame) {
+ par1World.setBlockToAir(x, y, z);
} else {
int j1;
- for (j1 = 1; j1 < 4 && par1World.getBlock(par2, i1 + j1, par4) == this; ++j1) {
+ for (j1 = 1; j1 < 4 && par1World.getBlock(x, i1 + j1, z) == this; ++j1) {
;
}
- if (j1 == 3 && par1World.getBlock(par2, i1 + j1, par4) == Dimension_DarkWorld.blockPortalFrame) {
- boolean flag = par1World.getBlock(par2 - 1, par3, par4) == this || par1World.getBlock(par2 + 1, par3, par4) == this;
- boolean flag1 = par1World.getBlock(par2, par3, par4 - 1) == this || par1World.getBlock(par2, par3, par4 + 1) == this;
+ if (j1 == 3 && par1World.getBlock(x, i1 + j1, z) == Dimension_DarkWorld.blockPortalFrame) {
+ boolean flag = par1World.getBlock(x - 1, y, z) == this || par1World.getBlock(x + 1, y, z) == this;
+ boolean flag1 = par1World.getBlock(x, y, z - 1) == this || par1World.getBlock(x, y, z + 1) == this;
if (flag && flag1) {
- par1World.setBlockToAir(par2, par3, par4);
+ par1World.setBlockToAir(x, y, z);
} else {
- if ((par1World.getBlock(par2 + b0, par3, par4 + b1) != Dimension_DarkWorld.blockPortalFrame || par1World
- .getBlock(par2 - b0, par3, par4 - b1) != this)
- && (par1World.getBlock(par2 - b0, par3, par4 - b1) != Dimension_DarkWorld.blockPortalFrame || par1World.getBlock(par2 + b0, par3,
- par4 + b1) != this)) {
- par1World.setBlockToAir(par2, par3, par4);
+ if ((par1World.getBlock(x + b0, y, z + b1) != Dimension_DarkWorld.blockPortalFrame || par1World
+ .getBlock(x - b0, y, z - b1) != this)
+ && (par1World.getBlock(x - b0, y, z - b1) != Dimension_DarkWorld.blockPortalFrame || par1World.getBlock(x + b0, y,
+ z + b1) != this)) {
+ par1World.setBlockToAir(x, y, z);
}
}
} else {
- par1World.setBlockToAir(par2, par3, par4);
+ par1World.setBlockToAir(x, y, z);
}
}
}
@Override
+ public void onNeighborBlockChange(World world, int x, int y, int z, Block block) {
+ onNeighborBlockChange(new BlockPos(x, y, z, world.provider.dimensionId));
+ super.onNeighborBlockChange(world, x, y, z, block);
+ }
+
+ /*@Override
+ public void onNeighborChange(IBlockAccess world, int x, int y, int z, int tileX, int tileY, int tileZ) {
+ onNeighborBlockChange(new BlockPos(x, y, z, world.));
+ super.onNeighborChange(world, x, y, z, tileX, tileY, tileZ);
+ }*/
+
+ @Override
@SideOnly(Side.CLIENT)
/**
* Returns true if the given side of this block type should be rendered, if the adjacent block is at the given
@@ -329,9 +359,9 @@ public class BlockDarkWorldPortal extends BlockBreakable implements ITileTooltip
}
par1World.spawnParticle("reddust", d0+0.1D, d1, d2, d3, d4, d5);
par1World.spawnParticle("smoke", d0, d1+0.1D, d2, 0, 0, 0);
-
+
Random R = new Random();
-
+
if (R.nextInt(10) == 0){
par1World.spawnParticle("largesmoke", d0, d1, d2, 0, 0+0.2D, 0);
}
@@ -348,7 +378,7 @@ public class BlockDarkWorldPortal extends BlockBreakable implements ITileTooltip
public int idPicked(World par1World, int par2, int par3, int par4) {
return 0;
}
-
+
@Override
public int colorMultiplier(final IBlockAccess par1IBlockAccess, final int par2, final int par3, final int par4){
return Utils.rgbtoHexValue(0, 255, 0);