From 243950759d4c99439794a814e6d8d8507fdb84a5 Mon Sep 17 00:00:00 2001 From: XPYEX Date: Thu, 3 Oct 2024 00:51:35 +0800 Subject: [PATCH 01/14] fix: Mod items support, for Hybrid Server --- src/main/java/ch/njol/skript/aliases/Aliases.java | 5 ++++- src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/ch/njol/skript/aliases/Aliases.java b/src/main/java/ch/njol/skript/aliases/Aliases.java index 3e67971698a..9d7aef2fe24 100644 --- a/src/main/java/ch/njol/skript/aliases/Aliases.java +++ b/src/main/java/ch/njol/skript/aliases/Aliases.java @@ -403,7 +403,10 @@ private static void loadMissingAliases() { for (Material material : Material.values()) { if (!material.isLegacy() && !provider.hasAliasForMaterial(material)) { NamespacedKey key = material.getKey(); - String name = key.getKey().replace("_", " "); + String name = (key.getNamespace().equals(NamespacedKey.MINECRAFT) ? key.getKey() : key.toString()) + .replace("_", " "); + // mod:an_item → mod:an item + // minecraft:dirt → dirt parser.loadAlias(name + "¦s", key.toString()); Skript.debug(ChatColor.YELLOW + "Creating temporary alias for: " + key); } diff --git a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java index f47a3f5d8d7..1c28093eb21 100644 --- a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java +++ b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java @@ -70,7 +70,10 @@ public class BukkitUnsafe { @Nullable public static Material getMaterialFromMinecraftId(String id) { - return Material.matchMaterial(id); + return Material.matchMaterial(id.toLowerCase().startsWith("minecraft:") + ? id + : id.replace(":", "_") //For Hybrid Server + ); } public static void modifyItemStack(ItemStack stack, String arguments) { From dc1957e8647b63a5e604432afe4a4bc9121e1d9f Mon Sep 17 00:00:00 2001 From: XPYEX Date: Thu, 3 Oct 2024 01:05:20 +0800 Subject: [PATCH 02/14] style: style --- src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java index 1c28093eb21..d84452f3a0b 100644 --- a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java +++ b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java @@ -30,6 +30,7 @@ import org.bukkit.Bukkit; import org.bukkit.Material; +import org.bukkit.NamespacedKey; import org.bukkit.UnsafeValues; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.Nullable; @@ -70,7 +71,7 @@ public class BukkitUnsafe { @Nullable public static Material getMaterialFromMinecraftId(String id) { - return Material.matchMaterial(id.toLowerCase().startsWith("minecraft:") + return Material.matchMaterial(id.toLowerCase().startsWith(NamespacedKey.MINECRAFT + ":") ? id : id.replace(":", "_") //For Hybrid Server ); From acf70fb90dfa0ca96c965c7c87fb01c9a81f53fc Mon Sep 17 00:00:00 2001 From: XPYEX Date: Thu, 3 Oct 2024 01:20:07 +0800 Subject: [PATCH 03/14] perf: rename function name and aliases name --- src/main/java/ch/njol/skript/aliases/Aliases.java | 7 ++++--- src/main/java/ch/njol/skript/aliases/AliasesProvider.java | 2 +- src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java | 6 +----- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/main/java/ch/njol/skript/aliases/Aliases.java b/src/main/java/ch/njol/skript/aliases/Aliases.java index 9d7aef2fe24..a6aa2b46905 100644 --- a/src/main/java/ch/njol/skript/aliases/Aliases.java +++ b/src/main/java/ch/njol/skript/aliases/Aliases.java @@ -25,7 +25,6 @@ import ch.njol.skript.config.Node; import ch.njol.skript.config.SectionNode; import ch.njol.skript.entity.EntityData; -import org.bukkit.entity.EntityType; import org.skriptlang.skript.lang.script.Script; import ch.njol.skript.lang.parser.ParserInstance; import ch.njol.skript.localization.ArgsMessage; @@ -403,8 +402,10 @@ private static void loadMissingAliases() { for (Material material : Material.values()) { if (!material.isLegacy() && !provider.hasAliasForMaterial(material)) { NamespacedKey key = material.getKey(); - String name = (key.getNamespace().equals(NamespacedKey.MINECRAFT) ? key.getKey() : key.toString()) - .replace("_", " "); + String name = (key.getNamespace().equals(NamespacedKey.MINECRAFT) + ? key.getKey() + : key.getNamespace() + "'s " + key.getKey() + ).replace("_", " "); // mod:an_item → mod:an item // minecraft:dirt → dirt parser.loadAlias(name + "¦s", key.toString()); diff --git a/src/main/java/ch/njol/skript/aliases/AliasesProvider.java b/src/main/java/ch/njol/skript/aliases/AliasesProvider.java index 06ae5317f78..c09501636ed 100644 --- a/src/main/java/ch/njol/skript/aliases/AliasesProvider.java +++ b/src/main/java/ch/njol/skript/aliases/AliasesProvider.java @@ -290,7 +290,7 @@ public void addAlias(AliasName name, String id, @Nullable Map ta datas = typeOfId.getTypes(); } else { // ... but quite often, we just got Vanilla id // Prepare and modify ItemStack (using somewhat Unsafe methods) - Material material = BukkitUnsafe.getMaterialFromMinecraftId(id); + Material material = BukkitUnsafe.getMaterialFromNamespacedId(id); if (material == null) { // If server doesn't recognize id, do not proceed throw new InvalidMinecraftIdException(id); } diff --git a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java index d84452f3a0b..363036bcb78 100644 --- a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java +++ b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java @@ -20,9 +20,6 @@ import java.io.IOException; import java.io.InputStream; -import java.lang.invoke.MethodHandle; -import java.lang.invoke.MethodHandles; -import java.lang.invoke.MethodType; import java.lang.reflect.Type; import java.nio.charset.StandardCharsets; import java.util.HashMap; @@ -40,7 +37,6 @@ import com.google.gson.reflect.TypeToken; import ch.njol.util.EnumTypeAdapter; import ch.njol.skript.Skript; -import ch.njol.skript.util.Version; /** * Contains helpers for Bukkit's not so safe stuff. @@ -70,7 +66,7 @@ public class BukkitUnsafe { private static Map idMappings; @Nullable - public static Material getMaterialFromMinecraftId(String id) { + public static Material getMaterialFromNamespacedId(String id) { return Material.matchMaterial(id.toLowerCase().startsWith(NamespacedKey.MINECRAFT + ":") ? id : id.replace(":", "_") //For Hybrid Server From e8e8074bd3f9e6c20ce9c82118defbbda3d90281 Mon Sep 17 00:00:00 2001 From: XPYEX Date: Thu, 3 Oct 2024 01:22:02 +0800 Subject: [PATCH 04/14] perf: notes --- src/main/java/ch/njol/skript/aliases/Aliases.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ch/njol/skript/aliases/Aliases.java b/src/main/java/ch/njol/skript/aliases/Aliases.java index a6aa2b46905..c3bb3491ced 100644 --- a/src/main/java/ch/njol/skript/aliases/Aliases.java +++ b/src/main/java/ch/njol/skript/aliases/Aliases.java @@ -406,7 +406,7 @@ private static void loadMissingAliases() { ? key.getKey() : key.getNamespace() + "'s " + key.getKey() ).replace("_", " "); - // mod:an_item → mod:an item + // mod:an_item → mod's an item // minecraft:dirt → dirt parser.loadAlias(name + "¦s", key.toString()); Skript.debug(ChatColor.YELLOW + "Creating temporary alias for: " + key); From bc7740e62cea95fe88827c692d1e51b11aa5e303 Mon Sep 17 00:00:00 2001 From: XPYEX Date: Thu, 3 Oct 2024 01:34:54 +0800 Subject: [PATCH 05/14] perf: not a break change --- src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java index 363036bcb78..32e1712ff30 100644 --- a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java +++ b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java @@ -65,6 +65,11 @@ public class BukkitUnsafe { @Nullable private static Map idMappings; + @Deprecated + public static Material getMaterialFromMinecraftId(String id) { + return getMaterialFromNamespacedId(id); + } + @Nullable public static Material getMaterialFromNamespacedId(String id) { return Material.matchMaterial(id.toLowerCase().startsWith(NamespacedKey.MINECRAFT + ":") From fd28c5c380dcdd9cbb80e4d0aa475ea0af74c217 Mon Sep 17 00:00:00 2001 From: XPYEX Date: Thu, 3 Oct 2024 01:35:51 +0800 Subject: [PATCH 06/14] perf: the @Nullable annotation --- src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java index 32e1712ff30..fd11c49cdb1 100644 --- a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java +++ b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java @@ -65,6 +65,7 @@ public class BukkitUnsafe { @Nullable private static Map idMappings; + @Nullable @Deprecated public static Material getMaterialFromMinecraftId(String id) { return getMaterialFromNamespacedId(id); From d49018bbe478cbad21a0786ecbb0598129caeb88 Mon Sep 17 00:00:00 2001 From: XPYEX Date: Thu, 3 Oct 2024 01:41:53 +0800 Subject: [PATCH 07/14] docs: javadoc --- .../ch/njol/skript/bukkitutil/BukkitUnsafe.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java index fd11c49cdb1..30c9fe11dd9 100644 --- a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java +++ b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java @@ -65,12 +65,26 @@ public class BukkitUnsafe { @Nullable private static Map idMappings; + /** + * @deprecated You should use {@link BukkitUnsafe#getMaterialFromNamespacedId(String)} + * Get a material from a minecraft id. + * + * @param id Namespaced id (just like 'minecraft:dirt'), or normally just a material name (just like 'dirt') + * @return Material or null + */ @Nullable @Deprecated public static Material getMaterialFromMinecraftId(String id) { return getMaterialFromNamespacedId(id); } + /** + * Get a material from a namespaced id. + * Such as, minecraft:iron_ingot -> IRON_INGOT; mod:an_item -> mod_an_item + * + * @param id Namespaced id (just like 'minecraft:dirt'), or normally just a material name (just like 'dirt') + * @return Material or null + */ @Nullable public static Material getMaterialFromNamespacedId(String id) { return Material.matchMaterial(id.toLowerCase().startsWith(NamespacedKey.MINECRAFT + ":") From c04c6a3c2e3230a29742172afa8cdb080aff7b0a Mon Sep 17 00:00:00 2001 From: XPYEX Date: Thu, 3 Oct 2024 01:48:47 +0800 Subject: [PATCH 08/14] style: to upper cases --- src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java index 30c9fe11dd9..37d68c11741 100644 --- a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java +++ b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java @@ -80,7 +80,7 @@ public static Material getMaterialFromMinecraftId(String id) { /** * Get a material from a namespaced id. - * Such as, minecraft:iron_ingot -> IRON_INGOT; mod:an_item -> mod_an_item + * Such as, minecraft:iron_ingot -> IRON_INGOT; mod:an_item -> MOD_AN_ITEM * * @param id Namespaced id (just like 'minecraft:dirt'), or normally just a material name (just like 'dirt') * @return Material or null From b9a37edd9bd479544c5f3cb52c070be9920e80bf Mon Sep 17 00:00:00 2001 From: XPYEX Date: Thu, 3 Oct 2024 02:02:06 +0800 Subject: [PATCH 09/14] perf: resolved mentioned --- .../java/ch/njol/skript/aliases/Aliases.java | 4 ++-- .../njol/skript/bukkitutil/BukkitUnsafe.java | 22 +++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/java/ch/njol/skript/aliases/Aliases.java b/src/main/java/ch/njol/skript/aliases/Aliases.java index c3bb3491ced..2198a5c3c74 100644 --- a/src/main/java/ch/njol/skript/aliases/Aliases.java +++ b/src/main/java/ch/njol/skript/aliases/Aliases.java @@ -406,8 +406,8 @@ private static void loadMissingAliases() { ? key.getKey() : key.getNamespace() + "'s " + key.getKey() ).replace("_", " "); - // mod:an_item → mod's an item - // minecraft:dirt → dirt + // mod:an_item -> mod's an item + // minecraft:dirt -> dirt parser.loadAlias(name + "¦s", key.toString()); Skript.debug(ChatColor.YELLOW + "Creating temporary alias for: " + key); } diff --git a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java index 37d68c11741..4ba3a18e4a9 100644 --- a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java +++ b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java @@ -66,27 +66,27 @@ public class BukkitUnsafe { private static Map idMappings; /** - * @deprecated You should use {@link BukkitUnsafe#getMaterialFromNamespacedId(String)} * Get a material from a minecraft id. * - * @param id Namespaced id (just like 'minecraft:dirt'), or normally just a material name (just like 'dirt') - * @return Material or null + * @param id Namespaced ID with or without a namespace. IDs without a namespace will be treated + * as minecraft namespaced IDs. ('minecraft:dirt' and 'dirt' are equivalent.) + * @return The Material the id represents, or null if no material can be matched. + * @deprecated Prefer {@link BukkitUnsafe#getMaterialFromNamespacedId(String)} */ - @Nullable @Deprecated - public static Material getMaterialFromMinecraftId(String id) { + public static @Nullable Material getMaterialFromMinecraftId(String id) { return getMaterialFromNamespacedId(id); } /** - * Get a material from a namespaced id. - * Such as, minecraft:iron_ingot -> IRON_INGOT; mod:an_item -> MOD_AN_ITEM + * Get a material from a namespaced ID. + * For example, 'minecraft:iron_ingot' -> Material.IRON_INGOT; 'mod:an_item' -> Material.MOD_AN_ITEM * - * @param id Namespaced id (just like 'minecraft:dirt'), or normally just a material name (just like 'dirt') - * @return Material or null + * @param id Namespaced ID with or without a namespace. IDs without a namespace will be treated + * as minecraft namespaced IDs. ('minecraft:dirt' and 'dirt' are equivalent.) + * @return The Material the id represents, or null if no material can be matched. */ - @Nullable - public static Material getMaterialFromNamespacedId(String id) { + public static @Nullable Material getMaterialFromNamespacedId(String id) { return Material.matchMaterial(id.toLowerCase().startsWith(NamespacedKey.MINECRAFT + ":") ? id : id.replace(":", "_") //For Hybrid Server From 070b0bab0fea00f5d4bedda8cc4be353d653c99d Mon Sep 17 00:00:00 2001 From: XPYEX Date: Thu, 3 Oct 2024 02:05:48 +0800 Subject: [PATCH 10/14] style: style --- src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java index 4ba3a18e4a9..bea439f1753 100644 --- a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java +++ b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java @@ -70,7 +70,7 @@ public class BukkitUnsafe { * * @param id Namespaced ID with or without a namespace. IDs without a namespace will be treated * as minecraft namespaced IDs. ('minecraft:dirt' and 'dirt' are equivalent.) - * @return The Material the id represents, or null if no material can be matched. + * @return The Material which the id represents, or null if no material can be matched. * @deprecated Prefer {@link BukkitUnsafe#getMaterialFromNamespacedId(String)} */ @Deprecated @@ -84,7 +84,7 @@ public class BukkitUnsafe { * * @param id Namespaced ID with or without a namespace. IDs without a namespace will be treated * as minecraft namespaced IDs. ('minecraft:dirt' and 'dirt' are equivalent.) - * @return The Material the id represents, or null if no material can be matched. + * @return The Material which the id represents, or null if no material can be matched. */ public static @Nullable Material getMaterialFromNamespacedId(String id) { return Material.matchMaterial(id.toLowerCase().startsWith(NamespacedKey.MINECRAFT + ":") From a8e13fff603c8af1018436e3009b3dc76c93ec3a Mon Sep 17 00:00:00 2001 From: XPYEX Date: Thu, 3 Oct 2024 02:36:30 +0800 Subject: [PATCH 11/14] perf: resolved mentioned --- src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java index bea439f1753..66b7fa13a34 100644 --- a/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java +++ b/src/main/java/ch/njol/skript/bukkitutil/BukkitUnsafe.java @@ -71,7 +71,7 @@ public class BukkitUnsafe { * @param id Namespaced ID with or without a namespace. IDs without a namespace will be treated * as minecraft namespaced IDs. ('minecraft:dirt' and 'dirt' are equivalent.) * @return The Material which the id represents, or null if no material can be matched. - * @deprecated Prefer {@link BukkitUnsafe#getMaterialFromNamespacedId(String)} + * @deprecated Prefer {@link BukkitUnsafe#getMaterialFromNamespacedId(String)} for including modded item support */ @Deprecated public static @Nullable Material getMaterialFromMinecraftId(String id) { From 3c2057f47490bdbb49ca78ce6e05fe779356159f Mon Sep 17 00:00:00 2001 From: XPYEX Date: Thu, 3 Oct 2024 02:45:27 +0800 Subject: [PATCH 12/14] feat: the expression: from --- src/main/java/ch/njol/skript/aliases/Aliases.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/ch/njol/skript/aliases/Aliases.java b/src/main/java/ch/njol/skript/aliases/Aliases.java index 2198a5c3c74..ae2a1067d79 100644 --- a/src/main/java/ch/njol/skript/aliases/Aliases.java +++ b/src/main/java/ch/njol/skript/aliases/Aliases.java @@ -402,13 +402,14 @@ private static void loadMissingAliases() { for (Material material : Material.values()) { if (!material.isLegacy() && !provider.hasAliasForMaterial(material)) { NamespacedKey key = material.getKey(); - String name = (key.getNamespace().equals(NamespacedKey.MINECRAFT) - ? key.getKey() - : key.getNamespace() + "'s " + key.getKey() - ).replace("_", " "); - // mod:an_item -> mod's an item + // mod:an_item -> (mod's an item) | (an item from mod) // minecraft:dirt -> dirt - parser.loadAlias(name + "¦s", key.toString()); + if (NamespacedKey.MINECRAFT.equals(key.getNamespace())) { + parser.loadAlias(key.getKey().replace("_", " "), key.toString()); + } else { + parser.loadAlias((key.getNamespace() + " 's " + key.getKey() + "¦s").replace("_", " "), key.toString()); + parser.loadAlias((key.getKey() + "¦s from " + key.getNamespace()).replace("_", " "), key.toString()); + } Skript.debug(ChatColor.YELLOW + "Creating temporary alias for: " + key); } } From d8a2d768edea92732ea8713832c8fe627dc361fa Mon Sep 17 00:00:00 2001 From: XPYEX Date: Thu, 3 Oct 2024 02:52:50 +0800 Subject: [PATCH 13/14] fix: wrong space --- src/main/java/ch/njol/skript/aliases/Aliases.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ch/njol/skript/aliases/Aliases.java b/src/main/java/ch/njol/skript/aliases/Aliases.java index ae2a1067d79..5e9efa20d4d 100644 --- a/src/main/java/ch/njol/skript/aliases/Aliases.java +++ b/src/main/java/ch/njol/skript/aliases/Aliases.java @@ -407,7 +407,7 @@ private static void loadMissingAliases() { if (NamespacedKey.MINECRAFT.equals(key.getNamespace())) { parser.loadAlias(key.getKey().replace("_", " "), key.toString()); } else { - parser.loadAlias((key.getNamespace() + " 's " + key.getKey() + "¦s").replace("_", " "), key.toString()); + parser.loadAlias((key.getNamespace() + "'s " + key.getKey() + "¦s").replace("_", " "), key.toString()); parser.loadAlias((key.getKey() + "¦s from " + key.getNamespace()).replace("_", " "), key.toString()); } Skript.debug(ChatColor.YELLOW + "Creating temporary alias for: " + key); From 034f70b2f18c8186f46455f50489810123dee3b5 Mon Sep 17 00:00:00 2001 From: XPYEX Date: Fri, 4 Oct 2024 01:59:15 +0800 Subject: [PATCH 14/14] fix: ..s --- src/main/java/ch/njol/skript/aliases/Aliases.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ch/njol/skript/aliases/Aliases.java b/src/main/java/ch/njol/skript/aliases/Aliases.java index 5e9efa20d4d..84234052724 100644 --- a/src/main/java/ch/njol/skript/aliases/Aliases.java +++ b/src/main/java/ch/njol/skript/aliases/Aliases.java @@ -405,7 +405,7 @@ private static void loadMissingAliases() { // mod:an_item -> (mod's an item) | (an item from mod) // minecraft:dirt -> dirt if (NamespacedKey.MINECRAFT.equals(key.getNamespace())) { - parser.loadAlias(key.getKey().replace("_", " "), key.toString()); + parser.loadAlias(key.getKey().replace("_", " ") + "¦s", key.toString()); } else { parser.loadAlias((key.getNamespace() + "'s " + key.getKey() + "¦s").replace("_", " "), key.toString()); parser.loadAlias((key.getKey() + "¦s from " + key.getNamespace()).replace("_", " "), key.toString());