summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/NetServerHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/minecraft/server/NetServerHandler.java')
-rw-r--r--src/main/java/net/minecraft/server/NetServerHandler.java465
1 files changed, 239 insertions, 226 deletions
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;