From 345ea36c7bb3383c6e4825355d0043a646194eaa Mon Sep 17 00:00:00 2001 From: Erik Broes Date: Sun, 20 Nov 2011 00:01:14 -0800 Subject: Update for 1.0.0 --- .../net/minecraft/server/NetServerHandler.java | 465 +++++++++++---------- 1 file changed, 239 insertions(+), 226 deletions(-) (limited to 'src/main/java/net/minecraft/server/NetServerHandler.java') diff --git a/src/main/java/net/minecraft/server/NetServerHandler.java b/src/main/java/net/minecraft/server/NetServerHandler.java index d688b93c..81b541bb 100644 --- a/src/main/java/net/minecraft/server/NetServerHandler.java +++ b/src/main/java/net/minecraft/server/NetServerHandler.java @@ -113,7 +113,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener { s = event.getReason(); // CraftBukkit end - this.player.A(); + this.player.E(); this.sendPacket(new Packet255KickDisconnect(s)); this.networkManager.d(); @@ -136,244 +136,248 @@ public class NetServerHandler extends NetHandler implements ICommandListener { WorldServer worldserver = this.minecraftServer.getWorldServer(this.player.dimension); this.h = true; - double d0; + if (!this.player.j) { + double d0; - if (!this.checkMovement) { - d0 = packet10flying.y - this.y; - if (packet10flying.x == this.x && d0 * d0 < 0.01D && packet10flying.z == this.z) { - this.checkMovement = true; + if (!this.checkMovement) { + d0 = packet10flying.y - this.y; + if (packet10flying.x == this.x && d0 * d0 < 0.01D && packet10flying.z == this.z) { + this.checkMovement = true; + } } - } - - // CraftBukkit start - Player player = this.getPlayer(); - Location from = new Location(player.getWorld(), lastPosX, lastPosY, lastPosZ, lastYaw, lastPitch); // Get the Players previous Event location. - Location to = player.getLocation().clone(); // Start off the To location as the Players current location. - - // If the packet contains movement information then we update the To location with the correct XYZ. - if (packet10flying.h && !(packet10flying.h && packet10flying.y == -999.0D && packet10flying.stance == -999.0D)) { - to.setX(packet10flying.x); - to.setY(packet10flying.y); - to.setZ(packet10flying.z); - } - // If the packet contains look information then we update the To location with the correct Yaw & Pitch. - if (packet10flying.hasLook) { - to.setYaw(packet10flying.yaw); - to.setPitch(packet10flying.pitch); - } - - // Prevent 40 event-calls for less than a single pixel of movement >.> - double delta = Math.pow(this.lastPosX - to.getX(), 2) + Math.pow(this.lastPosY - to.getY(), 2) + Math.pow(this.lastPosZ - to.getZ(), 2); - float deltaAngle = Math.abs(this.lastYaw - to.getYaw()) + Math.abs(this.lastPitch - to.getPitch()); - - if ((delta > 1f / 256 || deltaAngle > 10f) && (this.checkMovement && !this.player.dead)) { - this.lastPosX = to.getX(); - this.lastPosY = to.getY(); - this.lastPosZ = to.getZ(); - this.lastYaw = to.getYaw(); - this.lastPitch = to.getPitch(); + // CraftBukkit start + Player player = this.getPlayer(); + Location from = new Location(player.getWorld(), lastPosX, lastPosY, lastPosZ, lastYaw, lastPitch); // Get the Players previous Event location. + Location to = player.getLocation().clone(); // Start off the To location as the Players current location. + + // If the packet contains movement information then we update the To location with the correct XYZ. + if (packet10flying.h && !(packet10flying.h && packet10flying.y == -999.0D && packet10flying.stance == -999.0D)) { + to.setX(packet10flying.x); + to.setY(packet10flying.y); + to.setZ(packet10flying.z); + } - // Skip the first time we do this - if (from.getX() != Double.MAX_VALUE) { - PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); - this.server.getPluginManager().callEvent(event); + // If the packet contains look information then we update the To location with the correct Yaw & Pitch. + if (packet10flying.hasLook) { + to.setYaw(packet10flying.yaw); + to.setPitch(packet10flying.pitch); + } - // If the event is cancelled we move the player back to their old location. - if (event.isCancelled()) { - this.player.netServerHandler.sendPacket(new Packet13PlayerLookMove(from.getX(), from.getY() + 1.6200000047683716D, from.getY(), from.getZ(), from.getYaw(), from.getPitch(), false)); - return; - } + // Prevent 40 event-calls for less than a single pixel of movement >.> + double delta = Math.pow(this.lastPosX - to.getX(), 2) + Math.pow(this.lastPosY - to.getY(), 2) + Math.pow(this.lastPosZ - to.getZ(), 2); + float deltaAngle = Math.abs(this.lastYaw - to.getYaw()) + Math.abs(this.lastPitch - to.getPitch()); + + if ((delta > 1f / 256 || deltaAngle > 10f) && (this.checkMovement && !this.player.dead)) { + this.lastPosX = to.getX(); + this.lastPosY = to.getY(); + this.lastPosZ = to.getZ(); + this.lastYaw = to.getYaw(); + this.lastPitch = to.getPitch(); + + // Skip the first time we do this + if (from.getX() != Double.MAX_VALUE) { + PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); + this.server.getPluginManager().callEvent(event); + + // If the event is cancelled we move the player back to their old location. + if (event.isCancelled()) { + this.player.netServerHandler.sendPacket(new Packet13PlayerLookMove(from.getX(), from.getY() + 1.6200000047683716D, from.getY(), from.getZ(), from.getYaw(), from.getPitch(), false)); + return; + } - /* If a Plugin has changed the To destination then we teleport the Player - there to avoid any 'Moved wrongly' or 'Moved too quickly' errors. - We only do this if the Event was not cancelled. */ - if (!to.equals(event.getTo()) && !event.isCancelled()) { - this.player.getBukkitEntity().teleport(event.getTo()); - return; - } + /* If a Plugin has changed the To destination then we teleport the Player + there to avoid any 'Moved wrongly' or 'Moved too quickly' errors. + We only do this if the Event was not cancelled. */ + if (!to.equals(event.getTo()) && !event.isCancelled()) { + this.player.getBukkitEntity().teleport(event.getTo()); + return; + } - /* Check to see if the Players Location has some how changed during the call of the event. - This can happen due to a plugin teleporting the player instead of using .setTo() */ - if (!from.equals(this.getPlayer().getLocation()) && this.justTeleported) { - this.justTeleported = false; - return; + /* Check to see if the Players Location has some how changed during the call of the event. + This can happen due to a plugin teleporting the player instead of using .setTo() */ + if (!from.equals(this.getPlayer().getLocation()) && this.justTeleported) { + this.justTeleported = false; + return; + } } } - } - if (Double.isNaN(packet10flying.x) || Double.isNaN(packet10flying.y) || Double.isNaN(packet10flying.z) || Double.isNaN(packet10flying.stance)) { - player.teleport(player.getWorld().getSpawnLocation()); - System.err.println(player.getName() + " was caught trying to crash the server with an invalid position."); - player.kickPlayer("Nope!"); - return; - } + if (Double.isNaN(packet10flying.x) || Double.isNaN(packet10flying.y) || Double.isNaN(packet10flying.z) || Double.isNaN(packet10flying.stance)) { + player.teleport(player.getWorld().getSpawnLocation()); + System.err.println(player.getName() + " was caught trying to crash the server with an invalid position."); + player.kickPlayer("Nope!"); + return; + } - if (this.checkMovement && !this.player.dead) { - // CraftBukkit end - double d1; - double d2; - double d3; - double d4; + if (this.checkMovement && !this.player.dead) { + // CraftBukkit end + double d1; + double d2; + double d3; + double d4; - if (this.player.vehicle != null) { - float f = this.player.yaw; - float f1 = this.player.pitch; + if (this.player.vehicle != null) { + float f = this.player.yaw; + float f1 = this.player.pitch; + + this.player.vehicle.i(); + d1 = this.player.locX; + d2 = this.player.locY; + d3 = this.player.locZ; + double d5 = 0.0D; + + d4 = 0.0D; + if (packet10flying.hasLook) { + f = packet10flying.yaw; + f1 = packet10flying.pitch; + } - this.player.vehicle.g_(); - d1 = this.player.locX; - d2 = this.player.locY; - d3 = this.player.locZ; - double d5 = 0.0D; + if (packet10flying.h && packet10flying.y == -999.0D && packet10flying.stance == -999.0D) { + d5 = packet10flying.x; + d4 = packet10flying.z; + } - d4 = 0.0D; - if (packet10flying.hasLook) { - f = packet10flying.yaw; - f1 = packet10flying.pitch; - } + this.player.onGround = packet10flying.g; + this.player.a(true); + this.player.move(d5, 0.0D, d4); + this.player.setLocation(d1, d2, d3, f, f1); + this.player.motX = d5; + this.player.motZ = d4; + if (this.player.vehicle != null) { + worldserver.vehicleEnteredWorld(this.player.vehicle, true); + } - if (packet10flying.h && packet10flying.y == -999.0D && packet10flying.stance == -999.0D) { - d5 = packet10flying.x; - d4 = packet10flying.z; - } + if (this.player.vehicle != null) { + this.player.vehicle.i(); + } - this.player.onGround = packet10flying.g; - this.player.b(true); - this.player.move(d5, 0.0D, d4); - this.player.setLocation(d1, d2, d3, f, f1); - this.player.motX = d5; - this.player.motZ = d4; - if (this.player.vehicle != null) { - worldserver.vehicleEnteredWorld(this.player.vehicle, true); + this.minecraftServer.serverConfigurationManager.d(this.player); + this.x = this.player.locX; + this.y = this.player.locY; + this.z = this.player.locZ; + worldserver.playerJoinedWorld(this.player); + return; } - if (this.player.vehicle != null) { - this.player.vehicle.g_(); + if (this.player.isSleeping()) { + this.player.a(true); + this.player.setLocation(this.x, this.y, this.z, this.player.yaw, this.player.pitch); + worldserver.playerJoinedWorld(this.player); + return; } - this.minecraftServer.serverConfigurationManager.d(this.player); + d0 = this.player.locY; this.x = this.player.locX; this.y = this.player.locY; this.z = this.player.locZ; - worldserver.playerJoinedWorld(this.player); - return; - } + d1 = this.player.locX; + d2 = this.player.locY; + d3 = this.player.locZ; + float f2 = this.player.yaw; + float f3 = this.player.pitch; - if (this.player.isSleeping()) { - this.player.b(true); - this.player.setLocation(this.x, this.y, this.z, this.player.yaw, this.player.pitch); - worldserver.playerJoinedWorld(this.player); - return; - } + if (packet10flying.h && packet10flying.y == -999.0D && packet10flying.stance == -999.0D) { + packet10flying.h = false; + } - d0 = this.player.locY; - this.x = this.player.locX; - this.y = this.player.locY; - this.z = this.player.locZ; - d1 = this.player.locX; - d2 = this.player.locY; - d3 = this.player.locZ; - float f2 = this.player.yaw; - float f3 = this.player.pitch; - - if (packet10flying.h && packet10flying.y == -999.0D && packet10flying.stance == -999.0D) { - packet10flying.h = false; - } + if (packet10flying.h) { + d1 = packet10flying.x; + d2 = packet10flying.y; + d3 = packet10flying.z; + d4 = packet10flying.stance - packet10flying.y; + if (!this.player.isSleeping() && (d4 > 1.65D || d4 < 0.1D)) { + this.disconnect("Illegal stance"); + a.warning(this.player.name + " had an illegal stance: " + d4); + return; + } - if (packet10flying.h) { - d1 = packet10flying.x; - d2 = packet10flying.y; - d3 = packet10flying.z; - d4 = packet10flying.stance - packet10flying.y; - if (!this.player.isSleeping() && (d4 > 1.65D || d4 < 0.1D)) { - this.disconnect("Illegal stance"); - a.warning(this.player.name + " had an illegal stance: " + d4); - return; + if (Math.abs(packet10flying.x) > 3.2E7D || Math.abs(packet10flying.z) > 3.2E7D) { + this.disconnect("Illegal position"); + return; + } } - if (Math.abs(packet10flying.x) > 3.2E7D || Math.abs(packet10flying.z) > 3.2E7D) { - this.disconnect("Illegal position"); - return; + if (packet10flying.hasLook) { + f2 = packet10flying.yaw; + f3 = packet10flying.pitch; } - } - if (packet10flying.hasLook) { - f2 = packet10flying.yaw; - f3 = packet10flying.pitch; - } + this.player.a(true); + this.player.bL = 0.0F; + this.player.setLocation(this.x, this.y, this.z, f2, f3); + if (!this.checkMovement) { + return; + } - this.player.b(true); - this.player.bH = 0.0F; - this.player.setLocation(this.x, this.y, this.z, f2, f3); - if (!this.checkMovement) { - return; - } + d4 = d1 - this.player.locX; + double d6 = d2 - this.player.locY; + double d7 = d3 - this.player.locZ; + double d8 = d4 * d4 + d6 * d6 + d7 * d7; - d4 = d1 - this.player.locX; - double d6 = d2 - this.player.locY; - double d7 = d3 - this.player.locZ; - double d8 = d4 * d4 + d6 * d6 + d7 * d7; + if (d8 > 100.0D && this.checkMovement) { // CraftBukkit - Added this.checkMovement condition to solve this check being triggered by teleports + a.warning(this.player.name + " moved too quickly!"); + this.disconnect("You moved too quickly :( (Hacking?)"); + return; + } - if (d8 > 100.0D && this.checkMovement) { // CraftBukkit - Added this.checkMovement condition to solve this check being triggered by teleports - a.warning(this.player.name + " moved too quickly!"); - this.disconnect("You moved too quickly :( (Hacking?)"); - return; - } + float f4 = 0.0625F; + boolean flag = worldserver.getEntities(this.player, this.player.boundingBox.clone().shrink((double) f4, (double) f4, (double) f4)).size() == 0; - float f4 = 0.0625F; - boolean flag = worldserver.getEntities(this.player, this.player.boundingBox.clone().shrink((double) f4, (double) f4, (double) f4)).size() == 0; + if (this.player.onGround && !packet10flying.g && d6 > 0.0D) { + this.player.c(0.2F); + } - if (this.player.onGround && !packet10flying.g && d6 > 0.0D) { - this.player.b(0.2F); - } + this.player.move(d4, d6, d7); + this.player.onGround = packet10flying.g; + this.player.b(d4, d6, d7); + double d9 = d6; - this.player.move(d4, d6, d7); - this.player.onGround = packet10flying.g; - this.player.a(d4, d6, d7); - d4 = d1 - this.player.locX; - d6 = d2 - this.player.locY; - if (d6 > -0.5D || d6 < 0.5D) { - d6 = 0.0D; - } + d4 = d1 - this.player.locX; + d6 = d2 - this.player.locY; + if (d6 > -0.5D || d6 < 0.5D) { + d6 = 0.0D; + } - d7 = d3 - this.player.locZ; - d8 = d4 * d4 + d6 * d6 + d7 * d7; - boolean flag1 = false; + d7 = d3 - this.player.locZ; + d8 = d4 * d4 + d6 * d6 + d7 * d7; + boolean flag1 = false; - if (d8 > 0.0625D && !this.player.isSleeping() && !this.player.itemInWorldManager.b()) { - flag1 = true; - a.warning(this.player.name + " moved wrongly!"); - System.out.println("Got position " + d1 + ", " + d2 + ", " + d3); - System.out.println("Expected " + this.player.locX + ", " + this.player.locY + ", " + this.player.locZ); - } + if (d8 > 0.0625D && !this.player.isSleeping() && !this.player.itemInWorldManager.b()) { + flag1 = true; + a.warning(this.player.name + " moved wrongly!"); + System.out.println("Got position " + d1 + ", " + d2 + ", " + d3); + System.out.println("Expected " + this.player.locX + ", " + this.player.locY + ", " + this.player.locZ); + } - this.player.setLocation(d1, d2, d3, f2, f3); - boolean flag2 = worldserver.getEntities(this.player, this.player.boundingBox.clone().shrink((double) f4, (double) f4, (double) f4)).size() == 0; + this.player.setLocation(d1, d2, d3, f2, f3); + boolean flag2 = worldserver.getEntities(this.player, this.player.boundingBox.clone().shrink((double) f4, (double) f4, (double) f4)).size() == 0; - if (flag && (flag1 || !flag2) && !this.player.isSleeping()) { - this.a(this.x, this.y, this.z, f2, f3); - return; - } + if (flag && (flag1 || !flag2) && !this.player.isSleeping()) { + this.a(this.x, this.y, this.z, f2, f3); + return; + } - AxisAlignedBB axisalignedbb = this.player.boundingBox.clone().b((double) f4, (double) f4, (double) f4).a(0.0D, -0.55D, 0.0D); + AxisAlignedBB axisalignedbb = this.player.boundingBox.clone().b((double) f4, (double) f4, (double) f4).a(0.0D, -0.55D, 0.0D); - if (!this.minecraftServer.allowFlight && !this.player.itemInWorldManager.b() && !worldserver.b(axisalignedbb)) { - if (d6 >= -0.03125D) { - ++this.g; - if (this.g > 80) { - a.warning(this.player.name + " was kicked for floating too long!"); - this.disconnect("Flying is not enabled on this server"); - return; + if (!this.minecraftServer.allowFlight && !this.player.itemInWorldManager.b() && !worldserver.b(axisalignedbb)) { + if (d9 >= -0.03125D) { + ++this.g; + if (this.g > 80) { + a.warning(this.player.name + " was kicked for floating too long!"); + this.disconnect("Flying is not enabled on this server"); + return; + } } + } else { + this.g = 0; } - } else { - this.g = 0; - } - this.player.onGround = packet10flying.g; - this.minecraftServer.serverConfigurationManager.d(this.player); - if (this.player.itemInWorldManager.b()) return; // CraftBukkit - fixed fall distance accumulating while being in Creative mode. - this.player.b(this.player.locY - d0, packet10flying.g); + this.player.onGround = packet10flying.g; + this.minecraftServer.serverConfigurationManager.d(this.player); + if (this.player.itemInWorldManager.b()) return; // CraftBukkit - fixed fall distance accumulating while being in Creative mode. + this.player.b(this.player.locY - d0, packet10flying.g); + } } } @@ -447,9 +451,9 @@ public class NetServerHandler extends NetHandler implements ICommandListener { } } // CraftBukkit end - this.player.J(); + this.player.N(); } else if (packet14blockdig.e == 5) { - this.player.E(); + this.player.I(); } else { boolean flag = worldserver.weirdIsOpCache = worldserver.dimension != 0 || this.minecraftServer.serverConfigurationManager.isOp(this.player.name); // CraftBukkit boolean flag1 = false; @@ -462,17 +466,13 @@ public class NetServerHandler extends NetHandler implements ICommandListener { flag1 = true; } - if (this.player.itemInWorldManager.b()) { - flag1 = true; // CraftBukkit - false -> true - } - int i = packet14blockdig.a; int j = packet14blockdig.b; int k = packet14blockdig.c; if (flag1) { double d0 = this.player.locX - ((double) i + 0.5D); - double d1 = this.player.locY - ((double) j + 0.5D); + double d1 = this.player.locY - ((double) j + 0.5D) + 1.5D; double d2 = this.player.locZ - ((double) k + 0.5D); double d3 = d0 * d0 + d1 * d1 + d2 * d2; @@ -629,13 +629,13 @@ public class NetServerHandler extends NetHandler implements ICommandListener { if (itemstack == null || itemstack.l() == 0) { this.player.h = true; this.player.inventory.items[this.player.inventory.itemInHandIndex] = ItemStack.b(this.player.inventory.items[this.player.inventory.itemInHandIndex]); - Slot slot = this.player.activeContainer.a(this.player.inventory, this.player.inventory.itemInHandIndex); + Slot slot = this.player.activeContainer.a((IInventory) this.player.inventory, this.player.inventory.itemInHandIndex); this.player.activeContainer.a(); this.player.h = false; // CraftBukkit | TODO CHECK IF NEEDED -- new if structure might not need 'always'. Kept it in for now, but may be able to remove in future if (!ItemStack.equals(this.player.inventory.getItemInHand(), packet15place.itemstack) || always) { - this.sendPacket(new Packet103SetSlot(this.player.activeContainer.windowId, slot.b, this.player.inventory.getItemInHand())); + this.sendPacket(new Packet103SetSlot(this.player.activeContainer.windowId, slot.c, this.player.inventory.getItemInHand())); } } @@ -671,7 +671,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener { this.networkManager.queue(new Packet3Chat(line)); } packet = null; - } else if (packet.k == true) { + } else if (packet.l == true) { // Reroute all low-priority packets through to compression thread. ChunkCompressionThread.sendPacket(this.player, packet); packet = null; @@ -684,8 +684,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener { // CraftBukkit start if (this.player.dead) return; - // Changed <= to < - if (packet16blockitemswitch.itemInHandIndex >= 0 && packet16blockitemswitch.itemInHandIndex < InventoryPlayer.g()) { + if (packet16blockitemswitch.itemInHandIndex >= 0 && packet16blockitemswitch.itemInHandIndex < InventoryPlayer.h()) { PlayerItemHeldEvent event = new PlayerItemHeldEvent(this.getPlayer(), this.player.inventory.itemInHandIndex, packet16blockitemswitch.itemInHandIndex); this.server.getPluginManager().callEvent(event); // CraftBukkit end @@ -832,7 +831,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener { if (event.isCancelled()) return; // CraftBukkit end - this.player.v(); + this.player.r_(); } } @@ -895,7 +894,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener { WorldServer worldserver = this.minecraftServer.getWorldServer(this.player.dimension); Entity entity = worldserver.getEntity(packet7useentity.target); - if (entity != null && this.player.f(entity) && this.player.h(entity) < 36.0D) { + if (entity != null && this.player.g(entity) && this.player.i(entity) < 36.0D) { ItemStack itemInHand = this.player.inventory.getItemInHand(); // CraftBukkit if (packet7useentity.c == 0) { // CraftBukkit start @@ -906,14 +905,14 @@ public class NetServerHandler extends NetHandler implements ICommandListener { return; } // CraftBukkit end - this.player.c(entity); + this.player.e(entity); // CraftBukkit start - update the client if the item is an infinite one if (itemInHand != null && itemInHand.count <= -1) { this.player.updateInventory(this.player.activeContainer); } // CraftBukkit end } else if (packet7useentity.c == 1) { - this.player.d(entity); + this.player.f(entity); // CraftBukkit start - update the client if the item is an infinite one if (itemInHand != null && itemInHand.count <= -1) { this.player.updateInventory(this.player.activeContainer); @@ -924,17 +923,22 @@ public class NetServerHandler extends NetHandler implements ICommandListener { } public void a(Packet9Respawn packet9respawn) { - if (this.player.health <= 0) { - this.player = this.minecraftServer.serverConfigurationManager.moveToWorld(this.player, 0); + if (this.player.j) { + this.player = this.minecraftServer.serverConfigurationManager.moveToWorld(this.player, 0, true); + } else { + if (this.player.getHealth() > 0) { + return; + } - this.getPlayer().setHandle(this.player); // CraftBukkit + this.player = this.minecraftServer.serverConfigurationManager.moveToWorld(this.player, 0, false); } + this.getPlayer().setHandle(this.player); // CraftBukkit } public void a(Packet101CloseWindow packet101closewindow) { if (this.player.dead) return; // CraftBukkit - this.player.z(); + this.player.D(); } public void a(Packet102WindowClick packet102windowclick) { @@ -947,7 +951,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener { this.player.netServerHandler.sendPacket(new Packet106Transaction(packet102windowclick.a, packet102windowclick.d, true)); this.player.h = true; this.player.activeContainer.a(); - this.player.y(); + this.player.C(); this.player.h = false; } else { this.q.a(this.player.activeContainer.windowId, Short.valueOf(packet102windowclick.d)); @@ -964,22 +968,31 @@ public class NetServerHandler extends NetHandler implements ICommandListener { } } + public void a(Packet108 packet108) { + if (this.player.activeContainer.windowId == packet108.a && this.player.activeContainer.c(this.player)) { + this.player.activeContainer.a((EntityHuman) this.player, packet108.b); + this.player.activeContainer.a(); + } + } + public void a(Packet107SetCreativeSlot packet107setcreativeslot) { if (this.player.itemInWorldManager.b()) { - boolean flag = packet107setcreativeslot.a >= 36 && packet107setcreativeslot.a < 36 + InventoryPlayer.g(); - boolean flag1 = packet107setcreativeslot.b >= -1 && packet107setcreativeslot.b < Item.byId.length && (packet107setcreativeslot.b < 0 || Item.byId[packet107setcreativeslot.b] != null); - boolean flag2 = packet107setcreativeslot.d >= 0 && packet107setcreativeslot.c >= 0 && packet107setcreativeslot.c <= 64; - - if (flag && flag1 && flag2) { - if (packet107setcreativeslot.b <= 0) { + boolean flag = packet107setcreativeslot.a < 0; + ItemStack itemstack = packet107setcreativeslot.b; + boolean flag1 = packet107setcreativeslot.a >= 36 && packet107setcreativeslot.a < 36 + InventoryPlayer.h(); + boolean flag2 = itemstack == null || itemstack.id < Item.byId.length && itemstack.id >= 0 && Item.byId[itemstack.id] != null; + boolean flag3 = itemstack == null || itemstack.getData() >= 0 && itemstack.getData() >= 0 && itemstack.count <= 64 && itemstack.count > 0; + + if (flag1 && flag2 && flag3) { + if (itemstack == null) { this.player.defaultContainer.a(packet107setcreativeslot.a, (ItemStack) null); } else { - this.player.defaultContainer.a(packet107setcreativeslot.a, new ItemStack(packet107setcreativeslot.b, packet107setcreativeslot.c, packet107setcreativeslot.d)); + this.player.defaultContainer.a(packet107setcreativeslot.a, itemstack); } this.player.defaultContainer.a(this.player, true); - } else if (!flag && flag1 && flag2 && packet107setcreativeslot.a == -1 && packet107setcreativeslot.b > 0) { - this.player.b(new ItemStack(packet107setcreativeslot.b, packet107setcreativeslot.c, packet107setcreativeslot.d)); + } else if (flag && flag2 && flag3) { + this.player.b(itemstack); } } } @@ -1004,8 +1017,8 @@ public class NetServerHandler extends NetHandler implements ICommandListener { 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"); + if (!tileentitysign.c()) { + this.minecraftServer.warning("Player " + this.player.name + " just tried to change non-editable sign"); // CraftBukkit this.sendPacket(new Packet130UpdateSign(packet130updatesign.x, packet130updatesign.y, packet130updatesign.z, tileentitysign.lines)); return; -- cgit v1.2.3