Wire Iris jar shrink

- Wire the ProGuard shrink pass into the Bukkit artifact with the core, Bukkit plugin and NMS compile classpaths as library jars
- Map the fourteen SlimJar relocations so runtime-downloaded libraries resolve under their relocated names
- Add packaging/shrink.pro keeping the public API, Iris events, platform SPI, VolmLib integration contract and Bukkit event handler lists
- Lower maximumBukkitArtifactBytes to 7,600,000 so verifyBukkitArtifact enforces the same budget as the packaging gate
- Build VolmitSender.name() from the sender name instead of the relocated CommandSender.name() reference, which cannot resolve on Paper 26.2
This commit is contained in:
Brian Neumann-Fopiano
2026-09-07 23:28:48 -04:00
parent 9b9ca8de34
commit 031d4ade2c
3 changed files with 32 additions and 2 deletions
+21 -1
View File
@@ -84,7 +84,7 @@ String fabricArtifactName = irisArtifactName('Fabric', "${minecraftVersion}+${lo
String forgeArtifactName = irisArtifactName('Forge', "${minecraftVersion}+${loaderDisplayVersion(forgeVersion)}")
String neoForgeArtifactName = irisArtifactName('NeoForge', "${minecraftVersion}+${loaderDisplayVersion(neoForgeVersion)}")
File pluginOutDirectory = layout.projectDirectory.dir('../PluginOuts').asFile
long maximumBukkitArtifactBytes = 8_000_000L
long maximumBukkitArtifactBytes = 7_600_000L
apply plugin: ApiGenerator
// Where `buildAll` drops the per-platform jars for a local test server. Use the approved sibling
@@ -746,6 +746,26 @@ pluginPackaging {
releaseCompression = providers.gradleProperty('compactRelease').map { it.toBoolean() }.getOrElse(false)
prunePrefixes = ['art/arcane/volmlib/']
keepPrefixes = ['art/arcane/volmlib/util/matter/slices/']
shrinkRules = [file('packaging/shrink.pro')]
shrinkLibraries.from(provider { project(':core').configurations.compileClasspath })
shrinkLibraries.from(provider { project(':adapters:bukkit:plugin').configurations.compileClasspath })
shrinkLibraries.from(provider { project(':adapters:bukkit:nms:v26_2_R1').configurations.compileClasspath })
shrinkRelocations = [
'com.dfsek.paralithic': 'art.arcane.iris.util.paralithic',
'com.google.gson': 'art.arcane.iris.util.gson',
'com.googlecode.concurrentlinkedhashmap': 'art.arcane.iris.util.lru',
'io.papermc.lib': 'art.arcane.iris.util.paper',
'net.kyori': 'art.arcane.iris.util.kyori',
'org.bstats': 'art.arcane.iris.util.metrics',
'org.apache.maven': 'art.arcane.iris.util.maven',
'org.codehaus.plexus': 'art.arcane.iris.util.plexus',
'org.eclipse.sisu': 'art.arcane.iris.util.sisu',
'org.eclipse.aether': 'art.arcane.iris.util.aether',
'com.google.inject': 'art.arcane.iris.util.guice',
'org.dom4j': 'art.arcane.iris.util.dom4j',
'org.jaxen': 'art.arcane.iris.util.jaxen',
'com.github.benmanes.caffeine': 'art.arcane.iris.util.caffeine'
]
}
}
}
@@ -359,7 +359,7 @@ public class VolmitSender implements CommandSender {
@NotNull
@Override
public Component name() {
return s.name();
return Component.text(getName());
}
@Override
+10
View File
@@ -0,0 +1,10 @@
-keep class art.arcane.iris.api.** { *; }
-keep class art.arcane.iris.core.events.** { *; }
-keep class art.arcane.iris.spi.** { *; }
-keep class art.arcane.volmlib.integration.** { *; }
-keep class * implements art.arcane.volmlib.integration.IntegrationServiceContract { *; }
-keep class * implements art.arcane.volmlib.integration.ReloadAware { *; }
-keepclassmembers class * extends org.bukkit.event.Event {
public static org.bukkit.event.HandlerList getHandlerList();
public org.bukkit.event.HandlerList getHandlers();
}