Update Commodore modifications (#8542)

* Handle ldc insn for getOriginalOrRewrite in Commodore

* Remove fastutil rewrite

It's no longer relocated upstream
This commit is contained in:
Jason 2022-11-04 22:16:57 -07:00 committed by GitHub
parent 3d15120f7e
commit 2b47227e38
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 26 additions and 13 deletions

View File

@ -8,7 +8,7 @@ our own relocation. Also lets us rewrite NMS calls for when we're
debugging in an IDE pre-relocate. debugging in an IDE pre-relocate.
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
index a679133a3de51e26eb19932ece9ade292879aefd..89a32de0a3fbb7465b078b2aa1cc1d156a4a174d 100644 index a679133a3de51e26eb19932ece9ade292879aefd..2c537a80951ddf98d3135ca19a34a238484c2d88 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java --- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
@@ -6,7 +6,9 @@ import java.io.FileOutputStream; @@ -6,7 +6,9 @@ import java.io.FileOutputStream;
@ -37,19 +37,18 @@ index a679133a3de51e26eb19932ece9ade292879aefd..89a32de0a3fbb7465b078b2aa1cc1d15
/** /**
* This file is imported from Commodore. * This file is imported from Commodore.
* *
@@ -46,6 +53,42 @@ public class Commodore @@ -46,6 +53,41 @@ public class Commodore
"org/bukkit/inventory/ItemStack (I)V setTypeId" "org/bukkit/inventory/ItemStack (I)V setTypeId"
) ); ) );
+ // Paper start - Plugin rewrites + // Paper start - Plugin rewrites
+ private static final Map<String, String> SEARCH_AND_REMOVE = initReplacementsMap(); + private static final Map<String, String> SEARCH_AND_REMOVE = initReplacementsMap();
+ private static final java.util.jar.Manifest manifest = io.papermc.paper.util.JarManifests.manifest(Commodore.class);
+ private static Map<String, String> initReplacementsMap() + private static Map<String, String> initReplacementsMap()
+ { + {
+ Map<String, String> getAndRemove = new HashMap<>(); + Map<String, String> getAndRemove = new HashMap<>();
+ // Be wary of maven shade's relocations + // Be wary of maven shade's relocations
+ getAndRemove.put( "org/bukkit/".concat( "craftbukkit/libs/it/unimi/dsi/fastutil/" ), "org/bukkit/".concat( "craftbukkit/libs/" ) ); // Remap fastutil to our location
+ +
+ final java.util.jar.Manifest manifest = io.papermc.paper.util.JarManifests.manifest(Commodore.class);
+ if ( Boolean.getBoolean( "debug.rewriteForIde" ) && manifest != null) + if ( Boolean.getBoolean( "debug.rewriteForIde" ) && manifest != null)
+ { + {
+ // unversion incoming calls for pre-relocate debug work + // unversion incoming calls for pre-relocate debug work
@ -80,7 +79,7 @@ index a679133a3de51e26eb19932ece9ade292879aefd..89a32de0a3fbb7465b078b2aa1cc1d15
public static void main(String[] args) public static void main(String[] args)
{ {
OptionParser parser = new OptionParser(); OptionParser parser = new OptionParser();
@@ -130,15 +173,86 @@ public class Commodore @@ -130,15 +172,86 @@ public class Commodore
cr.accept( new ClassVisitor( Opcodes.ASM9, cw ) cr.accept( new ClassVisitor( Opcodes.ASM9, cw )
{ {
@ -167,7 +166,7 @@ index a679133a3de51e26eb19932ece9ade292879aefd..89a32de0a3fbb7465b078b2aa1cc1d15
if ( owner.equals( "org/bukkit/block/Biome" ) ) if ( owner.equals( "org/bukkit/block/Biome" ) )
{ {
switch ( name ) switch ( name )
@@ -306,6 +420,14 @@ public class Commodore @@ -306,6 +419,14 @@ public class Commodore
return; return;
} }
@ -182,3 +181,17 @@ index a679133a3de51e26eb19932ece9ade292879aefd..89a32de0a3fbb7465b078b2aa1cc1d15
if ( modern ) if ( modern )
{ {
if ( owner.equals( "org/bukkit/Material" ) ) if ( owner.equals( "org/bukkit/Material" ) )
@@ -395,6 +516,13 @@ public class Commodore
@Override
public void visitLdcInsn(Object value)
{
+ // Paper start
+ if (value instanceof Type type) {
+ if (type.getSort() == Type.OBJECT || type.getSort() == Type.ARRAY) {
+ value = Type.getType(getOriginalOrRewrite(type.getDescriptor()));
+ }
+ }
+ // Paper end
if ( value instanceof String && ( (String) value ).equals( "com.mysql.jdbc.Driver" ) )
{
super.visitLdcInsn( "com.mysql.cj.jdbc.Driver" );

View File

@ -50,10 +50,10 @@ index e2d3fe9af7d3bd82bee519b20e141cd58f68bbd6..944a4fee237730c0d89567aaa6ddf268
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
index 89a32de0a3fbb7465b078b2aa1cc1d156a4a174d..27646d963bd1158f3fe0a9c0593a312404f0e7b0 100644 index 2c537a80951ddf98d3135ca19a34a238484c2d88..cf73d333ae625ea1bdc32d5f79daf408937bb13b 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java --- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
@@ -252,6 +252,14 @@ public class Commodore @@ -251,6 +251,14 @@ public class Commodore
desc = getOriginalOrRewrite( desc ); desc = getOriginalOrRewrite( desc );
} }
// Paper end // Paper end

View File

@ -145,7 +145,7 @@ index 4aa8cda2bf72627b153e636a408fb3971caf2309..e29d7c6e1cef10a76c8630855fada11c
private final DisplayInfo handle; private final DisplayInfo handle;
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
index 27646d963bd1158f3fe0a9c0593a312404f0e7b0..e5259280c31d0ba6cfef527f9ac1ebd55a9ae859 100644 index cf73d333ae625ea1bdc32d5f79daf408937bb13b..6fdecd4bed469fffc04d37e3563fb9c7c393761b 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java --- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
@@ -54,6 +54,7 @@ public class Commodore @@ -54,6 +54,7 @@ public class Commodore
@ -154,9 +154,9 @@ index 27646d963bd1158f3fe0a9c0593a312404f0e7b0..e5259280c31d0ba6cfef527f9ac1ebd5
// Paper start - Plugin rewrites // Paper start - Plugin rewrites
+ private static final String CB_PACKAGE = org.bukkit.Bukkit.getServer().getClass().getPackageName().replace('.', '/'); + private static final String CB_PACKAGE = org.bukkit.Bukkit.getServer().getClass().getPackageName().replace('.', '/');
private static final Map<String, String> SEARCH_AND_REMOVE = initReplacementsMap(); private static final Map<String, String> SEARCH_AND_REMOVE = initReplacementsMap();
private static final java.util.jar.Manifest manifest = io.papermc.paper.util.JarManifests.manifest(Commodore.class);
private static Map<String, String> initReplacementsMap() private static Map<String, String> initReplacementsMap()
@@ -434,6 +435,11 @@ public class Commodore {
@@ -433,6 +434,11 @@ public class Commodore
{ {
desc = getOriginalOrRewrite(desc); desc = getOriginalOrRewrite(desc);
} }

View File

@ -7,10 +7,10 @@ Subject: [PATCH] Mitigate effects of WorldCreator#keepSpawnLoaded ret type
TODO: Remove in 1.21? TODO: Remove in 1.21?
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java diff --git a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
index e5259280c31d0ba6cfef527f9ac1ebd55a9ae859..aa4ba0e42387f9381df2938769ee72bde8e9f9ba 100644 index 6fdecd4bed469fffc04d37e3563fb9c7c393761b..1ea5be29f3f06042d7cc278ce82790e4e439a81f 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java --- a/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Commodore.java
@@ -440,6 +440,12 @@ public class Commodore @@ -439,6 +439,12 @@ public class Commodore
super.visitMethodInsn(Opcodes.INVOKEVIRTUAL, CB_PACKAGE + "/advancement/CraftAdvancement", "getDisplay0", desc, false); super.visitMethodInsn(Opcodes.INVOKEVIRTUAL, CB_PACKAGE + "/advancement/CraftAdvancement", "getDisplay0", desc, false);
return; return;
} }