Skip to content

Commit

Permalink
Updated Upstream (Bukkit/CraftBukkit/Spigot) (#2415)
Browse files Browse the repository at this point in the history
* fixup patch and rebuild

* Updated Upstream (Bukkit/CraftBukkit/Spigot)

Upstream has released updates that appears to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
bde198c9 SPIGOT-5246: PlayerQuitEvent.get/setQuitMessage() is incorrectly marked as NotNull
24ad5a79 SPIGOT-5240: Vector.angle not valid for angles very close to each other
a143db9a SPIGOT-5231: ShotAtAngle API for Fireworks
10db5c3d SPIGOT-5226: Update Javadoc of PlayerDeathEvent

CraftBukkit Changes:
1ec1b05 SPIGOT-5245: Unneeded cast to WorldNBTStorage in CraftWorld#getWorldFolder
e5e8eec SPIGOT-5241: setAttributeModifiers does not work on untouched stack
803eaa3 SPIGOT-5231: ShotAtAngle API for Fireworks
7881d2a SPIGOT-5237: Horses, pigs do not drop their inventory
06efc9e Don't accept connections until all plugins have enabled
da62a66 SPIGOT-5225: World handle isn't closed if world is unloaded without saving
104b383 SPIGOT-5222: Cannot get Long values from Entity memory
f0b3fe4 SPIGOT-5220: Server CPU usage reaches 100% when stdin is null

Spigot Changes:
e5b1b5db SPIGOT-5235: Destroy expired area effect clouds / fireworks that are inactive
cbcc8e87 Make region files more reliable to write to
8887c5f4 Remove redundant late-bind option
dac29063 Rebuild patches

* Preserve old flush on save flag for reliable regionfiles

Originally this patch was in paper

* Fix some issues with the death event

- Entities potentially entering a glitched state to the client where
they appear to be falling over
- Donkeys losing their chest if the event was cancelled (only an
issue since the upstream merge)
- Some wither death logic running for an entity killed by a wither
  • Loading branch information
Spottedleaf authored and zachbr committed Aug 5, 2019
1 parent 474e5ad commit 7c640a1
Show file tree
Hide file tree
Showing 93 changed files with 470 additions and 715 deletions.
12 changes: 6 additions & 6 deletions Spigot-API-Patches/0045-Fireworks-API-s.patch
@@ -1,4 +1,4 @@
From 6920434f57d65bdcb36d94c4c347c5e30f3775ad Mon Sep 17 00:00:00 2001
From 2bde8cda0f726300a485db3267cad3e528cebaa2 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Wed, 28 Dec 2016 01:18:55 -0500
Subject: [PATCH] Fireworks API's
Expand All @@ -7,7 +7,7 @@ Get the Entity being boosted
Get the firework launcher

diff --git a/src/main/java/org/bukkit/entity/Firework.java b/src/main/java/org/bukkit/entity/Firework.java
index 1c55f0338..7df26cf7f 100644
index d6ea16ec4..a6250043e 100644
--- a/src/main/java/org/bukkit/entity/Firework.java
+++ b/src/main/java/org/bukkit/entity/Firework.java
@@ -3,6 +3,9 @@ package org.bukkit.entity;
Expand All @@ -20,10 +20,10 @@ index 1c55f0338..7df26cf7f 100644
public interface Firework extends Entity {

/**
@@ -25,4 +28,15 @@ public interface Firework extends Entity {
* remaining fuse.
@@ -43,4 +46,15 @@ public interface Firework extends Entity {
* @param shotAtAngle
*/
void detonate();
void setShotAtAngle(boolean shotAtAngle);
+
+ // Paper start
+ @Nullable
Expand All @@ -37,5 +37,5 @@ index 1c55f0338..7df26cf7f 100644
+ // Paper end
}
--
2.21.0
2.22.0

10 changes: 5 additions & 5 deletions Spigot-Server-Patches/0002-Paper-config-files.patch
@@ -1,4 +1,4 @@
From d99eaf4f0c6f2a9b5cd3be7cee05369dca7244d1 Mon Sep 17 00:00:00 2001
From c1950775d3e3996cd0c5525df5195bdc8c292ad0 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Mon, 29 Feb 2016 21:02:09 -0600
Subject: [PATCH] Paper config files
Expand Down Expand Up @@ -518,10 +518,10 @@ index 0000000000..a738657394
+ }
+}
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index d88c9b6f65..5e0797afde 100644
index e02e003006..e6cf90484c 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -152,6 +152,15 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -162,6 +162,15 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
org.spigotmc.SpigotConfig.init((File) options.valueOf("spigot-settings"));
org.spigotmc.SpigotConfig.registerCommands();
// Spigot end
Expand Down Expand Up @@ -599,7 +599,7 @@ index bec64d7f28..7f648dbbc9 100644
this.world = new CraftWorld((WorldServer) this, gen, env);
this.ticksPerAnimalSpawns = this.getServer().getTicksPerAnimalSpawns(); // CraftBukkit
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 8465a91088..4d38bf5018 100644
index 305b6eaa93..dce5bde54f 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -756,6 +756,7 @@ public final class CraftServer implements Server {
Expand All @@ -626,7 +626,7 @@ index 8465a91088..4d38bf5018 100644
overrideAllCommandBlockCommands = commandsConfiguration.getStringList("command-block-overrides").contains("*");
ignoreVanillaPermissions = commandsConfiguration.getBoolean("ignore-vanilla-permissions");

@@ -1958,4 +1961,35 @@ public final class CraftServer implements Server {
@@ -1959,4 +1962,35 @@ public final class CraftServer implements Server {
{
return spigot;
}
Expand Down
60 changes: 30 additions & 30 deletions Spigot-Server-Patches/0009-Timings-v2.patch
@@ -1,4 +1,4 @@
From 98451ed1b8e477f1cbf7b5da71e9437d7e665207 Mon Sep 17 00:00:00 2001
From 07b31610596dc222d66d78b3b1e468314d3157e8 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Thu, 3 Mar 2016 04:00:11 -0600
Subject: [PATCH] Timings v2
Expand Down Expand Up @@ -358,7 +358,7 @@ index 3ed48be382..c4d989f702 100644
}
}
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
index baf3bd461b..f351d021dc 100644
index 3b785a3ade..e51e3b74cc 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -129,11 +129,13 @@ public class ChunkProviderServer extends IChunkProvider {
Expand Down Expand Up @@ -387,7 +387,7 @@ index baf3bd461b..f351d021dc 100644
}

@Override
@@ -354,7 +358,9 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -362,7 +366,9 @@ public class ChunkProviderServer extends IChunkProvider {
this.tickDistanceManager();
this.world.timings.doChunkMap.stopTiming(); // Spigot
this.world.getMethodProfiler().exitEnter("chunks");
Expand All @@ -397,7 +397,7 @@ index baf3bd461b..f351d021dc 100644
this.world.timings.doChunkUnload.startTiming(); // Spigot
this.world.getMethodProfiler().exitEnter("unload");
this.playerChunkMap.unloadChunks(booleansupplier);
@@ -379,10 +385,12 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -387,10 +393,12 @@ public class ChunkProviderServer extends IChunkProvider {
boolean flag2 = world.ticksPerAnimalSpawns != 0L && worlddata.getTime() % world.ticksPerAnimalSpawns == 0L; // CraftBukkit // PAIL: TODO monster ticks

this.world.getMethodProfiler().enter("naturalSpawnCount");
Expand All @@ -410,7 +410,7 @@ index baf3bd461b..f351d021dc 100644
this.world.getMethodProfiler().exit();
this.playerChunkMap.f().forEach((playerchunk) -> {
Optional<Chunk> optional = ((Either) playerchunk.b().getNow(PlayerChunk.UNLOADED_CHUNK)).left();
@@ -391,7 +399,9 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -399,7 +407,9 @@ public class ChunkProviderServer extends IChunkProvider {
Chunk chunk = (Chunk) optional.get();

this.world.getMethodProfiler().enter("broadcast");
Expand All @@ -420,7 +420,7 @@ index baf3bd461b..f351d021dc 100644
this.world.getMethodProfiler().exit();
ChunkCoordIntPair chunkcoordintpair = playerchunk.i();

@@ -441,9 +451,9 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -449,9 +459,9 @@ public class ChunkProviderServer extends IChunkProvider {
this.world.getMethodProfiler().exit();
}

Expand All @@ -432,7 +432,7 @@ index baf3bd461b..f351d021dc 100644
}
}
});
@@ -456,9 +466,7 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -464,9 +474,7 @@ public class ChunkProviderServer extends IChunkProvider {
this.world.getMethodProfiler().exit();
}

Expand Down Expand Up @@ -521,7 +521,7 @@ index 53735b52a3..721839b4c6 100644
int j = 0;
CustomFunction.c[] acustomfunction_c = customfunction.b();
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index 5e0797afde..f572cd8fc7 100644
index e6cf90484c..ce3ca4830e 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -19,6 +19,8 @@ import java.util.Collections;
Expand All @@ -542,7 +542,7 @@ index 5e0797afde..f572cd8fc7 100644
import org.bukkit.event.server.ServerCommandEvent;
import org.bukkit.craftbukkit.util.Waitable;
import org.bukkit.event.server.RemoteServerCommandEvent;
@@ -428,7 +430,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -425,7 +427,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
}

public void handleCommandQueue() {
Expand All @@ -551,7 +551,7 @@ index 5e0797afde..f572cd8fc7 100644
while (!this.serverCommandQueue.isEmpty()) {
ServerCommand servercommand = (ServerCommand) this.serverCommandQueue.remove(0);

@@ -443,7 +445,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -440,7 +442,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
// CraftBukkit end
}

Expand All @@ -560,15 +560,15 @@ index 5e0797afde..f572cd8fc7 100644
}

@Override
@@ -669,6 +671,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -666,6 +668,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer

@Override
public String executeRemoteCommand(String s) {
+ Waitable[] waitableArray = new Waitable[1];
this.remoteControlCommandListener.clearMessages();
this.executeSync(() -> {
// CraftBukkit start - fire RemoteServerCommandEvent
@@ -677,10 +680,39 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -674,10 +677,39 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
if (event.isCancelled()) {
return;
}
Expand Down Expand Up @@ -648,7 +648,7 @@ index d4954801cb..fd4712c710 100644

protected Vec3D a(Vec3D vec3d, EnumMoveType enummovetype) {
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index dcbc4ea7e1..b1f130f91d 100644
index 2b13f4c9f9..47379046dc 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -35,7 +35,7 @@ import org.bukkit.event.entity.EntityTeleportEvent;
Expand All @@ -660,15 +660,15 @@ index dcbc4ea7e1..b1f130f91d 100644

public abstract class EntityLiving extends Entity {

@@ -2214,7 +2214,6 @@ public abstract class EntityLiving extends Entity {
@@ -2215,7 +2215,6 @@ public abstract class EntityLiving extends Entity {

@Override
public void tick() {
- SpigotTimings.timerEntityBaseTick.startTiming(); // Spigot
super.tick();
this.o();
this.p();
@@ -2289,9 +2288,7 @@ public abstract class EntityLiving extends Entity {
@@ -2290,9 +2289,7 @@ public abstract class EntityLiving extends Entity {
}
}

Expand All @@ -678,7 +678,7 @@ index dcbc4ea7e1..b1f130f91d 100644
double d0 = this.locX - this.lastX;
double d1 = this.locZ - this.lastZ;
float f = (float) (d0 * d0 + d1 * d1);
@@ -2371,8 +2368,6 @@ public abstract class EntityLiving extends Entity {
@@ -2372,8 +2369,6 @@ public abstract class EntityLiving extends Entity {
if (this.isSleeping()) {
this.pitch = 0.0F;
}
Expand All @@ -687,23 +687,23 @@ index dcbc4ea7e1..b1f130f91d 100644
}

protected float e(float f, float f1) {
@@ -2446,7 +2441,6 @@ public abstract class EntityLiving extends Entity {
@@ -2447,7 +2442,6 @@ public abstract class EntityLiving extends Entity {

this.setMot(d4, d5, d6);
this.world.getMethodProfiler().enter("ai");
- SpigotTimings.timerEntityAI.startTiming(); // Spigot
if (this.isFrozen()) {
this.jumping = false;
this.bb = 0.0F;
@@ -2457,7 +2451,6 @@ public abstract class EntityLiving extends Entity {
@@ -2458,7 +2452,6 @@ public abstract class EntityLiving extends Entity {
this.doTick();
this.world.getMethodProfiler().exit();
}
- SpigotTimings.timerEntityAI.stopTiming(); // Spigot

this.world.getMethodProfiler().exit();
this.world.getMethodProfiler().enter("jump");
@@ -2482,9 +2475,7 @@ public abstract class EntityLiving extends Entity {
@@ -2483,9 +2476,7 @@ public abstract class EntityLiving extends Entity {
this.n();
AxisAlignedBB axisalignedbb = this.getBoundingBox();

Expand All @@ -713,7 +713,7 @@ index dcbc4ea7e1..b1f130f91d 100644
this.world.getMethodProfiler().exit();
this.world.getMethodProfiler().enter("push");
if (this.bq > 0) {
@@ -2492,9 +2483,7 @@ public abstract class EntityLiving extends Entity {
@@ -2493,9 +2484,7 @@ public abstract class EntityLiving extends Entity {
this.a(axisalignedbb, this.getBoundingBox());
}

Expand All @@ -724,7 +724,7 @@ index dcbc4ea7e1..b1f130f91d 100644
}

diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 1701d39eab..d9eb5ce085 100644
index cec3794cd4..bc0e483a2a 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -63,7 +63,7 @@ import org.bukkit.craftbukkit.CraftServer;
Expand All @@ -736,15 +736,15 @@ index 1701d39eab..d9eb5ce085 100644
import org.spigotmc.SlackActivityAccountant; // Spigot

public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTask> implements IMojangStatistics, ICommandListener, AutoCloseable, Runnable {
@@ -684,6 +684,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
@@ -685,6 +685,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
}
// CraftBukkit end
MinecraftServer.LOGGER.info("Stopping server");
+ MinecraftTimings.stopServer(); // Paper
// CraftBukkit start
if (this.server != null) {
this.server.disablePlugins();
@@ -881,7 +882,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
@@ -882,7 +883,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
// CraftBukkit end

protected void sleepForTick() {
Expand All @@ -753,7 +753,7 @@ index 1701d39eab..d9eb5ce085 100644
this.awaitTasks(() -> {
return !this.canSleepForTick();
});
@@ -961,7 +962,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
@@ -962,7 +963,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
protected void exit() {}

protected void a(BooleanSupplier booleansupplier) {
Expand All @@ -762,7 +762,7 @@ index 1701d39eab..d9eb5ce085 100644
this.slackActivityAccountant.tickStarted(); // Spigot
long i = SystemUtils.getMonotonicNanos();

@@ -982,14 +983,12 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
@@ -983,14 +984,12 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
}

if (autosavePeriod > 0 && this.ticks % autosavePeriod == 0) { // CraftBukkit
Expand All @@ -777,7 +777,7 @@ index 1701d39eab..d9eb5ce085 100644
}

this.methodProfiler.enter("snooper");
@@ -1012,30 +1011,34 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
@@ -1013,30 +1012,34 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
this.methodProfiler.exit();
org.spigotmc.WatchdogThread.tick(); // Spigot
this.slackActivityAccountant.tickEnded(l); // Spigot
Expand Down Expand Up @@ -821,7 +821,7 @@ index 1701d39eab..d9eb5ce085 100644
// Send time updates to everyone, it will get the right time from the world the player is in.
if (this.ticks % 20 == 0) {
for (int i = 0; i < this.getPlayerList().players.size(); ++i) {
@@ -1043,7 +1046,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
@@ -1044,7 +1047,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
entityplayer.playerConnection.sendPacket(new PacketPlayOutUpdateTime(entityplayer.world.getTime(), entityplayer.getPlayerTime(), entityplayer.world.getGameRules().getBoolean(GameRules.DO_DAYLIGHT_CYCLE))); // Add support for per player time
}
}
Expand All @@ -830,7 +830,7 @@ index 1701d39eab..d9eb5ce085 100644

while (iterator.hasNext()) {
WorldServer worldserver = (WorldServer) iterator.next();
@@ -1086,20 +1089,20 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
@@ -1087,20 +1090,20 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
}

this.methodProfiler.exitEnter("connection");
Expand Down Expand Up @@ -1294,10 +1294,10 @@ index 825e72e53a..a28c97a889 100644

// CraftBukkit start - moved from MinecraftServer.saveChunks
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 2fd73f4835..6de0b6e5da 100644
index dce5bde54f..a59f61e73a 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1931,12 +1931,31 @@ public final class CraftServer implements Server {
@@ -1932,12 +1932,31 @@ public final class CraftServer implements Server {
private final Spigot spigot = new Spigot()
{

Expand Down
@@ -1,4 +1,4 @@
From af9adce4d92c26640b7c018c32287af165d9091f Mon Sep 17 00:00:00 2001
From 6ef37bf7c16af47d5f1f2e0f99d5a3243593ed28 Mon Sep 17 00:00:00 2001
From: Zach Brown <zach.brown@destroystokyo.com>
Date: Tue, 1 Mar 2016 14:32:43 -0600
Subject: [PATCH] Show 'Paper' in client crashes, server lists, and Mojang
Expand All @@ -19,10 +19,10 @@ index 3f35a28ba1..cf00f35a5b 100644
throwable = throwable1;
throw throwable1;
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index d9eb5ce085..15c6818f10 100644
index bc0e483a2a..d7c0006605 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1300,7 +1300,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
@@ -1301,7 +1301,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
}

public String getServerModName() {
Expand All @@ -32,7 +32,7 @@ index d9eb5ce085..15c6818f10 100644

public CrashReport b(CrashReport crashreport) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 6de0b6e5da..e72faeaa3b 100644
index a59f61e73a..f49bd144ff 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -196,7 +196,7 @@ import org.yaml.snakeyaml.error.MarkedYAMLException;
Expand Down
@@ -1,4 +1,4 @@
From 88ad52a8150b3e8dbfc84307364cfc13827a6a99 Mon Sep 17 00:00:00 2001
From eff79b832f995fb9394e5d7a749db0fbde4999fb Mon Sep 17 00:00:00 2001
From: Kyle Wood <demonwav@gmail.com>
Date: Thu, 1 Mar 2018 19:37:52 -0600
Subject: [PATCH] Add version history to version command
Expand Down Expand Up @@ -192,10 +192,10 @@ index 0000000000..aac3f66cb2
+ }
+}
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index c7ea4ec4fe..6e1509c2c1 100644
index ce3ca4830e..895049287c 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -162,6 +162,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -172,6 +172,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
return false;
}
com.destroystokyo.paper.PaperConfig.registerCommands();
Expand Down

0 comments on commit 7c640a1

Please sign in to comment.