summaryrefslogtreecommitdiffstats
path: root/src/main/java/org
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/main/java/org
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/main/java/org')
-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
6 files changed, 89 insertions, 53 deletions
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;
}
}