mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-02 09:21:57 +01:00
603159dedf
Removes PlayerMicroMoveEvent API, the ability to disable the AsyncCatcher, and the TeleportPassengerVehicleWithPlayer patch
86 lines
No EOL
4.1 KiB
Diff
86 lines
No EOL
4.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jedediah Smith <jedediah@silencegreys.com>
|
|
Date: Fri, 3 Apr 2015 17:26:21 -0400
|
|
Subject: [PATCH] Send absolute position the first time an entity is seen
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
|
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
|
|
@@ -0,0 +0,0 @@ public class EntityTrackerEntry {
|
|
private boolean y;
|
|
public boolean n;
|
|
public Set<EntityPlayer> trackedPlayers = Sets.newHashSet();
|
|
+ public Set<EntityPlayer> freshViewers = Sets.newHashSet(); // PaperSpigot
|
|
|
|
public EntityTrackerEntry(Entity entity, int i, int j, boolean flag) {
|
|
this.tracker = entity;
|
|
@@ -0,0 +0,0 @@ public class EntityTrackerEntry {
|
|
boolean flag = Math.abs(j1) >= 4 || Math.abs(k1) >= 4 || Math.abs(l1) >= 4 || this.m % 60 == 0;
|
|
boolean flag1 = Math.abs(l - this.yRot) >= 4 || Math.abs(i1 - this.xRot) >= 4;
|
|
|
|
- // CraftBukkit start - Code moved from below
|
|
- if (flag) {
|
|
- this.xLoc = i;
|
|
- this.yLoc = j;
|
|
- this.zLoc = k;
|
|
- }
|
|
+ if (this.m > 0 || this.tracker instanceof EntityArrow) { // PaperSpigot - Move up
|
|
+ // CraftBukkit start - Code moved from below
|
|
+ if (flag) {
|
|
+ this.xLoc = i;
|
|
+ this.yLoc = j;
|
|
+ this.zLoc = k;
|
|
+ }
|
|
|
|
- if (flag1) {
|
|
- this.yRot = l;
|
|
- this.xRot = i1;
|
|
- }
|
|
- // CraftBukkit end
|
|
+ if (flag1) {
|
|
+ this.yRot = l;
|
|
+ this.xRot = i1;
|
|
+ }
|
|
+ // CraftBukkit end
|
|
|
|
- if (this.m > 0 || this.tracker instanceof EntityArrow) {
|
|
if (j1 >= -128 && j1 < 128 && k1 >= -128 && k1 < 128 && l1 >= -128 && l1 < 128 && this.v <= 400 && !this.x && this.y == this.tracker.onGround) {
|
|
if ((!flag || !flag1) && !(this.tracker instanceof EntityArrow)) {
|
|
if (flag) {
|
|
@@ -0,0 +0,0 @@ public class EntityTrackerEntry {
|
|
}
|
|
|
|
if (object != null) {
|
|
- this.broadcast((Packet) object);
|
|
+ // PaperSpigot start - ensure fresh viewers get an absolute position on their first update,
|
|
+ // since we can't be certain what position they received in the spawn packet.
|
|
+ if (object instanceof PacketPlayOutEntityTeleport) {
|
|
+ this.broadcast((Packet) object);
|
|
+ } else {
|
|
+ PacketPlayOutEntityTeleport teleportPacket = new PacketPlayOutEntityTeleport(this.tracker.getId(), i, j, k, (byte) l, (byte) i1, this.tracker.onGround);
|
|
+
|
|
+ for (EntityPlayer viewer : (Set<EntityPlayer>) this.trackedPlayers) {
|
|
+ if (this.freshViewers.contains(viewer)) {
|
|
+ viewer.playerConnection.sendPacket(teleportPacket);
|
|
+ } else {
|
|
+ viewer.playerConnection.sendPacket((Packet) object);
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+
|
|
+ this.freshViewers.clear();
|
|
+ // PaperSpigot end
|
|
}
|
|
|
|
this.b();
|
|
@@ -0,0 +0,0 @@ public class EntityTrackerEntry {
|
|
|
|
entityplayer.removeQueue.remove(Integer.valueOf(this.tracker.getId()));
|
|
// CraftBukkit end
|
|
+ this.freshViewers.add(entityplayer); // PaperSpigot
|
|
this.trackedPlayers.add(entityplayer);
|
|
Packet packet = this.c();
|
|
|
|
--
|