From 7f49fe19bd2269cd68a99451ed7ae7a69646a1db Mon Sep 17 00:00:00 2001 From: VAKiliner <119078586+vakiliner@users.noreply.github.com> Date: Mon, 9 Feb 2026 03:19:29 +0300 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20=D0=A3=D1=81=D0=BE=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D1=88=D0=B5=D0=BD=D1=81=D1=82=D0=B2=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=20IChatPlugin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bukkit/build.gradle | 3 +++ bukkit/src/main/java/org/bukkit/plugin/Plugin.java | 4 ++++ .../src/main/java/org/bukkit/plugin/java/JavaPlugin.java | 4 +++- .../chatcomponentapi/ChatComponentAPIBukkitLoader.java | 9 +++++++-- .../chatcomponentapi/craftbukkit/BukkitParser.java | 7 +++---- .../chatcomponentapi/craftbukkit/IBukkitChatPlugin.java | 8 ++++++++ .../chatcomponentapi/ChatComponentAPIFabricLoader.java | 4 ++-- .../vakiliner/chatcomponentapi/fabric/FabricParser.java | 8 +++++--- .../chatcomponentapi/fabric/IFabricChatPlugin.java | 6 ++++++ .../chatcomponentapi/ChatComponentAPIForgeLoader.java | 4 ++-- .../vakiliner/chatcomponentapi/forge/ForgeParser.java | 8 +++++--- .../chatcomponentapi/forge/IForgeChatPlugin.java | 6 ++++++ 12 files changed, 54 insertions(+), 17 deletions(-) create mode 100644 bukkit/src/main/java/org/bukkit/plugin/Plugin.java create mode 100644 craftbukkit/src/main/java/vakiliner/chatcomponentapi/craftbukkit/IBukkitChatPlugin.java create mode 100644 fabric/src/main/java/vakiliner/chatcomponentapi/fabric/IFabricChatPlugin.java create mode 100644 forge/src/main/java/vakiliner/chatcomponentapi/forge/IForgeChatPlugin.java diff --git a/bukkit/build.gradle b/bukkit/build.gradle index 6045de4..07bce67 100644 --- a/bukkit/build.gradle +++ b/bukkit/build.gradle @@ -4,6 +4,9 @@ plugins { dependencies { implementation project(':base') + implementation project(':craftbukkit') + implementation project(':spigot') + implementation project(':paper') } processResources { diff --git a/bukkit/src/main/java/org/bukkit/plugin/Plugin.java b/bukkit/src/main/java/org/bukkit/plugin/Plugin.java new file mode 100644 index 0000000..2562fd9 --- /dev/null +++ b/bukkit/src/main/java/org/bukkit/plugin/Plugin.java @@ -0,0 +1,4 @@ +package org.bukkit.plugin; + +public interface Plugin { +} \ No newline at end of file diff --git a/bukkit/src/main/java/org/bukkit/plugin/java/JavaPlugin.java b/bukkit/src/main/java/org/bukkit/plugin/java/JavaPlugin.java index b293890..2dbb5b5 100644 --- a/bukkit/src/main/java/org/bukkit/plugin/java/JavaPlugin.java +++ b/bukkit/src/main/java/org/bukkit/plugin/java/JavaPlugin.java @@ -1,4 +1,6 @@ package org.bukkit.plugin.java; -public abstract class JavaPlugin { +import org.bukkit.plugin.Plugin; + +public abstract class JavaPlugin implements Plugin { } \ No newline at end of file diff --git a/bukkit/src/main/java/vakiliner/chatcomponentapi/ChatComponentAPIBukkitLoader.java b/bukkit/src/main/java/vakiliner/chatcomponentapi/ChatComponentAPIBukkitLoader.java index b533f27..9e16af4 100644 --- a/bukkit/src/main/java/vakiliner/chatcomponentapi/ChatComponentAPIBukkitLoader.java +++ b/bukkit/src/main/java/vakiliner/chatcomponentapi/ChatComponentAPIBukkitLoader.java @@ -1,12 +1,13 @@ package vakiliner.chatcomponentapi; +import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; -import vakiliner.chatcomponentapi.base.IChatPlugin; import vakiliner.chatcomponentapi.craftbukkit.BukkitParser; +import vakiliner.chatcomponentapi.craftbukkit.IBukkitChatPlugin; import vakiliner.chatcomponentapi.paper.PaperParser; import vakiliner.chatcomponentapi.spigot.SpigotParser; -public class ChatComponentAPIBukkitLoader extends JavaPlugin implements IChatPlugin { +public class ChatComponentAPIBukkitLoader extends JavaPlugin implements IBukkitChatPlugin { public static final BukkitParser PARSER; static { @@ -22,4 +23,8 @@ public class ChatComponentAPIBukkitLoader extends JavaPlugin implements IChatPlu } PARSER = impl; } + + public Plugin asPlugin() { + return this; + } } \ No newline at end of file diff --git a/craftbukkit/src/main/java/vakiliner/chatcomponentapi/craftbukkit/BukkitParser.java b/craftbukkit/src/main/java/vakiliner/chatcomponentapi/craftbukkit/BukkitParser.java index a1bac59..b603a4e 100644 --- a/craftbukkit/src/main/java/vakiliner/chatcomponentapi/craftbukkit/BukkitParser.java +++ b/craftbukkit/src/main/java/vakiliner/chatcomponentapi/craftbukkit/BukkitParser.java @@ -7,7 +7,6 @@ import org.bukkit.Server; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.bukkit.plugin.Plugin; import org.bukkit.scheduler.BukkitScheduler; import org.bukkit.scoreboard.Team; import vakiliner.chatcomponentapi.base.BaseParser; @@ -39,14 +38,14 @@ public void sendMessage(CommandSender sender, ChatComponent component, ChatMessa } public void execute(BukkitScheduler scheduler, IChatPlugin plugin, Runnable runnable) { - if (plugin instanceof Plugin) { + if (plugin instanceof IBukkitChatPlugin) { if (!Bukkit.isPrimaryThread()) { - scheduler.runTask((Plugin) plugin, runnable); + scheduler.runTask(((IBukkitChatPlugin) plugin).asPlugin(), runnable); } else { runnable.run(); } } else { - throw new IllegalArgumentException("Invalid plugin"); + throw new ClassCastException("Invalid plugin"); } } diff --git a/craftbukkit/src/main/java/vakiliner/chatcomponentapi/craftbukkit/IBukkitChatPlugin.java b/craftbukkit/src/main/java/vakiliner/chatcomponentapi/craftbukkit/IBukkitChatPlugin.java new file mode 100644 index 0000000..b8c4eb1 --- /dev/null +++ b/craftbukkit/src/main/java/vakiliner/chatcomponentapi/craftbukkit/IBukkitChatPlugin.java @@ -0,0 +1,8 @@ +package vakiliner.chatcomponentapi.craftbukkit; + +import org.bukkit.plugin.Plugin; +import vakiliner.chatcomponentapi.base.IChatPlugin; + +public interface IBukkitChatPlugin extends IChatPlugin { + Plugin asPlugin(); +} \ No newline at end of file diff --git a/fabric/src/main/java/vakiliner/chatcomponentapi/ChatComponentAPIFabricLoader.java b/fabric/src/main/java/vakiliner/chatcomponentapi/ChatComponentAPIFabricLoader.java index 5e2fdb9..e862286 100644 --- a/fabric/src/main/java/vakiliner/chatcomponentapi/ChatComponentAPIFabricLoader.java +++ b/fabric/src/main/java/vakiliner/chatcomponentapi/ChatComponentAPIFabricLoader.java @@ -1,10 +1,10 @@ package vakiliner.chatcomponentapi; import net.fabricmc.api.ModInitializer; -import vakiliner.chatcomponentapi.base.IChatPlugin; import vakiliner.chatcomponentapi.fabric.FabricParser; +import vakiliner.chatcomponentapi.fabric.IFabricChatPlugin; -public class ChatComponentAPIFabricLoader implements ModInitializer, IChatPlugin { +public class ChatComponentAPIFabricLoader implements ModInitializer, IFabricChatPlugin { public static final FabricParser PARSER = new FabricParser(); public void onInitialize() { diff --git a/fabric/src/main/java/vakiliner/chatcomponentapi/fabric/FabricParser.java b/fabric/src/main/java/vakiliner/chatcomponentapi/fabric/FabricParser.java index 3351715..5c78283 100644 --- a/fabric/src/main/java/vakiliner/chatcomponentapi/fabric/FabricParser.java +++ b/fabric/src/main/java/vakiliner/chatcomponentapi/fabric/FabricParser.java @@ -2,7 +2,6 @@ import java.util.Arrays; import java.util.List; -import java.util.Objects; import java.util.UUID; import java.util.stream.Collectors; import com.mojang.authlib.GameProfile; @@ -72,8 +71,11 @@ public void broadcastMessage(PlayerList playerList, ChatComponent component, Cha } public void execute(MinecraftServer server, IChatPlugin plugin, Runnable runnable) { - Objects.requireNonNull(plugin, "Invalid plugin"); - server.execute(runnable); + if (plugin instanceof IFabricChatPlugin) { + server.execute(runnable); + } else { + throw new ClassCastException("Invalid plugin"); + } } public void kickPlayer(ServerPlayer player, ChatComponent reason) { diff --git a/fabric/src/main/java/vakiliner/chatcomponentapi/fabric/IFabricChatPlugin.java b/fabric/src/main/java/vakiliner/chatcomponentapi/fabric/IFabricChatPlugin.java new file mode 100644 index 0000000..4096df6 --- /dev/null +++ b/fabric/src/main/java/vakiliner/chatcomponentapi/fabric/IFabricChatPlugin.java @@ -0,0 +1,6 @@ +package vakiliner.chatcomponentapi.fabric; + +import vakiliner.chatcomponentapi.base.IChatPlugin; + +public interface IFabricChatPlugin extends IChatPlugin { +} \ No newline at end of file diff --git a/forge/src/main/java/vakiliner/chatcomponentapi/ChatComponentAPIForgeLoader.java b/forge/src/main/java/vakiliner/chatcomponentapi/ChatComponentAPIForgeLoader.java index fc3cce9..78c053a 100644 --- a/forge/src/main/java/vakiliner/chatcomponentapi/ChatComponentAPIForgeLoader.java +++ b/forge/src/main/java/vakiliner/chatcomponentapi/ChatComponentAPIForgeLoader.java @@ -1,10 +1,10 @@ package vakiliner.chatcomponentapi; import net.minecraftforge.fml.common.Mod; -import vakiliner.chatcomponentapi.base.IChatPlugin; import vakiliner.chatcomponentapi.forge.ForgeParser; +import vakiliner.chatcomponentapi.forge.IForgeChatPlugin; @Mod("chatcomponentapi") -public class ChatComponentAPIForgeLoader implements IChatPlugin { +public class ChatComponentAPIForgeLoader implements IForgeChatPlugin { public static final ForgeParser PARSER = new ForgeParser(); } \ No newline at end of file diff --git a/forge/src/main/java/vakiliner/chatcomponentapi/forge/ForgeParser.java b/forge/src/main/java/vakiliner/chatcomponentapi/forge/ForgeParser.java index 79cd10d..f72a893 100644 --- a/forge/src/main/java/vakiliner/chatcomponentapi/forge/ForgeParser.java +++ b/forge/src/main/java/vakiliner/chatcomponentapi/forge/ForgeParser.java @@ -2,7 +2,6 @@ import java.util.Arrays; import java.util.List; -import java.util.Objects; import java.util.UUID; import java.util.stream.Collectors; import com.mojang.authlib.GameProfile; @@ -64,8 +63,11 @@ public void sendMessage(ICommandSource commandSource, ChatComponent component, C } public void execute(MinecraftServer server, IChatPlugin plugin, Runnable runnable) { - Objects.requireNonNull(plugin, "Invalid plugin"); - server.execute(runnable); + if (plugin instanceof IForgeChatPlugin) { + server.execute(runnable); + } else { + throw new ClassCastException("Invalid plugin"); + } } public void kickPlayer(ServerPlayerEntity player, ChatComponent reason) { diff --git a/forge/src/main/java/vakiliner/chatcomponentapi/forge/IForgeChatPlugin.java b/forge/src/main/java/vakiliner/chatcomponentapi/forge/IForgeChatPlugin.java new file mode 100644 index 0000000..5b0e863 --- /dev/null +++ b/forge/src/main/java/vakiliner/chatcomponentapi/forge/IForgeChatPlugin.java @@ -0,0 +1,6 @@ +package vakiliner.chatcomponentapi.forge; + +import vakiliner.chatcomponentapi.base.IChatPlugin; + +public interface IForgeChatPlugin extends IChatPlugin { +} \ No newline at end of file From 77219f3bc4a6ff1c4a20db9de44c039df0c73376 Mon Sep 17 00:00:00 2001 From: VAKiliner <119078586+vakiliner@users.noreply.github.com> Date: Mon, 9 Feb 2026 03:26:00 +0300 Subject: [PATCH 2/2] chore: Fix circular dependency --- bukkit/build.gradle | 3 --- .../chatcomponentapi/craftbukkit/IBukkitChatPlugin.java | 8 ++++++++ 2 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 bukkit/src/main/java/vakiliner/chatcomponentapi/craftbukkit/IBukkitChatPlugin.java diff --git a/bukkit/build.gradle b/bukkit/build.gradle index 07bce67..6045de4 100644 --- a/bukkit/build.gradle +++ b/bukkit/build.gradle @@ -4,9 +4,6 @@ plugins { dependencies { implementation project(':base') - implementation project(':craftbukkit') - implementation project(':spigot') - implementation project(':paper') } processResources { diff --git a/bukkit/src/main/java/vakiliner/chatcomponentapi/craftbukkit/IBukkitChatPlugin.java b/bukkit/src/main/java/vakiliner/chatcomponentapi/craftbukkit/IBukkitChatPlugin.java new file mode 100644 index 0000000..b8c4eb1 --- /dev/null +++ b/bukkit/src/main/java/vakiliner/chatcomponentapi/craftbukkit/IBukkitChatPlugin.java @@ -0,0 +1,8 @@ +package vakiliner.chatcomponentapi.craftbukkit; + +import org.bukkit.plugin.Plugin; +import vakiliner.chatcomponentapi.base.IChatPlugin; + +public interface IBukkitChatPlugin extends IChatPlugin { + Plugin asPlugin(); +} \ No newline at end of file