From 2b47227e382113e2faf68c941924b8426d7cc3a0 Mon Sep 17 00:00:00 2001
From: Jason <11360596+jpenilla@users.noreply.github.com>
Date: Fri, 4 Nov 2022 22:16:57 -0700
Subject: [PATCH] Update Commodore modifications (#8542)

* Handle ldc insn for getOriginalOrRewrite in Commodore

* Remove fastutil rewrite

It's no longer relocated upstream
---
 .../0266-Hook-into-CB-plugin-rewrites.patch   | 25 ++++++++++++++-----
 ...d-missing-team-sidebar-display-slots.patch |  4 +--
 .../0695-Add-more-advancement-API.patch       |  6 ++---
 ...-of-WorldCreator-keepSpawnLoaded-ret.patch |  4 +--
 4 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/patches/server/0266-Hook-into-CB-plugin-rewrites.patch b/patches/server/0266-Hook-into-CB-plugin-rewrites.patch
index a3aff9806..c458f5e27 100644
--- a/patches/server/0266-Hook-into-CB-plugin-rewrites.patch
+++ b/patches/server/0266-Hook-into-CB-plugin-rewrites.patch
@@ -8,7 +8,7 @@ our own relocation. Also lets us rewrite NMS calls for when we're
 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
-index a679133a3de51e26eb19932ece9ade292879aefd..89a32de0a3fbb7465b078b2aa1cc1d156a4a174d 100644
+index a679133a3de51e26eb19932ece9ade292879aefd..2c537a80951ddf98d3135ca19a34a238484c2d88 100644
 --- a/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;
@@ -37,19 +37,18 @@ index a679133a3de51e26eb19932ece9ade292879aefd..89a32de0a3fbb7465b078b2aa1cc1d15
  /**
   * 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"
      ) );
  
 +    // Paper start - Plugin rewrites
 +    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()
 +    {
 +        Map<String, String> getAndRemove = new HashMap<>();
 +        // 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)
 +        {
 +            // unversion incoming calls for pre-relocate debug work
@@ -80,7 +79,7 @@ index a679133a3de51e26eb19932ece9ade292879aefd..89a32de0a3fbb7465b078b2aa1cc1d15
      public static void main(String[] args)
      {
          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 )
          {
@@ -167,7 +166,7 @@ index a679133a3de51e26eb19932ece9ade292879aefd..89a32de0a3fbb7465b078b2aa1cc1d15
                          if ( owner.equals( "org/bukkit/block/Biome" ) )
                          {
                              switch ( name )
-@@ -306,6 +420,14 @@ public class Commodore
+@@ -306,6 +419,14 @@ public class Commodore
                              return;
                          }
  
@@ -182,3 +181,17 @@ index a679133a3de51e26eb19932ece9ade292879aefd..89a32de0a3fbb7465b078b2aa1cc1d15
                          if ( modern )
                          {
                              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" );
diff --git a/patches/server/0690-Add-missing-team-sidebar-display-slots.patch b/patches/server/0690-Add-missing-team-sidebar-display-slots.patch
index ee0f1ced6..122e9dc0b 100644
--- a/patches/server/0690-Add-missing-team-sidebar-display-slots.patch
+++ b/patches/server/0690-Add-missing-team-sidebar-display-slots.patch
@@ -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
-index 89a32de0a3fbb7465b078b2aa1cc1d156a4a174d..27646d963bd1158f3fe0a9c0593a312404f0e7b0 100644
+index 2c537a80951ddf98d3135ca19a34a238484c2d88..cf73d333ae625ea1bdc32d5f79daf408937bb13b 100644
 --- a/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 );
                          }
                          // Paper end
diff --git a/patches/server/0695-Add-more-advancement-API.patch b/patches/server/0695-Add-more-advancement-API.patch
index f2d67e45d..e4a0358c0 100644
--- a/patches/server/0695-Add-more-advancement-API.patch
+++ b/patches/server/0695-Add-more-advancement-API.patch
@@ -145,7 +145,7 @@ index 4aa8cda2bf72627b153e636a408fb3971caf2309..e29d7c6e1cef10a76c8630855fada11c
  
      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
-index 27646d963bd1158f3fe0a9c0593a312404f0e7b0..e5259280c31d0ba6cfef527f9ac1ebd55a9ae859 100644
+index cf73d333ae625ea1bdc32d5f79daf408937bb13b..6fdecd4bed469fffc04d37e3563fb9c7c393761b 100644
 --- a/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
@@ -154,9 +154,9 @@ index 27646d963bd1158f3fe0a9c0593a312404f0e7b0..e5259280c31d0ba6cfef527f9ac1ebd5
      // Paper start - Plugin rewrites
 +    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 java.util.jar.Manifest manifest = io.papermc.paper.util.JarManifests.manifest(Commodore.class);
      private static Map<String, String> initReplacementsMap()
-@@ -434,6 +435,11 @@ public class Commodore
+     {
+@@ -433,6 +434,11 @@ public class Commodore
                          {
                              desc = getOriginalOrRewrite(desc);
                          }
diff --git a/patches/server/0911-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch b/patches/server/0911-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch
index ab74549f6..50b3b97c8 100644
--- a/patches/server/0911-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch
+++ b/patches/server/0911-Mitigate-effects-of-WorldCreator-keepSpawnLoaded-ret.patch
@@ -7,10 +7,10 @@ Subject: [PATCH] Mitigate effects of WorldCreator#keepSpawnLoaded ret type
 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
-index e5259280c31d0ba6cfef527f9ac1ebd55a9ae859..aa4ba0e42387f9381df2938769ee72bde8e9f9ba 100644
+index 6fdecd4bed469fffc04d37e3563fb9c7c393761b..1ea5be29f3f06042d7cc278ce82790e4e439a81f 100644
 --- a/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);
                              return;
                          }