Compare commits

..

No commits in common. "2894af04dc378d6a61e55e37a8c0b1a478c09c3d" and "1182e4135162a35a9e5023e1f7383caa76757c1c" have entirely different histories.

24 changed files with 170 additions and 2112 deletions

@ -1 +1 @@
Subproject commit 741a1bdf3db8c4d5237407df2872d9857427bfaf Subproject commit e1ebe524a78e27f6a2829ed4574fded3779094e1

View File

@ -1,11 +1,11 @@
From 172258793066b82c106ae96b396420d0872326cb Mon Sep 17 00:00:00 2001 From 746ebed064e6b6e4ed3cb8dea091883103e34faa Mon Sep 17 00:00:00 2001
From: md_5 <md_5@live.com.au> From: md_5 <md_5@live.com.au>
Date: Fri, 21 Jun 2013 19:21:58 +1000 Date: Fri, 21 Jun 2013 19:21:58 +1000
Subject: [PATCH] Configurable Messages Subject: [PATCH] Configurable Messages
diff --git a/src/main/java/net/minecraft/server/HandshakeListener.java b/src/main/java/net/minecraft/server/HandshakeListener.java diff --git a/src/main/java/net/minecraft/server/HandshakeListener.java b/src/main/java/net/minecraft/server/HandshakeListener.java
index 2d937c1..a1cae86 100644 index 2d937c1..53823c6 100644
--- a/src/main/java/net/minecraft/server/HandshakeListener.java --- a/src/main/java/net/minecraft/server/HandshakeListener.java
+++ b/src/main/java/net/minecraft/server/HandshakeListener.java +++ b/src/main/java/net/minecraft/server/HandshakeListener.java
@@ -62,11 +62,11 @@ public class HandshakeListener implements PacketHandshakingInListener { @@ -62,11 +62,11 @@ public class HandshakeListener implements PacketHandshakingInListener {
@ -13,17 +13,17 @@ index 2d937c1..a1cae86 100644
if (packethandshakinginsetprotocol.b() > 47) { if (packethandshakinginsetprotocol.b() > 47) {
- chatcomponenttext = new ChatComponentText("Outdated server! I\'m still on 1.8.8"); - chatcomponenttext = new ChatComponentText("Outdated server! I\'m still on 1.8.8");
+ chatcomponenttext = new ChatComponentText( java.text.MessageFormat.format( org.spigotmc.SpigotConfig.outdatedServerMessage.replaceAll("'", "''"), "1.8.8" ) ); // Spigot + chatcomponenttext = new ChatComponentText( java.text.MessageFormat.format( org.spigotmc.SpigotConfig.outdatedServerMessage, "1.8.8" ) ); // Spigot
this.b.handle(new PacketLoginOutDisconnect(chatcomponenttext)); this.b.handle(new PacketLoginOutDisconnect(chatcomponenttext));
this.b.close(chatcomponenttext); this.b.close(chatcomponenttext);
} else if (packethandshakinginsetprotocol.b() < 47) { } else if (packethandshakinginsetprotocol.b() < 47) {
- chatcomponenttext = new ChatComponentText("Outdated client! Please use 1.8.8"); - chatcomponenttext = new ChatComponentText("Outdated client! Please use 1.8.8");
+ chatcomponenttext = new ChatComponentText( java.text.MessageFormat.format( org.spigotmc.SpigotConfig.outdatedClientMessage.replaceAll("'", "''"), "1.8.8" ) ); // Spigot + chatcomponenttext = new ChatComponentText( java.text.MessageFormat.format( org.spigotmc.SpigotConfig.outdatedClientMessage, "1.8.8" ) ); // Spigot
this.b.handle(new PacketLoginOutDisconnect(chatcomponenttext)); this.b.handle(new PacketLoginOutDisconnect(chatcomponenttext));
this.b.close(chatcomponenttext); this.b.close(chatcomponenttext);
} else { } else {
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index dd3ccd9..4050dba 100644 index 3838c75..49b908d 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java --- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -418,7 +418,7 @@ public abstract class PlayerList { @@ -418,7 +418,7 @@ public abstract class PlayerList {
@ -45,7 +45,7 @@ index dd3ccd9..4050dba 100644
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 3be88a3..c0f1d3c 100644 index 5ef5f5a..ff60351 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -623,11 +623,7 @@ public final class CraftServer implements Server { @@ -623,11 +623,7 @@ public final class CraftServer implements Server {
@ -103,5 +103,5 @@ index ca001e9..3726ea5 100644
+ } + }
} }
-- --
2.5.0 2.1.4

View File

@ -1,4 +1,4 @@
From 39d77ba60351ae8c806c79b5c5d88a2aad25e58d Mon Sep 17 00:00:00 2001 From 0204f55807902b26e73cbeacf9cc7b35e663feac Mon Sep 17 00:00:00 2001
From: Thinkofdeath <thethinkofdeath@gmail.com> From: Thinkofdeath <thethinkofdeath@gmail.com>
Date: Sun, 20 Apr 2014 13:18:55 +0100 Date: Sun, 20 Apr 2014 13:18:55 +0100
Subject: [PATCH] Convert player skulls async Subject: [PATCH] Convert player skulls async
@ -195,7 +195,7 @@ index 0048b65..58014c5 100644
public int getSkullType() { public int getSkullType() {
return this.a; return this.a;
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java
index 8355d6c..ee78d00 100644 index ead8a98..ce5425f 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaSkull.java
@@ -68,13 +68,27 @@ class CraftMetaSkull extends CraftMetaItem implements SkullMeta { @@ -68,13 +68,27 @@ class CraftMetaSkull extends CraftMetaItem implements SkullMeta {
@ -206,7 +206,7 @@ index 8355d6c..ee78d00 100644
+ void applyToItem(final NBTTagCompound tag) { // Spigot - make final + void applyToItem(final NBTTagCompound tag) { // Spigot - make final
super.applyToItem(tag); super.applyToItem(tag);
if (profile != null) { if (hasOwner()) {
NBTTagCompound owner = new NBTTagCompound(); NBTTagCompound owner = new NBTTagCompound();
GameProfileSerializer.serialize(owner, profile); GameProfileSerializer.serialize(owner, profile);
- tag.set(SKULL_OWNER.NBT, owner); - tag.set(SKULL_OWNER.NBT, owner);
@ -229,5 +229,5 @@ index 8355d6c..ee78d00 100644
} }
-- --
2.5.0 2.1.4

@ -1 +1 @@
Subproject commit 2d4c7b3bbd322d8b7f3bbe2fe33ecf627251c828 Subproject commit 1b58efd4de067e40562ba01fefe70cc22a32ffeb

View File

@ -1,11 +1,11 @@
From dfb45aaa99af7c1c146d40b3e5ee4c1040b5e7b1 Mon Sep 17 00:00:00 2001 From 5d7fe1d8ba54b000f583088bc50141a184818516 Mon Sep 17 00:00:00 2001
From: Zach Brown <Zbob750@live.com> From: Zach Brown <Zbob750@live.com>
Date: Tue, 6 Jan 2015 22:12:31 -0600 Date: Tue, 6 Jan 2015 22:12:31 -0600
Subject: [PATCH] POM changes Subject: [PATCH] POM changes
diff --git a/pom.xml b/pom.xml diff --git a/pom.xml b/pom.xml
index cb142f21..d63151f1 100644 index cb142f2..d63151f 100644
--- a/pom.xml --- a/pom.xml
+++ b/pom.xml +++ b/pom.xml
@@ -4,35 +4,37 @@ @@ -4,35 +4,37 @@
@ -59,11 +59,10 @@ index cb142f21..d63151f1 100644
</snapshotRepository> </snapshotRepository>
</distributionManagement> </distributionManagement>
@@ -128,26 +130,6 @@ @@ -129,26 +131,6 @@
</dependency>
</dependencies> </dependencies>
</plugin> </plugin>
- <plugin> <plugin>
- <groupId>org.codehaus.mojo</groupId> - <groupId>org.codehaus.mojo</groupId>
- <artifactId>animal-sniffer-maven-plugin</artifactId> - <artifactId>animal-sniffer-maven-plugin</artifactId>
- <version>1.13</version> - <version>1.13</version>
@ -83,9 +82,10 @@ index cb142f21..d63151f1 100644
- </signature> - </signature>
- </configuration> - </configuration>
- </plugin> - </plugin>
<plugin> - <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId> <artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
-- --
2.34.0 2.7.1

View File

@ -1,30 +1,30 @@
From b3325316cc10334a1d85171a8c22c6d9f5e44e57 Mon Sep 17 00:00:00 2001 From 445de7fb20febc456d819d052524c63393920b10 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co> From: Aikar <aikar@aikar.co>
Date: Fri, 8 Jan 2016 23:12:28 -0600 Date: Fri, 8 Jan 2016 23:12:28 -0600
Subject: [PATCH] Timings v2 Subject: [PATCH] Timings v2
diff --git a/pom.xml b/pom.xml diff --git a/pom.xml b/pom.xml
index d63151f1..fe9d6d26 100644 index a2dd938..2f8fcf9 100644
--- a/pom.xml --- a/pom.xml
+++ b/pom.xml +++ b/pom.xml
@@ -47,6 +47,13 @@ @@ -48,6 +48,13 @@
</pluginRepositories>
<dependencies> <dependencies>
+ <dependency> <dependency>
+ <groupId>net.sf.trove4j</groupId> + <groupId>net.sf.trove4j</groupId>
+ <artifactId>trove4j</artifactId> + <artifactId>trove4j</artifactId>
+ <version>3.0.3</version> + <version>3.0.3</version>
+ <!-- Trove Provided by CraftBukkit --> + <!-- Trove Provided by CraftBukkit -->
+ <scope>provided</scope> + <scope>provided</scope>
+ </dependency> + </dependency>
<dependency> + <dependency>
<groupId>commons-lang</groupId> <groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId> <artifactId>commons-lang</artifactId>
<version>2.6</version>
diff --git a/src/main/java/co/aikar/timings/FullServerTickHandler.java b/src/main/java/co/aikar/timings/FullServerTickHandler.java diff --git a/src/main/java/co/aikar/timings/FullServerTickHandler.java b/src/main/java/co/aikar/timings/FullServerTickHandler.java
new file mode 100644 new file mode 100644
index 00000000..cb4e7ba8 index 0000000..cb4e7ba
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/timings/FullServerTickHandler.java +++ b/src/main/java/co/aikar/timings/FullServerTickHandler.java
@@ -0,0 +1,79 @@ @@ -0,0 +1,79 @@
@ -109,7 +109,7 @@ index 00000000..cb4e7ba8
+} +}
diff --git a/src/main/java/co/aikar/timings/NullTimingHandler.java b/src/main/java/co/aikar/timings/NullTimingHandler.java diff --git a/src/main/java/co/aikar/timings/NullTimingHandler.java b/src/main/java/co/aikar/timings/NullTimingHandler.java
new file mode 100644 new file mode 100644
index 00000000..c73b617c index 0000000..c73b617
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/timings/NullTimingHandler.java +++ b/src/main/java/co/aikar/timings/NullTimingHandler.java
@@ -0,0 +1,61 @@ @@ -0,0 +1,61 @@
@ -176,7 +176,7 @@ index 00000000..c73b617c
+} +}
diff --git a/src/main/java/co/aikar/timings/TimedEventExecutor.java b/src/main/java/co/aikar/timings/TimedEventExecutor.java diff --git a/src/main/java/co/aikar/timings/TimedEventExecutor.java b/src/main/java/co/aikar/timings/TimedEventExecutor.java
new file mode 100644 new file mode 100644
index 00000000..e3da034f index 0000000..e3da034
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/timings/TimedEventExecutor.java +++ b/src/main/java/co/aikar/timings/TimedEventExecutor.java
@@ -0,0 +1,81 @@ @@ -0,0 +1,81 @@
@ -263,7 +263,7 @@ index 00000000..e3da034f
+} +}
diff --git a/src/main/java/co/aikar/timings/Timing.java b/src/main/java/co/aikar/timings/Timing.java diff --git a/src/main/java/co/aikar/timings/Timing.java b/src/main/java/co/aikar/timings/Timing.java
new file mode 100644 new file mode 100644
index 00000000..4d990b13 index 0000000..4d990b1
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/timings/Timing.java +++ b/src/main/java/co/aikar/timings/Timing.java
@@ -0,0 +1,72 @@ @@ -0,0 +1,72 @@
@ -341,7 +341,7 @@ index 00000000..4d990b13
+} +}
diff --git a/src/main/java/co/aikar/timings/TimingData.java b/src/main/java/co/aikar/timings/TimingData.java diff --git a/src/main/java/co/aikar/timings/TimingData.java b/src/main/java/co/aikar/timings/TimingData.java
new file mode 100644 new file mode 100644
index 00000000..b62e428c index 0000000..b62e428
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/timings/TimingData.java +++ b/src/main/java/co/aikar/timings/TimingData.java
@@ -0,0 +1,105 @@ @@ -0,0 +1,105 @@
@ -452,7 +452,7 @@ index 00000000..b62e428c
+} +}
diff --git a/src/main/java/co/aikar/timings/TimingHandler.java b/src/main/java/co/aikar/timings/TimingHandler.java diff --git a/src/main/java/co/aikar/timings/TimingHandler.java b/src/main/java/co/aikar/timings/TimingHandler.java
new file mode 100644 new file mode 100644
index 00000000..4918a17c index 0000000..4918a17
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/timings/TimingHandler.java +++ b/src/main/java/co/aikar/timings/TimingHandler.java
@@ -0,0 +1,193 @@ @@ -0,0 +1,193 @@
@ -651,7 +651,7 @@ index 00000000..4918a17c
+} +}
diff --git a/src/main/java/co/aikar/timings/TimingHistory.java b/src/main/java/co/aikar/timings/TimingHistory.java diff --git a/src/main/java/co/aikar/timings/TimingHistory.java b/src/main/java/co/aikar/timings/TimingHistory.java
new file mode 100644 new file mode 100644
index 00000000..7a047709 index 0000000..7a04770
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/timings/TimingHistory.java +++ b/src/main/java/co/aikar/timings/TimingHistory.java
@@ -0,0 +1,276 @@ @@ -0,0 +1,276 @@
@ -933,7 +933,7 @@ index 00000000..7a047709
+} +}
diff --git a/src/main/java/co/aikar/timings/TimingHistoryEntry.java b/src/main/java/co/aikar/timings/TimingHistoryEntry.java diff --git a/src/main/java/co/aikar/timings/TimingHistoryEntry.java b/src/main/java/co/aikar/timings/TimingHistoryEntry.java
new file mode 100644 new file mode 100644
index 00000000..eac4e218 index 0000000..eac4e21
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/timings/TimingHistoryEntry.java +++ b/src/main/java/co/aikar/timings/TimingHistoryEntry.java
@@ -0,0 +1,59 @@ @@ -0,0 +1,59 @@
@ -998,7 +998,7 @@ index 00000000..eac4e218
+} +}
diff --git a/src/main/java/co/aikar/timings/TimingIdentifier.java b/src/main/java/co/aikar/timings/TimingIdentifier.java diff --git a/src/main/java/co/aikar/timings/TimingIdentifier.java b/src/main/java/co/aikar/timings/TimingIdentifier.java
new file mode 100644 new file mode 100644
index 00000000..623dda49 index 0000000..623dda4
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/timings/TimingIdentifier.java +++ b/src/main/java/co/aikar/timings/TimingIdentifier.java
@@ -0,0 +1,102 @@ @@ -0,0 +1,102 @@
@ -1106,7 +1106,7 @@ index 00000000..623dda49
+} +}
diff --git a/src/main/java/co/aikar/timings/Timings.java b/src/main/java/co/aikar/timings/Timings.java diff --git a/src/main/java/co/aikar/timings/Timings.java b/src/main/java/co/aikar/timings/Timings.java
new file mode 100644 new file mode 100644
index 00000000..0f7be036 index 0000000..0f7be03
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/timings/Timings.java +++ b/src/main/java/co/aikar/timings/Timings.java
@@ -0,0 +1,273 @@ @@ -0,0 +1,273 @@
@ -1385,7 +1385,7 @@ index 00000000..0f7be036
+} +}
diff --git a/src/main/java/co/aikar/timings/TimingsCommand.java b/src/main/java/co/aikar/timings/TimingsCommand.java diff --git a/src/main/java/co/aikar/timings/TimingsCommand.java b/src/main/java/co/aikar/timings/TimingsCommand.java
new file mode 100644 new file mode 100644
index 00000000..3dba3aa1 index 0000000..3dba3aa
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/timings/TimingsCommand.java +++ b/src/main/java/co/aikar/timings/TimingsCommand.java
@@ -0,0 +1,110 @@ @@ -0,0 +1,110 @@
@ -1501,7 +1501,7 @@ index 00000000..3dba3aa1
+} +}
diff --git a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java diff --git a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java
new file mode 100644 new file mode 100644
index 00000000..fe19ea00 index 0000000..dd78647
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/timings/TimingsExport.java +++ b/src/main/java/co/aikar/timings/TimingsExport.java
@@ -0,0 +1,373 @@ @@ -0,0 +1,373 @@
@ -1717,7 +1717,7 @@ index 00000000..fe19ea00
+ +
+ static long getCost() { + static long getCost() {
+ // Benchmark the users System.nanotime() for cost basis + // Benchmark the users System.nanotime() for cost basis
+ int passes = 100; + int passes = 500000;
+ TimingHandler SAMPLER1 = Timings.ofSafe("Timings Sampler 1"); + TimingHandler SAMPLER1 = Timings.ofSafe("Timings Sampler 1");
+ TimingHandler SAMPLER2 = Timings.ofSafe("Timings Sampler 2"); + TimingHandler SAMPLER2 = Timings.ofSafe("Timings Sampler 2");
+ TimingHandler SAMPLER3 = Timings.ofSafe("Timings Sampler 3"); + TimingHandler SAMPLER3 = Timings.ofSafe("Timings Sampler 3");
@ -1880,7 +1880,7 @@ index 00000000..fe19ea00
+} +}
diff --git a/src/main/java/co/aikar/timings/TimingsManager.java b/src/main/java/co/aikar/timings/TimingsManager.java diff --git a/src/main/java/co/aikar/timings/TimingsManager.java b/src/main/java/co/aikar/timings/TimingsManager.java
new file mode 100644 new file mode 100644
index 00000000..67c39df8 index 0000000..67c39df
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/timings/TimingsManager.java +++ b/src/main/java/co/aikar/timings/TimingsManager.java
@@ -0,0 +1,194 @@ @@ -0,0 +1,194 @@
@ -2080,7 +2080,7 @@ index 00000000..67c39df8
+} +}
diff --git a/src/main/java/co/aikar/timings/UnsafeTimingHandler.java b/src/main/java/co/aikar/timings/UnsafeTimingHandler.java diff --git a/src/main/java/co/aikar/timings/UnsafeTimingHandler.java b/src/main/java/co/aikar/timings/UnsafeTimingHandler.java
new file mode 100644 new file mode 100644
index 00000000..e3b0ed83 index 0000000..e3b0ed8
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/timings/UnsafeTimingHandler.java +++ b/src/main/java/co/aikar/timings/UnsafeTimingHandler.java
@@ -0,0 +1,51 @@ @@ -0,0 +1,51 @@
@ -2137,7 +2137,7 @@ index 00000000..e3b0ed83
+} +}
diff --git a/src/main/java/co/aikar/util/JSONUtil.java b/src/main/java/co/aikar/util/JSONUtil.java diff --git a/src/main/java/co/aikar/util/JSONUtil.java b/src/main/java/co/aikar/util/JSONUtil.java
new file mode 100644 new file mode 100644
index 00000000..5fdf7c4c index 0000000..5fdf7c4
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/util/JSONUtil.java +++ b/src/main/java/co/aikar/util/JSONUtil.java
@@ -0,0 +1,123 @@ @@ -0,0 +1,123 @@
@ -2266,7 +2266,7 @@ index 00000000..5fdf7c4c
+} +}
diff --git a/src/main/java/co/aikar/util/LoadingIntMap.java b/src/main/java/co/aikar/util/LoadingIntMap.java diff --git a/src/main/java/co/aikar/util/LoadingIntMap.java b/src/main/java/co/aikar/util/LoadingIntMap.java
new file mode 100644 new file mode 100644
index 00000000..8d0f2691 index 0000000..8d0f269
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/util/LoadingIntMap.java +++ b/src/main/java/co/aikar/util/LoadingIntMap.java
@@ -0,0 +1,63 @@ @@ -0,0 +1,63 @@
@ -2335,7 +2335,7 @@ index 00000000..8d0f2691
+} +}
diff --git a/src/main/java/co/aikar/util/LoadingMap.java b/src/main/java/co/aikar/util/LoadingMap.java diff --git a/src/main/java/co/aikar/util/LoadingMap.java b/src/main/java/co/aikar/util/LoadingMap.java
new file mode 100644 new file mode 100644
index 00000000..a9f29199 index 0000000..a9f2919
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/util/LoadingMap.java +++ b/src/main/java/co/aikar/util/LoadingMap.java
@@ -0,0 +1,332 @@ @@ -0,0 +1,332 @@
@ -2673,7 +2673,7 @@ index 00000000..a9f29199
+} +}
diff --git a/src/main/java/co/aikar/util/MRUMapCache.java b/src/main/java/co/aikar/util/MRUMapCache.java diff --git a/src/main/java/co/aikar/util/MRUMapCache.java b/src/main/java/co/aikar/util/MRUMapCache.java
new file mode 100644 new file mode 100644
index 00000000..3a288d2a index 0000000..3a288d2
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/util/MRUMapCache.java +++ b/src/main/java/co/aikar/util/MRUMapCache.java
@@ -0,0 +1,100 @@ @@ -0,0 +1,100 @@
@ -2778,7 +2778,7 @@ index 00000000..3a288d2a
+ } + }
+} +}
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
index 584fe113..a4396e8b 100644 index 584fe11..a4396e8 100644
--- a/src/main/java/org/bukkit/Bukkit.java --- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java
@@ -533,7 +533,6 @@ public final class Bukkit { @@ -533,7 +533,6 @@ public final class Bukkit {
@ -2790,7 +2790,7 @@ index 584fe113..a4396e8b 100644
/** /**
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index 26acdda0..ae75bd45 100644 index 26acdda..ae75bd4 100644
--- a/src/main/java/org/bukkit/Server.java --- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java
@@ -926,12 +926,27 @@ public interface Server extends PluginMessageRecipient { @@ -926,12 +926,27 @@ public interface Server extends PluginMessageRecipient {
@ -2823,7 +2823,7 @@ index 26acdda0..ae75bd45 100644
* Sends the component to the player * Sends the component to the player
* *
diff --git a/src/main/java/org/bukkit/command/Command.java b/src/main/java/org/bukkit/command/Command.java diff --git a/src/main/java/org/bukkit/command/Command.java b/src/main/java/org/bukkit/command/Command.java
index 0ba9b1c9..548d5709 100644 index 0ba9b1c..548d570 100644
--- a/src/main/java/org/bukkit/command/Command.java --- a/src/main/java/org/bukkit/command/Command.java
+++ b/src/main/java/org/bukkit/command/Command.java +++ b/src/main/java/org/bukkit/command/Command.java
@@ -31,7 +31,8 @@ public abstract class Command { @@ -31,7 +31,8 @@ public abstract class Command {
@ -2853,7 +2853,7 @@ index 0ba9b1c9..548d5709 100644
return true; return true;
} }
diff --git a/src/main/java/org/bukkit/command/FormattedCommandAlias.java b/src/main/java/org/bukkit/command/FormattedCommandAlias.java diff --git a/src/main/java/org/bukkit/command/FormattedCommandAlias.java b/src/main/java/org/bukkit/command/FormattedCommandAlias.java
index 3f07d7f4..f89ad075 100644 index 3f07d7f..f89ad07 100644
--- a/src/main/java/org/bukkit/command/FormattedCommandAlias.java --- a/src/main/java/org/bukkit/command/FormattedCommandAlias.java
+++ b/src/main/java/org/bukkit/command/FormattedCommandAlias.java +++ b/src/main/java/org/bukkit/command/FormattedCommandAlias.java
@@ -14,6 +14,7 @@ public class FormattedCommandAlias extends Command { @@ -14,6 +14,7 @@ public class FormattedCommandAlias extends Command {
@ -2875,7 +2875,7 @@ index 3f07d7f4..f89ad075 100644
return i >= j && i <= k; return i >= j && i <= k;
} }
diff --git a/src/main/java/org/bukkit/command/SimpleCommandMap.java b/src/main/java/org/bukkit/command/SimpleCommandMap.java diff --git a/src/main/java/org/bukkit/command/SimpleCommandMap.java b/src/main/java/org/bukkit/command/SimpleCommandMap.java
index a08a49da..a300ae7e 100644 index a08a49d..a300ae7 100644
--- a/src/main/java/org/bukkit/command/SimpleCommandMap.java --- a/src/main/java/org/bukkit/command/SimpleCommandMap.java
+++ b/src/main/java/org/bukkit/command/SimpleCommandMap.java +++ b/src/main/java/org/bukkit/command/SimpleCommandMap.java
@@ -31,7 +31,7 @@ public class SimpleCommandMap implements CommandMap { @@ -31,7 +31,7 @@ public class SimpleCommandMap implements CommandMap {
@ -2896,7 +2896,7 @@ index a08a49da..a300ae7e 100644
fallbackPrefix = fallbackPrefix.toLowerCase().trim(); fallbackPrefix = fallbackPrefix.toLowerCase().trim();
boolean registered = register(label, command, false, fallbackPrefix); boolean registered = register(label, command, false, fallbackPrefix);
diff --git a/src/main/java/org/bukkit/command/defaults/TimingsCommand.java b/src/main/java/org/bukkit/command/defaults/TimingsCommand.java diff --git a/src/main/java/org/bukkit/command/defaults/TimingsCommand.java b/src/main/java/org/bukkit/command/defaults/TimingsCommand.java
index 9782a3bb..80e0b0f1 100644 index 9782a3b..80e0b0f 100644
--- a/src/main/java/org/bukkit/command/defaults/TimingsCommand.java --- a/src/main/java/org/bukkit/command/defaults/TimingsCommand.java
+++ b/src/main/java/org/bukkit/command/defaults/TimingsCommand.java +++ b/src/main/java/org/bukkit/command/defaults/TimingsCommand.java
@@ -33,87 +33,22 @@ import org.spigotmc.CustomTimingsHandler; @@ -33,87 +33,22 @@ import org.spigotmc.CustomTimingsHandler;
@ -3048,7 +3048,7 @@ index 9782a3bb..80e0b0f1 100644
- // Spigot end - // Spigot end
} }
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index 7522d455..c0ebe655 100644 index 7522d45..c0ebe65 100644
--- a/src/main/java/org/bukkit/entity/Player.java --- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java
@@ -1203,6 +1203,11 @@ public interface Player extends HumanEntity, Conversable, CommandSender, Offline @@ -1203,6 +1203,11 @@ public interface Player extends HumanEntity, Conversable, CommandSender, Offline
@ -3064,7 +3064,7 @@ index 7522d455..c0ebe655 100644
Spigot spigot(); Spigot spigot();
diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
index c9d23d63..1325b032 100644 index c9d23d6..1325b03 100644
--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java --- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java
+++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java +++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
@@ -295,7 +295,6 @@ public final class SimplePluginManager implements PluginManager { @@ -295,7 +295,6 @@ public final class SimplePluginManager implements PluginManager {
@ -3121,7 +3121,7 @@ index c9d23d63..1325b032 100644
} }
} }
diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
index 7bf2fa6e..4983ea8f 100644 index 7bf2fa6..4983ea8 100644
--- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java --- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
+++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java +++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
@@ -39,7 +39,6 @@ import org.bukkit.plugin.PluginLoader; @@ -39,7 +39,6 @@ import org.bukkit.plugin.PluginLoader;
@ -3170,7 +3170,7 @@ index 7bf2fa6e..4983ea8f 100644
eventSet.add(new TimedRegisteredListener(listener, executor, eh.priority(), plugin, eh.ignoreCancelled())); eventSet.add(new TimedRegisteredListener(listener, executor, eh.priority(), plugin, eh.ignoreCancelled()));
} else { } else {
diff --git a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java diff --git a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
index 4cffa137..b2cbf9e4 100644 index 4cffa13..b2cbf9e 100644
--- a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java --- a/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
+++ b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java +++ b/src/main/java/org/bukkit/plugin/java/PluginClassLoader.java
@@ -15,7 +15,8 @@ import org.bukkit.plugin.PluginDescriptionFile; @@ -15,7 +15,8 @@ import org.bukkit.plugin.PluginDescriptionFile;
@ -3184,7 +3184,7 @@ index 4cffa137..b2cbf9e4 100644
private final Map<String, Class<?>> classes = new java.util.concurrent.ConcurrentHashMap<String, Class<?>>(); // Spigot private final Map<String, Class<?>> classes = new java.util.concurrent.ConcurrentHashMap<String, Class<?>>(); // Spigot
private final PluginDescriptionFile description; private final PluginDescriptionFile description;
diff --git a/src/main/java/org/bukkit/util/CachedServerIcon.java b/src/main/java/org/bukkit/util/CachedServerIcon.java diff --git a/src/main/java/org/bukkit/util/CachedServerIcon.java b/src/main/java/org/bukkit/util/CachedServerIcon.java
index 5ca863b3..04804706 100644 index 5ca863b..0480470 100644
--- a/src/main/java/org/bukkit/util/CachedServerIcon.java --- a/src/main/java/org/bukkit/util/CachedServerIcon.java
+++ b/src/main/java/org/bukkit/util/CachedServerIcon.java +++ b/src/main/java/org/bukkit/util/CachedServerIcon.java
@@ -12,4 +12,6 @@ import org.bukkit.event.server.ServerListPingEvent; @@ -12,4 +12,6 @@ import org.bukkit.event.server.ServerListPingEvent;
@ -3196,7 +3196,7 @@ index 5ca863b3..04804706 100644
+ public String getData(); // Spigot + public String getData(); // Spigot
+} +}
diff --git a/src/main/java/org/spigotmc/CustomTimingsHandler.java b/src/main/java/org/spigotmc/CustomTimingsHandler.java diff --git a/src/main/java/org/spigotmc/CustomTimingsHandler.java b/src/main/java/org/spigotmc/CustomTimingsHandler.java
index 8d982974..7e89b97b 100644 index 8d98297..7e89b97 100644
--- a/src/main/java/org/spigotmc/CustomTimingsHandler.java --- a/src/main/java/org/spigotmc/CustomTimingsHandler.java
+++ b/src/main/java/org/spigotmc/CustomTimingsHandler.java +++ b/src/main/java/org/spigotmc/CustomTimingsHandler.java
@@ -1,165 +1,76 @@ @@ -1,165 +1,76 @@
@ -3426,5 +3426,5 @@ index 8d982974..7e89b97b 100644
- } - }
} }
-- --
2.34.0 2.7.0

View File

@ -1,24 +1,14 @@
From 9da88eae7c63d03c2303ddfa86cededaf1244d70 Mon Sep 17 00:00:00 2001 From 42577385d23a22d17b6f80787db0bf27f8e970d7 Mon Sep 17 00:00:00 2001
From: Techcable <Techcable@outlook.com> From: Jedediah Smith <jedediah@silencegreys.com>
Date: Tue, 16 Feb 2016 19:51:11 -0600 Date: Tue, 16 Feb 2016 19:51:11 -0600
Subject: [PATCH] Player Tab List and Title APIs Subject: [PATCH] Player Tab List and Title APIs
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index 9ebfa47..d02fe56 100644 index 9ebfa47..78fd6dc 100644
--- a/src/main/java/org/bukkit/entity/Player.java --- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java
@@ -19,6 +19,9 @@ import org.bukkit.conversations.Conversable; @@ -344,6 +344,78 @@ public interface Player extends HumanEntity, Conversable, CommandSender, Offline
import org.bukkit.map.MapView;
import org.bukkit.plugin.messaging.PluginMessageRecipient;
import org.bukkit.scoreboard.Scoreboard;
+// PaperSpigot start
+import org.github.paperspigot.Title;
+// PaperSpigot end
/**
* Represents a player, connected or not
@@ -344,6 +347,112 @@ public interface Player extends HumanEntity, Conversable, CommandSender, Offline
* @param components the components to send * @param components the components to send
*/ */
public void sendMessage(net.md_5.bungee.api.chat.BaseComponent... components); public void sendMessage(net.md_5.bungee.api.chat.BaseComponent... components);
@ -40,42 +30,32 @@ index 9ebfa47..d02fe56 100644
+ public void setPlayerListHeaderFooter(net.md_5.bungee.api.chat.BaseComponent header, net.md_5.bungee.api.chat.BaseComponent footer); + public void setPlayerListHeaderFooter(net.md_5.bungee.api.chat.BaseComponent header, net.md_5.bungee.api.chat.BaseComponent footer);
+ +
+ /** + /**
+ * Update the times for titles displayed to the player + * Set the times for titles displayed to the player
+ * + *
+ * @param fadeInTicks ticks to fade-in + * @param fadeInTicks ticks to fade-in
+ * @param stayTicks ticks to stay visible + * @param stayTicks ticks to stay visible
+ * @param fadeOutTicks ticks to fade-out + * @param fadeOutTicks ticks to fade-out
+ * @deprecated Use {@link #updateTitle(Title)}
+ */ + */
+ @Deprecated
+ public void setTitleTimes(int fadeInTicks, int stayTicks, int fadeOutTicks); + public void setTitleTimes(int fadeInTicks, int stayTicks, int fadeOutTicks);
+ +
+ /** + /**
+ * Update the subtitle of titles displayed to the player + * Set the subtitle of titles displayed to the player
+ * @deprecated Use {@link #updateTitle(Title)}
+ */ + */
+ @Deprecated
+ public void setSubtitle(net.md_5.bungee.api.chat.BaseComponent[] subtitle); + public void setSubtitle(net.md_5.bungee.api.chat.BaseComponent[] subtitle);
+ +
+ /** + /**
+ * Update the subtitle of titles displayed to the player + * Set the subtitle of titles displayed to the player
+ * @deprecated Use {@link #updateTitle(Title)}
+ */ + */
+ @Deprecated
+ public void setSubtitle(net.md_5.bungee.api.chat.BaseComponent subtitle); + public void setSubtitle(net.md_5.bungee.api.chat.BaseComponent subtitle);
+ +
+ /** + /**
+ * Show the given title to the player, along with the last subtitle set, using the last set times + * Show the given title to the player, along with the last subtitle set, using the last set times
+ * @deprecated Use {@link #sendTitle(Title)} or {@link #updateTitle(Title)}
+ */ + */
+ @Deprecated
+ public void showTitle(net.md_5.bungee.api.chat.BaseComponent[] title); + public void showTitle(net.md_5.bungee.api.chat.BaseComponent[] title);
+ +
+ /** + /**
+ * Show the given title to the player, along with the last subtitle set, using the last set times + * Show the given title to the player, along with the last subtitle set, using the last set times
+ * @deprecated Use {@link #sendTitle(Title)} or {@link #updateTitle(Title)}
+ */ + */
+ @Deprecated
+ public void showTitle(net.md_5.bungee.api.chat.BaseComponent title); + public void showTitle(net.md_5.bungee.api.chat.BaseComponent title);
+ +
+ /** + /**
@ -86,9 +66,7 @@ index 9ebfa47..d02fe56 100644
+ * @param fadeInTicks ticks to fade-in + * @param fadeInTicks ticks to fade-in
+ * @param stayTicks ticks to stay visible + * @param stayTicks ticks to stay visible
+ * @param fadeOutTicks ticks to fade-out + * @param fadeOutTicks ticks to fade-out
+ * @deprecated Use {@link #sendTitle(Title)} or {@link #updateTitle(Title)}
+ */ + */
+ @Deprecated
+ public void showTitle(net.md_5.bungee.api.chat.BaseComponent[] title, net.md_5.bungee.api.chat.BaseComponent[] subtitle, int fadeInTicks, int stayTicks, int fadeOutTicks); + public void showTitle(net.md_5.bungee.api.chat.BaseComponent[] title, net.md_5.bungee.api.chat.BaseComponent[] subtitle, int fadeInTicks, int stayTicks, int fadeOutTicks);
+ +
+ /** + /**
@ -99,39 +77,17 @@ index 9ebfa47..d02fe56 100644
+ * @param fadeInTicks ticks to fade-in + * @param fadeInTicks ticks to fade-in
+ * @param stayTicks ticks to stay visible + * @param stayTicks ticks to stay visible
+ * @param fadeOutTicks ticks to fade-out + * @param fadeOutTicks ticks to fade-out
+ * @deprecated Use {@link #sendTitle(Title)} or {@link #updateTitle(Title)}
+ */ + */
+ @Deprecated
+ public void showTitle(net.md_5.bungee.api.chat.BaseComponent title, net.md_5.bungee.api.chat.BaseComponent subtitle, int fadeInTicks, int stayTicks, int fadeOutTicks); + public void showTitle(net.md_5.bungee.api.chat.BaseComponent title, net.md_5.bungee.api.chat.BaseComponent subtitle, int fadeInTicks, int stayTicks, int fadeOutTicks);
+ +
+ /** + /**
+ * Show the title to the player, overriding any previously displayed title.
+ *
+ * <p>This method overrides any previous title, use {@link #updateTitle(Title)} to change the existing one.</p>
+ *
+ * @param title the title to send
+ * @throws NullPointerException if the title is null
+ */
+ void sendTitle(Title title);
+
+ /**
+ * Show the title to the player, overriding any previously displayed title.
+ *
+ * <p>This method doesn't override previous titles, but changes their values.</p>
+ *
+ * @param title the title to send
+ * @throws NullPointerException if title is null
+ */
+ void updateTitle(Title title);
+
+ /**
+ * Hide any title that is currently visible to the player + * Hide any title that is currently visible to the player
+ */ + */
+ public void hideTitle(); + public void hideTitle();
// Paper end // Paper end
/** /**
@@ -1086,9 +1195,8 @@ public interface Player extends HumanEntity, Conversable, CommandSender, Offline @@ -1086,9 +1158,8 @@ public interface Player extends HumanEntity, Conversable, CommandSender, Offline
/** /**
* Resets the title displayed to the player. * Resets the title displayed to the player.
@ -142,371 +98,6 @@ index 9ebfa47..d02fe56 100644
public void resetTitle(); public void resetTitle();
// Spigot start // Spigot start
diff --git a/src/main/java/org/github/paperspigot/Title.java b/src/main/java/org/github/paperspigot/Title.java
new file mode 100644
index 0000000..27f9bc2
--- /dev/null
+++ b/src/main/java/org/github/paperspigot/Title.java
@@ -0,0 +1,358 @@
+package org.github.paperspigot;
+
+import net.md_5.bungee.api.chat.BaseComponent;
+import net.md_5.bungee.api.chat.TextComponent;
+
+import org.bukkit.entity.Player;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.checkState;
+
+/**
+ * Represents a title to may be sent to a {@link Player}.
+ * <p>
+ * <p>A title can be sent without subtitle text.</p>
+ */
+public final class Title {
+
+ /**
+ * The default number of ticks for the title to fade in.
+ */
+ public static final int DEFAULT_FADE_IN = 20;
+ /**
+ * The default number of ticks for the title to stay.
+ */
+ public static final int DEFAULT_STAY = 200;
+ /**
+ * The default number of ticks for the title to fade out.
+ */
+ public static final int DEFAULT_FADE_OUT = 20;
+
+ private final BaseComponent[] title;
+ private final BaseComponent[] subtitle;
+ private final int fadeIn;
+ private final int stay;
+ private final int fadeOut;
+
+ /**
+ * Create a title with the default time values and no subtitle.
+ * <p>
+ * <p>Times use default values.</p>
+ *
+ * @param title the main text of the title
+ * @throws NullPointerException if the title is null
+ */
+ public Title(BaseComponent title) {
+ this(title, null);
+ }
+
+ /**
+ * Create a title with the default time values and no subtitle.
+ * <p>
+ * <p>Times use default values.</p>
+ *
+ * @param title the main text of the title
+ * @throws NullPointerException if the title is null
+ */
+ public Title(BaseComponent[] title) {
+ this(title, null);
+ }
+
+ /**
+ * Create a title with the default time values and no subtitle.
+ * <p>
+ * <p>Times use default values.</p>
+ *
+ * @param title the main text of the title
+ * @throws NullPointerException if the title is null
+ */
+ public Title(String title) {
+ this(title, null);
+ }
+
+ /**
+ * Create a title with the default time values.
+ * <p>
+ * <p>Times use default values.</p>
+ *
+ * @param title the main text of the title
+ * @param subtitle the secondary text of the title
+ */
+ public Title(BaseComponent title, BaseComponent subtitle) {
+ this(title, subtitle, DEFAULT_FADE_IN, DEFAULT_STAY, DEFAULT_FADE_OUT);
+ }
+
+ /**
+ * Create a title with the default time values.
+ * <p>
+ * <p>Times use default values.</p>
+ *
+ * @param title the main text of the title
+ * @param subtitle the secondary text of the title
+ */
+ public Title(BaseComponent[] title, BaseComponent[] subtitle) {
+ this(title, subtitle, DEFAULT_FADE_IN, DEFAULT_STAY, DEFAULT_FADE_OUT);
+ }
+
+ /**
+ * Create a title with the default time values.
+ * <p>
+ * <p>Times use default values.</p>
+ *
+ * @param title the main text of the title
+ * @param subtitle the secondary text of the title
+ */
+ public Title(String title, String subtitle) {
+ this(title, subtitle, DEFAULT_FADE_IN, DEFAULT_STAY, DEFAULT_FADE_OUT);
+ }
+
+ /**
+ * Creates a new title.
+ *
+ * @param title the main text of the title
+ * @param subtitle the secondary text of the title
+ * @param fadeIn the number of ticks for the title to fade in
+ * @param stay the number of ticks for the title to stay on screen
+ * @param fadeOut the number of ticks for the title to fade out
+ * @throws IllegalArgumentException if any of the times are negative
+ */
+ public Title(BaseComponent title, BaseComponent subtitle, int fadeIn, int stay, int fadeOut) {
+ this(
+ new BaseComponent[]{checkNotNull(title, "title")},
+ subtitle == null ? null : new BaseComponent[]{subtitle},
+ fadeIn,
+ stay,
+ fadeOut
+ );
+ }
+
+ /**
+ * Creates a new title.
+ *
+ * @param title the main text of the title
+ * @param subtitle the secondary text of the title
+ * @param fadeIn the number of ticks for the title to fade in
+ * @param stay the number of ticks for the title to stay on screen
+ * @param fadeOut the number of ticks for the title to fade out
+ * @throws IllegalArgumentException if any of the times are negative
+ */
+ public Title(BaseComponent[] title, BaseComponent[] subtitle, int fadeIn, int stay, int fadeOut) {
+ checkArgument(fadeIn >= 0, "Negative fadeIn: %s", fadeIn);
+ checkArgument(stay >= 0, "Negative stay: %s", stay);
+ checkArgument(fadeOut >= 0, "Negative fadeOut: %s", fadeOut);
+ this.title = checkNotNull(title, "title");
+ this.subtitle = subtitle;
+ this.fadeIn = fadeIn;
+ this.stay = stay;
+ this.fadeOut = fadeOut;
+ }
+
+ /**
+ * Creates a new title.
+ * <p>
+ * <p>It is recommended to the {@link BaseComponent} constrctors.</p>
+ *
+ * @param title the main text of the title
+ * @param subtitle the secondary text of the title
+ * @param fadeIn the number of ticks for the title to fade in
+ * @param stay the number of ticks for the title to stay on screen
+ * @param fadeOut the number of ticks for the title to fade out
+ */
+ public Title(String title, String subtitle, int fadeIn, int stay, int fadeOut) {
+ this(
+ TextComponent.fromLegacyText(checkNotNull(title, "title")),
+ subtitle == null ? null : TextComponent.fromLegacyText(subtitle),
+ fadeIn,
+ stay,
+ fadeOut
+ );
+ }
+
+ /**
+ * Gets the text of this title
+ *
+ * @return the text
+ */
+ public BaseComponent[] getTitle() {
+ return this.title;
+ }
+
+ /**
+ * Gets the text of this title's subtitle
+ *
+ * @return the text
+ */
+ public BaseComponent[] getSubtitle() {
+ return this.subtitle;
+ }
+
+ /**
+ * Gets the number of ticks to fade in.
+ * <p>
+ * <p>The returned value is never negative.</p>
+ *
+ * @return the number of ticks to fade in
+ */
+ public int getFadeIn() {
+ return this.fadeIn;
+ }
+
+ /**
+ * Gets the number of ticks to stay.
+ * <p>
+ * <p>The returned value is never negative.</p>
+ *
+ * @return the number of ticks to stay
+ */
+ public int getStay() {
+ return this.stay;
+ }
+
+ /**
+ * Gets the number of ticks to fade out.
+ * <p>
+ * <p>The returned value is never negative.</p>
+ *
+ * @return the number of ticks to fade out
+ */
+ public int getFadeOut() {
+ return this.fadeOut;
+ }
+
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * A builder for creating titles
+ */
+ public static final class Builder {
+
+ private BaseComponent[] title;
+ private BaseComponent[] subtitle;
+ private int fadeIn = DEFAULT_FADE_IN;
+ private int stay = DEFAULT_STAY;
+ private int fadeOut = DEFAULT_FADE_OUT;
+
+ /**
+ * Sets the title to the given text.
+ *
+ * @param title the title text
+ * @return this builder instance
+ * @throws NullPointerException if the title is null
+ */
+ public Builder title(BaseComponent title) {
+ return this.title(new BaseComponent[]{checkNotNull(title, "title")});
+ }
+
+ /**
+ * Sets the title to the given text.
+ *
+ * @param title the title text
+ * @return this builder instance
+ * @throws NullPointerException if the title is null
+ */
+ public Builder title(BaseComponent[] title) {
+ this.title = checkNotNull(title, "title");
+ return this;
+ }
+
+ /**
+ * Sets the title to the given text.
+ * <p>
+ * <p>It is recommended to the {@link BaseComponent} methods.</p>
+ *
+ * @param title the title text
+ * @return this builder instance
+ * @throws NullPointerException if the title is null
+ */
+ public Builder title(String title) {
+ return this.title(TextComponent.fromLegacyText(checkNotNull(title, "title")));
+ }
+
+ /**
+ * Sets the subtitle to the given text.
+ *
+ * @param subtitle the title text
+ * @return this builder instance
+ */
+ public Builder subtitle(BaseComponent subtitle) {
+ return this.subtitle(subtitle == null ? null : new BaseComponent[]{subtitle});
+ }
+
+ /**
+ * Sets the subtitle to the given text.
+ *
+ * @param subtitle the title text
+ * @return this builder instance
+ */
+ public Builder subtitle(BaseComponent[] subtitle) {
+ this.subtitle = subtitle;
+ return this;
+ }
+
+ /**
+ * Sets the subtitle to the given text.
+ * <p>
+ * <p>It is recommended to the {@link BaseComponent} methods.</p>
+ *
+ * @param subtitle the title text
+ * @return this builder instance
+ */
+ public Builder subtitle(String subtitle) {
+ return this.subtitle(subtitle == null ? null : TextComponent.fromLegacyText(subtitle));
+ }
+
+ /**
+ * Sets the number of ticks for the title to fade in
+ *
+ * @param fadeIn the number of ticks to fade in
+ * @return this builder instance
+ * @throws IllegalArgumentException if it is negative
+ */
+ public Builder fadeIn(int fadeIn) {
+ checkArgument(fadeIn >= 0, "Negative fadeIn: %s", fadeIn);
+ this.fadeIn = fadeIn;
+ return this;
+ }
+
+
+ /**
+ * Sets the number of ticks for the title to stay.
+ *
+ * @param stay the number of ticks to stay
+ * @return this builder instance
+ * @throws IllegalArgumentException if it is negative
+ */
+ public Builder stay(int stay) {
+ checkArgument(stay >= 0, "Negative stay: %s", stay);
+ this.stay = stay;
+ return this;
+ }
+
+ /**
+ * Sets the number of ticks for the title to fade out.
+ *
+ * @param fadeOut the number of ticks to fade out
+ * @return this builder instance
+ * @throws IllegalArgumentException if it is negative
+ */
+ public Builder fadeOut(int fadeOut) {
+ checkArgument(fadeOut >= 0, "Negative fadeOut: %s", fadeOut);
+ this.fadeOut = fadeOut;
+ return this;
+ }
+
+ /**
+ * Create a title based on the values in the builder.
+ *
+ * @return a title from the values in this builder
+ * @throws IllegalStateException if title isn't specified
+ */
+ public Title build() {
+ checkState(title != null, "Title not specified");
+ return new Title(this.title, this.subtitle, this.fadeIn, this.stay, this.fadeOut);
+ }
+ }
+}
\ No newline at end of file
-- --
2.7.1 2.7.1

View File

@ -1,615 +0,0 @@
From 19bf0a56a0ee703d978da8e5f84999d1f5b20602 Mon Sep 17 00:00:00 2001
From: Joseph Hirschfeld <joe@ibj.io>
Date: Sat, 20 Feb 2016 20:07:46 -0500
Subject: [PATCH] Add exception reporting event
diff --git a/src/main/java/org/bukkit/command/SimpleCommandMap.java b/src/main/java/org/bukkit/command/SimpleCommandMap.java
index 12d9232..f35bc09 100644
--- a/src/main/java/org/bukkit/command/SimpleCommandMap.java
+++ b/src/main/java/org/bukkit/command/SimpleCommandMap.java
@@ -17,6 +17,9 @@ import org.bukkit.Server;
import org.bukkit.command.defaults.*;
import org.bukkit.entity.Player;
import org.bukkit.util.StringUtil;
+import org.github.paperspigot.event.ServerExceptionEvent;
+import org.github.paperspigot.exception.ServerCommandException;
+import org.github.paperspigot.exception.ServerTabCompleteException;
public class SimpleCommandMap implements CommandMap {
private static final Pattern PATTERN_ON_SPACE = Pattern.compile(" ", Pattern.LITERAL);
@@ -147,7 +150,9 @@ public class SimpleCommandMap implements CommandMap {
throw ex;
} catch (Throwable ex) {
target.timings.stopTiming(); // Spigot
- throw new CommandException("Unhandled exception executing '" + commandLine + "' in " + target, ex);
+ String msg = "Unhandled exception executing '" + commandLine + "' in " + target;
+ server.getPluginManager().callEvent(new ServerExceptionEvent(new ServerCommandException(ex, target, sender, args))); // Paper
+ throw new CommandException(msg, ex);
}
// return true as command was handled
@@ -224,7 +229,9 @@ public class SimpleCommandMap implements CommandMap {
} catch (CommandException ex) {
throw ex;
} catch (Throwable ex) {
- throw new CommandException("Unhandled exception executing tab-completer for '" + cmdLine + "' in " + target, ex);
+ String msg = "Unhandled exception executing tab-completer for '" + cmdLine + "' in " + target;
+ server.getPluginManager().callEvent(new ServerExceptionEvent(new ServerTabCompleteException(msg, ex, target, sender, args))); // Paper
+ throw new CommandException(msg, ex);
}
}
// PaperSpigot end
diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
index 1325b03..ce9839e 100644
--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java
+++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
@@ -33,6 +33,9 @@ import org.bukkit.permissions.PermissionDefault;
import org.bukkit.util.FileUtil;
import com.google.common.collect.ImmutableSet;
+import org.github.paperspigot.event.ServerExceptionEvent;
+import org.github.paperspigot.exception.ServerEventException;
+import org.github.paperspigot.exception.ServerPluginEnableDisableException;
/**
* Handles all plugin management from the Server
@@ -403,7 +406,8 @@ public final class SimplePluginManager implements PluginManager {
try {
plugin.getPluginLoader().enablePlugin(plugin);
} catch (Throwable ex) {
- server.getLogger().log(Level.SEVERE, "Error occurred (in the plugin loader) while enabling " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex);
+ handlePluginException("Error occurred (in the plugin loader) while enabling "
+ + plugin.getDescription().getFullName() + " (Is it up to date?)", ex, plugin);
}
HandlerList.bakeAll();
@@ -422,36 +426,48 @@ public final class SimplePluginManager implements PluginManager {
try {
plugin.getPluginLoader().disablePlugin(plugin);
} catch (Throwable ex) {
- server.getLogger().log(Level.SEVERE, "Error occurred (in the plugin loader) while disabling " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex);
+ handlePluginException("Error occurred (in the plugin loader) while disabling "
+ + plugin.getDescription().getFullName() + " (Is it up to date?)", ex, plugin); // Paper
}
try {
server.getScheduler().cancelTasks(plugin);
} catch (Throwable ex) {
- server.getLogger().log(Level.SEVERE, "Error occurred (in the plugin loader) while cancelling tasks for " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex);
+ handlePluginException("Error occurred (in the plugin loader) while cancelling tasks for "
+ + plugin.getDescription().getFullName() + " (Is it up to date?)", ex, plugin); // Paper
}
try {
server.getServicesManager().unregisterAll(plugin);
} catch (Throwable ex) {
- server.getLogger().log(Level.SEVERE, "Error occurred (in the plugin loader) while unregistering services for " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex);
+ handlePluginException("Error occurred (in the plugin loader) while unregistering services for "
+ + plugin.getDescription().getFullName() + " (Is it up to date?)", ex, plugin); // Paper
}
try {
HandlerList.unregisterAll(plugin);
} catch (Throwable ex) {
- server.getLogger().log(Level.SEVERE, "Error occurred (in the plugin loader) while unregistering events for " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex);
+ handlePluginException("Error occurred (in the plugin loader) while unregistering events for "
+ + plugin.getDescription().getFullName() + " (Is it up to date?)", ex, plugin); // Paper
}
try {
server.getMessenger().unregisterIncomingPluginChannel(plugin);
server.getMessenger().unregisterOutgoingPluginChannel(plugin);
} catch(Throwable ex) {
- server.getLogger().log(Level.SEVERE, "Error occurred (in the plugin loader) while unregistering plugin channels for " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex);
+ handlePluginException("Error occurred (in the plugin loader) while unregistering plugin channels for "
+ + plugin.getDescription().getFullName() + " (Is it up to date?)", ex, plugin); // Paper
}
}
}
+ // Paper start
+ private void handlePluginException(String msg, Throwable ex, Plugin plugin) {
+ server.getLogger().log(Level.SEVERE, msg, ex);
+ callEvent(new ServerExceptionEvent(new ServerPluginEnableDisableException(msg, ex, plugin)));
+ }
+ // Paper end
+
public void clearPlugins() {
synchronized (this) {
disablePlugins();
@@ -513,7 +529,13 @@ public final class SimplePluginManager implements PluginManager {
));
}
} catch (Throwable ex) {
- server.getLogger().log(Level.SEVERE, "Could not pass event " + event.getEventName() + " to " + registration.getPlugin().getDescription().getFullName(), ex);
+ // Paper start - error reporting
+ String msg = "Could not pass event " + event.getEventName() + " to " + registration.getPlugin().getDescription().getFullName();
+ server.getLogger().log(Level.SEVERE, msg, ex);
+ if (!(event instanceof ServerExceptionEvent)) { // We don't want to cause an endless event loop
+ callEvent(new ServerExceptionEvent(new ServerEventException(msg, ex, registration.getPlugin(), registration.getListener(), event)));
+ }
+ // Paper end
}
}
}
diff --git a/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java b/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java
index 4c171e8..9ef6525 100644
--- a/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java
+++ b/src/main/java/org/bukkit/plugin/messaging/StandardMessenger.java
@@ -8,6 +8,8 @@ import java.util.Map;
import java.util.Set;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
+import org.github.paperspigot.event.ServerExceptionEvent;
+import org.github.paperspigot.exception.ServerPluginMessageException;
/**
* Standard implementation to {@link Messenger}
@@ -427,7 +429,13 @@ public class StandardMessenger implements Messenger {
registration.getListener().onPluginMessageReceived( channel, source, message );
} catch ( Throwable t )
{
- org.bukkit.Bukkit.getLogger().log( java.util.logging.Level.WARNING, "Could not pass incoming plugin message to " + registration.getPlugin(), t );
+ // Paper start
+ String msg = "Could not pass incoming plugin message to " + registration.getPlugin();
+ org.bukkit.Bukkit.getLogger().log( java.util.logging.Level.WARNING, msg, t );
+ source.getServer().getPluginManager().callEvent(new ServerExceptionEvent(
+ new ServerPluginMessageException(msg, t, registration.getPlugin(), source, channel, message)
+ ));
+ // Paper end
}
// Spigot End
}
diff --git a/src/main/java/org/github/paperspigot/event/ServerExceptionEvent.java b/src/main/java/org/github/paperspigot/event/ServerExceptionEvent.java
new file mode 100644
index 0000000..317e9d2
--- /dev/null
+++ b/src/main/java/org/github/paperspigot/event/ServerExceptionEvent.java
@@ -0,0 +1,36 @@
+package org.github.paperspigot.event;
+
+import com.google.common.base.Preconditions;
+import org.apache.commons.lang.Validate;
+import org.bukkit.event.Event;
+import org.bukkit.event.HandlerList;
+import org.github.paperspigot.exception.ServerException;
+
+/**
+ * Called whenever an exception is thrown in a recoverable section of the server.
+ */
+public class ServerExceptionEvent extends Event {
+ private static final HandlerList handlers = new HandlerList();
+ private ServerException exception;
+
+ public ServerExceptionEvent (ServerException exception) {
+ this.exception = Preconditions.checkNotNull(exception, "exception");
+ }
+
+ /**
+ * Gets the wrapped exception that was thrown.
+ * @return Exception thrown
+ */
+ public ServerException getException() {
+ return exception;
+ }
+
+ @Override
+ public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+}
diff --git a/src/main/java/org/github/paperspigot/exception/ServerCommandException.java b/src/main/java/org/github/paperspigot/exception/ServerCommandException.java
new file mode 100644
index 0000000..aae647a
--- /dev/null
+++ b/src/main/java/org/github/paperspigot/exception/ServerCommandException.java
@@ -0,0 +1,64 @@
+package org.github.paperspigot.exception;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * Thrown when a command throws an exception
+ */
+public class ServerCommandException extends ServerException {
+
+ private final Command command;
+ private final CommandSender commandSender;
+ private final String[] arguments;
+
+ public ServerCommandException(String message, Throwable cause, Command command, CommandSender commandSender, String[] arguments) {
+ super(message, cause);
+ this.commandSender = checkNotNull(commandSender, "commandSender");
+ this.arguments = checkNotNull(arguments, "arguments");
+ this.command = checkNotNull(command, "command");
+ }
+
+ public ServerCommandException(Throwable cause, Command command, CommandSender commandSender, String[] arguments) {
+ super(cause);
+ this.commandSender = checkNotNull(commandSender, "commandSender");
+ this.arguments = checkNotNull(arguments, "arguments");
+ this.command = checkNotNull(command, "command");
+ }
+
+ protected ServerCommandException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace, Command command, CommandSender commandSender, String[] arguments) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ this.commandSender = checkNotNull(commandSender, "commandSender");
+ this.arguments = checkNotNull(arguments, "arguments");
+ this.command = checkNotNull(command, "command");
+ }
+
+ /**
+ * Gets the command which threw the exception
+ *
+ * @return exception throwing command
+ */
+ public Command getCommand() {
+ return command;
+ }
+
+ /**
+ * Gets the command sender which executed the command request
+ *
+ * @return command sender of exception thrown command request
+ */
+ public CommandSender getCommandSender() {
+ return commandSender;
+ }
+
+ /**
+ * Gets the arguments which threw the exception for the command
+ *
+ * @return arguments of exception thrown command request
+ */
+ public String[] getArguments() {
+ return arguments;
+ }
+}
diff --git a/src/main/java/org/github/paperspigot/exception/ServerEventException.java b/src/main/java/org/github/paperspigot/exception/ServerEventException.java
new file mode 100644
index 0000000..d99cab8
--- /dev/null
+++ b/src/main/java/org/github/paperspigot/exception/ServerEventException.java
@@ -0,0 +1,52 @@
+package org.github.paperspigot.exception;
+
+import org.bukkit.event.Event;
+import org.bukkit.event.Listener;
+import org.bukkit.plugin.Plugin;
+
+import static com.google.common.base.Preconditions.*;
+
+/**
+ * Exception thrown when a server event listener throws an exception
+ */
+public class ServerEventException extends ServerPluginException {
+
+ private final Listener listener;
+ private final Event event;
+
+ public ServerEventException(String message, Throwable cause, Plugin responsiblePlugin, Listener listener, Event event) {
+ super(message, cause, responsiblePlugin);
+ this.listener = checkNotNull(listener, "listener");
+ this.event = checkNotNull(event, "event");
+ }
+
+ public ServerEventException(Throwable cause, Plugin responsiblePlugin, Listener listener, Event event) {
+ super(cause, responsiblePlugin);
+ this.listener = checkNotNull(listener, "listener");
+ this.event = checkNotNull(event, "event");
+ }
+
+ protected ServerEventException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace, Plugin responsiblePlugin, Listener listener, Event event) {
+ super(message, cause, enableSuppression, writableStackTrace, responsiblePlugin);
+ this.listener = checkNotNull(listener, "listener");
+ this.event = checkNotNull(event, "event");
+ }
+
+ /**
+ * Gets the listener which threw the exception
+ *
+ * @return event listener
+ */
+ public Listener getListener() {
+ return listener;
+ }
+
+ /**
+ * Gets the event which caused the exception
+ *
+ * @return event
+ */
+ public Event getEvent() {
+ return event;
+ }
+}
diff --git a/src/main/java/org/github/paperspigot/exception/ServerException.java b/src/main/java/org/github/paperspigot/exception/ServerException.java
new file mode 100644
index 0000000..f7aad05
--- /dev/null
+++ b/src/main/java/org/github/paperspigot/exception/ServerException.java
@@ -0,0 +1,23 @@
+package org.github.paperspigot.exception;
+
+/**
+ * Wrapper exception for all exceptions that are thrown by the server.
+ */
+public class ServerException extends Exception {
+
+ public ServerException(String message) {
+ super(message);
+ }
+
+ public ServerException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public ServerException(Throwable cause) {
+ super(cause);
+ }
+
+ protected ServerException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ }
+}
diff --git a/src/main/java/org/github/paperspigot/exception/ServerInternalException.java b/src/main/java/org/github/paperspigot/exception/ServerInternalException.java
new file mode 100644
index 0000000..17ad4cb
--- /dev/null
+++ b/src/main/java/org/github/paperspigot/exception/ServerInternalException.java
@@ -0,0 +1,35 @@
+package org.github.paperspigot.exception;
+
+import org.bukkit.Bukkit;
+import org.bukkit.entity.ThrownExpBottle;
+import org.github.paperspigot.event.ServerExceptionEvent;
+
+/**
+ * Thrown when the internal server throws a recoverable exception.
+ */
+public class ServerInternalException extends ServerException {
+
+ public ServerInternalException(String message) {
+ super(message);
+ }
+
+ public ServerInternalException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public ServerInternalException(Throwable cause) {
+ super(cause);
+ }
+
+ protected ServerInternalException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ }
+
+ public static void reportInternalException(Throwable cause) {
+ try {
+ Bukkit.getPluginManager().callEvent(new ServerExceptionEvent(new ServerInternalException(cause)));;
+ } catch (Throwable t) {
+ t.printStackTrace(); // Don't want to rethrow!
+ }
+ }
+}
diff --git a/src/main/java/org/github/paperspigot/exception/ServerPluginEnableDisableException.java b/src/main/java/org/github/paperspigot/exception/ServerPluginEnableDisableException.java
new file mode 100644
index 0000000..8c938d0
--- /dev/null
+++ b/src/main/java/org/github/paperspigot/exception/ServerPluginEnableDisableException.java
@@ -0,0 +1,20 @@
+package org.github.paperspigot.exception;
+
+import org.bukkit.plugin.Plugin;
+
+/**
+ * Thrown whenever there is an exception with any enabling or disabling of plugins.
+ */
+public class ServerPluginEnableDisableException extends ServerPluginException {
+ public ServerPluginEnableDisableException(String message, Throwable cause, Plugin responsiblePlugin) {
+ super(message, cause, responsiblePlugin);
+ }
+
+ public ServerPluginEnableDisableException(Throwable cause, Plugin responsiblePlugin) {
+ super(cause, responsiblePlugin);
+ }
+
+ protected ServerPluginEnableDisableException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace, Plugin responsiblePlugin) {
+ super(message, cause, enableSuppression, writableStackTrace, responsiblePlugin);
+ }
+}
diff --git a/src/main/java/org/github/paperspigot/exception/ServerPluginException.java b/src/main/java/org/github/paperspigot/exception/ServerPluginException.java
new file mode 100644
index 0000000..f9241ad
--- /dev/null
+++ b/src/main/java/org/github/paperspigot/exception/ServerPluginException.java
@@ -0,0 +1,39 @@
+package org.github.paperspigot.exception;
+
+import com.google.common.base.Preconditions;
+import org.apache.commons.lang.Validate;
+import org.bukkit.plugin.Plugin;
+
+import static com.google.common.base.Preconditions.*;
+
+/**
+ * Wrapper exception for all cases to which a plugin can be immediately blamed for
+ */
+public class ServerPluginException extends ServerException {
+ public ServerPluginException(String message, Throwable cause, Plugin responsiblePlugin) {
+ super(message, cause);
+ this.responsiblePlugin = checkNotNull(responsiblePlugin, "responsiblePlugin");
+ }
+
+ public ServerPluginException(Throwable cause, Plugin responsiblePlugin) {
+ super(cause);
+ this.responsiblePlugin = checkNotNull(responsiblePlugin, "responsiblePlugin");
+ }
+
+ protected ServerPluginException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace, Plugin responsiblePlugin) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ this.responsiblePlugin = checkNotNull(responsiblePlugin, "responsiblePlugin");
+ }
+
+ private final Plugin responsiblePlugin;
+
+ /**
+ * Gets the plugin which is directly responsible for the exception being thrown
+ *
+ * @return plugin which is responsible for the exception throw
+ */
+ public Plugin getResponsiblePlugin() {
+ return responsiblePlugin;
+ }
+
+}
diff --git a/src/main/java/org/github/paperspigot/exception/ServerPluginMessageException.java b/src/main/java/org/github/paperspigot/exception/ServerPluginMessageException.java
new file mode 100644
index 0000000..b71303b
--- /dev/null
+++ b/src/main/java/org/github/paperspigot/exception/ServerPluginMessageException.java
@@ -0,0 +1,61 @@
+package org.github.paperspigot.exception;
+
+import org.bukkit.entity.Player;
+import org.bukkit.plugin.Plugin;
+
+import static com.google.common.base.Preconditions.*;
+
+/**
+ * Thrown when an incoming plugin message channel throws an exception
+ */
+public class ServerPluginMessageException extends ServerPluginException {
+
+ private final Player player;
+ private final String channel;
+ private final byte[] data;
+
+ public ServerPluginMessageException(String message, Throwable cause, Plugin responsiblePlugin, Player player, String channel, byte[] data) {
+ super(message, cause, responsiblePlugin);
+ this.player = checkNotNull(player, "player");
+ this.channel = checkNotNull(channel, "channel");
+ this.data = checkNotNull(data, "data");
+ }
+
+ public ServerPluginMessageException(Throwable cause, Plugin responsiblePlugin, Player player, String channel, byte[] data) {
+ super(cause, responsiblePlugin);
+ this.player = checkNotNull(player, "player");
+ this.channel = checkNotNull(channel, "channel");
+ this.data = checkNotNull(data, "data");
+ }
+
+ protected ServerPluginMessageException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace, Plugin responsiblePlugin, Player player, String channel, byte[] data) {
+ super(message, cause, enableSuppression, writableStackTrace, responsiblePlugin);
+ this.player = checkNotNull(player, "player");
+ this.channel = checkNotNull(channel, "channel");
+ this.data = checkNotNull(data, "data");
+ }
+
+ /**
+ * Gets the channel to which the error occurred from recieving data from
+ * @return exception channel
+ */
+ public String getChannel() {
+ return channel;
+ }
+
+ /**
+ * Gets the data to which the error occurred from
+ * @return exception data
+ */
+ public byte[] getData() {
+ return data;
+ }
+
+ /**
+ * Gets the player which the plugin message causing the exception originated from
+ * @return exception player
+ */
+ public Player getPlayer() {
+ return player;
+ }
+}
diff --git a/src/main/java/org/github/paperspigot/exception/ServerSchedulerException.java b/src/main/java/org/github/paperspigot/exception/ServerSchedulerException.java
new file mode 100644
index 0000000..99757ee
--- /dev/null
+++ b/src/main/java/org/github/paperspigot/exception/ServerSchedulerException.java
@@ -0,0 +1,37 @@
+package org.github.paperspigot.exception;
+
+import org.bukkit.scheduler.BukkitTask;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * Thrown when a plugin's scheduler fails with an exception
+ */
+public class ServerSchedulerException extends ServerPluginException {
+
+ private final BukkitTask task;
+
+ public ServerSchedulerException(String message, Throwable cause, BukkitTask task) {
+ super(message, cause, task.getOwner());
+ this.task = checkNotNull(task, "task");
+ }
+
+ public ServerSchedulerException(Throwable cause, BukkitTask task) {
+ super(cause, task.getOwner());
+ this.task = checkNotNull(task, "task");
+ }
+
+ protected ServerSchedulerException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace, BukkitTask task) {
+ super(message, cause, enableSuppression, writableStackTrace, task.getOwner());
+ this.task = checkNotNull(task, "task");
+ }
+
+ /**
+ * Gets the task which threw the exception
+ * @return exception throwing task
+ */
+ public BukkitTask getTask() {
+ return task;
+ }
+
+}
diff --git a/src/main/java/org/github/paperspigot/exception/ServerTabCompleteException.java b/src/main/java/org/github/paperspigot/exception/ServerTabCompleteException.java
new file mode 100644
index 0000000..6e1e2ab
--- /dev/null
+++ b/src/main/java/org/github/paperspigot/exception/ServerTabCompleteException.java
@@ -0,0 +1,22 @@
+package org.github.paperspigot.exception;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+
+/**
+ * Called when a tab-complete request throws an exception
+ */
+public class ServerTabCompleteException extends ServerCommandException {
+
+ public ServerTabCompleteException(String message, Throwable cause, Command command, CommandSender commandSender, String[] arguments) {
+ super(message, cause, command, commandSender, arguments);
+ }
+
+ public ServerTabCompleteException(Throwable cause, Command command, CommandSender commandSender, String[] arguments) {
+ super(cause, command, commandSender, arguments);
+ }
+
+ protected ServerTabCompleteException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace, Command command, CommandSender commandSender, String[] arguments) {
+ super(message, cause, enableSuppression, writableStackTrace, command, commandSender, arguments);
+ }
+}
--
2.5.0

View File

@ -1,54 +0,0 @@
From f77db2e56a6185471090b6cfeba2c441e19af096 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Wed, 24 Feb 2016 00:57:22 -0500
Subject: [PATCH] Fix ServerListPingEvent flagging as Async
This event can sometimes fire Async, set the proper boolean
diff --git a/src/main/java/org/bukkit/event/server/ServerEvent.java b/src/main/java/org/bukkit/event/server/ServerEvent.java
index eb00d6a..70416c8 100644
--- a/src/main/java/org/bukkit/event/server/ServerEvent.java
+++ b/src/main/java/org/bukkit/event/server/ServerEvent.java
@@ -1,9 +1,19 @@
package org.bukkit.event.server;
+import org.bukkit.Bukkit;
import org.bukkit.event.Event;
/**
* Miscellaneous server events
*/
public abstract class ServerEvent extends Event {
+ // Paper start
+ public ServerEvent(boolean isAsync) {
+ super(isAsync);
+ }
+
+ public ServerEvent() {
+ super(!Bukkit.isPrimaryThread());
+ }
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/event/server/ServerListPingEvent.java b/src/main/java/org/bukkit/event/server/ServerListPingEvent.java
index 343f238..3c38d85 100644
--- a/src/main/java/org/bukkit/event/server/ServerListPingEvent.java
+++ b/src/main/java/org/bukkit/event/server/ServerListPingEvent.java
@@ -21,6 +21,7 @@ public class ServerListPingEvent extends ServerEvent implements Iterable<Player>
private int maxPlayers;
public ServerListPingEvent(final InetAddress address, final String motd, final int numPlayers, final int maxPlayers) {
+ super(); // Paper - Is this event being fired async?
Validate.isTrue(numPlayers >= 0, "Cannot have negative number of players online", numPlayers);
this.address = address;
this.motd = motd;
@@ -38,6 +39,7 @@ public class ServerListPingEvent extends ServerEvent implements Iterable<Player>
* @param maxPlayers the max number of players
*/
protected ServerListPingEvent(final InetAddress address, final String motd, final int maxPlayers) {
+ super(); // Paper - Is this event being fired async?
this.numPlayers = MAGIC_PLAYER_COUNT;
this.address = address;
this.motd = motd;
--
2.7.1

View File

@ -1,54 +0,0 @@
From 8d551e5b699b7a24a24b6edbc7f014ce1ef9875d Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Wed, 24 Feb 2016 00:57:22 -0500
Subject: [PATCH] Fix ServerListPingEvent flagging as Async
This event can sometimes fire Async, set the proper boolean
diff --git a/src/main/java/org/bukkit/event/server/ServerEvent.java b/src/main/java/org/bukkit/event/server/ServerEvent.java
index eb00d6af..70416c81 100644
--- a/src/main/java/org/bukkit/event/server/ServerEvent.java
+++ b/src/main/java/org/bukkit/event/server/ServerEvent.java
@@ -1,9 +1,19 @@
package org.bukkit.event.server;
+import org.bukkit.Bukkit;
import org.bukkit.event.Event;
/**
* Miscellaneous server events
*/
public abstract class ServerEvent extends Event {
+ // Paper start
+ public ServerEvent(boolean isAsync) {
+ super(isAsync);
+ }
+
+ public ServerEvent() {
+ super(!Bukkit.isPrimaryThread());
+ }
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/event/server/ServerListPingEvent.java b/src/main/java/org/bukkit/event/server/ServerListPingEvent.java
index 343f238f..3c38d857 100644
--- a/src/main/java/org/bukkit/event/server/ServerListPingEvent.java
+++ b/src/main/java/org/bukkit/event/server/ServerListPingEvent.java
@@ -21,6 +21,7 @@ public class ServerListPingEvent extends ServerEvent implements Iterable<Player>
private int maxPlayers;
public ServerListPingEvent(final InetAddress address, final String motd, final int numPlayers, final int maxPlayers) {
+ super(); // Paper - Is this event being fired async?
Validate.isTrue(numPlayers >= 0, "Cannot have negative number of players online", numPlayers);
this.address = address;
this.motd = motd;
@@ -38,6 +39,7 @@ public class ServerListPingEvent extends ServerEvent implements Iterable<Player>
* @param maxPlayers the max number of players
*/
protected ServerListPingEvent(final InetAddress address, final String motd, final int maxPlayers) {
+ super(); // Paper - Is this event being fired async?
this.numPlayers = MAGIC_PLAYER_COUNT;
this.address = address;
this.motd = motd;
--
2.34.0

View File

@ -1,11 +1,11 @@
From 8ebd08301a02a9ac7ca1eb8d2022782fa1358559 Mon Sep 17 00:00:00 2001 From 9e315343a720a550c61568b70657ad2076501022 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com> From: Zach Brown <zach.brown@destroystokyo.com>
Date: Thu, 19 Mar 2015 19:41:15 -0500 Date: Thu, 19 Mar 2015 19:41:15 -0500
Subject: [PATCH] POM Changes Subject: [PATCH] POM Changes
diff --git a/pom.xml b/pom.xml diff --git a/pom.xml b/pom.xml
index a6641f15..32593a7f 100644 index 91627ff..fd051da 100644
--- a/pom.xml --- a/pom.xml
+++ b/pom.xml +++ b/pom.xml
@@ -1,12 +1,12 @@ @@ -1,12 +1,12 @@
@ -55,7 +55,7 @@ index a6641f15..32593a7f 100644
<version>${project.version}</version> <version>${project.version}</version>
<type>jar</type> <type>jar</type>
<scope>compile</scope> <scope>compile</scope>
@@ -102,6 +103,11 @@ @@ -96,6 +97,11 @@
<id>spigotmc-public</id> <id>spigotmc-public</id>
<url>https://hub.spigotmc.org/nexus/content/groups/public/</url> <url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
</pluginRepository> </pluginRepository>
@ -67,7 +67,7 @@ index a6641f15..32593a7f 100644
</pluginRepositories> </pluginRepositories>
<!-- This builds a completely 'ready to start' jar with all dependencies inside --> <!-- This builds a completely 'ready to start' jar with all dependencies inside -->
@@ -109,36 +115,22 @@ @@ -103,36 +109,22 @@
<defaultGoal>install</defaultGoal> <defaultGoal>install</defaultGoal>
<plugins> <plugins>
<plugin> <plugin>
@ -120,7 +120,7 @@ index a6641f15..32593a7f 100644
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId> <artifactId>maven-jar-plugin</artifactId>
@@ -148,7 +140,7 @@ @@ -142,7 +134,7 @@
<manifestEntries> <manifestEntries>
<Main-Class>org.bukkit.craftbukkit.Main</Main-Class> <Main-Class>org.bukkit.craftbukkit.Main</Main-Class>
<Implementation-Title>CraftBukkit</Implementation-Title> <Implementation-Title>CraftBukkit</Implementation-Title>
@ -129,11 +129,10 @@ index a6641f15..32593a7f 100644
<Implementation-Vendor>Bukkit Team</Implementation-Vendor> <Implementation-Vendor>Bukkit Team</Implementation-Vendor>
<Specification-Title>Bukkit</Specification-Title> <Specification-Title>Bukkit</Specification-Title>
<Specification-Version>${api.version}</Specification-Version> <Specification-Version>${api.version}</Specification-Version>
@@ -177,26 +169,6 @@ @@ -172,26 +164,6 @@
</archive>
</configuration> </configuration>
</plugin> </plugin>
- <plugin> <plugin>
- <groupId>org.codehaus.mojo</groupId> - <groupId>org.codehaus.mojo</groupId>
- <artifactId>animal-sniffer-maven-plugin</artifactId> - <artifactId>animal-sniffer-maven-plugin</artifactId>
- <version>1.13</version> - <version>1.13</version>
@ -153,11 +152,12 @@ index a6641f15..32593a7f 100644
- </signature> - </signature>
- </configuration> - </configuration>
- </plugin> - </plugin>
<plugin> - <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId> <artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java diff --git a/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java
index c110e0c2..5540dde5 100644 index c110e0c..5540dde 100644
--- a/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java --- a/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java
+++ b/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java
@@ -11,7 +11,7 @@ public class PathfinderGoalNearestAttackableTarget<T extends EntityLiving> exten @@ -11,7 +11,7 @@ public class PathfinderGoalNearestAttackableTarget<T extends EntityLiving> exten
@ -170,7 +170,7 @@ index c110e0c2..5540dde5 100644
public PathfinderGoalNearestAttackableTarget(EntityCreature entitycreature, Class<T> oclass, boolean flag) { public PathfinderGoalNearestAttackableTarget(EntityCreature entitycreature, Class<T> oclass, boolean flag) {
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
index 93046379..3a4b1424 100644 index 9304637..3a4b142 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java --- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
@@ -11,7 +11,7 @@ public final class Versioning { @@ -11,7 +11,7 @@ public final class Versioning {
@ -183,5 +183,5 @@ index 93046379..3a4b1424 100644
if (stream != null) { if (stream != null) {
-- --
2.34.1 2.7.1

View File

@ -1,4 +1,4 @@
From f7aa342f8b6f462e4f53b5e1770cde6f07bfec28 Mon Sep 17 00:00:00 2001 From e9f93a9efde92cdfd70b6d404621281f3761c519 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com> From: Zach Brown <zach.brown@destroystokyo.com>
Date: Mon, 25 May 2015 15:37:00 -0500 Date: Mon, 25 May 2015 15:37:00 -0500
Subject: [PATCH] mc-dev imports Subject: [PATCH] mc-dev imports
@ -6,7 +6,7 @@ Subject: [PATCH] mc-dev imports
diff --git a/src/main/java/net/minecraft/server/BaseBlockPosition.java b/src/main/java/net/minecraft/server/BaseBlockPosition.java diff --git a/src/main/java/net/minecraft/server/BaseBlockPosition.java b/src/main/java/net/minecraft/server/BaseBlockPosition.java
new file mode 100644 new file mode 100644
index 00000000..0b2277c3 index 0000000..0b2277c
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/BaseBlockPosition.java +++ b/src/main/java/net/minecraft/server/BaseBlockPosition.java
@@ -0,0 +1,85 @@ @@ -0,0 +1,85 @@
@ -97,7 +97,7 @@ index 00000000..0b2277c3
+} +}
diff --git a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java diff --git a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java
new file mode 100644 new file mode 100644
index 00000000..b1ae67ac index 0000000..b1ae67a
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/BiomeBase.java +++ b/src/main/java/net/minecraft/server/BiomeBase.java
@@ -0,0 +1,489 @@ @@ -0,0 +1,489 @@
@ -592,7 +592,7 @@ index 00000000..b1ae67ac
+} +}
diff --git a/src/main/java/net/minecraft/server/BiomeMesa.java b/src/main/java/net/minecraft/server/BiomeMesa.java diff --git a/src/main/java/net/minecraft/server/BiomeMesa.java b/src/main/java/net/minecraft/server/BiomeMesa.java
new file mode 100644 new file mode 100644
index 00000000..fd827f2d index 0000000..fd827f2
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/BiomeMesa.java +++ b/src/main/java/net/minecraft/server/BiomeMesa.java
@@ -0,0 +1,264 @@ @@ -0,0 +1,264 @@
@ -862,7 +862,7 @@ index 00000000..fd827f2d
+} +}
diff --git a/src/main/java/net/minecraft/server/BlockChest.java b/src/main/java/net/minecraft/server/BlockChest.java diff --git a/src/main/java/net/minecraft/server/BlockChest.java b/src/main/java/net/minecraft/server/BlockChest.java
new file mode 100644 new file mode 100644
index 00000000..f725aea8 index 0000000..f725aea
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/BlockChest.java +++ b/src/main/java/net/minecraft/server/BlockChest.java
@@ -0,0 +1,455 @@ @@ -0,0 +1,455 @@
@ -1323,7 +1323,7 @@ index 00000000..f725aea8
+} +}
diff --git a/src/main/java/net/minecraft/server/BlockFalling.java b/src/main/java/net/minecraft/server/BlockFalling.java diff --git a/src/main/java/net/minecraft/server/BlockFalling.java b/src/main/java/net/minecraft/server/BlockFalling.java
new file mode 100644 new file mode 100644
index 00000000..29f85549 index 0000000..29f8554
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/BlockFalling.java +++ b/src/main/java/net/minecraft/server/BlockFalling.java
@@ -0,0 +1,75 @@ @@ -0,0 +1,75 @@
@ -1404,7 +1404,7 @@ index 00000000..29f85549
+} +}
diff --git a/src/main/java/net/minecraft/server/BlockFluids.java b/src/main/java/net/minecraft/server/BlockFluids.java diff --git a/src/main/java/net/minecraft/server/BlockFluids.java b/src/main/java/net/minecraft/server/BlockFluids.java
new file mode 100644 new file mode 100644
index 00000000..b6104502 index 0000000..b610450
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/BlockFluids.java +++ b/src/main/java/net/minecraft/server/BlockFluids.java
@@ -0,0 +1,212 @@ @@ -0,0 +1,212 @@
@ -1622,7 +1622,7 @@ index 00000000..b6104502
+} +}
diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java
new file mode 100644 new file mode 100644
index 00000000..2bd54991 index 0000000..2bd5499
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/BlockPosition.java +++ b/src/main/java/net/minecraft/server/BlockPosition.java
@@ -0,0 +1,260 @@ @@ -0,0 +1,260 @@
@ -1888,7 +1888,7 @@ index 00000000..2bd54991
+} +}
diff --git a/src/main/java/net/minecraft/server/ChunkProviderFlat.java b/src/main/java/net/minecraft/server/ChunkProviderFlat.java diff --git a/src/main/java/net/minecraft/server/ChunkProviderFlat.java b/src/main/java/net/minecraft/server/ChunkProviderFlat.java
new file mode 100644 new file mode 100644
index 00000000..d1e10c6e index 0000000..d1e10c6
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/ChunkProviderFlat.java +++ b/src/main/java/net/minecraft/server/ChunkProviderFlat.java
@@ -0,0 +1,244 @@ @@ -0,0 +1,244 @@
@ -2138,7 +2138,7 @@ index 00000000..d1e10c6e
+} +}
diff --git a/src/main/java/net/minecraft/server/ChunkProviderGenerate.java b/src/main/java/net/minecraft/server/ChunkProviderGenerate.java diff --git a/src/main/java/net/minecraft/server/ChunkProviderGenerate.java b/src/main/java/net/minecraft/server/ChunkProviderGenerate.java
new file mode 100644 new file mode 100644
index 00000000..e0be3c12 index 0000000..e0be3c1
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/ChunkProviderGenerate.java +++ b/src/main/java/net/minecraft/server/ChunkProviderGenerate.java
@@ -0,0 +1,472 @@ @@ -0,0 +1,472 @@
@ -2616,7 +2616,7 @@ index 00000000..e0be3c12
+} +}
diff --git a/src/main/java/net/minecraft/server/ChunkProviderHell.java b/src/main/java/net/minecraft/server/ChunkProviderHell.java diff --git a/src/main/java/net/minecraft/server/ChunkProviderHell.java b/src/main/java/net/minecraft/server/ChunkProviderHell.java
new file mode 100644 new file mode 100644
index 00000000..2f01bbf5 index 0000000..2f01bbf
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/ChunkProviderHell.java +++ b/src/main/java/net/minecraft/server/ChunkProviderHell.java
@@ -0,0 +1,393 @@ @@ -0,0 +1,393 @@
@ -3015,7 +3015,7 @@ index 00000000..2f01bbf5
+} +}
diff --git a/src/main/java/net/minecraft/server/EntityMinecartFurnace.java b/src/main/java/net/minecraft/server/EntityMinecartFurnace.java diff --git a/src/main/java/net/minecraft/server/EntityMinecartFurnace.java b/src/main/java/net/minecraft/server/EntityMinecartFurnace.java
new file mode 100644 new file mode 100644
index 00000000..55f04b47 index 0000000..55f04b4
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/EntityMinecartFurnace.java +++ b/src/main/java/net/minecraft/server/EntityMinecartFurnace.java
@@ -0,0 +1,145 @@ @@ -0,0 +1,145 @@
@ -3166,7 +3166,7 @@ index 00000000..55f04b47
+} +}
diff --git a/src/main/java/net/minecraft/server/ItemBlock.java b/src/main/java/net/minecraft/server/ItemBlock.java diff --git a/src/main/java/net/minecraft/server/ItemBlock.java b/src/main/java/net/minecraft/server/ItemBlock.java
new file mode 100644 new file mode 100644
index 00000000..57b3d9d0 index 0000000..57b3d9d
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/ItemBlock.java +++ b/src/main/java/net/minecraft/server/ItemBlock.java
@@ -0,0 +1,100 @@ @@ -0,0 +1,100 @@
@ -3272,7 +3272,7 @@ index 00000000..57b3d9d0
+} +}
diff --git a/src/main/java/net/minecraft/server/ItemMilkBucket.java b/src/main/java/net/minecraft/server/ItemMilkBucket.java diff --git a/src/main/java/net/minecraft/server/ItemMilkBucket.java b/src/main/java/net/minecraft/server/ItemMilkBucket.java
new file mode 100644 new file mode 100644
index 00000000..91ea70d0 index 0000000..91ea70d
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/ItemMilkBucket.java +++ b/src/main/java/net/minecraft/server/ItemMilkBucket.java
@@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
@ -3313,7 +3313,7 @@ index 00000000..91ea70d0
+} +}
diff --git a/src/main/java/net/minecraft/server/MobEffectAttackDamage.java b/src/main/java/net/minecraft/server/MobEffectAttackDamage.java diff --git a/src/main/java/net/minecraft/server/MobEffectAttackDamage.java b/src/main/java/net/minecraft/server/MobEffectAttackDamage.java
new file mode 100644 new file mode 100644
index 00000000..620685ad index 0000000..620685a
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/MobEffectAttackDamage.java +++ b/src/main/java/net/minecraft/server/MobEffectAttackDamage.java
@@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
@ -3331,7 +3331,7 @@ index 00000000..620685ad
+} +}
diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java
new file mode 100644 new file mode 100644
index 00000000..d5eaa241 index 0000000..d5eaa24
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/NavigationAbstract.java +++ b/src/main/java/net/minecraft/server/NavigationAbstract.java
@@ -0,0 +1,222 @@ @@ -0,0 +1,222 @@
@ -3557,50 +3557,9 @@ index 00000000..d5eaa241
+ +
+ protected abstract boolean a(Vec3D vec3d, Vec3D vec3d1, int i, int j, int k); + protected abstract boolean a(Vec3D vec3d, Vec3D vec3d1, int i, int j, int k);
+} +}
diff --git a/src/main/java/net/minecraft/server/PacketLoginInEncryptionBegin.java b/src/main/java/net/minecraft/server/PacketLoginInEncryptionBegin.java
new file mode 100644
index 00000000..1d2e8556
--- /dev/null
+++ b/src/main/java/net/minecraft/server/PacketLoginInEncryptionBegin.java
@@ -0,0 +1,35 @@
+package net.minecraft.server;
+
+import java.io.IOException;
+import java.security.PrivateKey;
+import javax.crypto.SecretKey;
+
+public class PacketLoginInEncryptionBegin implements Packet<PacketLoginInListener> {
+
+ private byte[] a = new byte[0];
+ private byte[] b = new byte[0];
+
+ public PacketLoginInEncryptionBegin() {}
+
+ public void a(PacketDataSerializer packetdataserializer) throws IOException {
+ this.a = packetdataserializer.a();
+ this.b = packetdataserializer.a();
+ }
+
+ public void b(PacketDataSerializer packetdataserializer) throws IOException {
+ packetdataserializer.a(this.a);
+ packetdataserializer.a(this.b);
+ }
+
+ public void a(PacketLoginInListener packetlogininlistener) {
+ packetlogininlistener.a(this);
+ }
+
+ public SecretKey a(PrivateKey privatekey) {
+ return MinecraftEncryption.a(privatekey, this.a);
+ }
+
+ public byte[] b(PrivateKey privatekey) {
+ return privatekey == null ? this.b : MinecraftEncryption.b(privatekey, this.b);
+ }
+}
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java diff --git a/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java
new file mode 100644 new file mode 100644
index 00000000..1606d6d9 index 0000000..1606d6d
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java +++ b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java
@@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
@ -3639,7 +3598,7 @@ index 00000000..1606d6d9
+} +}
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutTitle.java b/src/main/java/net/minecraft/server/PacketPlayOutTitle.java diff --git a/src/main/java/net/minecraft/server/PacketPlayOutTitle.java b/src/main/java/net/minecraft/server/PacketPlayOutTitle.java
new file mode 100644 new file mode 100644
index 00000000..27112986 index 0000000..2711298
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/PacketPlayOutTitle.java +++ b/src/main/java/net/minecraft/server/PacketPlayOutTitle.java
@@ -0,0 +1,103 @@ @@ -0,0 +1,103 @@
@ -3748,7 +3707,7 @@ index 00000000..27112986
+} +}
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalFloat.java b/src/main/java/net/minecraft/server/PathfinderGoalFloat.java diff --git a/src/main/java/net/minecraft/server/PathfinderGoalFloat.java b/src/main/java/net/minecraft/server/PathfinderGoalFloat.java
new file mode 100644 new file mode 100644
index 00000000..6014b092 index 0000000..6014b09
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/PathfinderGoalFloat.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalFloat.java
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
@ -3777,7 +3736,7 @@ index 00000000..6014b092
+} +}
diff --git a/src/main/java/net/minecraft/server/PathfinderNormal.java b/src/main/java/net/minecraft/server/PathfinderNormal.java diff --git a/src/main/java/net/minecraft/server/PathfinderNormal.java b/src/main/java/net/minecraft/server/PathfinderNormal.java
new file mode 100644 new file mode 100644
index 00000000..0a14c9d4 index 0000000..0a14c9d
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/PathfinderNormal.java +++ b/src/main/java/net/minecraft/server/PathfinderNormal.java
@@ -0,0 +1,219 @@ @@ -0,0 +1,219 @@
@ -4002,7 +3961,7 @@ index 00000000..0a14c9d4
+} +}
diff --git a/src/main/java/net/minecraft/server/TileEntityEnderChest.java b/src/main/java/net/minecraft/server/TileEntityEnderChest.java diff --git a/src/main/java/net/minecraft/server/TileEntityEnderChest.java b/src/main/java/net/minecraft/server/TileEntityEnderChest.java
new file mode 100644 new file mode 100644
index 00000000..794cdc80 index 0000000..794cdc8
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/TileEntityEnderChest.java +++ b/src/main/java/net/minecraft/server/TileEntityEnderChest.java
@@ -0,0 +1,87 @@ @@ -0,0 +1,87 @@
@ -4095,7 +4054,7 @@ index 00000000..794cdc80
+} +}
diff --git a/src/main/java/net/minecraft/server/TileEntityLightDetector.java b/src/main/java/net/minecraft/server/TileEntityLightDetector.java diff --git a/src/main/java/net/minecraft/server/TileEntityLightDetector.java b/src/main/java/net/minecraft/server/TileEntityLightDetector.java
new file mode 100644 new file mode 100644
index 00000000..f75e2de6 index 0000000..f75e2de
--- /dev/null --- /dev/null
+++ b/src/main/java/net/minecraft/server/TileEntityLightDetector.java +++ b/src/main/java/net/minecraft/server/TileEntityLightDetector.java
@@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
@ -4116,5 +4075,5 @@ index 00000000..f75e2de6
+ } + }
+} +}
-- --
2.34.0 2.7.1

View File

@ -1,14 +1,14 @@
From 6f0ca74e6526a72310e6c0f06b4e2a3e21a375f9 Mon Sep 17 00:00:00 2001 From d50dae836a3d3f52e9c5be6089246adadbb71628 Mon Sep 17 00:00:00 2001
From: Jedediah Smith <jedediah@silencegreys.com> From: Jedediah Smith <jedediah@silencegreys.com>
Date: Thu, 30 Apr 2015 22:42:34 -0400 Date: Thu, 30 Apr 2015 22:42:34 -0400
Subject: [PATCH] Fix jar being shaded multiple times Subject: [PATCH] Fix jar being shaded multiple times
diff --git a/pom.xml b/pom.xml diff --git a/pom.xml b/pom.xml
index 32593a7fa..609000dfd 100644 index 19e47f4..68073c0 100644
--- a/pom.xml --- a/pom.xml
+++ b/pom.xml +++ b/pom.xml
@@ -136,6 +136,7 @@ @@ -130,6 +130,7 @@
<artifactId>maven-jar-plugin</artifactId> <artifactId>maven-jar-plugin</artifactId>
<version>2.5</version> <version>2.5</version>
<configuration> <configuration>
@ -17,5 +17,5 @@ index 32593a7fa..609000dfd 100644
<manifestEntries> <manifestEntries>
<Main-Class>org.bukkit.craftbukkit.Main</Main-Class> <Main-Class>org.bukkit.craftbukkit.Main</Main-Class>
-- --
2.34.0 2.7.1

View File

@ -1,11 +1,11 @@
From 4222b417aed27fedcce9ca54c96f63fa17e504bb Mon Sep 17 00:00:00 2001 From 90cfceb6acf7723815e95fee4f9f6a24277bae50 Mon Sep 17 00:00:00 2001
From: Iceee <andrew@opticgaming.tv> From: Iceee <andrew@opticgaming.tv>
Date: Thu, 23 Apr 2015 17:26:21 -0400 Date: Thu, 23 Apr 2015 17:26:21 -0400
Subject: [PATCH] Optimize Spigot's Anti X-Ray Subject: [PATCH] Optimize Spigot's Anti X-Ray
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index 06c70578..fb16a8ad 100644 index 06c7057..fb16a8a 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java --- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -252,6 +252,7 @@ public class WorldServer extends World implements IAsyncTaskHandler { @@ -252,6 +252,7 @@ public class WorldServer extends World implements IAsyncTaskHandler {
@ -17,7 +17,7 @@ index 06c70578..fb16a8ad 100644
timings.doChunkMap.startTiming(); // Spigot timings.doChunkMap.startTiming(); // Spigot
this.manager.flush(); this.manager.flush();
diff --git a/src/main/java/org/spigotmc/AntiXray.java b/src/main/java/org/spigotmc/AntiXray.java diff --git a/src/main/java/org/spigotmc/AntiXray.java b/src/main/java/org/spigotmc/AntiXray.java
index 7221b507..5466a61c 100644 index 7221b50..5466a61 100644
--- a/src/main/java/org/spigotmc/AntiXray.java --- a/src/main/java/org/spigotmc/AntiXray.java
+++ b/src/main/java/org/spigotmc/AntiXray.java +++ b/src/main/java/org/spigotmc/AntiXray.java
@@ -8,6 +8,11 @@ import net.minecraft.server.Blocks; @@ -8,6 +8,11 @@ import net.minecraft.server.Blocks;
@ -43,11 +43,10 @@ index 7221b507..5466a61c 100644
public AntiXray(SpigotWorldConfig config) public AntiXray(SpigotWorldConfig config)
{ {
@@ -43,6 +52,25 @@ public class AntiXray @@ -44,6 +53,25 @@ public class AntiXray
replacementOres = blocks.toArray();
} }
+ /** /**
+ * PaperSpigot - Flush queued block updates for world. + * PaperSpigot - Flush queued block updates for world.
+ */ + */
+ public void flushUpdates(World world) + public void flushUpdates(World world)
@ -66,9 +65,10 @@ index 7221b507..5466a61c 100644
+ } + }
+ } + }
+ +
/** + /**
* Starts the timings handler, then updates all blocks within the set radius * Starts the timings handler, then updates all blocks within the set radius
* of the given coordinate, revealing them if they are hidden ores. * of the given coordinate, revealing them if they are hidden ores.
*/
@@ -51,6 +79,13 @@ public class AntiXray @@ -51,6 +79,13 @@ public class AntiXray
{ {
if ( world.spigotConfig.antiXray ) if ( world.spigotConfig.antiXray )
@ -84,5 +84,5 @@ index 7221b507..5466a61c 100644
updateNearbyBlocks( world, position, 2, false ); // 2 is the radius, we shouldn't change it as that would make it exponentially slower updateNearbyBlocks( world, position, 2, false ); // 2 is the radius, we shouldn't change it as that would make it exponentially slower
update.stopTiming(); update.stopTiming();
-- --
2.34.0 2.6.0

View File

@ -1,4 +1,4 @@
From d19bcfa1cb87ce084c3ddfe845cc7e3a99b270e4 Mon Sep 17 00:00:00 2001 From 6ee5f9facbcd8fb924f76c21d31ab60a8e45b52f Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co> From: Aikar <aikar@aikar.co>
Date: Fri, 8 Jan 2016 23:36:39 -0600 Date: Fri, 8 Jan 2016 23:36:39 -0600
Subject: [PATCH] Timings v2 Subject: [PATCH] Timings v2
@ -6,10 +6,10 @@ Subject: [PATCH] Timings v2
diff --git a/src/main/java/co/aikar/timings/SpigotTimings.java b/src/main/java/co/aikar/timings/SpigotTimings.java diff --git a/src/main/java/co/aikar/timings/SpigotTimings.java b/src/main/java/co/aikar/timings/SpigotTimings.java
new file mode 100644 new file mode 100644
index 00000000..b3cafafc index 0000000..a1aaaa2
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/timings/SpigotTimings.java +++ b/src/main/java/co/aikar/timings/SpigotTimings.java
@@ -0,0 +1,111 @@ @@ -0,0 +1,110 @@
+package co.aikar.timings; +package co.aikar.timings;
+ +
+import net.minecraft.server.*; +import net.minecraft.server.*;
@ -23,8 +23,7 @@ index 00000000..b3cafafc
+ public static final Timing playerListTimer = Timings.ofSafe("Player List"); + public static final Timing playerListTimer = Timings.ofSafe("Player List");
+ public static final Timing connectionTimer = Timings.ofSafe("Connection Handler"); + public static final Timing connectionTimer = Timings.ofSafe("Connection Handler");
+ public static final Timing tickablesTimer = Timings.ofSafe("Tickables"); + public static final Timing tickablesTimer = Timings.ofSafe("Tickables");
+ public static final Timing minecraftSchedulerTimer = Timings.ofSafe("Minecraft Scheduler"); + public static final Timing schedulerTimer = Timings.ofSafe("Scheduler");
+ public static final Timing bukkitSchedulerTimer = Timings.ofSafe("Bukkit Scheduler");
+ public static final Timing chunkIOTickTimer = Timings.ofSafe("ChunkIOTick"); + public static final Timing chunkIOTickTimer = Timings.ofSafe("ChunkIOTick");
+ public static final Timing timeUpdateTimer = Timings.ofSafe("Time Update"); + public static final Timing timeUpdateTimer = Timings.ofSafe("Time Update");
+ public static final Timing serverCommandTimer = Timings.ofSafe("Server Command"); + public static final Timing serverCommandTimer = Timings.ofSafe("Server Command");
@ -123,7 +122,7 @@ index 00000000..b3cafafc
+} +}
diff --git a/src/main/java/co/aikar/timings/WorldTimingsHandler.java b/src/main/java/co/aikar/timings/WorldTimingsHandler.java diff --git a/src/main/java/co/aikar/timings/WorldTimingsHandler.java b/src/main/java/co/aikar/timings/WorldTimingsHandler.java
new file mode 100644 new file mode 100644
index 00000000..9ebc710f index 0000000..9ebc710
--- /dev/null --- /dev/null
+++ b/src/main/java/co/aikar/timings/WorldTimingsHandler.java +++ b/src/main/java/co/aikar/timings/WorldTimingsHandler.java
@@ -0,0 +1,69 @@ @@ -0,0 +1,69 @@
@ -197,7 +196,7 @@ index 00000000..9ebc710f
+ } + }
+} +}
diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java
index c26975a0..a784e04a 100644 index c26975a..a784e04 100644
--- a/src/main/java/net/minecraft/server/Block.java --- a/src/main/java/net/minecraft/server/Block.java
+++ b/src/main/java/net/minecraft/server/Block.java +++ b/src/main/java/net/minecraft/server/Block.java
@@ -65,6 +65,16 @@ public class Block { @@ -65,6 +65,16 @@ public class Block {
@ -218,7 +217,7 @@ index c26975a0..a784e04a 100644
protected double minY; protected double minY;
protected double minZ; protected double minZ;
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index 45cea142..088beb22 100644 index 45cea14..088beb2 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java --- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -20,7 +20,7 @@ import java.io.PrintStream; @@ -20,7 +20,7 @@ import java.io.PrintStream;
@ -231,7 +230,7 @@ index 45cea142..088beb22 100644
import org.bukkit.craftbukkit.util.Waitable; import org.bukkit.craftbukkit.util.Waitable;
import org.bukkit.event.server.RemoteServerCommandEvent; import org.bukkit.event.server.RemoteServerCommandEvent;
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 20cc9469..ef59b402 100644 index 20cc946..ef59b40 100644
--- a/src/main/java/net/minecraft/server/Entity.java --- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java
@@ -16,7 +16,8 @@ import org.bukkit.entity.Hanging; @@ -16,7 +16,8 @@ import org.bukkit.entity.Hanging;
@ -270,7 +269,7 @@ index 20cc9469..ef59b402 100644
private void recalcPosition() { private void recalcPosition() {
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 0de13bb0..19a743c2 100644 index 0de13bb..19a743c 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java --- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -23,7 +23,7 @@ import org.bukkit.event.entity.EntityRegainHealthEvent; @@ -23,7 +23,7 @@ import org.bukkit.event.entity.EntityRegainHealthEvent;
@ -341,7 +340,7 @@ index 0de13bb0..19a743c2 100644
this.world.methodProfiler.b(); this.world.methodProfiler.b();
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index eac71e82..ee099222 100644 index eac71e8..4a421ba 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -45,7 +45,7 @@ import jline.console.ConsoleReader; @@ -45,7 +45,7 @@ import jline.console.ConsoleReader;
@ -371,7 +370,7 @@ index eac71e82..ee099222 100644
long i = System.nanoTime(); long i = System.nanoTime();
++this.ticks; ++this.ticks;
@@ -757,11 +759,11 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs @@ -757,8 +759,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
this.methodProfiler.b(); this.methodProfiler.b();
this.methodProfiler.b(); this.methodProfiler.b();
org.spigotmc.WatchdogThread.tick(); // Spigot org.spigotmc.WatchdogThread.tick(); // Spigot
@ -381,29 +380,8 @@ index eac71e82..ee099222 100644
} }
public void B() { public void B() {
+ SpigotTimings.minecraftSchedulerTimer.startTiming(); // Spigot
this.methodProfiler.a("jobs");
Queue queue = this.j;
@@ -772,13 +774,14 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
SystemUtils.a(entry, MinecraftServer.LOGGER);
}
// Spigot end
+ SpigotTimings.minecraftSchedulerTimer.stopTiming(); // Spigot
this.methodProfiler.c("levels");
- SpigotTimings.schedulerTimer.startTiming(); // Spigot
+ SpigotTimings.bukkitSchedulerTimer.startTiming(); // Spigot
// CraftBukkit start
this.server.getScheduler().mainThreadHeartbeat(this.ticks);
- SpigotTimings.schedulerTimer.stopTiming(); // Spigot
+ SpigotTimings.bukkitSchedulerTimer.stopTiming(); // Spigot
// Run tasks that are waiting on processing
SpigotTimings.processQueueTimer.startTiming(); // Spigot
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 2ab01a1f..11380423 100644 index 2ab01a1..1138042 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java --- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -60,6 +60,7 @@ import org.bukkit.event.player.PlayerToggleSprintEvent; @@ -60,6 +60,7 @@ import org.bukkit.event.player.PlayerToggleSprintEvent;
@ -451,7 +429,7 @@ index 2ab01a1f..11380423 100644
// CraftBukkit end // CraftBukkit end
} }
diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java
index 3fc6450a..fdcbf443 100644 index 3fc6450..fdcbf44 100644
--- a/src/main/java/net/minecraft/server/TileEntity.java --- a/src/main/java/net/minecraft/server/TileEntity.java
+++ b/src/main/java/net/minecraft/server/TileEntity.java +++ b/src/main/java/net/minecraft/server/TileEntity.java
@@ -6,12 +6,13 @@ import java.util.concurrent.Callable; @@ -6,12 +6,13 @@ import java.util.concurrent.Callable;
@ -471,7 +449,7 @@ index 3fc6450a..fdcbf443 100644
private static Map<String, Class<? extends TileEntity>> f = Maps.newHashMap(); private static Map<String, Class<? extends TileEntity>> f = Maps.newHashMap();
private static Map<Class<? extends TileEntity>, String> g = Maps.newHashMap(); private static Map<Class<? extends TileEntity>, String> g = Maps.newHashMap();
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index b957bd27..a76d83c7 100644 index 13ab789..56cddeb 100644
--- a/src/main/java/net/minecraft/server/World.java --- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java
@@ -7,13 +7,14 @@ import org.bukkit.Bukkit; @@ -7,13 +7,14 @@ import org.bukkit.Bukkit;
@ -581,7 +559,7 @@ index b957bd27..a76d83c7 100644
} }
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index fb16a8ad..3a2ca89c 100644 index 6186f6c..ad51256 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java --- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -245,13 +245,13 @@ public class WorldServer extends World implements IAsyncTaskHandler { @@ -245,13 +245,13 @@ public class WorldServer extends World implements IAsyncTaskHandler {
@ -665,7 +643,7 @@ index fb16a8ad..3a2ca89c 100644
this.methodProfiler.b(); this.methodProfiler.b();
this.V.clear(); this.V.clear();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 7da8d67d..97f9f96e 100644 index 7da8d67..97f9f96 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -329,6 +329,7 @@ public final class CraftServer implements Server { @@ -329,6 +329,7 @@ public final class CraftServer implements Server {
@ -676,14 +654,14 @@ index 7da8d67d..97f9f96e 100644
} }
} }
@@ -1715,12 +1716,31 @@ public final class CraftServer implements Server { @@ -1715,13 +1716,32 @@ public final class CraftServer implements Server {
} }
// PaperSpigot end // PaperSpigot end
+ @Deprecated + @Deprecated
@Override @Override
public YamlConfiguration getConfig() public YamlConfiguration getConfig()
+ { {
+ return getBukkitConfig(); + return getBukkitConfig();
+ } + }
+ +
@ -695,22 +673,23 @@ index 7da8d67d..97f9f96e 100644
+ +
+ @Override + @Override
+ public YamlConfiguration getSpigotConfig() + public YamlConfiguration getSpigotConfig()
{ + {
return org.spigotmc.SpigotConfig.config; return org.spigotmc.SpigotConfig.config;
} }
+ @Override @Override
+ public YamlConfiguration getPaperSpigotConfig() + public YamlConfiguration getPaperSpigotConfig()
+ { + {
+ return org.github.paperspigot.PaperSpigotConfig.config; + return org.github.paperspigot.PaperSpigotConfig.config;
+ } + }
+ +
@Override + @Override
public void restart() { public void restart() {
org.spigotmc.RestartCommand.restart(); org.spigotmc.RestartCommand.restart();
}
diff --git a/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java b/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java diff --git a/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java b/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java
deleted file mode 100644 deleted file mode 100644
index 41d2d87e..00000000 index 41d2d87..0000000
--- a/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java --- a/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java
+++ /dev/null +++ /dev/null
@@ -1,173 +0,0 @@ @@ -1,173 +0,0 @@
@ -888,7 +867,7 @@ index 41d2d87e..00000000
- } - }
-} -}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 1135f83c..e8c6d5ee 100644 index 1135f83..e8c6d5e 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1496,6 +1496,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -1496,6 +1496,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@ -905,7 +884,7 @@ index 1135f83c..e8c6d5ee 100644
public Player.Spigot spigot() public Player.Spigot spigot()
diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
index 93d8d424..d76ec40a 100644 index 93d8d42..d76ec40 100644
--- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
@@ -186,7 +186,7 @@ public class CraftScheduler implements BukkitScheduler { @@ -186,7 +186,7 @@ public class CraftScheduler implements BukkitScheduler {
@ -946,7 +925,7 @@ index 93d8d424..d76ec40a 100644
task.getOwner().getLogger().log( task.getOwner().getLogger().log(
Level.WARNING, Level.WARNING,
diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java
index 220e39ab..4b1e3523 100644 index 220e39a..4b1e352 100644
--- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java
+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java
@@ -1,8 +1,8 @@ @@ -1,8 +1,8 @@
@ -1026,7 +1005,7 @@ index 220e39ab..4b1e3523 100644
- // Spigot end - // Spigot end
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java b/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java b/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java
index e52ef47b..bd0b8873 100644 index e52ef47..bd0b887 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java --- a/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java
@@ -5,6 +5,7 @@ import org.bukkit.util.CachedServerIcon; @@ -5,6 +5,7 @@ import org.bukkit.util.CachedServerIcon;
@ -1038,7 +1017,7 @@ index e52ef47b..bd0b8873 100644
this.value = value; this.value = value;
} }
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
index 5b0c64d2..d3767d2a 100644 index 5b0c64d..d3767d2 100644
--- a/src/main/java/org/spigotmc/ActivationRange.java --- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java
@@ -31,8 +31,8 @@ import net.minecraft.server.EntityWither; @@ -31,8 +31,8 @@ import net.minecraft.server.EntityWither;
@ -1053,7 +1032,7 @@ index 5b0c64d2..d3767d2a 100644
public class ActivationRange public class ActivationRange
{ {
diff --git a/src/main/java/org/spigotmc/AntiXray.java b/src/main/java/org/spigotmc/AntiXray.java diff --git a/src/main/java/org/spigotmc/AntiXray.java b/src/main/java/org/spigotmc/AntiXray.java
index 5466a61c..c2ad90c8 100644 index 5466a61..c2ad90c 100644
--- a/src/main/java/org/spigotmc/AntiXray.java --- a/src/main/java/org/spigotmc/AntiXray.java
+++ b/src/main/java/org/spigotmc/AntiXray.java +++ b/src/main/java/org/spigotmc/AntiXray.java
@@ -7,6 +7,7 @@ import net.minecraft.server.BlockPosition; @@ -7,6 +7,7 @@ import net.minecraft.server.BlockPosition;
@ -1099,7 +1078,7 @@ index 5466a61c..c2ad90c8 100644
} }
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
index f6a67d68..b9d185d9 100644 index f6a67d6..93825d9 100644
--- a/src/main/java/org/spigotmc/SpigotConfig.java --- a/src/main/java/org/spigotmc/SpigotConfig.java
+++ b/src/main/java/org/spigotmc/SpigotConfig.java +++ b/src/main/java/org/spigotmc/SpigotConfig.java
@@ -12,8 +12,10 @@ import java.util.HashSet; @@ -12,8 +12,10 @@ import java.util.HashSet;
@ -1163,5 +1142,5 @@ index f6a67d68..b9d185d9 100644
{ {
int count = getInt( "settings.netty-threads", 4 ); int count = getInt( "settings.netty-threads", 4 );
-- --
2.34.0 2.7.0.windows.2

View File

@ -1,4 +1,4 @@
From 80b20092e304d27660bf79623f9187c93cf28984 Mon Sep 17 00:00:00 2001 From fc03f8e2a41a7fa9e6239985714d2509eb0a3e76 Mon Sep 17 00:00:00 2001
From: DemonWav <demonwav@gmail.com> From: DemonWav <demonwav@gmail.com>
Date: Sat, 30 Jan 2016 19:17:19 -0600 Date: Sat, 30 Jan 2016 19:17:19 -0600
Subject: [PATCH] Add Location support to tab completers (vanilla feature Subject: [PATCH] Add Location support to tab completers (vanilla feature
@ -6,10 +6,10 @@ Subject: [PATCH] Add Location support to tab completers (vanilla feature
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index ee09922..b400ce0 100644 index 4a421ba..ff8770b 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1153,7 +1153,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs @@ -1151,7 +1151,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
return arraylist; return arraylist;
} }
*/ */
@ -149,5 +149,5 @@ index 00057a1..c3c374d 100644
+ } + }
} }
-- --
2.7.1 2.7.0.windows.2

View File

@ -1,11 +1,11 @@
From 88944a9edb0263524b98a1f1731831a360de0bd9 Mon Sep 17 00:00:00 2001 From c27a95f1caa97ff1b026429367c16abd20e46ed2 Mon Sep 17 00:00:00 2001
From: Techcable <Techcable@outlook.com> From: Jedediah Smith <jedediah@silencegreys.com>
Date: Tue, 16 Feb 2016 19:45:55 -0600 Date: Tue, 16 Feb 2016 19:45:55 -0600
Subject: [PATCH] Player Tab List and Title APIs Subject: [PATCH] Player Tab List and Title APIs
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java diff --git a/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java
index 1606d6d..795e70a 100644 index 1606d6d..89a5056 100644
--- a/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java --- a/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java
+++ b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java +++ b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java
@@ -4,6 +4,8 @@ import java.io.IOException; @@ -4,6 +4,8 @@ import java.io.IOException;
@ -17,7 +17,7 @@ index 1606d6d..795e70a 100644
private IChatBaseComponent a; private IChatBaseComponent a;
private IChatBaseComponent b; private IChatBaseComponent b;
@@ -19,15 +21,30 @@ public class PacketPlayOutPlayerListHeaderFooter implements Packet<PacketListene @@ -19,15 +21,22 @@ public class PacketPlayOutPlayerListHeaderFooter implements Packet<PacketListene
} }
public void b(PacketDataSerializer packetdataserializer) throws IOException { public void b(PacketDataSerializer packetdataserializer) throws IOException {
@ -41,17 +41,13 @@ index 1606d6d..795e70a 100644
public void a(PacketListenerPlayOut packetlistenerplayout) { public void a(PacketListenerPlayOut packetlistenerplayout) {
packetlistenerplayout.a(this); packetlistenerplayout.a(this);
} }
-
+ // PaperSpigot start - fix compile error - public void a(PacketListener packetlistener) {
+ /* - this.a((PacketListenerPlayOut) packetlistener);
public void a(PacketListener packetlistener) { - }
this.a((PacketListenerPlayOut) packetlistener);
}
+ */
+ // PaperSpigot end
} }
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutTitle.java b/src/main/java/net/minecraft/server/PacketPlayOutTitle.java diff --git a/src/main/java/net/minecraft/server/PacketPlayOutTitle.java b/src/main/java/net/minecraft/server/PacketPlayOutTitle.java
index 2711298..20016b5 100644 index 2711298..071215e 100644
--- a/src/main/java/net/minecraft/server/PacketPlayOutTitle.java --- a/src/main/java/net/minecraft/server/PacketPlayOutTitle.java
+++ b/src/main/java/net/minecraft/server/PacketPlayOutTitle.java +++ b/src/main/java/net/minecraft/server/PacketPlayOutTitle.java
@@ -10,6 +10,18 @@ public class PacketPlayOutTitle implements Packet<PacketListenerPlayOut> { @@ -10,6 +10,18 @@ public class PacketPlayOutTitle implements Packet<PacketListenerPlayOut> {
@ -88,35 +84,22 @@ index 2711298..20016b5 100644
} }
if (this.a == EnumTitleAction.TIMES) { if (this.a == EnumTitleAction.TIMES) {
@@ -60,9 +78,13 @@ public class PacketPlayOutTitle implements Packet<PacketListenerPlayOut> { @@ -60,10 +78,6 @@ public class PacketPlayOutTitle implements Packet<PacketListenerPlayOut> {
packetlistenerplayout.a(this); packetlistenerplayout.a(this);
} }
+ // PaperSpigot start - fix compile error - public void a(PacketListener packetlistener) {
+ /* - this.a((PacketListenerPlayOut) packetlistener);
public void a(PacketListener packetlistener) { - }
this.a((PacketListenerPlayOut) packetlistener); -
}
+ */
+ // PaperSpigot end
public static enum EnumTitleAction { public static enum EnumTitleAction {
TITLE, SUBTITLE, TIMES, CLEAR, RESET;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index dba0520..3075076 100644 index dba0520..cabef35 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -64,6 +64,9 @@ import org.bukkit.metadata.MetadataValue; @@ -176,6 +176,65 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.messaging.StandardMessenger;
import org.bukkit.scoreboard.Scoreboard;
+// PaperSpigot start
+import org.github.paperspigot.Title;
+// PaperSpigot end
@DelegateDeserialization(CraftOfflinePlayer.class)
public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -176,6 +179,83 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
packet.components = components; packet.components = components;
getHandle().playerConnection.sendPacket(packet); getHandle().playerConnection.sendPacket(packet);
} }
@ -176,24 +159,6 @@ index dba0520..3075076 100644
+ } + }
+ +
+ @Override + @Override
+ public void sendTitle(Title title) {
+ Preconditions.checkNotNull(title, "Title is null");
+ setTitleTimes(title.getFadeIn(), title.getStay(), title.getFadeOut());
+ setSubtitle(title.getSubtitle() == null ? new BaseComponent[0] : title.getSubtitle());
+ showTitle(title.getTitle());
+ }
+
+ @Override
+ public void updateTitle(Title title) {
+ Preconditions.checkNotNull(title, "Title is null");
+ setTitleTimes(title.getFadeIn(), title.getStay(), title.getFadeOut());
+ if (title.getSubtitle() != null) {
+ setSubtitle(title.getSubtitle());
+ }
+ showTitle(title.getTitle());
+ }
+
+ @Override
+ public void hideTitle() { + public void hideTitle() {
+ getHandle().playerConnection.sendPacket(new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.CLEAR, (BaseComponent[]) null, 0, 0, 0)); + getHandle().playerConnection.sendPacket(new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.CLEAR, (BaseComponent[]) null, 0, 0, 0));
+ } + }

View File

@ -1,52 +0,0 @@
From 34a2d7adb137bd4481b238bc5a80aaf0cbbbc7db Mon Sep 17 00:00:00 2001
From: Joseph Hirschfeld <joe@ibj.io>
Date: Mon, 22 Feb 2016 16:05:32 -0500
Subject: [PATCH] Add velocity warnings
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 5df3476..4f91799 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -25,6 +25,7 @@ import org.bukkit.permissions.PermissionAttachmentInfo;
import org.bukkit.permissions.ServerOperator;
import org.bukkit.plugin.Plugin;
import org.bukkit.util.Vector;
+import org.github.paperspigot.PaperSpigotConfig;
public abstract class CraftEntity implements org.bukkit.entity.Entity {
private static final PermissibleBase perm = new PermissibleBase(new ServerOperator() {
@@ -205,6 +206,15 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
}
public void setVelocity(Vector vel) {
+ // Paper start - warn server owners when plugins try to set super high velocities
+ if (PaperSpigotConfig.warnForExcessiveVelocity) {
+ if(vel.getX() > 4 || vel.getX() < -4 || vel.getY() > 4 || vel.getY() < -4 || vel.getZ() > 4 || vel.getZ() < -4) {
+ getServer().getLogger().warning("Excessive velocity set detected: tried to set velocity of entity #"+getEntityId()+" to ("+vel.getX()+","+vel.getY()+","+vel.getZ()+").");
+ Thread.dumpStack();
+ }
+ }
+ // Paper end
+
entity.motX = vel.getX();
entity.motY = vel.getY();
entity.motZ = vel.getZ();
diff --git a/src/main/java/org/github/paperspigot/PaperSpigotConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotConfig.java
index ea5a427..d6d9899 100644
--- a/src/main/java/org/github/paperspigot/PaperSpigotConfig.java
+++ b/src/main/java/org/github/paperspigot/PaperSpigotConfig.java
@@ -216,4 +216,10 @@ public class PaperSpigotConfig
e.printStackTrace();
}
}
+
+ public static boolean warnForExcessiveVelocity;
+ private static void excessiveVelocityWarning()
+ {
+ warnForExcessiveVelocity = getBoolean("warnWhenSettingExcessiveVelocity", true);
+ }
}
--
2.7.1

View File

@ -1,43 +0,0 @@
From bb89655d63addb4ee096d8cec88b4c54e2a2d383 Mon Sep 17 00:00:00 2001
From: Sudzzy <originmc@outlook.com>
Date: Sun, 28 Feb 2016 18:33:06 +0000
Subject: [PATCH] Fix inter-world teleportation glitches
People are able to abuse the way Bukkit handles teleportation across worlds since it provides a built in teleportation safety check.
To abuse the safety check, players are required to get into a location deemed unsafe by Bukkit e.g. be within a chest or door block. While they are in this block, they accept a teleport request from a player within a different world. Once the player teleports, Minecraft will recursively search upwards for a safe location, this could eventually land within a player's skybase.
Example setup to perform the glitch: http://puu.sh/ng3PC/cf072dcbdb.png
The wanted destination was on top of the emerald block however the player ended on top of the diamond block. This only is the case if the player is teleporting between worlds.
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 3075076..b7b3bd6 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -565,7 +565,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (fromWorld == toWorld) {
entity.playerConnection.teleport(to);
} else {
- server.getHandle().moveToWorld(entity, toWorld.dimension, true, to, true);
+ server.getHandle().moveToWorld(entity, toWorld.dimension, true, to, !toWorld.paperSpigotConfig.disableTeleportationSuffocationCheck);
}
return true;
}
diff --git a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java
index 6ad8e81..3539c90 100644
--- a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java
+++ b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java
@@ -402,4 +402,10 @@ public class PaperSpigotWorldConfig
{
portalSearchRadius = getInt("portal-search-radius", 128);
}
+
+ public boolean disableTeleportationSuffocationCheck;
+ private void disableTeleportationSuffocationCheck()
+ {
+ disableTeleportationSuffocationCheck = getBoolean("disable-teleportation-suffocation-check", false);
+ }
}
--
2.7.2

View File

@ -1,466 +0,0 @@
From 3222d65f280871d3cc7b9a3d0250934dcc5f456c Mon Sep 17 00:00:00 2001
From: Joseph Hirschfeld <joe@ibj.io>
Date: Sat, 20 Feb 2016 20:07:46 -0500
Subject: [PATCH] Add exception reporting event
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index aa555f5..ab0d41c 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -18,6 +18,9 @@ import org.apache.logging.log4j.Logger;
import com.google.common.collect.Lists; // CraftBukkit
import org.bukkit.Bukkit; // CraftBukkit
+import org.bukkit.craftbukkit.util.CraftMagicNumbers;
+import org.github.paperspigot.event.ServerExceptionEvent;
+import org.github.paperspigot.exception.ServerInternalException;
public class Chunk {
@@ -869,10 +872,15 @@ public class Chunk {
this.tileEntities.remove(blockposition);
// PaperSpigot end
} else {
- System.out.println("Attempted to place a tile entity (" + tileentity + ") at " + tileentity.position.getX() + "," + tileentity.position.getY() + "," + tileentity.position.getZ()
- + " (" + org.bukkit.craftbukkit.util.CraftMagicNumbers.getMaterial(getType(blockposition)) + ") where there was no entity tile!");
- System.out.println("Chunk coordinates: " + (this.locX * 16) + "," + (this.locZ * 16));
- new Exception().printStackTrace();
+ // Paper start
+ ServerInternalException e = new ServerInternalException(
+ "Attempted to place a tile entity (" + tileentity + ") at " + tileentity.position.getX() + ","
+ + tileentity.position.getY() + "," + tileentity.position.getZ()
+ + " (" + CraftMagicNumbers.getMaterial(getType(blockposition)) + ") where there was no entity tile!\n" +
+ "Chunk coordinates: " + (this.locX * 16) + "," + (this.locZ * 16));
+ e.printStackTrace();
+ ServerInternalException.reportInternalException(e);
+ // Paper end
// CraftBukkit end
}
}
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
index 0e6a37f..c4dab42 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -15,12 +15,15 @@ import org.apache.logging.log4j.Logger;
import java.util.Random;
import java.util.logging.Level;
+import org.bukkit.Bukkit;
import org.bukkit.Server;
import org.bukkit.craftbukkit.chunkio.ChunkIOExecutor;
import org.bukkit.craftbukkit.util.LongHash;
import org.bukkit.craftbukkit.util.LongHashSet;
import org.bukkit.craftbukkit.util.LongObjectHashMap;
import org.bukkit.event.world.ChunkUnloadEvent;
+import org.github.paperspigot.event.ServerExceptionEvent;
+import org.github.paperspigot.exception.ServerInternalException;
// CraftBukkit end
public class ChunkProviderServer implements IChunkProvider {
@@ -215,11 +218,14 @@ public class ChunkProviderServer implements IChunkProvider {
if (chunk == emptyChunk) return chunk;
if (i != chunk.locX || j != chunk.locZ) {
- b.error("Chunk (" + chunk.locX + ", " + chunk.locZ + ") stored at (" + i + ", " + j + ") in world '" + world.getWorld().getName() + "'");
+ // Paper start
+ String msg = "Chunk (" + chunk.locX + ", " + chunk.locZ + ") stored at (" + i + ", " + j + ") in world '" + world.getWorld().getName() + "'";
+ b.error(msg);
b.error(chunk.getClass().getName());
- Throwable ex = new Throwable();
- ex.fillInStackTrace();
+ ServerInternalException ex = new ServerInternalException(msg);
ex.printStackTrace();
+ Bukkit.getPluginManager().callEvent(new ServerExceptionEvent(ex));
+ // Paper end
}
return chunk;
@@ -244,7 +250,11 @@ public class ChunkProviderServer implements IChunkProvider {
return chunk;
} catch (Exception exception) {
- ChunkProviderServer.b.error("Couldn\'t load chunk", exception);
+ // Paper start
+ String msg = "Couldn\'t load chunk";
+ ChunkProviderServer.b.error(msg, exception);
+ ServerInternalException.reportInternalException(exception);
+ // Paper end
return null;
}
}
diff --git a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java
index d67539c..4029109 100644
--- a/src/main/java/net/minecraft/server/NameReferencingFileConverter.java
+++ b/src/main/java/net/minecraft/server/NameReferencingFileConverter.java
@@ -25,6 +25,9 @@ import java.util.Map;
import java.util.UUID;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import org.bukkit.Bukkit;
+import org.github.paperspigot.event.ServerExceptionEvent;
+import org.github.paperspigot.exception.ServerInternalException;
public class NameReferencingFileConverter {
@@ -361,6 +364,7 @@ public class NameReferencingFileConverter {
root = NBTCompressedStreamTools.a(new java.io.FileInputStream(file1));
} catch (Exception exception) {
exception.printStackTrace();
+ ServerInternalException.reportInternalException(exception); // Paper
}
if (root != null) {
@@ -374,8 +378,9 @@ public class NameReferencingFileConverter {
NBTCompressedStreamTools.a(root, new java.io.FileOutputStream(file2));
} catch (Exception exception) {
exception.printStackTrace();
+ ServerInternalException.reportInternalException(exception); // Paper
}
- }
+ }
// CraftBukkit end
NameReferencingFileConverter.b(file);
diff --git a/src/main/java/net/minecraft/server/PersistentCollection.java b/src/main/java/net/minecraft/server/PersistentCollection.java
index 451f481..6459594 100644
--- a/src/main/java/net/minecraft/server/PersistentCollection.java
+++ b/src/main/java/net/minecraft/server/PersistentCollection.java
@@ -2,6 +2,10 @@ package net.minecraft.server;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+import org.bukkit.Bukkit;
+import org.github.paperspigot.event.ServerExceptionEvent;
+import org.github.paperspigot.exception.ServerInternalException;
+
import java.io.DataInputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
@@ -103,6 +107,7 @@ public class PersistentCollection {
}
} catch (Exception exception) {
exception.printStackTrace();
+ ServerInternalException.reportInternalException(exception);
}
}
@@ -176,6 +181,7 @@ public class PersistentCollection {
}
} catch (Exception exception) {
exception.printStackTrace();
+ ServerInternalException.reportInternalException(exception); // Paper
}
return oshort.shortValue();
diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java
index 348706f..8165a50 100644
--- a/src/main/java/net/minecraft/server/RegionFile.java
+++ b/src/main/java/net/minecraft/server/RegionFile.java
@@ -1,6 +1,8 @@
package net.minecraft.server;
import com.google.common.collect.Lists;
+import org.github.paperspigot.exception.ServerInternalException;
+
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -82,6 +84,7 @@ public class RegionFile {
}
} catch (IOException ioexception) {
ioexception.printStackTrace();
+ ServerInternalException.reportInternalException(ioexception); // Paper
}
}
@@ -247,6 +250,7 @@ public class RegionFile {
this.b(i, j, (int) (MinecraftServer.az() / 1000L));
} catch (IOException ioexception) {
ioexception.printStackTrace();
+ ServerInternalException.reportInternalException(ioexception); // Paper
}
}
diff --git a/src/main/java/net/minecraft/server/RegionFileCache.java b/src/main/java/net/minecraft/server/RegionFileCache.java
index 5b000c4..4cfaf30 100644
--- a/src/main/java/net/minecraft/server/RegionFileCache.java
+++ b/src/main/java/net/minecraft/server/RegionFileCache.java
@@ -1,6 +1,8 @@
package net.minecraft.server;
import com.google.common.collect.Maps;
+import org.github.paperspigot.exception.ServerInternalException;
+
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
@@ -53,6 +55,7 @@ public class RegionFileCache {
}
} catch (IOException ioexception) {
ioexception.printStackTrace();
+ ServerInternalException.reportInternalException(ioexception); // Paper
}
}
diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java
index 611b8fd..284f4bf 100644
--- a/src/main/java/net/minecraft/server/SpawnerCreature.java
+++ b/src/main/java/net/minecraft/server/SpawnerCreature.java
@@ -10,6 +10,7 @@ import java.util.Set;
import org.bukkit.craftbukkit.util.LongHash;
import org.bukkit.craftbukkit.util.LongHashSet;
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
+import org.github.paperspigot.exception.ServerInternalException;
// CraftBukkit end
public final class SpawnerCreature {
@@ -171,6 +172,7 @@ public final class SpawnerCreature {
entityinsentient = (EntityInsentient) biomebase_biomemeta.b.getConstructor(new Class[] { World.class}).newInstance(new Object[] { worldserver});
} catch (Exception exception) {
exception.printStackTrace();
+ ServerInternalException.reportInternalException(exception); // Paper
return j1;
}
@@ -276,6 +278,7 @@ public final class SpawnerCreature {
entityinsentient = (EntityInsentient) biomebase_biomemeta.b.getConstructor(new Class[] { World.class}).newInstance(new Object[] { world});
} catch (Exception exception) {
exception.printStackTrace();
+ ServerInternalException.reportInternalException(exception); // Paper
continue;
}
diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java
index fdcbf44..f68b132 100644
--- a/src/main/java/net/minecraft/server/TileEntity.java
+++ b/src/main/java/net/minecraft/server/TileEntity.java
@@ -9,6 +9,7 @@ import org.apache.logging.log4j.Logger;
import co.aikar.timings.SpigotTimings; // Spigot
import co.aikar.timings.Timing; // Spigot
import org.bukkit.inventory.InventoryHolder; // CraftBukkit
+import org.github.paperspigot.exception.ServerInternalException;
public abstract class TileEntity {
@@ -76,6 +77,7 @@ public abstract class TileEntity {
}
} catch (Exception exception) {
exception.printStackTrace();
+ ServerInternalException.reportInternalException(exception); // Paper
}
if (tileentity != null) {
diff --git a/src/main/java/net/minecraft/server/VillageSiege.java b/src/main/java/net/minecraft/server/VillageSiege.java
index 42d6737..01dbc98 100644
--- a/src/main/java/net/minecraft/server/VillageSiege.java
+++ b/src/main/java/net/minecraft/server/VillageSiege.java
@@ -1,5 +1,7 @@
package net.minecraft.server;
+import org.github.paperspigot.exception.ServerInternalException;
+
import java.util.Iterator;
import java.util.List;
@@ -136,6 +138,7 @@ public class VillageSiege {
entityzombie.setVillager(false);
} catch (Exception exception) {
exception.printStackTrace();
+ ServerInternalException.reportInternalException(exception); // Paper
return false;
}
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index f0cd810..8f3511f 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -24,6 +24,8 @@ import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
+import org.github.paperspigot.event.ServerExceptionEvent;
+import org.github.paperspigot.exception.ServerInternalException;
// PaperSpigot end
// CraftBukkit start
@@ -1450,8 +1452,10 @@ public abstract class World implements IBlockAccess {
} catch (Throwable throwable1) {
// PaperSpigot start - Prevent tile entity and entity crashes
entity.tickTimer.stopTiming();
- System.err.println("Entity threw exception at " + entity.world.getWorld().getName() + ":" + entity.locX + "," + entity.locY + "," + entity.locZ);
+ String msg = "Entity threw exception at " + entity.world.getWorld().getName() + ":" + entity.locX + "," + entity.locY + "," + entity.locZ;
+ System.err.println(msg);
throwable1.printStackTrace();
+ getServer().getPluginManager().callEvent(new ServerExceptionEvent(new ServerInternalException(msg, throwable1)));
entity.dead = true;
continue;
// PaperSpigot end
@@ -1513,8 +1517,10 @@ public abstract class World implements IBlockAccess {
} catch (Throwable throwable2) {
// PaperSpigot start - Prevent tile entity and entity crashes
tileentity.tickTimer.stopTiming();
- System.err.println("TileEntity threw exception at " + tileentity.world.getWorld().getName() + ":" + tileentity.position.getX() + "," + tileentity.position.getY() + "," + tileentity.position.getZ());
+ String msg = "TileEntity threw exception at " + tileentity.world.getWorld().getName() + ":" + tileentity.position.getX() + "," + tileentity.position.getY() + "," + tileentity.position.getZ();
+ System.err.println(msg);
throwable2.printStackTrace();
+ getServer().getPluginManager().callEvent(new ServerExceptionEvent(new ServerInternalException(msg, throwable2)));
tilesThisCycle--;
this.tileEntityList.remove(tileTickPosition--);
continue;
diff --git a/src/main/java/net/minecraft/server/WorldNBTStorage.java b/src/main/java/net/minecraft/server/WorldNBTStorage.java
index e5124af..b4056a2 100644
--- a/src/main/java/net/minecraft/server/WorldNBTStorage.java
+++ b/src/main/java/net/minecraft/server/WorldNBTStorage.java
@@ -15,6 +15,7 @@ import org.apache.logging.log4j.Logger;
import java.util.UUID;
import org.bukkit.craftbukkit.entity.CraftPlayer;
+import org.github.paperspigot.exception.ServerInternalException;
// CraftBukkit end
public class WorldNBTStorage implements IDataManager, IPlayerFileData {
@@ -96,6 +97,7 @@ public class WorldNBTStorage implements IDataManager, IPlayerFileData {
return new WorldData(nbttagcompound1);
} catch (Exception exception) {
exception.printStackTrace();
+ ServerInternalException.reportInternalException(exception); // Paper
}
}
@@ -107,6 +109,7 @@ public class WorldNBTStorage implements IDataManager, IPlayerFileData {
return new WorldData(nbttagcompound1);
} catch (Exception exception1) {
exception1.printStackTrace();
+ ServerInternalException.reportInternalException(exception1); // Paper
}
}
@@ -140,6 +143,7 @@ public class WorldNBTStorage implements IDataManager, IPlayerFileData {
}
} catch (Exception exception) {
exception.printStackTrace();
+ ServerInternalException.reportInternalException(exception); // Paper
}
}
@@ -171,6 +175,7 @@ public class WorldNBTStorage implements IDataManager, IPlayerFileData {
}
} catch (Exception exception) {
exception.printStackTrace();
+ ServerInternalException.reportInternalException(exception); // Paper
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 72c0b17..7640070 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -55,6 +55,7 @@ import org.bukkit.metadata.MetadataValue;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.messaging.StandardMessenger;
import org.bukkit.util.Vector;
+import org.github.paperspigot.exception.ServerInternalException;
public class CraftWorld implements World {
public static final int CUSTOM_DIMENSION_OFFSET = 10;
@@ -778,6 +779,7 @@ public class CraftWorld implements World {
world.savingDisabled = oldSave;
} catch (ExceptionWorldConflict ex) {
ex.printStackTrace();
+ ServerInternalException.reportInternalException(ex); // Paper
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
index d76ec40..f036709 100644
--- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
+++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java
@@ -21,6 +21,9 @@ import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
import org.bukkit.scheduler.BukkitWorker;
+import org.github.paperspigot.ServerSchedulerReportingWrapper;
+import org.github.paperspigot.event.ServerExceptionEvent;
+import org.github.paperspigot.exception.ServerSchedulerException;
/**
* The fundamental concepts for this implementation:
@@ -348,18 +351,24 @@ public class CraftScheduler implements BukkitScheduler {
try {
task.run();
} catch (final Throwable throwable) {
+ // Paper start
+ String msg = String.format(
+ "Task #%s for %s generated an exception",
+ task.getTaskId(),
+ task.getOwner().getDescription().getFullName());
task.getOwner().getLogger().log(
Level.WARNING,
- String.format(
- "Task #%s for %s generated an exception",
- task.getTaskId(),
- task.getOwner().getDescription().getFullName()),
+ msg,
throwable);
+ task.getOwner().getServer().getPluginManager().callEvent(
+ new ServerExceptionEvent(new ServerSchedulerException(msg, throwable, task))
+ );
+ // Paper end
}
parsePending();
} else {
debugTail = debugTail.setNext(new CraftAsyncDebugger(currentTick + RECENT_TICKS, task.getOwner(), task.getTaskClass()));
- executor.execute(task);
+ executor.execute(new ServerSchedulerReportingWrapper(task)); // Paper
// We don't need to parse pending
// (async tasks must live with race-conditions if they attempt to cancel between these few lines of code)
}
diff --git a/src/main/java/org/github/paperspigot/ServerSchedulerReportingWrapper.java b/src/main/java/org/github/paperspigot/ServerSchedulerReportingWrapper.java
new file mode 100644
index 0000000..6499373
--- /dev/null
+++ b/src/main/java/org/github/paperspigot/ServerSchedulerReportingWrapper.java
@@ -0,0 +1,39 @@
+package org.github.paperspigot;
+
+import com.google.common.base.Preconditions;
+import org.apache.commons.lang.Validate;
+import org.bukkit.craftbukkit.scheduler.CraftTask;
+import org.github.paperspigot.event.ServerExceptionEvent;
+import org.github.paperspigot.exception.ServerSchedulerException;
+
+/**
+ * Reporting wrapper to catch exceptions not natively
+ */
+public class ServerSchedulerReportingWrapper implements Runnable {
+
+ private final CraftTask internalTask;
+
+ public ServerSchedulerReportingWrapper(CraftTask internalTask) {
+ this.internalTask = Preconditions.checkNotNull(internalTask, "internalTask");
+ }
+
+ @Override
+ public void run() {
+ try {
+ internalTask.run();
+ } catch (RuntimeException e) {
+ internalTask.getOwner().getServer().getPluginManager().callEvent(
+ new ServerExceptionEvent(new ServerSchedulerException(e, internalTask))
+ );
+ throw e;
+ } catch (Throwable t) {
+ internalTask.getOwner().getServer().getPluginManager().callEvent(
+ new ServerExceptionEvent(new ServerSchedulerException(t, internalTask))
+ ); //Do not rethrow, since it is not permitted with Runnable#run
+ }
+ }
+
+ public CraftTask getInternalTask() {
+ return internalTask;
+ }
+}
--
2.5.0

View File

@ -1,48 +0,0 @@
From dc74220050b2649edcd76d58e5becfe9f8280d9d Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Tue, 29 Mar 2016 23:20:10 -0500
Subject: [PATCH] PaperMC/Paper/GH-166
diff --git a/src/main/java/net/minecraft/server/PacketDataSerializer.java b/src/main/java/net/minecraft/server/PacketDataSerializer.java
index f426c2e..e2eb305 100644
--- a/src/main/java/net/minecraft/server/PacketDataSerializer.java
+++ b/src/main/java/net/minecraft/server/PacketDataSerializer.java
@@ -46,8 +46,16 @@ public class PacketDataSerializer extends ByteBuf {
this.writeBytes(abyte);
}
+ // Paper start
public byte[] a() {
- byte[] abyte = new byte[this.e()];
+ return readByteArray(Short.MAX_VALUE);
+ }
+
+ public byte[]readByteArray(int limit) {
+ int len = this.e();
+ if (len > limit) throw new DecoderException("The received a byte array longer than allowed " + len + " > " + limit);
+ byte[] abyte = new byte[len];
+ // Paper end
this.readBytes(abyte);
return abyte;
diff --git a/src/main/java/net/minecraft/server/PacketLoginInEncryptionBegin.java b/src/main/java/net/minecraft/server/PacketLoginInEncryptionBegin.java
index 1d2e855..da9d4d8 100644
--- a/src/main/java/net/minecraft/server/PacketLoginInEncryptionBegin.java
+++ b/src/main/java/net/minecraft/server/PacketLoginInEncryptionBegin.java
@@ -12,8 +12,10 @@ public class PacketLoginInEncryptionBegin implements Packet<PacketLoginInListene
public PacketLoginInEncryptionBegin() {}
public void a(PacketDataSerializer packetdataserializer) throws IOException {
- this.a = packetdataserializer.a();
- this.b = packetdataserializer.a();
+ // Paper start
+ this.a = packetdataserializer.readByteArray(256);
+ this.b = packetdataserializer.readByteArray(256);
+ // Paper end
}
public void b(PacketDataSerializer packetdataserializer) throws IOException {
--
2.7.4

View File

@ -1,102 +0,0 @@
From 58ba50518555c19119973f40dd18501b31330f39 Mon Sep 17 00:00:00 2001
From: sulu5890 <sulu@sulu.me>
Date: Fri, 17 Dec 2021 12:53:42 -0600
Subject: [PATCH] update log4j
diff --git a/pom.xml b/pom.xml
index 609000df..644305e6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -44,7 +44,7 @@
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
- <version>2.8.1</version>
+ <version>2.17.0</version> <!-- Paper - Update Log4j -->
<scope>compile</scope>
</dependency>
<dependency>
@@ -64,7 +64,7 @@
<dependency>
<groupId>jline</groupId>
<artifactId>jline</artifactId>
- <version>2.12</version>
+ <version>2.12.1</version> <!-- Paper - Update Log4j - use this specific version as it works on both aarch64 and windows -->
<type>jar</type>
<scope>compile</scope>
</dependency>
@@ -105,8 +105,8 @@
</pluginRepository>
<!-- PaperSpigot - Repo for gitdescribe -->
<pluginRepository>
- <id>destroystokyo</id>
- <url>https://ci.destroystokyo.com/plugin/repository/everything/</url>
+ <id>papermc</id> <!-- Paper - Update Log4j -->
+ <url>https://papermc.io/repo/repository/maven-public/</url> <!-- Paper - Update Log4j -->
</pluginRepository>
</pluginRepositories>
@@ -146,6 +146,7 @@
<Specification-Title>Bukkit</Specification-Title>
<Specification-Version>${api.version}</Specification-Version>
<Specification-Vendor>Bukkit Team</Specification-Vendor>
+ <Multi-Release>true</Multi-Release> <!-- Paper - update log4j -->
</manifestEntries>
<manifestSections>
<manifestSection>
@@ -173,7 +174,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
- <version>2.3</version>
+ <version>3.2.4</version> <!-- Paper - Update Log4j -->
<executions>
<execution>
<phase>package</phase>
@@ -181,6 +182,16 @@
<goal>shade</goal>
</goals>
<configuration>
+ <!-- Paper start - Update Log4j -->
+ <filters>
+ <filter>
+ <artifact>org.spigotmc:minecraft-server:**</artifact>
+ <excludes>
+ <exclude>org/apache/logging/log4j/**</exclude>
+ </excludes>
+ </filter>
+ </filters>
+ <!-- Paper end - Update Log4j -->
<relocations>
<relocation>
<pattern>joptsimple</pattern>
@@ -218,7 +229,7 @@
<plugin>
<groupId>net.md-5</groupId>
<artifactId>specialsource-maven-plugin</artifactId>
- <version>1.2.1</version>
+ <version>1.2.3</version> <!-- paper - bump log4j -->
<executions>
<execution>
<phase>package</phase>
diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml
index 0452fbc0..63cb069f 100644
--- a/src/main/resources/log4j2.xml
+++ b/src/main/resources/log4j2.xml
@@ -3,10 +3,10 @@
<Appenders>
<Console name="WINDOWS_COMPAT" target="SYSTEM_OUT"></Console>
<Queue name="TerminalConsole">
- <PatternLayout pattern="[%d{HH:mm:ss} %level]: %msg{nolookups}%n" />
+ <PatternLayout pattern="[%d{HH:mm:ss} %level]: %msg%n" /> <!-- Paper - update log4j -->
</Queue>
<RollingRandomAccessFile name="File" fileName="logs/latest.log" filePattern="logs/%d{yyyy-MM-dd}-%i.log.gz">
- <PatternLayout pattern="[%d{HH:mm:ss}] [%t/%level]: %msg{nolookups}%n" />
+ <PatternLayout pattern="[%d{HH:mm:ss}] [%t/%level]: %msg%n" /> <!-- Paper - update log4j -->
<Policies>
<TimeBasedTriggeringPolicy />
<OnStartupTriggeringPolicy />
--
2.34.1

View File

@ -1,16 +1,14 @@
#!/usr/bin/env bash #!/usr/bin/env bash
basedir="$(cd "$1" && pwd -P)"
cp ./PaperSpigot-Server/target/paperspigot*-SNAPSHOT.jar ./Paperclip/paperspigot-1.8.8.jar cp ./PaperSpigot-Server/target/paperspigot*-SNAPSHOT.jar ./Paperclip/paperspigot-1.8.8.jar
cp ./work/1.8.8/1.8.8.jar ./Paperclip/minecraft_server.1.8.8.jar cp ./work/1.8.8/1.8.8.jar ./Paperclip/minecraft_server.1.8.8.jar
cd ./Paperclip cd ./Paperclip
mvn clean package -Dmcver=1.8.8 "-Dpaperjar=$basedir/Paperclip/paperspigot-1.8.8.jar" "-Dvanillajar=$basedir/Paperclip/minecraft_server.1.8.8.jar" mvn clean package
cd .. cd ..
cp ./Paperclip/assembly/target/paperclip*.jar ./paperclip.jar cp ./Paperclip/target/paperclip*-SNAPSHOT.jar ./Paperclip.jar
echo "" echo ""
echo "" echo ""
echo "" echo ""
echo "Build success!" echo "Build success!"
echo "Copied final jar to $(pwd)/paperclip.jar" echo "Copied final jar to $(pwd)/Paperclip.jar"

View File

@ -30,7 +30,7 @@
<repositories> <repositories>
<repository> <repository>
<id>md_5-releases</id> <id>md_5-releases</id>
<url>https://repo.md-5.net/content/repositories/releases/</url> <url>http://repo.md-5.net/content/repositories/releases/</url>
</repository> </repository>
</repositories> </repositories>