summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDinnerbone <dinnerbone@dinnerbone.com>2011-01-08 01:22:17 +0000
committerDinnerbone <dinnerbone@dinnerbone.com>2011-01-08 01:22:17 +0000
commitd374bff8d0973a592d744f70d24c271717eb7bfc (patch)
tree8f90d0d3906ad80c3c007c2e5e1d55c44ca7d8d4 /src
parentc9efe9454520fbe57a9d3e02eeb9d355915fb4dc (diff)
downloadcraftbukkit-d374bff8d0973a592d744f70d24c271717eb7bfc.tar
craftbukkit-d374bff8d0973a592d744f70d24c271717eb7bfc.tar.gz
craftbukkit-d374bff8d0973a592d744f70d24c271717eb7bfc.tar.lz
craftbukkit-d374bff8d0973a592d744f70d24c271717eb7bfc.tar.xz
craftbukkit-d374bff8d0973a592d744f70d24c271717eb7bfc.zip
Implemented BlockState.update(boolean), signs should now work, cleaned up some code a little
Diffstat (limited to 'src')
-rw-r--r--src/main/java/net/minecraft/server/EntityMinecart.java134
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftBlock.java12
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftBoat.java36
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftMappable.java32
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftWorld.java5
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java26
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftSign.java31
7 files changed, 156 insertions, 120 deletions
diff --git a/src/main/java/net/minecraft/server/EntityMinecart.java b/src/main/java/net/minecraft/server/EntityMinecart.java
index 5b5437f0..cb54f5fe 100644
--- a/src/main/java/net/minecraft/server/EntityMinecart.java
+++ b/src/main/java/net/minecraft/server/EntityMinecart.java
@@ -2,8 +2,8 @@ package net.minecraft.server;
import java.util.List;
-import org.bukkit.Location;
-import org.bukkit.Vector;
+import org.bukkit.Location;
+import org.bukkit.Vector;
import org.bukkit.craftbukkit.CraftEntity;
import org.bukkit.craftbukkit.CraftMappable;
import org.bukkit.craftbukkit.CraftMinecart;
@@ -14,7 +14,7 @@ import org.bukkit.event.vehicle.*;
public class EntityMinecart extends Entity
implements IInventory, CraftMappable {
- private CraftMinecart minecart;
+ private CraftMinecart minecart;
private ItemStack ak[];
public int a;
@@ -94,18 +94,18 @@ public class EntityMinecart extends Entity
private double aq;
private double ar;
private double as;
-
- private boolean slowWhenEmpty = true;
- private double derailedX = 0.5;
- private double derailedY = 0.5;
- private double derailedZ = 0.5;
- private double flyingX = 0.94999998807907104;
- private double flyingY = 0.94999998807907104;
+
+ private boolean slowWhenEmpty = true;
+ private double derailedX = 0.5;
+ private double derailedY = 0.5;
+ private double derailedZ = 0.5;
+ private double flyingX = 0.94999998807907104;
+ private double flyingY = 0.94999998807907104;
private double flyingZ = 0.94999998807907104;
public CraftEntity getCraftEntity() {
return minecart;
- }
+ }
public EntityMinecart(World world) {
super(world);
@@ -120,7 +120,7 @@ public class EntityMinecart extends Entity
M = false;
// CraftBukkit start
- handleCreation(world);
+ handleCreation(world);
// CraftBukkit end
}
@@ -155,19 +155,19 @@ public class EntityMinecart extends Entity
d = i;
// CraftBukkit start
- handleCreation(world);
- // CraftBukkit end
- }
-
- // CraftBukkit start
- private void handleCreation(World world) {
- CraftServer server = ((WorldServer) world).getServer();
+ handleCreation(world);
+ // CraftBukkit end
+ }
+
+ // CraftBukkit start
+ private void handleCreation(World world) {
+ CraftServer server = ((WorldServer) world).getServer();
minecart = CraftMinecart.getCraftMinecart(server, this);
- VehicleCreateEvent event = new VehicleCreateEvent(
- Type.VEHICLE_CREATE, minecart);
- server.getPluginManager().callEvent(event);
+ VehicleCreateEvent event = new VehicleCreateEvent(
+ Type.VEHICLE_CREATE, minecart);
+ server.getPluginManager().callEvent(event);
}
- // CraftBukkit end
+ // CraftBukkit end
public double j() {
return (double) J * 0.0D - 0.30000001192092896D;
@@ -176,14 +176,14 @@ public class EntityMinecart extends Entity
public boolean a(Entity entity, int i) {
// CraftBukkit start
VehicleDamageEvent event = new VehicleDamageEvent(
- Type.VEHICLE_DAMAGE, minecart,
- ((WorldServer)l).getWorld().toCraftEntity(entity), i);
- ((WorldServer)l).getServer().getPluginManager().callEvent(event);
+ Type.VEHICLE_DAMAGE, minecart,
+ ((WorldServer)l).getWorld().toCraftEntity(entity), i);
+ ((WorldServer)l).getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) {
return true;
}
- // CraftBukkit end
+ // CraftBukkit end
i = event.getDamage();
@@ -246,12 +246,12 @@ public class EntityMinecart extends Entity
}
public void b_() {
- double prevX = p;
- double prevY = q;
- double prevZ = r;
- float prevYaw = v;
- float prevPitch = w;
-
+ double prevX = p;
+ double prevY = q;
+ double prevZ = r;
+ float prevYaw = v;
+ float prevPitch = w;
+
if (b > 0) {
b--;
}
@@ -380,7 +380,7 @@ public class EntityMinecart extends Entity
} else if (ai[1][1] != 0 && MathHelper.b(p) - i == ai[1][0] && MathHelper.b(r) - i1 == ai[1][2]) {
a(p, q + (double) ai[1][1], r);
}
- if (j != null || !slowWhenEmpty) {
+ if (j != null || !slowWhenEmpty) {
s *= 0.99699997901916504D;
t *= 0.0D;
u *= 0.99699997901916504D;
@@ -459,18 +459,18 @@ public class EntityMinecart extends Entity
u = d6;
}
if (A) {
- s *= derailedX;
- t *= derailedY;
- u *= derailedZ;
+ s *= derailedX;
+ t *= derailedY;
+ u *= derailedZ;
}
c(s, t, u);
if (!A) {
- s *= flyingX;
- t *= flyingY;
- u *= flyingZ;
+ s *= flyingX;
+ t *= flyingY;
+ u *= flyingZ;
}
- }
-
+ }
+
w = 0.0F;
double d28 = m - p;
double d29 = o - r;
@@ -637,36 +637,36 @@ public class EntityMinecart extends Entity
}
// CraftBukkit start
- CraftServer server = ((WorldServer)l).getServer();
- VehicleEntityCollisionEvent collsionEvent = new VehicleEntityCollisionEvent(
- Type.VEHICLE_COLLISION_ENTITY, minecart,
- ((WorldServer)l).getWorld().toCraftEntity(entity));
- server.getPluginManager().callEvent(collsionEvent);
+ CraftServer server = ((WorldServer)l).getServer();
+ VehicleEntityCollisionEvent collsionEvent = new VehicleEntityCollisionEvent(
+ Type.VEHICLE_COLLISION_ENTITY, minecart,
+ ((WorldServer)l).getWorld().toCraftEntity(entity));
+ server.getPluginManager().callEvent(collsionEvent);
- if (collsionEvent.isCancelled()) {
- return;
+ if (collsionEvent.isCancelled()) {
+ return;
+ }
+ // CraftBukkit end
+
+ if (!collsionEvent.isPickupCancelled()
+ && (entity instanceof EntityLiving) && !(entity instanceof EntityPlayer)
+ && d == 0 && s * s + u * u > 0.01D && j == null && entity.k == null) {
+ // CraftBukkit start
+ VehicleEnterEvent enterEvent = new VehicleEnterEvent(
+ Type.VEHICLE_ENTER, minecart,
+ ((WorldServer)l).getWorld().toCraftEntity(entity));
+ server.getPluginManager().callEvent(enterEvent);
+ // CraftBukkit end
+
+ if (!enterEvent.isCancelled()) {
+ entity.e(this);
+ }
}
- // CraftBukkit end
-
- if (!collsionEvent.isPickupCancelled()
- && (entity instanceof EntityLiving) && !(entity instanceof EntityPlayer)
- && d == 0 && s * s + u * u > 0.01D && j == null && entity.k == null) {
- // CraftBukkit start
- VehicleEnterEvent enterEvent = new VehicleEnterEvent(
- Type.VEHICLE_ENTER, minecart,
- ((WorldServer)l).getWorld().toCraftEntity(entity));
- server.getPluginManager().callEvent(enterEvent);
- // CraftBukkit end
-
- if (!enterEvent.isCancelled()) {
- entity.e(this);
- }
- }
double d1 = entity.p - p;
double d2 = entity.r - r;
double d3 = d1 * d1 + d2 * d2;
- if (!collsionEvent.isCollisionCancelled() && d3 >= 9.9999997473787516E-005D) {
+ if (!collsionEvent.isCollisionCancelled() && d3 >= 9.9999997473787516E-005D) {
d3 = MathHelper.a(d3);
d1 /= d3;
d2 /= d3;
@@ -760,7 +760,7 @@ public class EntityMinecart extends Entity
public void d() {}
- public boolean a(EntityPlayer entityplayer) {
+ public boolean a(EntityPlayer entityplayer) {
if (d == 0) {
if (j != null && (j instanceof EntityPlayer) && j != entityplayer) {
return true;
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/CraftBlock.java
index 204a25eb..1650e972 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftBlock.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftBlock.java
@@ -4,6 +4,7 @@ package org.bukkit.craftbukkit;
import org.bukkit.*;
import org.bukkit.block.BlockState;
import org.bukkit.craftbukkit.block.CraftBlockState;
+import org.bukkit.craftbukkit.block.CraftSign;
public class CraftBlock implements Block {
private final CraftWorld world;
@@ -253,6 +254,15 @@ public class CraftBlock implements Block {
}
public BlockState getState() {
- return new CraftBlockState(world, x, y, z, type, data);
+ Material material = getType();
+
+ switch (material) {
+ case Sign:
+ case SignPost:
+ case WallSign:
+ return new CraftSign(this);
+ default:
+ return new CraftBlockState(this);
+ }
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftBoat.java b/src/main/java/org/bukkit/craftbukkit/CraftBoat.java
index dd3acb62..cad1e407 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftBoat.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftBoat.java
@@ -1,18 +1,18 @@
-package org.bukkit.craftbukkit;
-
-import net.minecraft.server.EntityBoat;
-import org.bukkit.Boat;
-
-/**
- * A minecart.
- *
- * @author sk89q
- */
-public class CraftBoat extends CraftVehicle implements Boat {
- protected EntityBoat boat;
-
- public CraftBoat(CraftServer server, EntityBoat entity) {
- super(server, entity);
- boat = entity;
- }
-}
+package org.bukkit.craftbukkit;
+
+import net.minecraft.server.EntityBoat;
+import org.bukkit.Boat;
+
+/**
+ * A minecart.
+ *
+ * @author sk89q
+ */
+public class CraftBoat extends CraftVehicle implements Boat {
+ protected EntityBoat boat;
+
+ public CraftBoat(CraftServer server, EntityBoat entity) {
+ super(server, entity);
+ boat = entity;
+ }
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftMappable.java b/src/main/java/org/bukkit/craftbukkit/CraftMappable.java
index 9bcc4b99..8e411846 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftMappable.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftMappable.java
@@ -1,16 +1,16 @@
-package org.bukkit.craftbukkit;
-
-/**
- * Indicates that an object has a method to get its CraftBukkit-equivalent
- * CraftEntity object from its Minecraft net.minecraft.server.Entity object.
- *
- * @author sk89q
- */
-public interface CraftMappable {
- /**
- * Gets the CraftEntity version.
- *
- * @return
- */
- public CraftEntity getCraftEntity();
-}
+package org.bukkit.craftbukkit;
+
+/**
+ * Indicates that an object has a method to get its CraftBukkit-equivalent
+ * CraftEntity object from its Minecraft net.minecraft.server.Entity object.
+ *
+ * @author sk89q
+ */
+public interface CraftMappable {
+ /**
+ * Gets the CraftEntity version.
+ *
+ * @return
+ */
+ public CraftEntity getCraftEntity();
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index fdfcaea5..3631d132 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -14,6 +14,7 @@ import net.minecraft.server.EntityPlayerMP;
import net.minecraft.server.EntitySnowball;
import net.minecraft.server.EntityArrow;
import net.minecraft.server.EntityPlayer;
+import net.minecraft.server.TileEntity;
import net.minecraft.server.WorldGenBigTree;
import net.minecraft.server.WorldServer;
import net.minecraft.server.WorldGenTrees;
@@ -185,6 +186,10 @@ public class CraftWorld implements World {
}
}
+ public TileEntity getTileEntityAt(final int x, final int y, final int z) {
+ return world.l(x, y, z);
+ }
+
@Override
public String toString() {
return "CraftWorld";
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
index 0b216be1..f2a0c275 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
@@ -19,15 +19,15 @@ public class CraftBlockState implements BlockState {
protected byte data;
protected byte light;
- public CraftBlockState(final CraftWorld world, final int x, final int y, final int z, final int type, final byte data) {
- this.world = world;
- this.x = x;
- this.y = y;
- this.z = z;
- this.type = type;
- this.data = data;
- this.light = (byte)world.getHandle().i(x, y, z);
- this.chunk = (CraftChunk)world.getChunkAt(x << 4, z << 4);
+ public CraftBlockState(final Block block) {
+ this.world = (CraftWorld)block.getWorld();
+ this.x = block.getX();
+ this.y = block.getY();
+ this.z = block.getZ();
+ this.type = block.getTypeID();
+ this.data = block.getData();
+ this.light = block.getLightLevel();
+ this.chunk = (CraftChunk)block.getChunk();
}
/**
@@ -153,8 +153,14 @@ public class CraftBlockState implements BlockState {
synchronized (block) {
if (block.getType() != this.getType()) {
- return false;
+ if (force) {
+ block.setTypeID(this.getTypeID());
+ } else {
+ return false;
+ }
}
+
+ block.setData(data);
}
return true;
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java b/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java
index ec606a75..a3a8649b 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftSign.java
@@ -1,27 +1,42 @@
package org.bukkit.craftbukkit.block;
+import net.minecraft.server.TileEntitySign;
import org.bukkit.Block;
-import org.bukkit.Chunk;
-import org.bukkit.Material;
-import org.bukkit.World;
import org.bukkit.block.Sign;
import org.bukkit.craftbukkit.CraftWorld;
public class CraftSign extends CraftBlockState implements Sign {
- public CraftSign(final CraftWorld world, final int x, final int y, final int z, final int type, final byte data) {
- super(world, x, y, z, type, data);
+ private final CraftWorld world;
+ private final TileEntitySign sign;
+
+ public CraftSign(final Block block) {
+ super(block);
+
+ world = (CraftWorld)block.getWorld();
+ sign = (TileEntitySign)world.getTileEntityAt(getX(), getY(), getZ());
}
public String[] getLines() {
- throw new UnsupportedOperationException("Not supported yet.");
+ return sign.e;
}
public String getLine(int index) throws IndexOutOfBoundsException {
- throw new UnsupportedOperationException("Not supported yet.");
+ return sign.e[index];
}
public void setLine(int index, String line) throws IndexOutOfBoundsException {
- throw new UnsupportedOperationException("Not supported yet.");
+ sign.e[index] = line;
+ }
+
+ @Override
+ public boolean update(boolean force) {
+ boolean result = super.update(force);
+
+ if (result) {
+ sign.d();
+ }
+
+ return result;
}
}