diff --git a/CommonCore b/CommonCore index a249d66..d90938e 160000 --- a/CommonCore +++ b/CommonCore @@ -1 +1 @@ -Subproject commit a249d66dcf96bb9aef44b700438c81670ad81de7 +Subproject commit d90938eff2a258d3dbd9b975b9df0fc7fe87b938 diff --git a/SpigotCore_Main/build.gradle b/SpigotCore_Main/build.gradle index 6cd4051..2380461 100644 --- a/SpigotCore_Main/build.gradle +++ b/SpigotCore_Main/build.gradle @@ -33,7 +33,7 @@ targetCompatibility = 1.8 sourceSets { main { java { - srcDirs = ['src/'] + srcDirs = ['src/', 'build/generated/sources/annotationProcessor/java/main/'] } resources { srcDirs = ['src/'] @@ -65,10 +65,5 @@ dependencies { testImplementation 'org.hamcrest:hamcrest:2.2' implementation project(':CommonCore') -} - -processResources { - from("build/classes/java/main/META-INF/annotations/") { - into("de.steamwar.bausystem") - } + annotationProcessor project(":CommonCore") } diff --git a/SpigotCore_Main/src/de/steamwar/command/CaseInsensitiveCommandsListener.java b/SpigotCore_Main/src/de/steamwar/command/CaseInsensitiveCommandsListener.java index a829308..8bb872a 100644 --- a/SpigotCore_Main/src/de/steamwar/command/CaseInsensitiveCommandsListener.java +++ b/SpigotCore_Main/src/de/steamwar/command/CaseInsensitiveCommandsListener.java @@ -19,11 +19,13 @@ package de.steamwar.command; +import de.steamwar.linkage.Linked; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerCommandPreprocessEvent; +@Linked public class CaseInsensitiveCommandsListener implements Listener { @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) diff --git a/SpigotCore_Main/src/de/steamwar/core/Core.java b/SpigotCore_Main/src/de/steamwar/core/Core.java index ad70625..e53ea08 100644 --- a/SpigotCore_Main/src/de/steamwar/core/Core.java +++ b/SpigotCore_Main/src/de/steamwar/core/Core.java @@ -21,11 +21,7 @@ package de.steamwar.core; import com.comphenix.tinyprotocol.TinyProtocol; import de.steamwar.command.*; -import de.steamwar.core.authlib.AuthlibInjector; -import de.steamwar.core.events.ChattingEvent; -import de.steamwar.core.events.PartialChunkFixer; -import de.steamwar.core.events.PlayerJoinedEvent; -import de.steamwar.core.events.WorldLoadEvent; +import de.steamwar.spigotcore.linkage.LinkageUtils; import de.steamwar.message.Message; import de.steamwar.network.NetworkReceiver; import de.steamwar.sql.Statement; @@ -115,22 +111,12 @@ public class Core extends JavaPlugin{ } }); Bukkit.getScheduler().runTaskTimer(this, TabCompletionCache::invalidateOldEntries, 20, 20); - Bukkit.getPluginManager().registerEvents(new CaseInsensitiveCommandsListener(), this); - Bukkit.getPluginManager().registerEvents(new PlayerJoinedEvent(), this); - Bukkit.getPluginManager().registerEvents(new ChattingEvent(), this); - Bukkit.getPluginManager().registerEvents(new WorldLoadEvent(), this); getServer().getMessenger().registerIncomingPluginChannel(this, "sw:bridge", new NetworkReceiver()); getServer().getMessenger().registerOutgoingPluginChannel(this, "sw:bridge"); - if(Core.getVersion() < 19) - AuthlibInjector.inject(); + TinyProtocol.init(); - - if(Core.getVersion() < 17 && Bukkit.getPluginManager().getPlugin("ViaVersion") != null) - new PartialChunkFixer(); - - if(Core.getVersion() >= 19) - //new ServerDataHandler(); + LinkageUtils.link(); try { getLogger().log(Level.INFO, "Running on: " + new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec("hostname").getInputStream())).readLine()); diff --git a/SpigotCore_Main/src/de/steamwar/core/authlib/AuthlibInjector.java b/SpigotCore_Main/src/de/steamwar/core/authlib/AuthlibInjector.java index 0c9c188..eb8b90e 100644 --- a/SpigotCore_Main/src/de/steamwar/core/authlib/AuthlibInjector.java +++ b/SpigotCore_Main/src/de/steamwar/core/authlib/AuthlibInjector.java @@ -22,11 +22,16 @@ package de.steamwar.core.authlib; import com.comphenix.tinyprotocol.Reflection; import com.mojang.authlib.GameProfileRepository; import com.mojang.authlib.yggdrasil.YggdrasilGameProfileRepository; +import de.steamwar.linkage.Linked; +import de.steamwar.linkage.MaxVersion; +import de.steamwar.linkage.api.Enable; -public class AuthlibInjector { - private AuthlibInjector() {} +@Linked +@MaxVersion(18) +public class AuthlibInjector implements Enable { - public static void inject() { + @Override + public void enable() { Class minecraftServerClass = Reflection.getClass("{nms.server}.MinecraftServer"); Reflection.FieldAccessor gameProfile = Reflection.getField(minecraftServerClass, GameProfileRepository.class, 0); Object minecraftServer = Reflection.getTypedMethod(minecraftServerClass, "getServer", minecraftServerClass).invoke(null); diff --git a/SpigotCore_Main/src/de/steamwar/core/events/ChattingEvent.java b/SpigotCore_Main/src/de/steamwar/core/events/ChattingEvent.java index 1de582f..a25a491 100644 --- a/SpigotCore_Main/src/de/steamwar/core/events/ChattingEvent.java +++ b/SpigotCore_Main/src/de/steamwar/core/events/ChattingEvent.java @@ -20,15 +20,17 @@ package de.steamwar.core.events; import de.steamwar.core.Core; +import de.steamwar.linkage.Linked; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerChatEvent; +@Linked public class ChattingEvent implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - private void onChat(AsyncPlayerChatEvent event) { + public void onChat(AsyncPlayerChatEvent event) { event.setCancelled(true); Core.MESSAGE.broadcastPrefixless("LOCAL_CHAT", event.getPlayer().getDisplayName(), event.getMessage()); } diff --git a/SpigotCore_Main/src/de/steamwar/core/events/PartialChunkFixer.java b/SpigotCore_Main/src/de/steamwar/core/events/PartialChunkFixer.java index 6efab3c..e80442f 100644 --- a/SpigotCore_Main/src/de/steamwar/core/events/PartialChunkFixer.java +++ b/SpigotCore_Main/src/de/steamwar/core/events/PartialChunkFixer.java @@ -25,6 +25,9 @@ import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.ViaAPI; import de.steamwar.core.Core; import de.steamwar.core.CraftbukkitWrapper; +import de.steamwar.linkage.Linked; +import de.steamwar.linkage.MaxVersion; +import de.steamwar.linkage.PluginCheck; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -35,6 +38,9 @@ import java.util.List; * TinyProtocol can't translate BlockEntities during 1.16 to 1.17 conversions du to removed partial chunk update support. This class cancels PartialChunkUpdates for this players and sends them a complete chunk instead. * This class can only be loaded on 1.9 to 1.15 with active ViaVersion. **/ +@Linked +@MaxVersion(16) +@PluginCheck("ViaVersion") public class PartialChunkFixer { private static final int PROTOCOL1_17 = 755; diff --git a/SpigotCore_Main/src/de/steamwar/core/events/PlayerJoinedEvent.java b/SpigotCore_Main/src/de/steamwar/core/events/PlayerJoinedEvent.java index 8b78106..0e7a156 100644 --- a/SpigotCore_Main/src/de/steamwar/core/events/PlayerJoinedEvent.java +++ b/SpigotCore_Main/src/de/steamwar/core/events/PlayerJoinedEvent.java @@ -19,6 +19,7 @@ package de.steamwar.core.events; +import de.steamwar.linkage.Linked; import de.steamwar.sql.SteamwarUser; import de.steamwar.sql.UserGroup; import org.bukkit.entity.Player; @@ -28,10 +29,11 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; +@Linked public class PlayerJoinedEvent implements Listener{ @EventHandler - private void onJoin(PlayerJoinEvent event) { + public void onJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); SteamwarUser user = SteamwarUser.get(player.getUniqueId()); @@ -45,7 +47,7 @@ public class PlayerJoinedEvent implements Listener{ } @EventHandler - private void onQuit(PlayerQuitEvent event) { + public void onQuit(PlayerQuitEvent event) { Player player = event.getPlayer(); event.setQuitMessage("§c§l« §r" + player.getDisplayName()); diff --git a/SpigotCore_Main/src/de/steamwar/core/events/WorldLoadEvent.java b/SpigotCore_Main/src/de/steamwar/core/events/WorldLoadEvent.java index c28f998..f7aba87 100644 --- a/SpigotCore_Main/src/de/steamwar/core/events/WorldLoadEvent.java +++ b/SpigotCore_Main/src/de/steamwar/core/events/WorldLoadEvent.java @@ -19,10 +19,12 @@ package de.steamwar.core.events; +import de.steamwar.linkage.Linked; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.world.WorldInitEvent; +@Linked public class WorldLoadEvent implements Listener { @EventHandler diff --git a/SpigotCore_Main/src/de/steamwar/network/CoreNetworkHandler.java b/SpigotCore_Main/src/de/steamwar/network/CoreNetworkHandler.java index bf74682..0a07cee 100644 --- a/SpigotCore_Main/src/de/steamwar/network/CoreNetworkHandler.java +++ b/SpigotCore_Main/src/de/steamwar/network/CoreNetworkHandler.java @@ -20,9 +20,12 @@ package de.steamwar.network; import de.steamwar.core.BountifulWrapper; -import de.steamwar.network.handlers.InventoryHandler; +import de.steamwar.linkage.Linked; import de.steamwar.network.packets.PacketHandler; -import de.steamwar.network.packets.server.*; +import de.steamwar.network.packets.server.BaumemberUpdatePacket; +import de.steamwar.network.packets.server.CloseInventoryPacket; +import de.steamwar.network.packets.server.LocaleInvalidationPacket; +import de.steamwar.network.packets.server.PingPacket; import de.steamwar.sql.BauweltMember; import de.steamwar.sql.SteamwarUser; import org.bukkit.Bukkit; @@ -30,13 +33,9 @@ import org.bukkit.entity.Player; import java.util.UUID; +@Linked public class CoreNetworkHandler extends PacketHandler { - public CoreNetworkHandler() { - super(); - new InventoryHandler().register(); - } - @Handler public void handleBaumemberUpdatePacket(BaumemberUpdatePacket packet) { BauweltMember.clear(); @@ -50,11 +49,6 @@ public class CoreNetworkHandler extends PacketHandler { } } - @Handler - public void handleInventoryPacket(InventoryPacket packet) { - InventoryHandler.handleInventoryPacket(packet); - } - @Handler public void handlePingPacket(PingPacket packet) { UUID uuid = SteamwarUser.get(packet.getId()).getUUID(); diff --git a/SpigotCore_Main/src/de/steamwar/network/handlers/InventoryHandler.java b/SpigotCore_Main/src/de/steamwar/network/handlers/InventoryHandler.java index a8a378a..275e908 100644 --- a/SpigotCore_Main/src/de/steamwar/network/handlers/InventoryHandler.java +++ b/SpigotCore_Main/src/de/steamwar/network/handlers/InventoryHandler.java @@ -22,6 +22,7 @@ package de.steamwar.network.handlers; import com.google.gson.JsonParser; import de.steamwar.inventory.SWInventory; import de.steamwar.inventory.SWItem; +import de.steamwar.linkage.Linked; import de.steamwar.network.NetworkSender; import de.steamwar.network.packets.PacketHandler; import de.steamwar.network.packets.client.InventoryCallbackPacket; @@ -34,10 +35,11 @@ import org.bukkit.event.inventory.InventoryType; import java.util.HashMap; import java.util.Map; +@Linked public class InventoryHandler extends PacketHandler { @Handler - public static void handleInventoryPacket(InventoryPacket packet) { + public void handleInventoryPacket(InventoryPacket packet) { Player player = Bukkit.getPlayer(SteamwarUser.get(packet.getPlayer()).getUUID()); Map items = new HashMap<>(); packet.getItems().forEach((i, item) -> { diff --git a/SpigotCore_Main/src/de/steamwar/network/handlers/ServerDataHandler.java b/SpigotCore_Main/src/de/steamwar/network/handlers/ServerDataHandler.java index 0882560..e888db7 100644 --- a/SpigotCore_Main/src/de/steamwar/network/handlers/ServerDataHandler.java +++ b/SpigotCore_Main/src/de/steamwar/network/handlers/ServerDataHandler.java @@ -3,9 +3,11 @@ package de.steamwar.network.handlers; import com.comphenix.tinyprotocol.Reflection; import com.comphenix.tinyprotocol.TinyProtocol; import de.steamwar.core.ChatWrapper; -import de.steamwar.core.CraftbukkitWrapper; +import de.steamwar.linkage.MinVersion; import org.bukkit.entity.Player; +// @Linked +@MinVersion(19) public class ServerDataHandler { private Class serverDataPacket = Reflection.getClass("{nms.network.protocol.game}.ClientboundServerDataPacket");