From 12578293bc9576dcf2965870f063774502d45e7d Mon Sep 17 00:00:00 2001 From: NEZNAMY Date: Mon, 10 Feb 2025 17:14:46 +0100 Subject: [PATCH] [Bukkit] Delete paper submodule as it was not worth it --- build.gradle.kts | 1 - bukkit/paper/build.gradle.kts | 22 --- .../paper/PaperComponentConverter.java | 51 ----- .../tab/platforms/paper/PaperLoader.java | 17 -- .../paper/PaperPacketScoreboard.java | 159 ---------------- .../platforms/paper/PaperPacketTabList.java | 179 ------------------ .../bukkit/BukkitPipelineInjector.java | 27 +-- .../nms/converter/ComponentConverter.java | 18 +- .../bukkit/platform/BukkitPlatform.java | 8 +- .../bukkit/scoreboard/ScoreboardLoader.java | 27 +-- .../platforms/bukkit/tablist/TabListBase.java | 22 +-- jar/build.gradle.kts | 1 - settings.gradle.kts | 3 +- 13 files changed, 16 insertions(+), 519 deletions(-) delete mode 100644 bukkit/paper/build.gradle.kts delete mode 100644 bukkit/paper/src/main/java/me/neznamy/tab/platforms/paper/PaperComponentConverter.java delete mode 100644 bukkit/paper/src/main/java/me/neznamy/tab/platforms/paper/PaperLoader.java delete mode 100644 bukkit/paper/src/main/java/me/neznamy/tab/platforms/paper/PaperPacketScoreboard.java delete mode 100644 bukkit/paper/src/main/java/me/neznamy/tab/platforms/paper/PaperPacketTabList.java diff --git a/build.gradle.kts b/build.gradle.kts index 858aec41c..d6791fd7c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,7 +14,6 @@ allprojects { val platforms = setOf( projects.bukkit, - projects.bukkit.paper, projects.bungeecord, projects.velocity, projects.sponge7, diff --git a/bukkit/paper/build.gradle.kts b/bukkit/paper/build.gradle.kts deleted file mode 100644 index bacaf18ce..000000000 --- a/bukkit/paper/build.gradle.kts +++ /dev/null @@ -1,22 +0,0 @@ -plugins { - id("io.papermc.paperweight.userdev") version "2.0.0-beta.8" -} - -repositories { - maven("https://jitpack.io") // YamlAssist - maven("https://repo.opencollab.dev/maven-snapshots/") - maven("https://repo.viaversion.com/") - maven("https://oss.sonatype.org/content/repositories/snapshots") -} - -val version = "1.21.4-R0.1-SNAPSHOT" - -dependencies { - implementation(projects.bukkit) - paperweight.paperDevBundle(version) - compileOnly("io.papermc.paper:paper-api:${version}") -} - -tasks.compileJava { - options.release.set(21) -} \ No newline at end of file diff --git a/bukkit/paper/src/main/java/me/neznamy/tab/platforms/paper/PaperComponentConverter.java b/bukkit/paper/src/main/java/me/neznamy/tab/platforms/paper/PaperComponentConverter.java deleted file mode 100644 index bdc6e15f4..000000000 --- a/bukkit/paper/src/main/java/me/neznamy/tab/platforms/paper/PaperComponentConverter.java +++ /dev/null @@ -1,51 +0,0 @@ -package me.neznamy.tab.platforms.paper; - -import me.neznamy.chat.ChatModifier; -import me.neznamy.tab.platforms.bukkit.nms.converter.ComponentConverter; -import net.minecraft.network.chat.*; -import net.minecraft.resources.ResourceLocation; -import org.jetbrains.annotations.NotNull; - -/** - * Component converter using direct mojang-mapped code for versions 1.21.4+. - */ -@SuppressWarnings("unused") // Used via reflection -public class PaperComponentConverter extends ComponentConverter { - - @Override - @NotNull - public Object newTextComponent(@NotNull String text) { - return Component.literal(text); - } - - @Override - @NotNull - public Object newTranslatableComponent(@NotNull String key) { - return Component.translatable(key); - } - - @Override - @NotNull - public Object newKeybindComponent(@NotNull String keybind) { - return Component.keybind(keybind); - } - - @Override - public void applyStyle(@NotNull Object nmsComponent, @NotNull ChatModifier modifier) { - Style style = Style.EMPTY - .withColor(modifier.getColor() == null ? null : TextColor.fromRgb(modifier.getColor().getRgb())) - .withBold(modifier.getBold()) - .withItalic(modifier.getItalic()) - .withUnderlined(modifier.getUnderlined()) - .withStrikethrough(modifier.getStrikethrough()) - .withObfuscated(modifier.getObfuscated()) - .withFont(modifier.getFont() == null ? null : ResourceLocation.tryParse(modifier.getFont())); - if (modifier.getShadowColor() != null) style = style.withShadowColor(modifier.getShadowColor()); // withShadowColor takes int instead of Integer, bug? - ((MutableComponent)nmsComponent).setStyle(style); - } - - @Override - public void addSibling(@NotNull Object parent, @NotNull Object child) { - ((MutableComponent)parent).append((Component) child); - } -} diff --git a/bukkit/paper/src/main/java/me/neznamy/tab/platforms/paper/PaperLoader.java b/bukkit/paper/src/main/java/me/neznamy/tab/platforms/paper/PaperLoader.java deleted file mode 100644 index 299077105..000000000 --- a/bukkit/paper/src/main/java/me/neznamy/tab/platforms/paper/PaperLoader.java +++ /dev/null @@ -1,17 +0,0 @@ -package me.neznamy.tab.platforms.paper; - -import io.netty.channel.Channel; -import me.neznamy.tab.platforms.bukkit.BukkitTabPlayer; -import me.neznamy.tab.shared.util.function.FunctionWithException; -import org.bukkit.craftbukkit.entity.CraftPlayer; - -/** - * Loader for 1.20.5+ Paper to speed up functions by using direct NMS code instead of reflection. - */ -@SuppressWarnings("unused") // Via reflection -public class PaperLoader { - - /** Channel getter using direct NMS code */ - public static final FunctionWithException getChannel = - player -> ((CraftPlayer)player.getPlayer()).getHandle().connection.connection.channel; -} diff --git a/bukkit/paper/src/main/java/me/neznamy/tab/platforms/paper/PaperPacketScoreboard.java b/bukkit/paper/src/main/java/me/neznamy/tab/platforms/paper/PaperPacketScoreboard.java deleted file mode 100644 index 51911c42c..000000000 --- a/bukkit/paper/src/main/java/me/neznamy/tab/platforms/paper/PaperPacketScoreboard.java +++ /dev/null @@ -1,159 +0,0 @@ -package me.neznamy.tab.platforms.paper; - -import lombok.NonNull; -import lombok.SneakyThrows; -import me.neznamy.tab.platforms.bukkit.BukkitTabPlayer; -import me.neznamy.tab.shared.TAB; -import me.neznamy.tab.shared.platform.decorators.SafeScoreboard; -import me.neznamy.tab.shared.util.ReflectionUtils; -import net.minecraft.ChatFormatting; -import net.minecraft.network.chat.numbers.FixedFormat; -import net.minecraft.network.protocol.Packet; -import net.minecraft.network.protocol.game.*; -import net.minecraft.world.scores.PlayerTeam; -import net.minecraft.world.scores.Scoreboard; -import net.minecraft.world.scores.criteria.ObjectiveCriteria; -import org.bukkit.craftbukkit.entity.CraftPlayer; -import org.jetbrains.annotations.NotNull; - -import java.lang.reflect.Field; -import java.util.Collections; -import java.util.Optional; - -/** - * Scoreboard implementation using direct mojang-mapped code for versions 1.20.5+. - */ -@SuppressWarnings("unused") // Used via reflection -public class PaperPacketScoreboard extends SafeScoreboard { - - private static final ChatFormatting[] formats = ChatFormatting.values(); - private static final net.minecraft.world.scores.Team.CollisionRule[] collisions = net.minecraft.world.scores.Team.CollisionRule.values(); - private static final net.minecraft.world.scores.Team.Visibility[] visibilities = net.minecraft.world.scores.Team.Visibility.values(); - private static final Scoreboard dummyScoreboard = new Scoreboard(); - private static final Field method; - private static final Field players; - - static { - try { - method = ReflectionUtils.setAccessible(ClientboundSetPlayerTeamPacket.class.getDeclaredField("method")); - players = ReflectionUtils.setAccessible(ClientboundSetPlayerTeamPacket.class.getDeclaredField("players")); - } catch (NoSuchFieldException e) { - throw new RuntimeException(e); - } - } - - /** - * Constructs new instance with given player. - * - * @param player - * Player this scoreboard will belong to - */ - public PaperPacketScoreboard(@NotNull BukkitTabPlayer player) { - super(player); - } - - @Override - public void registerObjective(@NonNull Objective objective) { - net.minecraft.world.scores.Objective obj = new net.minecraft.world.scores.Objective( - dummyScoreboard, - objective.getName(), - ObjectiveCriteria.DUMMY, - objective.getTitle().convert(), - ObjectiveCriteria.RenderType.values()[objective.getHealthDisplay().ordinal()], - false, - objective.getNumberFormat() == null ? null : objective.getNumberFormat().toFixedFormat(FixedFormat::new) - ); - objective.setPlatformObjective(obj); - sendPacket(new ClientboundSetObjectivePacket(obj, ObjectiveAction.REGISTER)); - sendPacket(new ClientboundSetDisplayObjectivePacket(net.minecraft.world.scores.DisplaySlot.values()[objective.getDisplaySlot().ordinal()], obj)); - } - - @Override - public void unregisterObjective(@NonNull Objective objective) { - sendPacket(new ClientboundSetObjectivePacket((net.minecraft.world.scores.Objective) objective.getPlatformObjective(), ObjectiveAction.UNREGISTER)); - } - - @Override - public void updateObjective(@NonNull Objective objective) { - net.minecraft.world.scores.Objective obj = (net.minecraft.world.scores.Objective) objective.getPlatformObjective(); - obj.setDisplayName(objective.getTitle().convert()); - obj.setRenderType(ObjectiveCriteria.RenderType.values()[objective.getHealthDisplay().ordinal()]); - sendPacket(new ClientboundSetObjectivePacket(obj, ObjectiveAction.UPDATE)); - } - - @Override - public void setScore(@NonNull Score score) { - sendPacket( - new ClientboundSetScorePacket( - score.getHolder(), - score.getObjective().getName(), - score.getValue(), - Optional.ofNullable(score.getDisplayName() == null ? null : score.getDisplayName().convert()), - Optional.ofNullable(score.getNumberFormat() == null ? null : score.getNumberFormat().toFixedFormat(FixedFormat::new)) - ) - ); - } - - @Override - public void removeScore(@NonNull Score score) { - sendPacket(new ClientboundResetScorePacket(score.getHolder(), score.getObjective().getName())); - } - - @Override - @NotNull - public Object createTeam(@NonNull String name) { - return new PlayerTeam(dummyScoreboard, name); - } - - @Override - public void registerTeam(@NonNull Team team) { - updateTeamProperties(team); - PlayerTeam t = (PlayerTeam) team.getPlatformTeam(); - t.getPlayers().addAll(team.getPlayers()); - sendPacket(ClientboundSetPlayerTeamPacket.createAddOrModifyPacket(t, true)); - } - - @Override - public void unregisterTeam(@NonNull Team team) { - sendPacket(ClientboundSetPlayerTeamPacket.createRemovePacket((PlayerTeam) team.getPlatformTeam())); - } - - @Override - public void updateTeam(@NonNull Team team) { - updateTeamProperties(team); - sendPacket(ClientboundSetPlayerTeamPacket.createAddOrModifyPacket((PlayerTeam) team.getPlatformTeam(), false)); - } - - private void updateTeamProperties(@NonNull Team team) { - PlayerTeam t = (PlayerTeam) team.getPlatformTeam(); - t.setAllowFriendlyFire((team.getOptions() & 0x01) != 0); - t.setSeeFriendlyInvisibles((team.getOptions() & 0x02) != 0); - t.setColor(formats[team.getColor().getLegacyColor().ordinal()]); - t.setCollisionRule(collisions[team.getCollision().ordinal()]); - t.setNameTagVisibility(visibilities[team.getVisibility().ordinal()]); - t.setPlayerPrefix(team.getPrefix().convert()); - t.setPlayerSuffix(team.getSuffix().convert()); - } - - @Override - @SneakyThrows - public void onPacketSend(@NonNull Object packet) { - if (isAntiOverrideScoreboard()) { - if (packet instanceof ClientboundSetDisplayObjectivePacket display) { - TAB.getInstance().getFeatureManager().onDisplayObjective(player, display.getSlot().ordinal(), display.getObjectiveName()); - } - if (packet instanceof ClientboundSetObjectivePacket objective) { - TAB.getInstance().getFeatureManager().onObjective(player, objective.getMethod(), objective.getObjectiveName()); - } - } - if (isAntiOverrideTeams() && packet instanceof ClientboundSetPlayerTeamPacket team) { - int action = method.getInt(team); - if (action == TeamAction.UPDATE) return; - players.set(team, onTeamPacket(action, team.getName(), team.getPlayers() == null ? Collections.emptyList() : team.getPlayers())); - } - } - - private void sendPacket(@NotNull Packet packet) { - ((CraftPlayer)player.getPlayer()).getHandle().connection.sendPacket(packet); - } -} diff --git a/bukkit/paper/src/main/java/me/neznamy/tab/platforms/paper/PaperPacketTabList.java b/bukkit/paper/src/main/java/me/neznamy/tab/platforms/paper/PaperPacketTabList.java deleted file mode 100644 index 023c971e4..000000000 --- a/bukkit/paper/src/main/java/me/neznamy/tab/platforms/paper/PaperPacketTabList.java +++ /dev/null @@ -1,179 +0,0 @@ -package me.neznamy.tab.platforms.paper; - -import com.mojang.authlib.GameProfile; -import com.mojang.authlib.properties.Property; -import lombok.NonNull; -import lombok.SneakyThrows; -import me.neznamy.chat.component.TabComponent; -import me.neznamy.tab.platforms.bukkit.BukkitTabPlayer; -import me.neznamy.tab.platforms.bukkit.tablist.TabListBase; -import me.neznamy.tab.shared.TAB; -import me.neznamy.tab.shared.platform.TabList; -import me.neznamy.tab.shared.util.ReflectionUtils; -import net.minecraft.network.chat.Component; -import net.minecraft.network.protocol.Packet; -import net.minecraft.network.protocol.game.ClientboundPlayerInfoRemovePacket; -import net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket; -import net.minecraft.network.protocol.game.ClientboundTabListPacket; -import net.minecraft.world.level.GameType; -import org.bukkit.craftbukkit.entity.CraftPlayer; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.lang.reflect.Field; -import java.util.*; - -/** - * TabList implementation using direct mojang-mapped code for versions 1.21.4+. - */ -@SuppressWarnings("unused") // Used via reflection -public class PaperPacketTabList extends TabListBase { - - private static final EnumSet updateDisplayName = EnumSet.of(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME); - private static final EnumSet updateLatency = EnumSet.of(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_LATENCY); - private static final EnumSet updateGameMode = EnumSet.of(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_GAME_MODE); - private static final EnumSet updateListed = EnumSet.of(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_LISTED); - private static final EnumSet updateListOrder = EnumSet.of(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_LIST_ORDER); - private static final EnumSet updateHat = EnumSet.of(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_HAT); - private static final EnumSet addPlayer = EnumSet.allOf(ClientboundPlayerInfoUpdatePacket.Action.class); - - private static final Field entries; - - static { - try { - entries = ReflectionUtils.setAccessible(ClientboundPlayerInfoUpdatePacket.class.getDeclaredField("entries")); - } catch (NoSuchFieldException e) { - throw new RuntimeException(e); - } - } - - /** - * Constructs new instance. - * - * @param player - * Player this tablist will belong to - */ - public PaperPacketTabList(@NotNull BukkitTabPlayer player) { - super(player); - } - - @Override - public void removeEntry(@NonNull UUID entry) { - sendPacket(new ClientboundPlayerInfoRemovePacket(Collections.singletonList(entry))); - } - - @Override - public void updateDisplayName(@NonNull UUID entry, @Nullable Component displayName) { - sendPacket(new ClientboundPlayerInfoUpdatePacket(updateDisplayName, new ClientboundPlayerInfoUpdatePacket.Entry( - entry, null, false, 0, null, displayName, false, 0, null - ))); - } - - @Override - public void updateLatency(@NonNull UUID entry, int latency) { - sendPacket(new ClientboundPlayerInfoUpdatePacket(updateLatency, new ClientboundPlayerInfoUpdatePacket.Entry( - entry, null, false, latency, null, null, false, 0, null - ))); - } - - @Override - public void updateGameMode(@NonNull UUID entry, int gameMode) { - sendPacket(new ClientboundPlayerInfoUpdatePacket(updateGameMode, new ClientboundPlayerInfoUpdatePacket.Entry( - entry, null, false, 0, GameType.byId(gameMode), null, false, 0, null - ))); - } - - @Override - public void updateListed(@NonNull UUID entry, boolean listed) { - sendPacket(new ClientboundPlayerInfoUpdatePacket(updateListed, new ClientboundPlayerInfoUpdatePacket.Entry( - entry, null, listed, 0, null, null, false, 0, null - ))); - } - - @Override - public void updateListOrder(@NonNull UUID entry, int listOrder) { - sendPacket(new ClientboundPlayerInfoUpdatePacket(updateListOrder, new ClientboundPlayerInfoUpdatePacket.Entry( - entry, null, false, 0, null, null, false, listOrder, null - ))); - } - - @Override - public void updateHat(@NonNull UUID entry, boolean showHat) { - sendPacket(new ClientboundPlayerInfoUpdatePacket(updateHat, new ClientboundPlayerInfoUpdatePacket.Entry( - entry, null, false, 0, null, null, showHat, 0, null - ))); - } - - @Override - public void addEntry(@NonNull UUID id, @NonNull String name, @Nullable Skin skin, boolean listed, int latency, - int gameMode, @Nullable Component displayName, int listOrder, boolean showHat) { - sendPacket(new ClientboundPlayerInfoUpdatePacket(addPlayer, new ClientboundPlayerInfoUpdatePacket.Entry( - id, createProfile(id, name, skin), listed, latency, GameType.byId(gameMode), displayName, showHat, listOrder, null - ))); - } - - @Override - public void setPlayerListHeaderFooter(@NonNull TabComponent header, @NonNull TabComponent footer) { - sendPacket(new ClientboundTabListPacket(header.convert(), footer.convert())); - } - - @Override - @SneakyThrows - public void onPacketSend(@NonNull Object packet) { - if (packet instanceof ClientboundPlayerInfoUpdatePacket info) { - EnumSet actions = info.actions(); - List updatedList = new ArrayList<>(); - boolean rewritePacket = false; - for (ClientboundPlayerInfoUpdatePacket.Entry nmsData : info.entries()) { - boolean rewriteEntry = false; - Component displayName = nmsData.displayName(); - int latency = nmsData.latency(); - if (actions.contains(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME)) { - Component expectedDisplayName = getExpectedDisplayNames().get(nmsData.profileId()); - if (expectedDisplayName != null) { - displayName = expectedDisplayName; - rewriteEntry = rewritePacket = true; - } - } - if (actions.contains(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_LATENCY)) { - int newLatency = TAB.getInstance().getFeatureManager().onLatencyChange(player, nmsData.profileId(), latency); - if (newLatency != latency) { - latency = newLatency; - rewriteEntry = rewritePacket = true; - } - } - if (actions.contains(ClientboundPlayerInfoUpdatePacket.Action.ADD_PLAYER)) { - TAB.getInstance().getFeatureManager().onEntryAdd(player, nmsData.profileId(), nmsData.profile().getName()); - } - updatedList.add(rewriteEntry ? new ClientboundPlayerInfoUpdatePacket.Entry( - nmsData.profileId(), nmsData.profile(), nmsData.listed(), latency, nmsData.gameMode(), displayName, - nmsData.showHat(), nmsData.listOrder(), nmsData.chatSession() - ) : nmsData); - } - if (rewritePacket) entries.set(info, updatedList); - } - } - - @Override - @Nullable - public Skin getSkin() { - Collection col = ((CraftPlayer)player.getPlayer()).getProfile().getProperties().get(TEXTURES_PROPERTY); - if (col.isEmpty()) return null; //offline mode - Property property = col.iterator().next(); - return new TabList.Skin(property.value(), property.signature()); - } - - @NotNull - private GameProfile createProfile(@NotNull UUID id, @NotNull String name, @Nullable Skin skin) { - GameProfile profile = new GameProfile(id, name); - if (skin != null) { - profile.getProperties().put(TabList.TEXTURES_PROPERTY, - new Property(TabList.TEXTURES_PROPERTY, skin.getValue(), skin.getSignature())); - } - return profile; - } - - private void sendPacket(@NotNull Packet packet) { - ((CraftPlayer)player.getPlayer()).getHandle().connection.sendPacket(packet); - } -} diff --git a/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/BukkitPipelineInjector.java b/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/BukkitPipelineInjector.java index 52db14644..ee91f5afe 100644 --- a/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/BukkitPipelineInjector.java +++ b/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/BukkitPipelineInjector.java @@ -4,32 +4,19 @@ import lombok.Setter; import lombok.SneakyThrows; import me.neznamy.tab.platforms.bukkit.nms.BukkitReflection; -import me.neznamy.tab.shared.ProtocolVersion; import me.neznamy.tab.shared.features.injection.NettyPipelineInjector; import me.neznamy.tab.shared.platform.TabPlayer; -import me.neznamy.tab.shared.util.function.FunctionWithException; import me.neznamy.tab.shared.util.ReflectionUtils; +import me.neznamy.tab.shared.util.function.FunctionWithException; import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; -import java.util.EnumSet; /** * Pipeline injection for Bukkit 1.8+. */ public class BukkitPipelineInjector extends NettyPipelineInjector { - /** Versions supported by paper module that uses direct mojang-mapped NMS for latest MC version */ - private static final EnumSet paperNativeVersions = EnumSet.of( - ProtocolVersion.V1_20_5, - ProtocolVersion.V1_20_6, - ProtocolVersion.V1_21, - ProtocolVersion.V1_21_1, - ProtocolVersion.V1_21_2, - ProtocolVersion.V1_21_3, - ProtocolVersion.V1_21_4 - ); - /** Function for getting player's channel */ @Setter private static FunctionWithException getChannel; @@ -43,18 +30,10 @@ public BukkitPipelineInjector() { /** * Attempts to load required classes, fields and methods and marks class as available. - * If something fails, error message is printed and class is not marked as available. - * - * @param serverVersion - * Server version + * If something fails, an error message is printed and class is not marked as available. */ - @SuppressWarnings("unchecked") - public static void tryLoad(@NotNull ProtocolVersion serverVersion) { + public static void tryLoad() { try { - if (ReflectionUtils.classExists("org.bukkit.craftbukkit.CraftServer") && paperNativeVersions.contains(serverVersion)) { - getChannel = (FunctionWithException) Class.forName("me.neznamy.tab.platforms.paper.PaperLoader").getDeclaredField("getChannel").get(null); - return; - } Class NetworkManager = BukkitReflection.getClass("network.Connection", "network.NetworkManager", "NetworkManager"); Class PlayerConnection = BukkitReflection.getClass("server.network.ServerGamePacketListenerImpl", "server.network.PlayerConnection", "PlayerConnection"); diff --git a/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/nms/converter/ComponentConverter.java b/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/nms/converter/ComponentConverter.java index e97a0ed4e..9f99233e0 100644 --- a/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/nms/converter/ComponentConverter.java +++ b/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/nms/converter/ComponentConverter.java @@ -7,23 +7,14 @@ import me.neznamy.chat.component.TranslatableComponent; import me.neznamy.tab.platforms.bukkit.BukkitUtils; import me.neznamy.tab.platforms.bukkit.nms.BukkitReflection; -import me.neznamy.tab.shared.ProtocolVersion; -import me.neznamy.tab.shared.util.ReflectionUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.EnumSet; - /** * Interface for converting TAB components into NMS components (1.7+). */ public abstract class ComponentConverter { - /** Versions supported by paper module that uses direct mojang-mapped NMS */ - private static final EnumSet paperNativeVersions = EnumSet.of( - ProtocolVersion.V1_21_4 - ); - /** Instance of this class */ @Nullable public static ComponentConverter INSTANCE; @@ -112,15 +103,10 @@ public Object convert(@NotNull TabComponent component) { /** * Attempts to load component converter. - * - * @param serverVersion - * Server version */ - public static void tryLoad(@NotNull ProtocolVersion serverVersion) { + public static void tryLoad() { try { - if (ReflectionUtils.classExists("org.bukkit.craftbukkit.CraftServer") && paperNativeVersions.contains(serverVersion)) { - INSTANCE = (ComponentConverter) Class.forName("me.neznamy.tab.platforms.paper.PaperComponentConverter").getConstructor().newInstance(); - } else if (BukkitReflection.getMinorVersion() >= 19) { + if (BukkitReflection.getMinorVersion() >= 19) { // 1.19+ INSTANCE = new ModernComponentConverter(); } else if (BukkitReflection.getMinorVersion() >= 16) { diff --git a/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/platform/BukkitPlatform.java b/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/platform/BukkitPlatform.java index c7a9fb10b..1af905159 100644 --- a/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/platform/BukkitPlatform.java +++ b/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/platform/BukkitPlatform.java @@ -92,12 +92,12 @@ public BukkitPlatform(@NotNull JavaPlugin plugin) { new BukkitPremiumVanishHook().register(); } PingRetriever.tryLoad(); - ComponentConverter.tryLoad(serverVersion); - ScoreboardLoader.findInstance(serverVersion); - TabListBase.findInstance(serverVersion); + ComponentConverter.tryLoad(); + ScoreboardLoader.findInstance(); + TabListBase.findInstance(); if (BukkitReflection.getMinorVersion() >= 8) { HeaderFooter.findInstance(); - BukkitPipelineInjector.tryLoad(serverVersion); + BukkitPipelineInjector.tryLoad(); } BukkitUtils.sendCompatibilityMessage(); Bukkit.getConsoleSender().sendMessage("[TAB] ยง7Loaded NMS hook in " + (System.currentTimeMillis()-time) + "ms"); diff --git a/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/scoreboard/ScoreboardLoader.java b/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/scoreboard/ScoreboardLoader.java index b742b0fb0..a35958a56 100644 --- a/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/scoreboard/ScoreboardLoader.java +++ b/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/scoreboard/ScoreboardLoader.java @@ -3,20 +3,15 @@ import com.google.common.collect.Lists; import lombok.Getter; import lombok.Setter; -import lombok.SneakyThrows; import me.neznamy.tab.platforms.bukkit.BukkitTabPlayer; import me.neznamy.tab.platforms.bukkit.BukkitUtils; import me.neznamy.tab.platforms.bukkit.nms.BukkitReflection; import me.neznamy.tab.platforms.bukkit.scoreboard.packet.PacketScoreboard; -import me.neznamy.tab.shared.ProtocolVersion; import me.neznamy.tab.shared.platform.Scoreboard; import me.neznamy.tab.shared.platform.impl.DummyScoreboard; import me.neznamy.tab.shared.util.function.FunctionWithException; -import me.neznamy.tab.shared.util.ReflectionUtils; import org.jetbrains.annotations.NotNull; -import java.lang.reflect.Constructor; -import java.util.EnumSet; import java.util.List; /** @@ -24,17 +19,6 @@ */ public class ScoreboardLoader { - /** Versions supported by paper module that uses direct mojang-mapped NMS for latest MC version */ - private static final EnumSet paperNativeVersions = EnumSet.of( - ProtocolVersion.V1_20_5, - ProtocolVersion.V1_20_6, - ProtocolVersion.V1_21, - ProtocolVersion.V1_21_1, - ProtocolVersion.V1_21_2, - ProtocolVersion.V1_21_3, - ProtocolVersion.V1_21_4 - ); - /** Instance function */ @Getter @Setter @@ -43,16 +27,9 @@ public class ScoreboardLoader { /** * Finds the best available instance for current server software. - * - * @param serverVersion - * Server version */ - @SneakyThrows - public static void findInstance(@NotNull ProtocolVersion serverVersion) { - if (ReflectionUtils.classExists("org.bukkit.craftbukkit.CraftServer") && paperNativeVersions.contains(serverVersion)) { - Constructor constructor = Class.forName("me.neznamy.tab.platforms.paper.PaperPacketScoreboard").getConstructor(BukkitTabPlayer.class); - instance = player -> (Scoreboard) constructor.newInstance(player); - } else if (PacketScoreboard.isAvailable()) { + public static void findInstance() { + if (PacketScoreboard.isAvailable()) { instance = PacketScoreboard::new; } else if (PaperScoreboard.isAvailable()) { instance = PaperScoreboard::new; diff --git a/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/tablist/TabListBase.java b/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/tablist/TabListBase.java index 963126c6c..a932712e0 100644 --- a/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/tablist/TabListBase.java +++ b/bukkit/src/main/java/me/neznamy/tab/platforms/bukkit/tablist/TabListBase.java @@ -3,20 +3,17 @@ import lombok.Getter; import lombok.NonNull; import lombok.Setter; +import me.neznamy.chat.component.TabComponent; import me.neznamy.tab.platforms.bukkit.BukkitTabPlayer; import me.neznamy.tab.platforms.bukkit.BukkitUtils; import me.neznamy.tab.platforms.bukkit.header.HeaderFooter; import me.neznamy.tab.platforms.bukkit.nms.BukkitReflection; -import me.neznamy.tab.shared.ProtocolVersion; -import me.neznamy.chat.component.TabComponent; import me.neznamy.tab.shared.platform.decorators.TrackedTabList; -import me.neznamy.tab.shared.util.function.FunctionWithException; import me.neznamy.tab.shared.util.ReflectionUtils; +import me.neznamy.tab.shared.util.function.FunctionWithException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.lang.reflect.Constructor; -import java.util.EnumSet; import java.util.UUID; /** @@ -27,11 +24,6 @@ */ public abstract class TabListBase extends TrackedTabList { - /** Versions supported by paper module that uses direct mojang-mapped NMS for latest MC version */ - private static final EnumSet paperNativeVersions = EnumSet.of( - ProtocolVersion.V1_21_4 - ); - /** Instance function */ @Getter @Setter @@ -52,16 +44,10 @@ protected TabListBase(@NotNull BukkitTabPlayer player) { /** * Finds the best available instance for current server software. - * - * @param serverVersion - * Server version */ - public static void findInstance(@NotNull ProtocolVersion serverVersion) { + public static void findInstance() { try { - if (ReflectionUtils.classExists("org.bukkit.craftbukkit.CraftServer") && paperNativeVersions.contains(serverVersion)) { - Constructor constructor = Class.forName("me.neznamy.tab.platforms.paper.PaperPacketTabList").getConstructor(BukkitTabPlayer.class); - instance = player -> (TabListBase) constructor.newInstance(player); - } else if (ReflectionUtils.classExists("net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket")) { + if (ReflectionUtils.classExists("net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket")) { PacketTabList1193.loadNew(); instance = PacketTabList1193::new; } else if (BukkitReflection.getMinorVersion() >= 8) { diff --git a/jar/build.gradle.kts b/jar/build.gradle.kts index d07576b57..72491efd0 100644 --- a/jar/build.gradle.kts +++ b/jar/build.gradle.kts @@ -6,7 +6,6 @@ plugins { val platforms = setOf( rootProject.projects.bukkit, - rootProject.projects.bukkit.paper, rootProject.projects.bungeecord, rootProject.projects.velocity, rootProject.projects.sponge7, diff --git a/settings.gradle.kts b/settings.gradle.kts index 7f006eaa0..5016f9408 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -4,7 +4,7 @@ dependencyResolutionManagement { repositories { mavenCentral() // Netty, SnakeYaml, json-simple, Guava, Kyori event, bStats, AuthLib, LuckPerms maven("https://repo.william278.net/releases/") // VelocityScoreboardAPI - maven("https://repo.papermc.io/repository/maven-public/") // paperweight, Velocity + maven("https://repo.papermc.io/repository/maven-public/") // Velocity maven("https://repo.extendedclip.com/content/repositories/placeholderapi/") // PlaceholderAPI maven("https://repo.viaversion.com/") // ViaVersion maven("https://repo.opencollab.dev/maven-snapshots/") // Floodgate, Bungeecord-proxy @@ -35,7 +35,6 @@ include(":bossbar:bossbar-shared") include(":bossbar:bossbar-sponge7") include(":bossbar:bossbar-velocity") include(":bukkit") -include(":bukkit:paper") include(":bungeecord") include(":component") include(":fabric")