Archiviert
13
0

Implemented BlockState.update(boolean), signs should now work, cleaned up some code a little

Dieser Commit ist enthalten in:
Dinnerbone 2011-01-08 01:22:17 +00:00
Ursprung c9efe94545
Commit d374bff8d0
7 geänderte Dateien mit 157 neuen und 121 gelöschten Zeilen

Datei anzeigen

@ -4,6 +4,7 @@ package org.bukkit.craftbukkit;
import org.bukkit.*; import org.bukkit.*;
import org.bukkit.block.BlockState; import org.bukkit.block.BlockState;
import org.bukkit.craftbukkit.block.CraftBlockState; import org.bukkit.craftbukkit.block.CraftBlockState;
import org.bukkit.craftbukkit.block.CraftSign;
public class CraftBlock implements Block { public class CraftBlock implements Block {
private final CraftWorld world; private final CraftWorld world;
@ -253,6 +254,15 @@ public class CraftBlock implements Block {
} }
public BlockState getState() { 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);
}
} }
} }

Datei anzeigen

@ -14,6 +14,7 @@ import net.minecraft.server.EntityPlayerMP;
import net.minecraft.server.EntitySnowball; import net.minecraft.server.EntitySnowball;
import net.minecraft.server.EntityArrow; import net.minecraft.server.EntityArrow;
import net.minecraft.server.EntityPlayer; import net.minecraft.server.EntityPlayer;
import net.minecraft.server.TileEntity;
import net.minecraft.server.WorldGenBigTree; import net.minecraft.server.WorldGenBigTree;
import net.minecraft.server.WorldServer; import net.minecraft.server.WorldServer;
import net.minecraft.server.WorldGenTrees; 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 @Override
public String toString() { public String toString() {
return "CraftWorld"; return "CraftWorld";

Datei anzeigen

@ -19,15 +19,15 @@ public class CraftBlockState implements BlockState {
protected byte data; protected byte data;
protected byte light; protected byte light;
public CraftBlockState(final CraftWorld world, final int x, final int y, final int z, final int type, final byte data) { public CraftBlockState(final Block block) {
this.world = world; this.world = (CraftWorld)block.getWorld();
this.x = x; this.x = block.getX();
this.y = y; this.y = block.getY();
this.z = z; this.z = block.getZ();
this.type = type; this.type = block.getTypeID();
this.data = data; this.data = block.getData();
this.light = (byte)world.getHandle().i(x, y, z); this.light = block.getLightLevel();
this.chunk = (CraftChunk)world.getChunkAt(x << 4, z << 4); this.chunk = (CraftChunk)block.getChunk();
} }
/** /**
@ -153,8 +153,14 @@ public class CraftBlockState implements BlockState {
synchronized (block) { synchronized (block) {
if (block.getType() != this.getType()) { if (block.getType() != this.getType()) {
return false; if (force) {
block.setTypeID(this.getTypeID());
} else {
return false;
}
} }
block.setData(data);
} }
return true; return true;

Datei anzeigen

@ -1,27 +1,42 @@
package org.bukkit.craftbukkit.block; package org.bukkit.craftbukkit.block;
import net.minecraft.server.TileEntitySign;
import org.bukkit.Block; import org.bukkit.Block;
import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Sign; import org.bukkit.block.Sign;
import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.CraftWorld;
public class CraftSign extends CraftBlockState implements Sign { 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) { private final CraftWorld world;
super(world, x, y, z, type, data); 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() { public String[] getLines() {
throw new UnsupportedOperationException("Not supported yet."); return sign.e;
} }
public String getLine(int index) throws IndexOutOfBoundsException { 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 { 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;
} }
} }