mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-27 23:10:16 +01:00
Create raw chat type as resource file instead of in source (#9226)
Sets up the ability to load new or modified resource files into Paper. Updates paperweight to 1.5.6 This should work with all run configs, like runDev, runShadow, runReobf as well as correctly build jars for production.
This commit is contained in:
parent
537ef22fbf
commit
76744c8d52
5 changed files with 99 additions and 39 deletions
|
@ -8,4 +8,8 @@
|
||||||
# To import classes from the vanilla Minecraft jar use `minecraft` as the artifactId:
|
# To import classes from the vanilla Minecraft jar use `minecraft` as the artifactId:
|
||||||
# minecraft net.minecraft.world.level.entity.LevelEntityGetterAdapter
|
# minecraft net.minecraft.world.level.entity.LevelEntityGetterAdapter
|
||||||
# minecraft net/minecraft/world/level/entity/LevelEntityGetter.java
|
# minecraft net/minecraft/world/level/entity/LevelEntityGetter.java
|
||||||
|
# To import minecraft data files, like the default chat type, use `mc_data` as the prefix:
|
||||||
|
# mc_data chat_type/chat.json
|
||||||
|
# mc_data dimension_type/overworld.json
|
||||||
|
#
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ plugins {
|
||||||
java
|
java
|
||||||
`maven-publish`
|
`maven-publish`
|
||||||
id("com.github.johnrengelman.shadow") version "8.1.1" apply false
|
id("com.github.johnrengelman.shadow") version "8.1.1" apply false
|
||||||
id("io.papermc.paperweight.core") version "1.5.5"
|
id("io.papermc.paperweight.core") version "1.5.6"
|
||||||
}
|
}
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
|
|
|
@ -378,6 +378,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+import net.minecraft.network.chat.OutgoingChatMessage;
|
+import net.minecraft.network.chat.OutgoingChatMessage;
|
||||||
+import net.minecraft.network.chat.PlayerChatMessage;
|
+import net.minecraft.network.chat.PlayerChatMessage;
|
||||||
+import net.minecraft.resources.ResourceKey;
|
+import net.minecraft.resources.ResourceKey;
|
||||||
|
+import net.minecraft.resources.ResourceLocation;
|
||||||
+import net.minecraft.server.MinecraftServer;
|
+import net.minecraft.server.MinecraftServer;
|
||||||
+import net.minecraft.server.level.ServerPlayer;
|
+import net.minecraft.server.level.ServerPlayer;
|
||||||
+import org.bukkit.command.ConsoleCommandSender;
|
+import org.bukkit.command.ConsoleCommandSender;
|
||||||
|
@ -397,6 +398,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+
|
+
|
||||||
+@DefaultQualifier(NonNull.class)
|
+@DefaultQualifier(NonNull.class)
|
||||||
+public final class ChatProcessor {
|
+public final class ChatProcessor {
|
||||||
|
+ static final ResourceKey<ChatType> PAPER_RAW = ResourceKey.create(Registries.CHAT_TYPE, new ResourceLocation(ResourceLocation.PAPER_NAMESPACE, "raw"));
|
||||||
+ static final String DEFAULT_LEGACY_FORMAT = "<%1$s> %2$s"; // copied from PlayerChatEvent/AsyncPlayerChatEvent
|
+ static final String DEFAULT_LEGACY_FORMAT = "<%1$s> %2$s"; // copied from PlayerChatEvent/AsyncPlayerChatEvent
|
||||||
+ final MinecraftServer server;
|
+ final MinecraftServer server;
|
||||||
+ final ServerPlayer player;
|
+ final ServerPlayer player;
|
||||||
|
@ -568,7 +570,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ final ChatRenderer renderer = event.renderer();
|
+ final ChatRenderer renderer = event.renderer();
|
||||||
+
|
+
|
||||||
+ final Set<Audience> viewers = event.viewers();
|
+ final Set<Audience> viewers = event.viewers();
|
||||||
+ final ResourceKey<ChatType> chatTypeKey = renderer instanceof ChatRenderer.Default ? ChatType.CHAT : ChatType.RAW;
|
+ final ResourceKey<ChatType> chatTypeKey = renderer instanceof ChatRenderer.Default ? ChatType.CHAT : PAPER_RAW;
|
||||||
+ final ChatType.Bound chatType = ChatType.bind(chatTypeKey, this.player.level().registryAccess(), PaperAdventure.asVanilla(displayName(player)));
|
+ final ChatType.Bound chatType = ChatType.bind(chatTypeKey, this.player.level().registryAccess(), PaperAdventure.asVanilla(displayName(player)));
|
||||||
+
|
+
|
||||||
+ OutgoingChat outgoingChat = viewers instanceof LazyChatAudienceSet lazyAudienceSet && lazyAudienceSet.isLazy() ? new ServerOutgoingChat() : new ViewersOutgoingChat();
|
+ OutgoingChat outgoingChat = viewers instanceof LazyChatAudienceSet lazyAudienceSet && lazyAudienceSet.isLazy() ? new ServerOutgoingChat() : new ViewersOutgoingChat();
|
||||||
|
@ -1825,26 +1827,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/net/minecraft/network/chat/ChatType.java b/src/main/java/net/minecraft/network/chat/ChatType.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/network/chat/ChatType.java
|
|
||||||
+++ b/src/main/java/net/minecraft/network/chat/ChatType.java
|
|
||||||
@@ -0,0 +0,0 @@ public record ChatType(ChatTypeDecoration chat, ChatTypeDecoration narration) {
|
|
||||||
public static final ResourceKey<ChatType> TEAM_MSG_COMMAND_INCOMING = create("team_msg_command_incoming");
|
|
||||||
public static final ResourceKey<ChatType> TEAM_MSG_COMMAND_OUTGOING = create("team_msg_command_outgoing");
|
|
||||||
public static final ResourceKey<ChatType> EMOTE_COMMAND = create("emote_command");
|
|
||||||
+ public static final ResourceKey<ChatType> RAW = create("raw"); // Paper
|
|
||||||
|
|
||||||
private static ResourceKey<ChatType> create(String id) {
|
|
||||||
return ResourceKey.create(Registries.CHAT_TYPE, new ResourceLocation(id));
|
|
||||||
@@ -0,0 +0,0 @@ public record ChatType(ChatTypeDecoration chat, ChatTypeDecoration narration) {
|
|
||||||
messageTypeRegisterable.register(TEAM_MSG_COMMAND_INCOMING, new ChatType(ChatTypeDecoration.teamMessage("chat.type.team.text"), ChatTypeDecoration.withSender("chat.type.text.narrate")));
|
|
||||||
messageTypeRegisterable.register(TEAM_MSG_COMMAND_OUTGOING, new ChatType(ChatTypeDecoration.teamMessage("chat.type.team.sent"), ChatTypeDecoration.withSender("chat.type.text.narrate")));
|
|
||||||
messageTypeRegisterable.register(EMOTE_COMMAND, new ChatType(ChatTypeDecoration.withSender("chat.type.emote"), ChatTypeDecoration.withSender("chat.type.emote")));
|
|
||||||
+ messageTypeRegisterable.register(RAW, new ChatType(new ChatTypeDecoration("%s", java.util.List.of(ChatTypeDecoration.Parameter.CONTENT), Style.EMPTY), new ChatTypeDecoration("%s", java.util.List.of(ChatTypeDecoration.Parameter.CONTENT), Style.EMPTY))); // Paper
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ChatType.Bound bind(ResourceKey<ChatType> typeKey, Entity entity) {
|
|
||||||
diff --git a/src/main/java/net/minecraft/network/chat/Component.java b/src/main/java/net/minecraft/network/chat/Component.java
|
diff --git a/src/main/java/net/minecraft/network/chat/Component.java b/src/main/java/net/minecraft/network/chat/Component.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/network/chat/Component.java
|
--- a/src/main/java/net/minecraft/network/chat/Component.java
|
||||||
|
@ -2172,22 +2154,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
buf.writeComponent(this.header);
|
buf.writeComponent(this.header);
|
||||||
buf.writeComponent(this.footer);
|
buf.writeComponent(this.footer);
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/net/minecraft/resources/RegistryDataLoader.java b/src/main/java/net/minecraft/resources/RegistryDataLoader.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/src/main/java/net/minecraft/resources/RegistryDataLoader.java
|
|
||||||
+++ b/src/main/java/net/minecraft/resources/RegistryDataLoader.java
|
|
||||||
@@ -0,0 +0,0 @@ public class RegistryDataLoader {
|
|
||||||
RegistryOps.RegistryInfoLookup registryInfoLookup = createContext(baseRegistryManager, list);
|
|
||||||
list.forEach((loader) -> {
|
|
||||||
loader.getSecond().load(resourceManager, registryInfoLookup);
|
|
||||||
+ // Paper start
|
|
||||||
+ if (loader.getFirst().key() == Registries.CHAT_TYPE) {
|
|
||||||
+ Registry.register((Registry<ChatType>) loader.getFirst(), ChatType.RAW, new ChatType(new net.minecraft.network.chat.ChatTypeDecoration("%s", List.of(net.minecraft.network.chat.ChatTypeDecoration.Parameter.CONTENT), net.minecraft.network.chat.Style.EMPTY), new net.minecraft.network.chat.ChatTypeDecoration("%s", List.of(net.minecraft.network.chat.ChatTypeDecoration.Parameter.CONTENT), net.minecraft.network.chat.Style.EMPTY))); // CraftBukkit
|
|
||||||
+ }
|
|
||||||
+ // Paper end
|
|
||||||
});
|
|
||||||
list.forEach((loader) -> {
|
|
||||||
Registry<?> registry = loader.getFirst();
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
|
@ -5069,6 +5035,26 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+++ b/src/main/resources/META-INF/services/net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer$Provider
|
+++ b/src/main/resources/META-INF/services/net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer$Provider
|
||||||
@@ -0,0 +1 @@
|
@@ -0,0 +1 @@
|
||||||
+io.papermc.paper.adventure.providers.PlainTextComponentSerializerProviderImpl
|
+io.papermc.paper.adventure.providers.PlainTextComponentSerializerProviderImpl
|
||||||
|
diff --git a/src/main/resources/data/paper/chat_type/raw.json b/src/main/resources/data/paper/chat_type/raw.json
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/resources/data/paper/chat_type/raw.json
|
||||||
|
@@ -0,0 +0,0 @@
|
||||||
|
+{
|
||||||
|
+ "chat": {
|
||||||
|
+ "parameters": [
|
||||||
|
+ "content"
|
||||||
|
+ ],
|
||||||
|
+ "translation_key": "%s"
|
||||||
|
+ },
|
||||||
|
+ "narration": {
|
||||||
|
+ "parameters": [
|
||||||
|
+ "content"
|
||||||
|
+ ],
|
||||||
|
+ "translation_key": "%s"
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
diff --git a/src/test/java/io/papermc/paper/adventure/ComponentServicesTest.java b/src/test/java/io/papermc/paper/adventure/ComponentServicesTest.java
|
diff --git a/src/test/java/io/papermc/paper/adventure/ComponentServicesTest.java b/src/test/java/io/papermc/paper/adventure/ComponentServicesTest.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
||||||
|
|
|
@ -3,6 +3,10 @@ From: Zach Brown <1254957+zachbr@users.noreply.github.com>
|
||||||
Date: Mon, 29 Feb 2016 20:40:33 -0600
|
Date: Mon, 29 Feb 2016 20:40:33 -0600
|
||||||
Subject: [PATCH] Build system changes
|
Subject: [PATCH] Build system changes
|
||||||
|
|
||||||
|
== AT ==
|
||||||
|
public net.minecraft.server.packs.VanillaPackResourcesBuilder safeGetPath(Ljava/net/URI;)Ljava/nio/file/Path;
|
||||||
|
|
||||||
|
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||||
|
|
||||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
@ -78,6 +82,69 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
tasks.test {
|
tasks.test {
|
||||||
exclude("org/bukkit/craftbukkit/inventory/ItemStack*Test.class")
|
exclude("org/bukkit/craftbukkit/inventory/ItemStack*Test.class")
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +0,0 @@ tasks.registerRunTask("runReobf") {
|
||||||
|
classpath(runtimeClasspathWithoutVanillaServer)
|
||||||
|
}
|
||||||
|
|
||||||
|
+val runtimeClasspathForRunDev = sourceSets.main.flatMap { src ->
|
||||||
|
+ src.runtimeClasspath.elements.map { elements ->
|
||||||
|
+ elements.filterNot { file -> file.asFile.endsWith("minecraft.jar") }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
tasks.registerRunTask("runDev") {
|
||||||
|
description = "Spin up a non-relocated Mojang-mapped test server"
|
||||||
|
- classpath(sourceSets.main.map { it.runtimeClasspath })
|
||||||
|
+ classpath(tasks.filterProjectDir.flatMap { it.outputJar })
|
||||||
|
+ classpath(runtimeClasspathForRunDev)
|
||||||
|
+ jvmArgs("-DPaper.isRunDev=true")
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/net/minecraft/resources/ResourceLocation.java b/src/main/java/net/minecraft/resources/ResourceLocation.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/resources/ResourceLocation.java
|
||||||
|
+++ b/src/main/java/net/minecraft/resources/ResourceLocation.java
|
||||||
|
@@ -0,0 +0,0 @@ public class ResourceLocation implements Comparable<ResourceLocation> {
|
||||||
|
public static final char NAMESPACE_SEPARATOR = ':';
|
||||||
|
public static final String DEFAULT_NAMESPACE = "minecraft";
|
||||||
|
public static final String REALMS_NAMESPACE = "realms";
|
||||||
|
+ public static final String PAPER_NAMESPACE = "paper"; // Paper
|
||||||
|
private final String namespace;
|
||||||
|
private final String path;
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/Main.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/Main.java
|
||||||
|
@@ -0,0 +0,0 @@ public class Main {
|
||||||
|
*/ // CraftBukkit end
|
||||||
|
|
||||||
|
try {
|
||||||
|
+ // Paper start
|
||||||
|
+ if (Boolean.getBoolean("Paper.isRunDev")) {
|
||||||
|
+ net.minecraft.server.packs.VanillaPackResourcesBuilder.developmentConfig = builder -> {
|
||||||
|
+ try {
|
||||||
|
+ builder.pushAssetPath(net.minecraft.server.packs.PackType.SERVER_DATA, net.minecraft.server.packs.VanillaPackResourcesBuilder.safeGetPath(java.util.Objects.requireNonNull(Main.class.getResource("/data/.paperassetsroot"), "Missing required .paperassetsroot file").toURI()).getParent());
|
||||||
|
+ } catch (java.net.URISyntaxException | IOException ex) {
|
||||||
|
+ throw new RuntimeException(ex);
|
||||||
|
+ }
|
||||||
|
+ };
|
||||||
|
+ }
|
||||||
|
+ // Paper end
|
||||||
|
|
||||||
|
Path path = (Path) optionset.valueOf("pidFile"); // CraftBukkit
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/packs/repository/ServerPacksSource.java b/src/main/java/net/minecraft/server/packs/repository/ServerPacksSource.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/packs/repository/ServerPacksSource.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/packs/repository/ServerPacksSource.java
|
||||||
|
@@ -0,0 +0,0 @@ public class ServerPacksSource extends BuiltInPackSource {
|
||||||
|
}
|
||||||
|
|
||||||
|
private static VanillaPackResources createVanillaPackSource() {
|
||||||
|
- return (new VanillaPackResourcesBuilder()).setMetadata(BUILT_IN_METADATA).exposeNamespace("minecraft").applyDevelopmentConfig().pushJarResources().build();
|
||||||
|
+ return (new VanillaPackResourcesBuilder()).setMetadata(BUILT_IN_METADATA).exposeNamespace("minecraft", ResourceLocation.PAPER_NAMESPACE).applyDevelopmentConfig().pushJarResources().build(); // Paper
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||||
|
@ -104,3 +171,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
Properties properties = new Properties();
|
Properties properties = new Properties();
|
||||||
|
|
||||||
if (stream != null) {
|
if (stream != null) {
|
||||||
|
diff --git a/src/main/resources/data/.paperassetsroot b/src/main/resources/data/.paperassetsroot
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
||||||
|
|
|
@ -23,7 +23,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
import net.minecraft.Optionull;
|
import net.minecraft.Optionull;
|
||||||
import net.minecraft.Util;
|
import net.minecraft.Util;
|
||||||
import net.minecraft.core.registries.Registries;
|
import net.minecraft.core.registries.Registries;
|
||||||
@@ -0,0 +0,0 @@ import net.minecraft.resources.ResourceKey;
|
@@ -0,0 +0,0 @@ import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import org.bukkit.command.ConsoleCommandSender;
|
import org.bukkit.command.ConsoleCommandSender;
|
||||||
|
|
Loading…
Reference in a new issue