Skip to content

Commit 9dc9fd3

Browse files
committed
apply feature patches
1 parent 48131f7 commit 9dc9fd3

20 files changed

Lines changed: 1316 additions & 1303 deletions

purpur-server/minecraft-patches/features/0001-Ridables.patch

Lines changed: 420 additions & 412 deletions
Large diffs are not rendered by default.

purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch

Lines changed: 184 additions & 184 deletions
Large diffs are not rendered by default.

purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows
55

66

77
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
8-
index 2d09f2a2c97f29ac0d941b7a3fb941102a5d545e..94abb9d8f6381aee000dbd0720477db8b7ca279c 100644
8+
index ccea424d813a4c137fa15612b7bcf4fdb5c9a811..a1304bc3b1ebb9fa246004ae418481d48c46975c 100644
99
--- a/net/minecraft/server/players/PlayerList.java
1010
+++ b/net/minecraft/server/players/PlayerList.java
11-
@@ -1027,6 +1027,27 @@ public abstract class PlayerList {
11+
@@ -1029,6 +1029,27 @@ public abstract class PlayerList {
1212
player.getBukkitEntity().recalculatePermissions(); // CraftBukkit
1313
this.server.getCommands().sendCommands(player);
1414
} // Paper - Add sendOpLevel API
@@ -37,10 +37,10 @@ index 2d09f2a2c97f29ac0d941b7a3fb941102a5d545e..94abb9d8f6381aee000dbd0720477db8
3737

3838
public boolean isWhiteListed(GameProfile profile) {
3939
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
40-
index d0321875d2a2b612b438cc7973a7e9f172a61778..15308ff3ed5835e3b8f41e7ddc2045f424e14660 100644
40+
index 2417c26a03decf756ad93cd54265277c95c653ca..87c8bc6f9128d2fcb19628bc3ef354e517b632bb 100644
4141
--- a/net/minecraft/world/entity/player/Player.java
4242
+++ b/net/minecraft/world/entity/player/Player.java
43-
@@ -202,6 +202,7 @@ public abstract class Player extends LivingEntity {
43+
@@ -212,6 +212,7 @@ public abstract class Player extends LivingEntity {
4444
public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage
4545
public int burpDelay = 0; // Purpur - Burp delay
4646
public boolean canPortalInstant = false; // Purpur - Add portal permission bypass
@@ -49,7 +49,7 @@ index d0321875d2a2b612b438cc7973a7e9f172a61778..15308ff3ed5835e3b8f41e7ddc2045f4
4949
// CraftBukkit start
5050
public boolean fauxSleeping;
5151
diff --git a/net/minecraft/world/inventory/ChestMenu.java b/net/minecraft/world/inventory/ChestMenu.java
52-
index 280169afbd637eeb67ddf7eaeb4eecd464a128d5..ba7730a24831efa33de4c5ffce57bfa7177f89d6 100644
52+
index 0fffa384f928ab84451331380968fb4650eafe26..0399092c9f7a43ac100c11505176ade6d95a39da 100644
5353
--- a/net/minecraft/world/inventory/ChestMenu.java
5454
+++ b/net/minecraft/world/inventory/ChestMenu.java
5555
@@ -66,10 +66,30 @@ public class ChestMenu extends AbstractContainerMenu {
@@ -84,7 +84,7 @@ index 280169afbd637eeb67ddf7eaeb4eecd464a128d5..ba7730a24831efa33de4c5ffce57bfa7
8484
return new ChestMenu(MenuType.GENERIC_9x6, containerId, playerInventory, container, 6);
8585
}
8686
diff --git a/net/minecraft/world/inventory/PlayerEnderChestContainer.java b/net/minecraft/world/inventory/PlayerEnderChestContainer.java
87-
index a6a359bab2a727f4631b633a8bb370dd40decc75..d2d75e5c34c97300ce5da8c7ea70958aba31fa4a 100644
87+
index bc2b95973192069fc64581b59583b19df876f55d..b68d57eee9605dba8ecd31f82185ec3ea81d60c1 100644
8888
--- a/net/minecraft/world/inventory/PlayerEnderChestContainer.java
8989
+++ b/net/minecraft/world/inventory/PlayerEnderChestContainer.java
9090
@@ -25,11 +25,18 @@ public class PlayerEnderChestContainer extends SimpleContainer {
@@ -108,7 +108,7 @@ index a6a359bab2a727f4631b633a8bb370dd40decc75..d2d75e5c34c97300ce5da8c7ea70958a
108108
this.activeChest = enderChestBlockEntity;
109109
}
110110
diff --git a/net/minecraft/world/level/block/EnderChestBlock.java b/net/minecraft/world/level/block/EnderChestBlock.java
111-
index f5533960708bdbaf2eacefbc7c7c3123b7d26502..17aa27885b4431bf7b98799e02d080b5a0ecbbf1 100644
111+
index 5077a9ff7b78801bdc53536a37aee07b8d86ee4d..72794e204f7fcc31ece94913b7fd9f36ae022b10 100644
112112
--- a/net/minecraft/world/level/block/EnderChestBlock.java
113113
+++ b/net/minecraft/world/level/block/EnderChestBlock.java
114114
@@ -85,8 +85,8 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
@@ -159,13 +159,13 @@ index f5533960708bdbaf2eacefbc7c7c3123b7d26502..17aa27885b4431bf7b98799e02d080b5
159159
public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
160160
return new EnderChestBlockEntity(pos, state);
161161
diff --git a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
162-
index 0f808855f58281578c2758513787f0f7330c9291..9f6063089f0aa3a68d26ae7cfe39379123ab2f47 100644
162+
index 027502d0af5512c31878978c4d05c52fa3029cca..f5216355ef13593bc7333d50a003012e25b3d7ea 100644
163163
--- a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
164164
+++ b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
165-
@@ -55,7 +55,17 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
166-
this.maxStack = i;
165+
@@ -56,7 +56,17 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
167166
}
168167
// CraftBukkit end
168+
169169
- private NonNullList<ItemStack> items = NonNullList.withSize(27, ItemStack.EMPTY);
170170
+ // Purpur start - Barrels and enderchests 6 rows
171171
+ private NonNullList<ItemStack> items = NonNullList.withSize(switch (org.purpurmc.purpur.PurpurConfig.barrelRows) {
@@ -181,7 +181,7 @@ index 0f808855f58281578c2758513787f0f7330c9291..9f6063089f0aa3a68d26ae7cfe393791
181181
public final ContainerOpenersCounter openersCounter = new ContainerOpenersCounter() {
182182
@Override
183183
protected void onOpen(Level level, BlockPos pos, BlockState state) {
184-
@@ -107,7 +117,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
184+
@@ -108,7 +118,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
185185

186186
@Override
187187
public int getContainerSize() {
@@ -199,7 +199,7 @@ index 0f808855f58281578c2758513787f0f7330c9291..9f6063089f0aa3a68d26ae7cfe393791
199199
}
200200

201201
@Override
202-
@@ -127,7 +146,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
202+
@@ -128,7 +147,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
203203

204204
@Override
205205
protected AbstractContainerMenu createMenu(int id, Inventory player) {

purpur-server/minecraft-patches/features/0005-Chickens-can-retaliate.patch

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Chickens can retaliate
55

66

77
diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java
8-
index 509163f409a5b8988a484aedb2f3ddf042d5eb13..d718f0ed362c49803260dceed64bd93e2b6744fc 100644
8+
index 40fc57f1c298e1c70fddf8b6eb2f3e8e9e41e60c..fc3291b5e1a2c3956802b268abb58189b24a7a16 100644
99
--- a/net/minecraft/world/entity/animal/Chicken.java
1010
+++ b/net/minecraft/world/entity/animal/Chicken.java
11-
@@ -73,6 +73,11 @@ public class Chicken extends Animal {
11+
@@ -93,6 +93,11 @@ public class Chicken extends Animal {
1212
public void initAttributes() {
1313
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.chickenMaxHealth);
1414
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.chickenScale);
@@ -20,7 +20,7 @@ index 509163f409a5b8988a484aedb2f3ddf042d5eb13..d718f0ed362c49803260dceed64bd93e
2020
}
2121
// Purpur end - Configurable entity base attributes
2222

23-
@@ -80,13 +85,21 @@ public class Chicken extends Animal {
23+
@@ -100,13 +105,21 @@ public class Chicken extends Animal {
2424
protected void registerGoals() {
2525
this.goalSelector.addGoal(0, new FloatGoal(this));
2626
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
@@ -43,7 +43,7 @@ index 509163f409a5b8988a484aedb2f3ddf042d5eb13..d718f0ed362c49803260dceed64bd93e
4343
}
4444

4545
@Override
46-
@@ -95,7 +108,7 @@ public class Chicken extends Animal {
46+
@@ -115,7 +128,7 @@ public class Chicken extends Animal {
4747
}
4848

4949
public static AttributeSupplier.Builder createAttributes() {

purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls
55

66

77
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
8-
index 7ebecee1de098c218304868b1223b914941cae8a..561ee18dfd063f1853a1389f245e8b29bc0b68a7 100644
8+
index cf26a10e4ccf0f28817ce53b3c5bf1df02259273..580e79d19a728deed4719a8d2e5d70b532397781 100644
99
--- a/net/minecraft/server/level/ServerPlayer.java
1010
+++ b/net/minecraft/server/level/ServerPlayer.java
11-
@@ -1247,6 +1247,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
11+
@@ -1149,6 +1149,11 @@ public class ServerPlayer extends Player {
1212
} else {
1313
// Purpur start - Add boat fall damage config
1414
if (damageSource.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) {
@@ -21,21 +21,21 @@ index 7ebecee1de098c218304868b1223b914941cae8a..561ee18dfd063f1853a1389f245e8b29
2121
return false;
2222
}
2323
diff --git a/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/net/minecraft/world/entity/vehicle/AbstractMinecart.java
24-
index 9e15e7159cf98b3928110df9eae6de93793bf44e..6df4d736d94b9e49a3eb3d59a329e37127aa64cd 100644
24+
index 99617c08cbd989092ba357d8df928786fd04c89a..9d88b260528c3cea2c5fe8e2760094b0a8a35667 100644
2525
--- a/net/minecraft/world/entity/vehicle/AbstractMinecart.java
2626
+++ b/net/minecraft/world/entity/vehicle/AbstractMinecart.java
27-
@@ -83,6 +83,10 @@ public abstract class AbstractMinecart extends VehicleEntity {
27+
@@ -103,6 +103,10 @@ public abstract class AbstractMinecart extends VehicleEntity {
2828
private double flyingY = 0.95;
2929
private double flyingZ = 0.95;
30-
public Double maxSpeed;
30+
public @Nullable Double maxSpeed;
3131
+ // Purpur start - Minecart settings and WASD controls
3232
+ public double storedMaxSpeed;
3333
+ public boolean isNewBehavior;
3434
+ // Purpur end - Minecart settings and WASD controls
3535
public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper - Friction API
3636
// CraftBukkit end
3737

38-
@@ -91,8 +95,13 @@ public abstract class AbstractMinecart extends VehicleEntity {
38+
@@ -111,8 +115,13 @@ public abstract class AbstractMinecart extends VehicleEntity {
3939
this.blocksBuilding = true;
4040
if (useExperimentalMovement(level)) {
4141
this.behavior = new NewMinecartBehavior(this);
@@ -49,7 +49,7 @@ index 9e15e7159cf98b3928110df9eae6de93793bf44e..6df4d736d94b9e49a3eb3d59a329e371
4949
}
5050
}
5151

52-
@@ -258,6 +267,14 @@ public abstract class AbstractMinecart extends VehicleEntity {
52+
@@ -277,6 +286,14 @@ public abstract class AbstractMinecart extends VehicleEntity {
5353

5454
@Override
5555
public void tick() {
@@ -64,7 +64,7 @@ index 9e15e7159cf98b3928110df9eae6de93793bf44e..6df4d736d94b9e49a3eb3d59a329e371
6464
// CraftBukkit start
6565
double prevX = this.getX();
6666
double prevY = this.getY();
67-
@@ -394,15 +411,61 @@ public abstract class AbstractMinecart extends VehicleEntity {
67+
@@ -384,15 +401,61 @@ public abstract class AbstractMinecart extends VehicleEntity {
6868
this.behavior.moveAlongTrack(level);
6969
}
7070

purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Subject: [PATCH] Villagers follow emerald blocks
55

66

77
diff --git a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java
8-
index 61ed4d687120fcbb7b91863e400f3657ebcde687..e773c426567964fc8269237d71c3434a5473985c 100644
8+
index 75d8fe03558ba38caf46c826dfea5208f88bde52..46022a0aabc9c319deeb75913d356eeb74f1a12c 100644
99
--- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java
1010
+++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java
1111
@@ -162,7 +162,7 @@ public class DefaultAttributes {
@@ -31,39 +31,38 @@ index 438d6347778a94b4fe430320b268a2d67afa209a..f88f618d34fb343b31de3af1a875d663
3131

3232
@Override
3333
diff --git a/net/minecraft/world/entity/npc/AbstractVillager.java b/net/minecraft/world/entity/npc/AbstractVillager.java
34-
index a71d16d968bb90fd7aca6f01a3dd56df4f9a7ce6..b4e79cac5611942240ce85120f7bbee329ae2fb8 100644
34+
index 1d3381f1481bb2b192bb78462c85c2a185d94ad5..e574c38e1c1c13fc2f96340138f784697cef8c48 100644
3535
--- a/net/minecraft/world/entity/npc/AbstractVillager.java
3636
+++ b/net/minecraft/world/entity/npc/AbstractVillager.java
37-
@@ -45,6 +45,8 @@ import org.bukkit.event.entity.VillagerAcquireTradeEvent;
38-
// CraftBukkit end
37+
@@ -35,6 +35,7 @@ import net.minecraft.world.level.portal.TeleportTransition;
38+
import net.minecraft.world.phys.Vec3;
3939

4040
public abstract class AbstractVillager extends AgeableMob implements InventoryCarrier, Npc, Merchant {
4141
+ static final net.minecraft.world.item.crafting.Ingredient TEMPT_ITEMS = net.minecraft.world.item.crafting.Ingredient.of(net.minecraft.world.level.block.Blocks.EMERALD_BLOCK.asItem()); // Purpur - Villagers follow emerald blocks
42-
+
43-
// CraftBukkit start
44-
@Override
45-
public CraftMerchant getCraftMerchant() {
42+
private static final EntityDataAccessor<Integer> DATA_UNHAPPY_COUNTER = SynchedEntityData.defineId(AbstractVillager.class, EntityDataSerializers.INT);
43+
public static final int VILLAGER_SLOT_OFFSET = 300;
44+
private static final int VILLAGER_INVENTORY_SIZE = 8;
4645
diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java
47-
index c71d0f8efacb60e49395567fdc0c1c1e6e6f5aa8..2f685a186b2dc27e70cddd5c4951c27e7ee3ef53 100644
46+
index b2687ee9494d491971fa4124382b214d7c3ba9be..005af720a6385056f09f939813e97c10a7414a91 100644
4847
--- a/net/minecraft/world/entity/npc/Villager.java
4948
+++ b/net/minecraft/world/entity/npc/Villager.java
50-
@@ -265,6 +265,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
49+
@@ -268,6 +268,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
5150
@Override
5251
protected void registerGoals() {
5352
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this));
5453
+ if (level().purpurConfig.villagerFollowEmeraldBlock) this.goalSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.TemptGoal(this, 1.0D, TEMPT_ITEMS, false)); // Purpur - Villagers follow emerald blocks
5554
}
5655
// Purpur end - Ridables
5756

58-
@@ -273,6 +274,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
57+
@@ -276,6 +277,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
5958
public void initAttributes() {
6059
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.villagerMaxHealth);
6160
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.villagerScale);
6261
+ this.getAttribute(Attributes.TEMPT_RANGE).setBaseValue(this.level().purpurConfig.villagerTemptRange); // Purpur - Villagers follow emerald blocks
6362
}
6463
// Purpur end - Configurable entity base attributes
6564

66-
@@ -341,7 +343,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
65+
@@ -344,7 +346,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
6766
}
6867

6968
public static AttributeSupplier.Builder createAttributes() {
@@ -73,10 +72,10 @@ index c71d0f8efacb60e49395567fdc0c1c1e6e6f5aa8..2f685a186b2dc27e70cddd5c4951c27e
7372

7473
public boolean assignProfessionWhenSpawned() {
7574
diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java
76-
index b5af32a431b5ffe20b32bd82ccfae9b8343d0592..f9755f36f7863b9742fe5b840a8130891ddff7c7 100644
75+
index 4abc4037a059b9c1dc58bf7a776e6269c5188868..e726893a3ddf49bdfd2d190477bccf6e33de1847 100644
7776
--- a/net/minecraft/world/entity/npc/WanderingTrader.java
7877
+++ b/net/minecraft/world/entity/npc/WanderingTrader.java
79-
@@ -97,9 +97,16 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
78+
@@ -87,9 +87,16 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
8079
@Override
8180
public void initAttributes() {
8281
this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.wanderingTraderMaxHealth);
@@ -93,7 +92,7 @@ index b5af32a431b5ffe20b32bd82ccfae9b8343d0592..f9755f36f7863b9742fe5b840a813089
9392
@Override
9493
protected void registerGoals() {
9594
this.goalSelector.addGoal(0, new FloatGoal(this));
96-
@@ -134,6 +141,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
95+
@@ -124,6 +131,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
9796
this.goalSelector.addGoal(1, new PanicGoal(this, 0.5));
9897
this.goalSelector.addGoal(1, new LookAtTradingPlayerGoal(this));
9998
this.goalSelector.addGoal(2, new WanderingTrader.WanderToPositionGoal(this, 2.0, 0.35));

purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ temporarily migrate to paper's config
77
drop patch on the next minecraft release
88

99
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
10-
index 2bd5a295be2500f198230a62f48900b51038d22b..96253bf49a6895524f6f606a9c434cb1b78948a6 100644
10+
index 6ad266592c16bdeccfb689fb2ef2ee37e79a7b41..e950e74d7c14d2e180e5ca879eb1048866d85051 100644
1111
--- a/net/minecraft/server/MinecraftServer.java
1212
+++ b/net/minecraft/server/MinecraftServer.java
13-
@@ -1222,6 +1222,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
13+
@@ -1140,6 +1140,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
1414
}
1515
// Purpur end - config for startup commands
1616

@@ -28,10 +28,10 @@ index 2bd5a295be2500f198230a62f48900b51038d22b..96253bf49a6895524f6f606a9c434cb1
2828
long l;
2929
if (!this.isPaused() && this.tickRateManager.isSprinting() && this.tickRateManager.checkShouldSprintThisTick()) {
3030
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
31-
index 8b9689d8903cf6cf6f4168d9d9d8684cfc60d762..4c81c4172d2e077ec7d627c2db8e7294c5b90a64 100644
31+
index 19bb96242fed268c23381a6f3eaef21e723666c5..127935326dbfa0aa454dc12d52dcef328fcf2771 100644
3232
--- a/net/minecraft/server/dedicated/DedicatedServer.java
3333
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
34-
@@ -209,6 +209,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
34+
@@ -168,6 +168,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
3535
org.spigotmc.SpigotConfig.registerCommands();
3636
// Spigot end
3737
io.papermc.paper.util.ObfHelper.INSTANCE.getClass(); // Paper - load mappings for stacktrace deobf and etc.

0 commit comments

Comments
 (0)