Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-17 03:50:08 +01:00
Welcome back snapshot protocol patch! Now 30% more reliable than a leading brand of car cleaner! Testers welcome <3
Dieser Commit ist enthalten in:
Ursprung
b9d0fab579
Commit
566e67a188
393
CraftBukkit-Patches/0039-Snapshot-Protocol.patch
Normale Datei
393
CraftBukkit-Patches/0039-Snapshot-Protocol.patch
Normale Datei
@ -0,0 +1,393 @@
|
||||
From ee9246854da8fff0ec2a98c4e3263334325c0a52 Mon Sep 17 00:00:00 2001
|
||||
From: md_5 <md_5@live.com.au>
|
||||
Date: Fri, 19 Apr 2013 19:13:42 +1000
|
||||
Subject: [PATCH] Snapshot Protocol
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java
|
||||
index cd032ae..14da2b9 100644
|
||||
--- a/src/main/java/net/minecraft/server/ItemStack.java
|
||||
+++ b/src/main/java/net/minecraft/server/ItemStack.java
|
||||
@@ -41,6 +41,7 @@ public final class ItemStack {
|
||||
this.id = i;
|
||||
this.count = j;
|
||||
// CraftBukkit start - Pass to setData to do filtering
|
||||
+ if (org.bukkit.craftbukkit.Spigot.snapshotSupport && this.id >= 170 && this.id <= 171) this.id = 0; // Spigot
|
||||
this.setData(k);
|
||||
//if (this.damage < 0) {
|
||||
// this.damage = 0;
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index a1d77ad..ad6cc57 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -753,7 +753,7 @@ public abstract class MinecraftServer implements ICommandListener, Runnable, IMo
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
- return "1.5.1";
|
||||
+ return (org.bukkit.craftbukkit.Spigot.snapshotSupport) ? org.bukkit.craftbukkit.Spigot.snapshotVersion : "1.5.1";
|
||||
}
|
||||
|
||||
public int y() {
|
||||
diff --git a/src/main/java/net/minecraft/server/Packet19EntityAction.java b/src/main/java/net/minecraft/server/Packet19EntityAction.java
|
||||
new file mode 100644
|
||||
index 0000000..259dcbb
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/net/minecraft/server/Packet19EntityAction.java
|
||||
@@ -0,0 +1,32 @@
|
||||
+package net.minecraft.server;
|
||||
+
|
||||
+import java.io.DataInputStream;
|
||||
+import java.io.DataOutputStream;
|
||||
+import java.io.IOException;
|
||||
+
|
||||
+public class Packet19EntityAction extends Packet {
|
||||
+
|
||||
+ public int a;
|
||||
+ public int animation;
|
||||
+
|
||||
+ public Packet19EntityAction() {}
|
||||
+
|
||||
+ public void a(DataInputStream datainputstream) throws IOException {
|
||||
+ this.a = datainputstream.readInt();
|
||||
+ this.animation = datainputstream.readByte();
|
||||
+ if (org.bukkit.craftbukkit.Spigot.snapshotSupport) datainputstream.readInt(); // Spigot
|
||||
+ }
|
||||
+
|
||||
+ public void a(DataOutputStream dataoutputstream) throws IOException {
|
||||
+ dataoutputstream.writeInt(this.a);
|
||||
+ dataoutputstream.writeByte(this.animation);
|
||||
+ }
|
||||
+
|
||||
+ public void handle(Connection connection) {
|
||||
+ connection.a(this);
|
||||
+ }
|
||||
+
|
||||
+ public int a() {
|
||||
+ return 5;
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/net/minecraft/server/Packet202Abilities.java b/src/main/java/net/minecraft/server/Packet202Abilities.java
|
||||
new file mode 100644
|
||||
index 0000000..2a2dad5
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/net/minecraft/server/Packet202Abilities.java
|
||||
@@ -0,0 +1,131 @@
|
||||
+package net.minecraft.server;
|
||||
+
|
||||
+import java.io.DataInputStream;
|
||||
+import java.io.DataOutputStream;
|
||||
+import java.io.IOException;
|
||||
+
|
||||
+public class Packet202Abilities extends Packet {
|
||||
+
|
||||
+ private boolean a = false;
|
||||
+ private boolean b = false;
|
||||
+ private boolean c = false;
|
||||
+ private boolean d = false;
|
||||
+ private float e;
|
||||
+ private float f;
|
||||
+
|
||||
+ public Packet202Abilities() {}
|
||||
+
|
||||
+ public Packet202Abilities(PlayerAbilities playerabilities) {
|
||||
+ this.a(playerabilities.isInvulnerable);
|
||||
+ this.b(playerabilities.isFlying);
|
||||
+ this.c(playerabilities.canFly);
|
||||
+ this.d(playerabilities.canInstantlyBuild);
|
||||
+ this.a(playerabilities.a());
|
||||
+ this.b(playerabilities.b());
|
||||
+ }
|
||||
+
|
||||
+ public void a(DataInputStream datainputstream) throws IOException {
|
||||
+ byte b0 = datainputstream.readByte();
|
||||
+
|
||||
+ this.a((b0 & 1) > 0);
|
||||
+ this.b((b0 & 2) > 0);
|
||||
+ this.c((b0 & 4) > 0);
|
||||
+ this.d((b0 & 8) > 0);
|
||||
+ // Spigot start
|
||||
+ if (org.bukkit.craftbukkit.Spigot.snapshotSupport) {
|
||||
+ this.a(datainputstream.readFloat());
|
||||
+ this.b(datainputstream.readFloat());
|
||||
+ } else {
|
||||
+ this.a((float) datainputstream.readByte() / 255.0F);
|
||||
+ this.b((float) datainputstream.readByte() / 255.0F);
|
||||
+ }
|
||||
+ // Spigot end
|
||||
+ }
|
||||
+
|
||||
+ public void a(DataOutputStream dataoutputstream) throws IOException {
|
||||
+ byte b0 = 0;
|
||||
+
|
||||
+ if (this.d()) {
|
||||
+ b0 = (byte) (b0 | 1);
|
||||
+ }
|
||||
+
|
||||
+ if (this.f()) {
|
||||
+ b0 = (byte) (b0 | 2);
|
||||
+ }
|
||||
+
|
||||
+ if (this.g()) {
|
||||
+ b0 = (byte) (b0 | 4);
|
||||
+ }
|
||||
+
|
||||
+ if (this.h()) {
|
||||
+ b0 = (byte) (b0 | 8);
|
||||
+ }
|
||||
+
|
||||
+ dataoutputstream.writeByte(b0);
|
||||
+ // Spigot start
|
||||
+ if (org.bukkit.craftbukkit.Spigot.snapshotSupport) {
|
||||
+ dataoutputstream.writeFloat(this.e);
|
||||
+ dataoutputstream.writeFloat(this.f);
|
||||
+ } else {
|
||||
+ dataoutputstream.writeByte((int) (this.e * 255.0F));
|
||||
+ dataoutputstream.writeByte((int) (this.f * 255.0F));
|
||||
+ }
|
||||
+ // Spigot end
|
||||
+ }
|
||||
+
|
||||
+ public void handle(Connection connection) {
|
||||
+ connection.a(this);
|
||||
+ }
|
||||
+
|
||||
+ public int a() {
|
||||
+ return 2;
|
||||
+ }
|
||||
+
|
||||
+ public boolean d() {
|
||||
+ return this.a;
|
||||
+ }
|
||||
+
|
||||
+ public void a(boolean flag) {
|
||||
+ this.a = flag;
|
||||
+ }
|
||||
+
|
||||
+ public boolean f() {
|
||||
+ return this.b;
|
||||
+ }
|
||||
+
|
||||
+ public void b(boolean flag) {
|
||||
+ this.b = flag;
|
||||
+ }
|
||||
+
|
||||
+ public boolean g() {
|
||||
+ return this.c;
|
||||
+ }
|
||||
+
|
||||
+ public void c(boolean flag) {
|
||||
+ this.c = flag;
|
||||
+ }
|
||||
+
|
||||
+ public boolean h() {
|
||||
+ return this.d;
|
||||
+ }
|
||||
+
|
||||
+ public void d(boolean flag) {
|
||||
+ this.d = flag;
|
||||
+ }
|
||||
+
|
||||
+ public void a(float f) {
|
||||
+ this.e = f;
|
||||
+ }
|
||||
+
|
||||
+ public void b(float f) {
|
||||
+ this.f = f;
|
||||
+ }
|
||||
+
|
||||
+ public boolean e() {
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ public boolean a(Packet packet) {
|
||||
+ return true;
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/net/minecraft/server/Packet39AttachEntity.java b/src/main/java/net/minecraft/server/Packet39AttachEntity.java
|
||||
new file mode 100644
|
||||
index 0000000..a728ace
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/net/minecraft/server/Packet39AttachEntity.java
|
||||
@@ -0,0 +1,47 @@
|
||||
+package net.minecraft.server;
|
||||
+
|
||||
+import java.io.DataInputStream;
|
||||
+import java.io.DataOutputStream;
|
||||
+import java.io.IOException;
|
||||
+
|
||||
+public class Packet39AttachEntity extends Packet {
|
||||
+
|
||||
+ public int a;
|
||||
+ public int b;
|
||||
+
|
||||
+ public Packet39AttachEntity() {}
|
||||
+
|
||||
+ public Packet39AttachEntity(Entity entity, Entity entity1) {
|
||||
+ this.a = entity.id;
|
||||
+ this.b = entity1 != null ? entity1.id : -1;
|
||||
+ }
|
||||
+
|
||||
+ public int a() {
|
||||
+ return 8;
|
||||
+ }
|
||||
+
|
||||
+ public void a(DataInputStream datainputstream) throws IOException {
|
||||
+ this.a = datainputstream.readInt();
|
||||
+ this.b = datainputstream.readInt();
|
||||
+ }
|
||||
+
|
||||
+ public void a(DataOutputStream dataoutputstream) throws IOException {
|
||||
+ dataoutputstream.writeInt(this.a);
|
||||
+ dataoutputstream.writeInt(this.b);
|
||||
+ if (org.bukkit.craftbukkit.Spigot.snapshotSupport) dataoutputstream.writeBoolean(false); // Spigot
|
||||
+ }
|
||||
+
|
||||
+ public void handle(Connection connection) {
|
||||
+ connection.a(this);
|
||||
+ }
|
||||
+
|
||||
+ public boolean e() {
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ public boolean a(Packet packet) {
|
||||
+ Packet39AttachEntity packet39attachentity = (Packet39AttachEntity) packet;
|
||||
+
|
||||
+ return packet39attachentity.a == this.a;
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/net/minecraft/server/Packet8UpdateHealth.java b/src/main/java/net/minecraft/server/Packet8UpdateHealth.java
|
||||
new file mode 100644
|
||||
index 0000000..bbfbb88
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/net/minecraft/server/Packet8UpdateHealth.java
|
||||
@@ -0,0 +1,52 @@
|
||||
+package net.minecraft.server;
|
||||
+
|
||||
+import java.io.DataInputStream;
|
||||
+import java.io.DataOutputStream;
|
||||
+import java.io.IOException;
|
||||
+
|
||||
+public class Packet8UpdateHealth extends Packet {
|
||||
+
|
||||
+ public float a;
|
||||
+ public int b;
|
||||
+ public float c;
|
||||
+
|
||||
+ public Packet8UpdateHealth() {}
|
||||
+
|
||||
+ public Packet8UpdateHealth(int i, int j, float f) {
|
||||
+ this.a = i;
|
||||
+ this.b = j;
|
||||
+ this.c = f;
|
||||
+ }
|
||||
+
|
||||
+ public void a(DataInputStream datainputstream) throws IOException {
|
||||
+ this.a = datainputstream.readShort();
|
||||
+ this.b = datainputstream.readShort();
|
||||
+ this.c = datainputstream.readFloat();
|
||||
+ }
|
||||
+
|
||||
+ public void a(DataOutputStream dataoutputstream) throws IOException {
|
||||
+ if (org.bukkit.craftbukkit.Spigot.snapshotSupport) {
|
||||
+ dataoutputstream.writeFloat(this.a);
|
||||
+ } else {
|
||||
+ dataoutputstream.writeShort((short) this.a);
|
||||
+ }
|
||||
+ dataoutputstream.writeShort(this.b);
|
||||
+ dataoutputstream.writeFloat(this.c);
|
||||
+ }
|
||||
+
|
||||
+ public void handle(Connection connection) {
|
||||
+ connection.a(this);
|
||||
+ }
|
||||
+
|
||||
+ public int a() {
|
||||
+ return 8;
|
||||
+ }
|
||||
+
|
||||
+ public boolean e() {
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ public boolean a(Packet packet) {
|
||||
+ return true;
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/net/minecraft/server/PendingConnection.java b/src/main/java/net/minecraft/server/PendingConnection.java
|
||||
index 27cf4e3..adc3509 100644
|
||||
--- a/src/main/java/net/minecraft/server/PendingConnection.java
|
||||
+++ b/src/main/java/net/minecraft/server/PendingConnection.java
|
||||
@@ -77,8 +77,8 @@ public class PendingConnection extends Connection {
|
||||
} else {
|
||||
PublicKey publickey = this.server.F().getPublic();
|
||||
|
||||
- if (packet2handshake.d() != 60) {
|
||||
- if (packet2handshake.d() > 60) {
|
||||
+ if (packet2handshake.d() != ((org.bukkit.craftbukkit.Spigot.snapshotSupport) ? org.bukkit.craftbukkit.Spigot.snapshotProtocolVersion : 60)) {
|
||||
+ if (packet2handshake.d() > ((org.bukkit.craftbukkit.Spigot.snapshotSupport) ? org.bukkit.craftbukkit.Spigot.snapshotProtocolVersion : 60)) {
|
||||
this.disconnect("Outdated server!");
|
||||
} else {
|
||||
this.disconnect("Outdated client!");
|
||||
@@ -153,7 +153,7 @@ public class PendingConnection extends Connection {
|
||||
|
||||
if (true) {
|
||||
// CraftBukkit start - Fix decompile issues, don't create a list from an array
|
||||
- Object[] list = new Object[] { 1, 60, this.server.getVersion(), pingEvent.getMotd(), playerlist.getPlayerCount(), pingEvent.getMaxPlayers() };
|
||||
+ Object[] list = new Object[]{1, ((org.bukkit.craftbukkit.Spigot.snapshotSupport) ? org.bukkit.craftbukkit.Spigot.snapshotProtocolVersion : 60), this.server.getVersion(), pingEvent.getMotd(), playerlist.getPlayerCount(), pingEvent.getMaxPlayers()};
|
||||
|
||||
for (Object object : list) {
|
||||
if (s == null) {
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/Spigot.java b/src/main/java/org/bukkit/craftbukkit/Spigot.java
|
||||
index ff28a99..99e8aa8 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/Spigot.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/Spigot.java
|
||||
@@ -28,6 +28,9 @@ public class Spigot {
|
||||
public static List<String> bungeeIPs;
|
||||
public static int textureResolution = 16;
|
||||
public static final Pattern validName = Pattern.compile("^[a-zA-Z0-9_]{2,16}$");
|
||||
+ public static boolean snapshotSupport;
|
||||
+ public static int snapshotProtocolVersion = 62;
|
||||
+ public static String snapshotVersion = "13w16a";
|
||||
|
||||
public static void initialize(CraftServer server, SimpleCommandMap commandMap, YamlConfiguration configuration) {
|
||||
commandMap.register("bukkit", new org.bukkit.craftbukkit.command.TicksPerSecondCommand("tps"));
|
||||
@@ -67,6 +70,10 @@ public class Spigot {
|
||||
tabPing = configuration.getBoolean("settings.tab-ping", tabPing);
|
||||
bungeeIPs = configuration.getStringList("settings.bungee-proxies");
|
||||
textureResolution = configuration.getInt("settings.texture-resolution", textureResolution);
|
||||
+ snapshotSupport = configuration.getBoolean("settings.snapshot-protocol", snapshotSupport);
|
||||
+ if (snapshotSupport) {
|
||||
+ server.getLogger().log(Level.INFO, "Enabled support for pre release / snapshot version {0}", snapshotVersion);
|
||||
+ }
|
||||
|
||||
if (metrics == null) {
|
||||
try {
|
||||
@@ -354,7 +361,9 @@ public class Spigot {
|
||||
}
|
||||
|
||||
/**
|
||||
- * Gets the range an entity should be 'tracked' by players and visible in the client.
|
||||
+ * Gets the range an entity should be 'tracked' by players and visible in
|
||||
+ * the client.
|
||||
+ *
|
||||
* @param entity
|
||||
* @param defaultRange Default range defined by Mojang
|
||||
* @return
|
||||
diff --git a/src/main/resources/configurations/bukkit.yml b/src/main/resources/configurations/bukkit.yml
|
||||
index 891d7fa..1534a25 100644
|
||||
--- a/src/main/resources/configurations/bukkit.yml
|
||||
+++ b/src/main/resources/configurations/bukkit.yml
|
||||
@@ -40,6 +40,8 @@ settings:
|
||||
bungee-proxies:
|
||||
- 127.0.0.1
|
||||
texture-resolution: 16
|
||||
+ # fakes the latest pre release / snapshot
|
||||
+ snapshot-protocol: false
|
||||
world-settings:
|
||||
default:
|
||||
growth-chunks-per-tick: 650
|
||||
--
|
||||
1.8.2.1
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren