geforkt von Mirrors/Paper
Actually remove the old patches
Dieser Commit ist enthalten in:
Ursprung
3c59415aa1
Commit
7cae4cb66f
@ -1,37 +0,0 @@
|
|||||||
From 59a46b8a6c85a4c77499ee8fe98b140b87ec524b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Thinkofdeath <thethinkofdeath@gmail.com>
|
|
||||||
Date: Thu, 17 Apr 2014 12:58:08 +0100
|
|
||||||
Subject: [PATCH] Add quiet option to hasKeyOfType
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/NBTTagCompound.java b/src/main/java/net/minecraft/server/NBTTagCompound.java
|
|
||||||
index 5b8842f..7931c4a 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/NBTTagCompound.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/NBTTagCompound.java
|
|
||||||
@@ -119,13 +119,21 @@ public class NBTTagCompound extends NBTBase {
|
|
||||||
return this.map.containsKey(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
- public boolean hasKeyOfType(String s, int i) {
|
|
||||||
+ // Spigot start - Add quiet option
|
|
||||||
+ public boolean hasKeyOfType(String s, int i)
|
|
||||||
+ {
|
|
||||||
+ return hasKeyOfType( s, i, false );
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public boolean hasKeyOfType(String s, int i, boolean quiet)
|
|
||||||
+ {
|
|
||||||
byte b0 = this.b(s);
|
|
||||||
|
|
||||||
if (b0 == i) {
|
|
||||||
return true;
|
|
||||||
} else if (i != 99) {
|
|
||||||
- if (b0 > 0) {
|
|
||||||
+ if (b0 > 0 && !quiet) {
|
|
||||||
+ // Spigot end
|
|
||||||
b.warn("NBT tag {} was of wrong type; expected {}, found {}", new Object[] { s, getTagName(i), getTagName(b0)});
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
1.9.1
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
|||||||
From 336e47f7667c88b93d2270fc264bd0cfffe1b307 Mon Sep 17 00:00:00 2001
|
|
||||||
From: md_5 <git@md-5.net>
|
|
||||||
Date: Sun, 20 Apr 2014 11:16:54 +1000
|
|
||||||
Subject: [PATCH] Log null TileEntity Owner
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java
|
|
||||||
index 78e17d7..19d008c 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/TileEntity.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/TileEntity.java
|
|
||||||
@@ -177,7 +177,14 @@ public class TileEntity {
|
|
||||||
|
|
||||||
// CraftBukkit start - add method
|
|
||||||
public InventoryHolder getOwner() {
|
|
||||||
- org.bukkit.block.BlockState state = world.getWorld().getBlockAt(x, y, z).getState();
|
|
||||||
+ // Spigot start
|
|
||||||
+ org.bukkit.block.Block block = world.getWorld().getBlockAt(x, y, z);
|
|
||||||
+ if (block == null) {
|
|
||||||
+ org.bukkit.Bukkit.getLogger().log(java.util.logging.Level.WARNING, "No block for owner at %s %d %d %d", new Object[]{world.getWorld(), x, y, z});
|
|
||||||
+ return null;
|
|
||||||
+ }
|
|
||||||
+ // Spigot end
|
|
||||||
+ org.bukkit.block.BlockState state = block.getState();
|
|
||||||
if (state instanceof InventoryHolder) return (InventoryHolder) state;
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
1.9.1
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
|||||||
From e0c38283dbe5d50a2b6290bf60d75140814e80e4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: md_5 <git@md-5.net>
|
|
||||||
Date: Sun, 20 Apr 2014 18:58:00 +1000
|
|
||||||
Subject: [PATCH] Don't special case 'invalid' usernames for UUIDs.
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
||||||
index 7c265b5..a996677 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
||||||
@@ -231,8 +231,6 @@ public final class CraftServer implements Server {
|
|
||||||
private boolean printSaveWarning;
|
|
||||||
private CraftIconCache icon;
|
|
||||||
private boolean overrideAllCommandBlockCommands = false;
|
|
||||||
- private final Pattern validUserPattern = Pattern.compile("^[a-zA-Z0-9_]{2,16}$");
|
|
||||||
- private final UUID invalidUserUUID = UUID.nameUUIDFromBytes("InvalidUsername".getBytes(Charsets.UTF_8));
|
|
||||||
|
|
||||||
private final class BooleanWrapper {
|
|
||||||
private boolean value = true;
|
|
||||||
@@ -1321,11 +1319,6 @@ public final class CraftServer implements Server {
|
|
||||||
Validate.notNull(name, "Name cannot be null");
|
|
||||||
com.google.common.base.Preconditions.checkArgument( !org.apache.commons.lang.StringUtils.isBlank( name ), "Name cannot be blank" ); // Spigot
|
|
||||||
|
|
||||||
- // If the name given cannot ever be a valid username give a dummy return, for scoreboard plugins
|
|
||||||
- if (!validUserPattern.matcher(name).matches()) {
|
|
||||||
- return new CraftOfflinePlayer(this, new GameProfile(invalidUserUUID, name));
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
OfflinePlayer result = getPlayerExact(name);
|
|
||||||
if (result == null) {
|
|
||||||
// This is potentially blocking :(
|
|
||||||
--
|
|
||||||
1.9.1
|
|
||||||
|
|
@ -1,96 +0,0 @@
|
|||||||
From ee8b9ae55fe9c950dbfd15a9c50e1ed5341cd92b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Thinkofdeath <thethinkofdeath@gmail.com>
|
|
||||||
Date: Sun, 20 Apr 2014 13:18:55 +0100
|
|
||||||
Subject: [PATCH] Convert player skulls async
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/TileEntitySkull.java b/src/main/java/net/minecraft/server/TileEntitySkull.java
|
|
||||||
index 748f00a..a239f04 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/TileEntitySkull.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/TileEntitySkull.java
|
|
||||||
@@ -6,11 +6,25 @@ import net.minecraft.util.com.google.common.collect.Iterables;
|
|
||||||
import net.minecraft.util.com.mojang.authlib.GameProfile;
|
|
||||||
import net.minecraft.util.com.mojang.authlib.properties.Property;
|
|
||||||
|
|
||||||
+// Spigot start
|
|
||||||
+import java.util.concurrent.Executor;
|
|
||||||
+import java.util.concurrent.Executors;
|
|
||||||
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
|
||||||
+import net.minecraft.util.com.mojang.authlib.Agent;
|
|
||||||
+// Spigot end
|
|
||||||
+
|
|
||||||
public class TileEntitySkull extends TileEntity {
|
|
||||||
|
|
||||||
private int a;
|
|
||||||
private int i;
|
|
||||||
private GameProfile j = null;
|
|
||||||
+ // Spigot start
|
|
||||||
+ private static final Executor executor = Executors.newFixedThreadPool(3,
|
|
||||||
+ new ThreadFactoryBuilder()
|
|
||||||
+ .setNameFormat("Head Conversion Thread - %1$d")
|
|
||||||
+ .build()
|
|
||||||
+ );
|
|
||||||
+ // Spigot end
|
|
||||||
|
|
||||||
public TileEntitySkull() {}
|
|
||||||
|
|
||||||
@@ -65,18 +79,45 @@ public class TileEntitySkull extends TileEntity {
|
|
||||||
private void d() {
|
|
||||||
if (this.j != null && !UtilColor.b(this.j.getName())) {
|
|
||||||
if (!this.j.isComplete() || !this.j.getProperties().containsKey("textures")) {
|
|
||||||
- GameProfile gameprofile = MinecraftServer.getServer().getUserCache().a(this.j.getName());
|
|
||||||
-
|
|
||||||
- if (gameprofile != null) {
|
|
||||||
- Property property = (Property) Iterables.getFirst(gameprofile.getProperties().get("textures"), null);
|
|
||||||
-
|
|
||||||
- if (property == null) {
|
|
||||||
- gameprofile = MinecraftServer.getServer().av().fillProfileProperties(gameprofile, true);
|
|
||||||
+ // Spigot start - Handle async
|
|
||||||
+ final String name = this.j.getName();
|
|
||||||
+ executor.execute(new Runnable() {
|
|
||||||
+ @Override
|
|
||||||
+ public void run() {
|
|
||||||
+ GameProfile[] profiles = new GameProfile[1];
|
|
||||||
+ GameProfileLookup gameProfileLookup = new GameProfileLookup(profiles);
|
|
||||||
+
|
|
||||||
+ MinecraftServer.getServer().getGameProfileRepository().findProfilesByNames(new String[] { name }, Agent.MINECRAFT, gameProfileLookup);
|
|
||||||
+ if (!MinecraftServer.getServer().getOnlineMode() && profiles[0] == null) {
|
|
||||||
+ UUID uuid = EntityHuman.a(new GameProfile(null, name));
|
|
||||||
+ GameProfile profile = new GameProfile(uuid, name);
|
|
||||||
+
|
|
||||||
+ gameProfileLookup.onProfileLookupSucceeded(profile);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ GameProfile profile = profiles[0];
|
|
||||||
+ if (profile != null) {
|
|
||||||
+ Property property = Iterables.getFirst(profile.getProperties().get("textures"), null);
|
|
||||||
+
|
|
||||||
+ if (property == null) {
|
|
||||||
+ profile = MinecraftServer.getServer().av().fillProfileProperties(profile, true);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ final GameProfile finalProfile = profile;
|
|
||||||
+ MinecraftServer.getServer().processQueue.add(new Runnable() {
|
|
||||||
+ @Override
|
|
||||||
+ public void run() {
|
|
||||||
+ j = finalProfile;
|
|
||||||
+ update();
|
|
||||||
+ MinecraftServer.getServer().getPlayerList().sendPacketNearby(x, y, z,
|
|
||||||
+ world.spigotConfig.viewDistance * 16,
|
|
||||||
+ world.worldData.j()/*Dimension*/, getUpdatePacket());
|
|
||||||
+ }
|
|
||||||
+ });
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- this.j = gameprofile;
|
|
||||||
- this.update();
|
|
||||||
- }
|
|
||||||
+ });
|
|
||||||
+ // Spigot end
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--
|
|
||||||
1.9.1
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
|||||||
From 82df31b541e31a945256feb3314a11e0c7a068f1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: David <dmck2b@gmail.com>
|
|
||||||
Date: Mon, 21 Apr 2014 12:43:08 +0100
|
|
||||||
Subject: [PATCH] Prevent NoClassDefError crash and notify on crash
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
|
||||||
index 52ed625..ff65035 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/World.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/World.java
|
|
||||||
@@ -108,6 +108,8 @@ public abstract class World implements IBlockAccess {
|
|
||||||
protected float growthOdds = 100;
|
|
||||||
protected float modifiedOdds = 100;
|
|
||||||
private final byte chunkTickRadius;
|
|
||||||
+ public static boolean haveWeSilencedAPhysicsCrash;
|
|
||||||
+ public static String blockLocation;
|
|
||||||
|
|
||||||
public static long chunkToKey(int x, int z)
|
|
||||||
{
|
|
||||||
@@ -531,6 +533,9 @@ public abstract class World implements IBlockAccess {
|
|
||||||
// CraftBukkit end
|
|
||||||
|
|
||||||
block1.doPhysics(this, i, j, k, block);
|
|
||||||
+ } catch (StackOverflowError stackoverflowerror) { // Spigot Start
|
|
||||||
+ haveWeSilencedAPhysicsCrash = true;
|
|
||||||
+ blockLocation = i + ", " + j + ", " + k; // Spigot End
|
|
||||||
} catch (Throwable throwable) {
|
|
||||||
CrashReport crashreport = CrashReport.a(throwable, "Exception while updating neighbours");
|
|
||||||
CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Block being updated");
|
|
||||||
diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java
|
|
||||||
index de08ad6..94a3d42 100644
|
|
||||||
--- a/src/main/java/org/spigotmc/WatchdogThread.java
|
|
||||||
+++ b/src/main/java/org/spigotmc/WatchdogThread.java
|
|
||||||
@@ -60,6 +60,13 @@ public class WatchdogThread extends Thread
|
|
||||||
log.log( Level.SEVERE, "Be sure to include ALL relevant console errors and Minecraft crash reports" );
|
|
||||||
log.log( Level.SEVERE, "Spigot version: " + Bukkit.getServer().getVersion() );
|
|
||||||
//
|
|
||||||
+ if(net.minecraft.server.World.haveWeSilencedAPhysicsCrash)
|
|
||||||
+ {
|
|
||||||
+ log.log( Level.SEVERE, "------------------------------" );
|
|
||||||
+ log.log( Level.SEVERE, "During the run of the server, a physics stackoverflow was supressed" );
|
|
||||||
+ log.log( Level.SEVERE, "near " + net.minecraft.server.World.blockLocation);
|
|
||||||
+ }
|
|
||||||
+ //
|
|
||||||
log.log( Level.SEVERE, "------------------------------" );
|
|
||||||
log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Spigot!):" );
|
|
||||||
dumpThread( ManagementFactory.getThreadMXBean().getThreadInfo( MinecraftServer.getServer().primaryThread.getId(), Integer.MAX_VALUE ), log );
|
|
||||||
--
|
|
||||||
1.8.3.2
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
|||||||
From 7ae6acfc6b64a79f58ff5fda931a7a8762116173 Mon Sep 17 00:00:00 2001
|
|
||||||
From: David <dmck2b@gmail.com>
|
|
||||||
Date: Wed, 23 Apr 2014 01:01:47 +0100
|
|
||||||
Subject: [PATCH] Stop anvils from destroying all items in the second slot
|
|
||||||
|
|
||||||
While this may allow multiple stacked items to be repaired at once, it's better than eating all of a user's items.
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/ContainerAnvilInventory.java b/src/main/java/net/minecraft/server/ContainerAnvilInventory.java
|
|
||||||
index 1afa6e7..d975b44 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/ContainerAnvilInventory.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/ContainerAnvilInventory.java
|
|
||||||
@@ -43,7 +43,7 @@ public class ContainerAnvilInventory extends InventorySubcontainer { // CraftBuk
|
|
||||||
ContainerAnvilInventory(ContainerAnvil containeranvil, String s, boolean flag, int i) {
|
|
||||||
super(s, flag, i);
|
|
||||||
this.a = containeranvil;
|
|
||||||
- this.setMaxStackSize(1); // CraftBukkit
|
|
||||||
+ // Spigot - Removed this.setMaxStackSize(1); // CraftBukkit
|
|
||||||
}
|
|
||||||
|
|
||||||
// CraftBukkit start - override inherited maxStack from InventorySubcontainer
|
|
||||||
--
|
|
||||||
1.8.3.2
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
|||||||
From c8888a07ef487318a1abf690f797b620a8bcdcf0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Thinkofdeath <thethinkofdeath@gmail.com>
|
|
||||||
Date: Wed, 23 Apr 2014 10:28:24 +0100
|
|
||||||
Subject: [PATCH] Silence skull related console spam
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/ItemSkull.java b/src/main/java/net/minecraft/server/ItemSkull.java
|
|
||||||
index 49346a6..fbc1f95 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/ItemSkull.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/ItemSkull.java
|
|
||||||
@@ -71,7 +71,7 @@ public class ItemSkull extends Item {
|
|
||||||
if (itemstack.hasTag()) {
|
|
||||||
NBTTagCompound nbttagcompound = itemstack.getTag();
|
|
||||||
|
|
||||||
- if (nbttagcompound.hasKeyOfType("SkullOwner", 10)) {
|
|
||||||
+ if (nbttagcompound.hasKeyOfType("SkullOwner", 10, true)) { // Spigot
|
|
||||||
gameprofile = GameProfileSerializer.a(nbttagcompound.getCompound("SkullOwner"));
|
|
||||||
} else if (nbttagcompound.hasKeyOfType("SkullOwner", 8) && nbttagcompound.getString("SkullOwner").length() > 0) {
|
|
||||||
gameprofile = new GameProfile((UUID) null, nbttagcompound.getString("SkullOwner"));
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/TileEntitySkull.java b/src/main/java/net/minecraft/server/TileEntitySkull.java
|
|
||||||
index a239f04..f5b1aee 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/TileEntitySkull.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/TileEntitySkull.java
|
|
||||||
@@ -45,7 +45,7 @@ public class TileEntitySkull extends TileEntity {
|
|
||||||
this.a = nbttagcompound.getByte("SkullType");
|
|
||||||
this.i = nbttagcompound.getByte("Rot");
|
|
||||||
if (this.a == 3) {
|
|
||||||
- if (nbttagcompound.hasKeyOfType("Owner", 10)) {
|
|
||||||
+ if (nbttagcompound.hasKeyOfType("Owner", 10, true)) { // Spigot
|
|
||||||
this.j = GameProfileSerializer.a(nbttagcompound.getCompound("Owner"));
|
|
||||||
} else if (nbttagcompound.hasKeyOfType("ExtraType", 8) && !UtilColor.b(nbttagcompound.getString("ExtraType"))) {
|
|
||||||
this.j = new GameProfile((UUID) null, nbttagcompound.getString("ExtraType"));
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java
|
|
||||||
index 15e114d..fbeccc8 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java
|
|
||||||
@@ -33,7 +33,7 @@ class CraftMetaSkull extends CraftMetaItem implements SkullMeta {
|
|
||||||
CraftMetaSkull(NBTTagCompound tag) {
|
|
||||||
super(tag);
|
|
||||||
|
|
||||||
- if (tag.hasKeyOfType(SKULL_OWNER.NBT, 10)) {
|
|
||||||
+ if (tag.hasKeyOfType(SKULL_OWNER.NBT, 10, true)) { // Spigot
|
|
||||||
profile = GameProfileSerializer.a(tag.getCompound(SKULL_OWNER.NBT));
|
|
||||||
} else if (tag.hasKeyOfType(SKULL_OWNER.NBT, 8)) {
|
|
||||||
profile = MinecraftServer.getServer().getUserCache().a(tag.getString(SKULL_OWNER.NBT));
|
|
||||||
--
|
|
||||||
1.9.1
|
|
||||||
|
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren