3
0
Mirror von https://github.com/PaperMC/Paper.git synchronisiert 2024-12-18 12:30:06 +01:00

Fix switch case labelling and drop items check.

Dieser Commit ist enthalten in:
md_5 2016-03-12 21:07:17 +11:00
Ursprung 1386bd3ddf
Commit 6026dad124

Datei anzeigen

@ -501,7 +501,7 @@
if (++this.teleportAwait == Integer.MAX_VALUE) { if (++this.teleportAwait == Integer.MAX_VALUE) {
this.teleportAwait = 0; this.teleportAwait = 0;
} }
@@ -399,15 +737,32 @@ @@ -399,14 +737,16 @@
public void a(PacketPlayInBlockDig packetplayinblockdig) { public void a(PacketPlayInBlockDig packetplayinblockdig) {
PlayerConnectionUtils.ensureMainThread(packetplayinblockdig, this, this.player.x()); PlayerConnectionUtils.ensureMainThread(packetplayinblockdig, this, this.player.x());
@ -515,7 +515,16 @@
+ // CraftBukkit start + // CraftBukkit start
switch (PlayerConnection.SyntheticClass_1.a[packetplayinblockdig.c().ordinal()]) { switch (PlayerConnection.SyntheticClass_1.a[packetplayinblockdig.c().ordinal()]) {
- case 1: - case 1:
+ case 1: // DROP_ITEM + case 1: // SWAP_HELD_ITEMS
if (!this.player.isSpectator()) {
itemstack = this.player.b(EnumHand.OFF_HAND);
this.player.a(EnumHand.OFF_HAND, this.player.b(EnumHand.MAIN_HAND));
@@ -415,21 +755,36 @@
return;
- case 2:
+ case 2: // DROP_ITEM
if (!this.player.isSpectator()) { if (!this.player.isSpectator()) {
+ // limit how quickly items can be dropped + // limit how quickly items can be dropped
+ // If the ticks aren't the same then the count starts from 0 and we update the lastDropTick. + // If the ticks aren't the same then the count starts from 0 and we update the lastDropTick.
@ -526,29 +535,19 @@
+ // Else we increment the drop count and check the amount. + // Else we increment the drop count and check the amount.
+ this.dropCount++; + this.dropCount++;
+ if (this.dropCount >= 20) { + if (this.dropCount >= 20) {
+ this.LOGGER.warn(this.player.getName() + " dropped their items too quickly!"); + LOGGER.warn(this.player.getName() + " dropped their items too quickly!");
+ this.disconnect("You dropped your items too quickly (Hacking?)"); + this.disconnect("You dropped your items too quickly (Hacking?)");
+ return; + return;
+ } + }
+ } + }
+ // CraftBukkit end + // CraftBukkit end
itemstack = this.player.b(EnumHand.OFF_HAND);
this.player.a(EnumHand.OFF_HAND, this.player.b(EnumHand.MAIN_HAND));
this.player.a(EnumHand.MAIN_HAND, itemstack);
@@ -415,21 +770,21 @@
return;
- case 2:
+ case 2: // DROP_ALL_ITEMS
if (!this.player.isSpectator()) {
this.player.a(false); this.player.a(false);
} }
return; return;
- case 3: - case 3:
+ case 3: // RELEASE_USE_ITEM + case 3: // DROP_ALL_ITEMS
if (!this.player.isSpectator()) { if (!this.player.isSpectator()) {
this.player.a(true); this.player.a(true);
} }
@ -556,21 +555,23 @@
return; return;
- case 4: - case 4:
+ case 4: // START_DESTROY_BLOCK + case 4: // RELEASE_USE_ITEM
this.player.clearActiveItem(); this.player.clearActiveItem();
itemstack = this.player.getItemInMainHand(); itemstack = this.player.getItemInMainHand();
if (itemstack != null && itemstack.count == 0) { if (itemstack != null && itemstack.count == 0) {
@@ -438,8 +793,8 @@ @@ -438,9 +793,9 @@
return; return;
- case 5: - case 5:
- case 6: - case 6:
+ case 5: // ABORT_DESTROY_BLOCK - case 7:
+ case 6: // STOP_DESTROY_BLOCK + case 5: // START_DESTROY_BLOCK
case 7: + case 6: // ABORT_DESTROY_BLOCK
+ case 7: // STOP_DESTROY_BLOCK
double d0 = this.player.locX - ((double) blockposition.getX() + 0.5D); double d0 = this.player.locX - ((double) blockposition.getX() + 0.5D);
double d1 = this.player.locY - ((double) blockposition.getY() + 0.5D) + 1.5D; double d1 = this.player.locY - ((double) blockposition.getY() + 0.5D) + 1.5D;
double d2 = this.player.locZ - ((double) blockposition.getZ() + 0.5D);
@@ -455,7 +810,15 @@ @@ -455,7 +810,15 @@
if (!this.minecraftServer.a(worldserver, blockposition, this.player) && worldserver.getWorldBorder().a(blockposition)) { if (!this.minecraftServer.a(worldserver, blockposition, this.player) && worldserver.getWorldBorder().a(blockposition)) {
this.player.playerInteractManager.a(blockposition, packetplayinblockdig.b()); this.player.playerInteractManager.a(blockposition, packetplayinblockdig.b());