summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/net/minecraft/server/NetServerHandler.java70
-rw-r--r--src/main/java/net/minecraft/server/TileEntitySign.java6
2 files changed, 36 insertions, 40 deletions
diff --git a/src/main/java/net/minecraft/server/NetServerHandler.java b/src/main/java/net/minecraft/server/NetServerHandler.java
index e732d9d5..7c4ee114 100644
--- a/src/main/java/net/minecraft/server/NetServerHandler.java
+++ b/src/main/java/net/minecraft/server/NetServerHandler.java
@@ -855,69 +855,59 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
// CraftBukkit start
if (((WorldServer) this.player.world).isLoaded(packet130updatesign.x, packet130updatesign.y, packet130updatesign.z)) {
TileEntity tileentity = ((WorldServer) this.player.world).getTileEntity(packet130updatesign.x, packet130updatesign.y, packet130updatesign.z);
- // CraftBukkit end
if (tileentity instanceof TileEntitySign) {
TileEntitySign tileentitysign = (TileEntitySign) tileentity;
if (!tileentitysign.a()) {
this.minecraftServer.c("Player " + this.player.name + " just tried to change non-editable sign");
+ this.sendPacket(new Packet130UpdateSign(packet130updatesign.x, packet130updatesign.y, packet130updatesign.z, tileentitysign.lines));
return;
}
- }
- int i;
- int j;
+ int i;
+ int j;
- for (j = 0; j < 4; ++j) {
- boolean flag = true;
+ for (j = 0; j < 4; ++j) {
+ boolean flag = true;
- if (packet130updatesign.lines[j].length() > 15) {
- flag = false;
- } else {
- for (i = 0; i < packet130updatesign.lines[j].length(); ++i) {
- if (FontAllowedCharacters.a.indexOf(packet130updatesign.lines[j].charAt(i)) < 0) {
- flag = false;
+ if (packet130updatesign.lines[j].length() > 15) {
+ flag = false;
+ } else {
+ for (i = 0; i < packet130updatesign.lines[j].length(); ++i) {
+ if (FontAllowedCharacters.a.indexOf(packet130updatesign.lines[j].charAt(i)) < 0) {
+ flag = false;
+ }
}
}
- }
- if (!flag) {
- packet130updatesign.lines[j] = "!?";
+ if (!flag) {
+ packet130updatesign.lines[j] = "!?";
+ }
}
- }
-
- if (tileentity instanceof TileEntitySign) {
- j = packet130updatesign.x;
- int k = packet130updatesign.y;
- i = packet130updatesign.z;
- TileEntitySign tileentitysign1 = (TileEntitySign) tileentity;
+ if (tileentity instanceof TileEntitySign) {
+ j = packet130updatesign.x;
+ int k = packet130updatesign.y;
+ i = packet130updatesign.z;
- // CraftBukkit start - SIGN_CHANGE hook
- Player player = server.getPlayer(this.player);
- SignChangeEvent event = new SignChangeEvent((CraftBlock) player.getWorld().getBlockAt(j, k, i), server.getPlayer(this.player), packet130updatesign.lines);
- server.getPluginManager().callEvent(event);
+ Player player = server.getPlayer(this.player);
+ SignChangeEvent event = new SignChangeEvent((CraftBlock) player.getWorld().getBlockAt(j, k, i), server.getPlayer(this.player), packet130updatesign.lines);
+ server.getPluginManager().callEvent(event);
- if (event.isCancelled()) {
- // Normally we would return here, but we have to update the sign with blank text if it's been cancelled
- // Otherwise the client will have bad text on their sign (client shows text changes as they type)
- for (int l = 0; l < 4; ++l) {
- event.setLine(l, "");
+ if (!event.isCancelled()) {
+ for (int l = 0; l < 4; ++l) {
+ tileentitysign.lines[l] = event.getLine(l);
+ }
+ tileentitysign.setEditable(false);
}
- }
- // CraftBukkit end
- for (int l = 0; l < 4; ++l) {
- tileentitysign1.lines[l] = event.getLine(l);
- // CraftBukkit
+ tileentitysign.update();
+ ((WorldServer) this.player.world).notify(j, k, i);
}
-
- tileentitysign1.update();
- // CraftBukkit
- ((WorldServer) this.player.world).notify(j, k, i);
}
}
+ // CraftBukkit end
}
public boolean c() {
diff --git a/src/main/java/net/minecraft/server/TileEntitySign.java b/src/main/java/net/minecraft/server/TileEntitySign.java
index 4b375c09..d9802d80 100644
--- a/src/main/java/net/minecraft/server/TileEntitySign.java
+++ b/src/main/java/net/minecraft/server/TileEntitySign.java
@@ -47,4 +47,10 @@ public class TileEntitySign extends TileEntity {
public boolean a() {
return this.c;
}
+
+ // CraftBukkit start
+ public void setEditable(boolean editable) {
+ this.c = editable;
+ }
+ // CraftBukkit end
}