diff options
author | mbax <matt@phozop.net> | 2013-11-04 07:07:38 -0600 |
---|---|---|
committer | Wesley Wolfe <weswolf@aol.com> | 2013-11-30 19:26:12 -0600 |
commit | 2726696652179a5ead7dc07dd39edf7dfda687f7 (patch) | |
tree | ff78e22fdd4fc01889a5f6cc482b599f965cd93a /src/main/java/net/minecraft/server/BlockPortal.java | |
parent | ff8b70fbb7a96b9d2ff078afcf3b3ff90f200981 (diff) | |
download | craftbukkit-2726696652179a5ead7dc07dd39edf7dfda687f7.tar craftbukkit-2726696652179a5ead7dc07dd39edf7dfda687f7.tar.gz craftbukkit-2726696652179a5ead7dc07dd39edf7dfda687f7.tar.lz craftbukkit-2726696652179a5ead7dc07dd39edf7dfda687f7.tar.xz craftbukkit-2726696652179a5ead7dc07dd39edf7dfda687f7.zip |
Update CraftBukkit to Minecraft 1.7.2
Diffstat (limited to 'src/main/java/net/minecraft/server/BlockPortal.java')
-rw-r--r-- | src/main/java/net/minecraft/server/BlockPortal.java | 196 |
1 files changed, 63 insertions, 133 deletions
diff --git a/src/main/java/net/minecraft/server/BlockPortal.java b/src/main/java/net/minecraft/server/BlockPortal.java index 4f297f89..75b833af 100644 --- a/src/main/java/net/minecraft/server/BlockPortal.java +++ b/src/main/java/net/minecraft/server/BlockPortal.java @@ -2,175 +2,101 @@ package net.minecraft.server; import java.util.Random; -// CraftBukkit start -import org.bukkit.event.entity.EntityPortalEnterEvent; -import org.bukkit.event.world.PortalCreateEvent; -// CraftBukkit end +import org.bukkit.event.entity.EntityPortalEnterEvent; // CraftBukkit -public class BlockPortal extends BlockHalfTransparant { +public class BlockPortal extends BlockHalfTransparent { - public BlockPortal(int i) { - super(i, "portal", Material.PORTAL, false); - this.b(true); + public static final int[][] a = new int[][] { new int[0], { 3, 1}, { 2, 0}}; + + public BlockPortal() { + super("portal", Material.PORTAL, false); + this.a(true); } public void a(World world, int i, int j, int k, Random random) { super.a(world, i, j, k, random); - if (world.worldProvider.d() && random.nextInt(2000) < world.difficulty) { + if (world.worldProvider.d() && world.getGameRules().getBoolean("doMobSpawning") && random.nextInt(2000) < world.difficulty.a()) { int l; - for (l = j; !world.w(i, l, k) && l > 0; --l) { + for (l = j; !World.a((IBlockAccess) world, i, l, k) && l > 0; --l) { ; } - if (l > 0 && !world.u(i, l + 1, k)) { + if (l > 0 && !world.getType(i, l + 1, k).r()) { Entity entity = ItemMonsterEgg.a(world, 57, (double) i + 0.5D, (double) l + 1.1D, (double) k + 0.5D); if (entity != null) { - entity.portalCooldown = entity.ac(); + entity.portalCooldown = entity.ai(); } } } } - public AxisAlignedBB b(World world, int i, int j, int k) { + public AxisAlignedBB a(World world, int i, int j, int k) { return null; } public void updateShape(IBlockAccess iblockaccess, int i, int j, int k) { - float f; - float f1; - - if (iblockaccess.getTypeId(i - 1, j, k) != this.id && iblockaccess.getTypeId(i + 1, j, k) != this.id) { - f = 0.125F; - f1 = 0.5F; - this.a(0.5F - f, 0.0F, 0.5F - f1, 0.5F + f, 1.0F, 0.5F + f1); - } else { - f = 0.5F; - f1 = 0.125F; - this.a(0.5F - f, 0.0F, 0.5F - f1, 0.5F + f, 1.0F, 0.5F + f1); - } - } + int l = b(iblockaccess.getData(i, j, k)); - public boolean c() { - return false; - } - - public boolean b() { - return false; - } - - public boolean o_(World world, int i, int j, int k) { - byte b0 = 0; - byte b1 = 0; - - if (world.getTypeId(i - 1, j, k) == Block.OBSIDIAN.id || world.getTypeId(i + 1, j, k) == Block.OBSIDIAN.id) { - b0 = 1; - } - - if (world.getTypeId(i, j, k - 1) == Block.OBSIDIAN.id || world.getTypeId(i, j, k + 1) == Block.OBSIDIAN.id) { - b1 = 1; - } - - if (b0 == b1) { - return false; - } else { - // CraftBukkit start - java.util.Collection<org.bukkit.block.Block> blocks = new java.util.HashSet<org.bukkit.block.Block>(); - org.bukkit.World bworld = world.getWorld(); - // CraftBukkit end - - if (world.getTypeId(i - b0, j, k - b1) == 0) { - i -= b0; - k -= b1; - } - - int l; - int i1; - - for (l = -1; l <= 2; ++l) { - for (i1 = -1; i1 <= 3; ++i1) { - boolean flag = l == -1 || l == 2 || i1 == -1 || i1 == 3; - - if (l != -1 && l != 2 || i1 != -1 && i1 != 3) { - int j1 = world.getTypeId(i + b0 * l, j + i1, k + b1 * l); - - if (flag) { - if (j1 != Block.OBSIDIAN.id) { - return false; - } else { // CraftBukkit - blocks.add(bworld.getBlockAt(i + b0 * l, j + i1, k + b1 * l)); // CraftBukkit - } - } else if (j1 != 0 && j1 != Block.FIRE.id) { - return false; - } - } - } - } - - // CraftBukkit start - for (l = 0; l < 2; ++l) { - for (i1 = 0; i1 < 3; ++i1) { - blocks.add(bworld.getBlockAt(i + b0 * l, j + i1, k + b1 * l)); - } - } - - PortalCreateEvent event = new PortalCreateEvent(blocks, bworld, PortalCreateEvent.CreateReason.FIRE); - world.getServer().getPluginManager().callEvent(event); - - if (event.isCancelled()) { - return false; + if (l == 0) { + if (iblockaccess.getType(i - 1, j, k) != this && iblockaccess.getType(i + 1, j, k) != this) { + l = 2; + } else { + l = 1; } - // CraftBukkit end - for (l = 0; l < 2; ++l) { - for (i1 = 0; i1 < 3; ++i1) { - world.setTypeIdAndData(i + b0 * l, j + i1, k + b1 * l, Block.PORTAL.id, 0, 2); - } + if (iblockaccess instanceof World && !((World) iblockaccess).isStatic) { + ((World) iblockaccess).setData(i, j, k, l, 2); } - - return true; } - } - public void doPhysics(World world, int i, int j, int k, int l) { - byte b0 = 0; - byte b1 = 1; + float f = 0.125F; + float f1 = 0.125F; - if (world.getTypeId(i - 1, j, k) == this.id || world.getTypeId(i + 1, j, k) == this.id) { - b0 = 1; - b1 = 0; + if (l == 1) { + f = 0.5F; } - int i1; - - for (i1 = j; world.getTypeId(i, i1 - 1, k) == this.id; --i1) { - ; + if (l == 2) { + f1 = 0.5F; } - if (world.getTypeId(i, i1 - 1, k) != Block.OBSIDIAN.id) { - world.setAir(i, j, k); - } else { - int j1; + this.a(0.5F - f, 0.0F, 0.5F - f1, 0.5F + f, 1.0F, 0.5F + f1); + } - for (j1 = 1; j1 < 4 && world.getTypeId(i, i1 + j1, k) == this.id; ++j1) { - ; - } + public boolean d() { + return false; + } - if (j1 == 3 && world.getTypeId(i, i1 + j1, k) == Block.OBSIDIAN.id) { - boolean flag = world.getTypeId(i - 1, j, k) == this.id || world.getTypeId(i + 1, j, k) == this.id; - boolean flag1 = world.getTypeId(i, j, k - 1) == this.id || world.getTypeId(i, j, k + 1) == this.id; + public boolean e(World world, int i, int j, int k) { + PortalCreator portalcreator = new PortalCreator(world, i, j, k, 1); + PortalCreator portalcreator1 = new PortalCreator(world, i, j, k, 2); + + if (portalcreator.b() && PortalCreator.a(portalcreator) == 0) { + // CraftBukkit start - return portalcreator + return portalcreator.c(); + // return true; + } else if (portalcreator1.b() && PortalCreator.a(portalcreator1) == 0) { + return portalcreator1.c(); + // return true; + // CraftBukkit end + } else { + return false; + } + } - if (flag && flag1) { - world.setAir(i, j, k); - } else { - if ((world.getTypeId(i + b0, j, k + b1) != Block.OBSIDIAN.id || world.getTypeId(i - b0, j, k - b1) != this.id) && (world.getTypeId(i - b0, j, k - b1) != Block.OBSIDIAN.id || world.getTypeId(i + b0, j, k + b1) != this.id)) { - world.setAir(i, j, k); - } - } - } else { - world.setAir(i, j, k); - } + public void doPhysics(World world, int i, int j, int k, Block block) { + int l = b(world.getData(i, j, k)); + PortalCreator portalcreator = new PortalCreator(world, i, j, k, 1); + PortalCreator portalcreator1 = new PortalCreator(world, i, j, k, 2); + + if (l == 1 && (!portalcreator.b() || PortalCreator.a(portalcreator) < PortalCreator.b(portalcreator) * PortalCreator.c(portalcreator))) { + world.setTypeUpdate(i, j, k, Blocks.AIR); + } else if (l == 2 && (!portalcreator1.b() || PortalCreator.a(portalcreator1) < PortalCreator.b(portalcreator1) * PortalCreator.c(portalcreator1))) { + world.setTypeUpdate(i, j, k, Blocks.AIR); + } else if (l == 0 && !portalcreator.b() && !portalcreator1.b()) { + world.setTypeUpdate(i, j, k, Blocks.AIR); } } @@ -185,7 +111,11 @@ public class BlockPortal extends BlockHalfTransparant { world.getServer().getPluginManager().callEvent(event); // CraftBukkit end - entity.ab(); + entity.ah(); } } + + public static int b(int i) { + return i & 3; + } } |