Skip to content

Commit f493d7d

Browse files
committed
Update for Paper changes
1 parent 9d84180 commit f493d7d

File tree

9 files changed

+54
-15
lines changed

9 files changed

+54
-15
lines changed

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ dependencies {
2121
devBundle(libs.mappingsTestDevBundle)
2222
testImplementation(libs.junit.jupiter.api)
2323
testRuntimeOnly(libs.junit.jupiter.engine)
24+
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
2425
}
2526

2627
tasks.shadowJar {

buildSrc/src/main/kotlin/ExtractMappings.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ abstract class ExtractMappings : DefaultTask() {
2525
Files.deleteIfExists(out.get().asFile.toPath())
2626
val bundleZip = devBundleZip.get().asFile
2727
FileSystems.newFileSystem(URI.create("jar:${bundleZip.toURI()}"), HashMap<String, Any>()).use { fs ->
28-
Files.copy(fs.getPath("/data/mojang+yarn-spigot-reobf.tiny"), out.get().asFile.toPath())
28+
Files.copy(fs.getPath("/data/mojang-spigot-reobf.tiny"), out.get().asFile.toPath())
2929
}
3030
}
3131
}

buildSrc/src/main/kotlin/build-logic.gradle.kts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
1+
import io.papermc.paperweight.attribute.DevBundleOutput
2+
13
plugins {
24
id("base-conventions")
35
id("publishing-conventions")
46
id("net.kyori.indra.publishing.sonatype")
57
}
68

7-
val devBundle: Configuration by configurations.creating
9+
val devBundle: Configuration by configurations.creating {
10+
attributes {
11+
attribute(DevBundleOutput.ATTRIBUTE, objects.named(DevBundleOutput.ZIP))
12+
}
13+
}
814
val memoryMeasurer: Configuration by configurations.creating
915

1016
tasks {

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ shadow = { id = "com.gradleup.shadow", version = "8.3.6" }
44

55
[versions]
66
indra = "3.1.3"
7-
testPluginDevBundle = "1.20.2-R0.1-SNAPSHOT"
8-
mappingsTestDevBundle = "1.20.2-R0.1-SNAPSHOT"
7+
testPluginDevBundle = "1.21.5-R0.1-SNAPSHOT"
8+
mappingsTestDevBundle = "1.21.5-R0.1-SNAPSHOT"
99

1010
[libraries]
1111
indra-common = { group = "net.kyori", name = "indra-common", version.ref = "indra" }

src/main/java/xyz/jpenilla/reflectionremapper/MappingNamespace.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,13 @@
1818
package xyz.jpenilla.reflectionremapper;
1919

2020
final class MappingNamespace {
21+
@Deprecated
2122
public static final String DEOBF = "mojang+yarn";
23+
@Deprecated
2224
public static final String OBF = "spigot";
25+
public static final String MOJANG_PLUS_YARN = "mojang+yarn";
26+
public static final String MOJANG = "mojang";
27+
public static final String SPIGOT = "spigot";
2328

2429
private MappingNamespace() {
2530
}

src/main/java/xyz/jpenilla/reflectionremapper/ReflectionRemapper.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.checkerframework.checker.nullness.qual.Nullable;
3535
import org.checkerframework.framework.qual.DefaultQualifier;
3636

37+
import static xyz.jpenilla.reflectionremapper.internal.util.Util.firstLine;
3738
import static xyz.jpenilla.reflectionremapper.internal.util.Util.mojangMapped;
3839

3940
/**
@@ -194,7 +195,11 @@ static ReflectionRemapper forPaperReobfMappings(final Path mappings) {
194195
return noop();
195196
}
196197

197-
return forMappings(mappings, MappingNamespace.DEOBF, MappingNamespace.OBF);
198+
try (final InputStream inputStream = Files.newInputStream(mappings)) {
199+
return forPaperReobfMappings(inputStream);
200+
} catch (final IOException e) {
201+
throw new RuntimeException("Failed to read mappings.", e);
202+
}
198203
}
199204

200205
/**
@@ -213,7 +218,10 @@ static ReflectionRemapper forPaperReobfMappings(final InputStream mappings) {
213218
return noop();
214219
}
215220

216-
return forMappings(mappings, MappingNamespace.DEOBF, MappingNamespace.OBF);
221+
if (firstLine(mappings).contains(MappingNamespace.MOJANG_PLUS_YARN)) {
222+
return forMappings(mappings, MappingNamespace.MOJANG_PLUS_YARN, MappingNamespace.SPIGOT);
223+
}
224+
return forMappings(mappings, MappingNamespace.MOJANG, MappingNamespace.SPIGOT);
217225
}
218226

219227
/**

src/main/java/xyz/jpenilla/reflectionremapper/internal/util/Util.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,17 @@
1717
*/
1818
package xyz.jpenilla.reflectionremapper.internal.util;
1919

20+
import java.io.BufferedReader;
21+
import java.io.IOException;
22+
import java.io.InputStream;
23+
import java.io.InputStreamReader;
24+
import java.io.UncheckedIOException;
2025
import java.lang.invoke.MethodHandle;
2126
import java.lang.invoke.MethodHandles;
2227
import java.lang.invoke.MethodType;
2328
import java.lang.reflect.Constructor;
2429
import java.lang.reflect.Method;
30+
import java.nio.charset.StandardCharsets;
2531
import java.util.ArrayList;
2632
import java.util.Collection;
2733
import java.util.Collections;
@@ -191,4 +197,16 @@ public static String descriptorString(final Class<?> clazz) {
191197

192198
return 'L' + clazz.getName().replace('.', '/') + ';';
193199
}
200+
201+
public static String firstLine(final InputStream mappings) {
202+
try {
203+
mappings.mark(1024);
204+
final BufferedReader reader = new BufferedReader(new InputStreamReader(mappings, StandardCharsets.UTF_8));
205+
final String line = reader.readLine();
206+
mappings.reset();
207+
return line;
208+
} catch (final IOException e) {
209+
throw new UncheckedIOException("Failed to read first line of input stream", e);
210+
}
211+
}
194212
}

test-plugin/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ plugins {
77

88
indra {
99
javaVersions {
10-
target(17)
10+
target(21)
1111
}
1212
}
1313

test-plugin/src/main/java/xyz/jpenilla/reflectionremapper/testplugin/TestPlugin.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@
1717
*/
1818
package xyz.jpenilla.reflectionremapper.testplugin;
1919

20-
import io.papermc.paper.util.MCUtil;
2120
import net.minecraft.core.BlockPos;
2221
import net.minecraft.server.level.ServerLevel;
2322
import net.minecraft.server.level.ServerPlayer;
23+
import org.bukkit.Location;
2424
import org.bukkit.command.CommandSender;
25-
import org.bukkit.craftbukkit.v1_20_R2.entity.CraftPlayer;
25+
import org.bukkit.craftbukkit.entity.CraftPlayer;
2626
import org.bukkit.entity.Player;
2727
import org.bukkit.plugin.java.JavaPlugin;
2828
import org.checkerframework.checker.nullness.qual.NonNull;
@@ -31,7 +31,7 @@
3131
import org.incendo.cloud.context.CommandContext;
3232
import org.incendo.cloud.execution.ExecutionCoordinator;
3333
import org.incendo.cloud.minecraft.extras.MinecraftExceptionHandler;
34-
import org.incendo.cloud.paper.PaperCommandManager;
34+
import org.incendo.cloud.paper.LegacyPaperCommandManager;
3535
import xyz.jpenilla.reflectionremapper.ReflectionRemapper;
3636
import xyz.jpenilla.reflectionremapper.proxy.ReflectionProxyFactory;
3737
import xyz.jpenilla.reflectionremapper.proxy.annotation.Proxies;
@@ -42,11 +42,11 @@ public final class TestPlugin extends JavaPlugin {
4242
public void onEnable() {
4343
Reflection.class.getClassLoader(); // init Reflection
4444

45-
final PaperCommandManager<CommandSender> commandManager = createCommandManager(this);
45+
final LegacyPaperCommandManager<CommandSender> commandManager = createCommandManager(this);
4646
this.registerCommands(commandManager);
4747
}
4848

49-
private void registerCommands(final PaperCommandManager<CommandSender> manager) {
49+
private void registerCommands(final LegacyPaperCommandManager<CommandSender> manager) {
5050
final Command.Builder<Player> createEndPlatform = manager.commandBuilder("create_end_platform")
5151
.senderType(Player.class)
5252
.handler(this::executeCreateEndPlatform);
@@ -66,7 +66,8 @@ private void executeCreateEndPlatform(final CommandContext<Player> ctx) {
6666
private void executeStrikeLightning(final CommandContext<Player> ctx) {
6767
final ServerPlayer serverPlayer = ((CraftPlayer) ctx.sender()).getHandle();
6868
final BlockPos lightningTarget = Reflection.SERVER_LEVEL.findLightningTargetAround((ServerLevel) serverPlayer.level(), serverPlayer.blockPosition());
69-
ctx.sender().getWorld().strikeLightning(MCUtil.toLocation(serverPlayer.level(), lightningTarget));
69+
ctx.sender().getWorld().strikeLightning(new Location(
70+
serverPlayer.level().getWorld(), lightningTarget.getX(), lightningTarget.getY(), lightningTarget.getZ()));
7071
}
7172

7273
public static final class Reflection {
@@ -95,8 +96,8 @@ private interface ServerPlayerProxy {
9596
void createEndPlatform(ServerPlayer instance, ServerLevel world, BlockPos centerPos);
9697
}
9798

98-
private static PaperCommandManager<CommandSender> createCommandManager(final JavaPlugin plugin) {
99-
final PaperCommandManager<CommandSender> manager = PaperCommandManager.createNative(plugin, ExecutionCoordinator.simpleCoordinator());
99+
private static LegacyPaperCommandManager<CommandSender> createCommandManager(final JavaPlugin plugin) {
100+
final LegacyPaperCommandManager<CommandSender> manager = LegacyPaperCommandManager.createNative(plugin, ExecutionCoordinator.simpleCoordinator());
100101
manager.registerBrigadier();
101102
MinecraftExceptionHandler.<CommandSender>createNative()
102103
.defaultHandlers()

0 commit comments

Comments
 (0)