From 598b51a4bf0eb483576f3294e4042835fee2c3ad Mon Sep 17 00:00:00 2001 From: KennyTV <28825609+KennyTV@users.noreply.github.com> Date: Wed, 22 Jan 2020 14:55:39 +0100 Subject: [PATCH] Do not unnecessarily register tasks/listeners --- .../bukkit/platform/BukkitViaLoader.java | 42 +++++++++---------- .../java/us/myles/ViaVersion/ViaManager.java | 14 +++++++ .../api/platform/ViaPlatformLoader.java | 1 + .../ChatItemRewriter.java | 2 +- .../Protocol1_13To1_12_2.java | 3 -- .../storage/BlockConnectionStorage.java | 4 +- .../protocol1_9to1_8/Protocol1_9To1_8.java | 3 -- 7 files changed, 37 insertions(+), 32 deletions(-) diff --git a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaLoader.java b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaLoader.java index 8b0ef97a8..bc036be75 100644 --- a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaLoader.java +++ b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaLoader.java @@ -33,7 +33,6 @@ import java.util.HashSet; import java.util.Locale; import java.util.Set; import java.util.UUID; -import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; public class BukkitViaLoader implements ViaPlatformLoader { @@ -80,6 +79,11 @@ public class BukkitViaLoader implements ViaPlatformLoader { storeListener(new ArmorListener(plugin)).register(); storeListener(new DeathListener(plugin)).register(); storeListener(new BlockListener(plugin)).register(); + + if (plugin.getConf().isItemCache()) { + handItemCache = new HandItemCache(); + tasks.add(handItemCache.runTaskTimerAsynchronously(plugin, 2L, 2L)); // Updates player's items :) + } } if (ProtocolRegistry.SERVER_PROTOCOL < ProtocolVersion.v1_14.getId()) { @@ -101,10 +105,6 @@ public class BukkitViaLoader implements ViaPlatformLoader { plugin.getLogger().info("Enabling Paper/TacoSpigot/Torch patch: Fixes block placement."); storeListener(new PaperPatch(plugin)).register(); } - if (plugin.getConf().isItemCache()) { - handItemCache = new HandItemCache(); - tasks.add(handItemCache.runTaskTimerAsynchronously(plugin, 2L, 2L)); // Updates player's items :) - } /* Providers */ if (ProtocolRegistry.SERVER_PROTOCOL < ProtocolVersion.v1_9.getId()) { @@ -116,25 +116,21 @@ public class BukkitViaLoader implements ViaPlatformLoader { public Item getHandItem(final UserConnection info) { if (handItemCache != null) { return handItemCache.getHandItem(info.get(ProtocolInfo.class).getUuid()); - } else { - try { - return Bukkit.getScheduler().callSyncMethod(Bukkit.getPluginManager().getPlugin("ViaVersion"), new Callable() { - @Override - public Item call() throws Exception { - UUID playerUUID = info.get(ProtocolInfo.class).getUuid(); - Player player = Bukkit.getPlayer(playerUUID); - if (player != null) { - return HandItemCache.convert(player.getItemInHand()); - } - return null; - } - }).get(10, TimeUnit.SECONDS); - } catch (Exception e) { - Via.getPlatform().getLogger().severe("Error fetching hand item: " + e.getClass().getName()); - if (Via.getManager().isDebug()) - e.printStackTrace(); + } + try { + return Bukkit.getScheduler().callSyncMethod(Bukkit.getPluginManager().getPlugin("ViaVersion"), () -> { + UUID playerUUID = info.get(ProtocolInfo.class).getUuid(); + Player player = Bukkit.getPlayer(playerUUID); + if (player != null) { + return HandItemCache.convert(player.getItemInHand()); + } return null; - } + }).get(10, TimeUnit.SECONDS); + } catch (Exception e) { + Via.getPlatform().getLogger().severe("Error fetching hand item: " + e.getClass().getName()); + if (Via.getManager().isDebug()) + e.printStackTrace(); + return null; } } }); diff --git a/common/src/main/java/us/myles/ViaVersion/ViaManager.java b/common/src/main/java/us/myles/ViaVersion/ViaManager.java index 25563b050..515c1920b 100644 --- a/common/src/main/java/us/myles/ViaVersion/ViaManager.java +++ b/common/src/main/java/us/myles/ViaVersion/ViaManager.java @@ -3,6 +3,7 @@ package us.myles.ViaVersion; import lombok.Builder; import lombok.Getter; import lombok.Setter; +import us.myles.ViaVersion.api.Via; import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.platform.ViaInjector; import us.myles.ViaVersion.api.platform.ViaPlatform; @@ -12,6 +13,8 @@ import us.myles.ViaVersion.api.protocol.ProtocolRegistry; import us.myles.ViaVersion.api.protocol.ProtocolVersion; import us.myles.ViaVersion.commands.ViaCommandHandler; import us.myles.ViaVersion.protocols.base.ProtocolInfo; +import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.TabCompleteThread; +import us.myles.ViaVersion.protocols.protocol1_9to1_8.ViaIdleThread; import us.myles.ViaVersion.update.UpdateUtil; import java.util.Map; @@ -83,6 +86,17 @@ public class ViaManager { // Load Platform loader.load(); + // Common tasks + if (ProtocolRegistry.SERVER_PROTOCOL < ProtocolVersion.v1_9.getId()) { + if (Via.getConfig().isSimulatePlayerTick()) { + Via.getPlatform().runRepeatingSync(new ViaIdleThread(), 1L); + } + } + if (ProtocolRegistry.SERVER_PROTOCOL < ProtocolVersion.v1_13.getId()) { + if (Via.getConfig().get1_13TabCompleteDelay() > 0) { + Via.getPlatform().runRepeatingSync(new TabCompleteThread(), 1L); + } + } // Refresh Versions ProtocolRegistry.refreshVersions(); diff --git a/common/src/main/java/us/myles/ViaVersion/api/platform/ViaPlatformLoader.java b/common/src/main/java/us/myles/ViaVersion/api/platform/ViaPlatformLoader.java index 68930aebc..360cdc097 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/platform/ViaPlatformLoader.java +++ b/common/src/main/java/us/myles/ViaVersion/api/platform/ViaPlatformLoader.java @@ -1,6 +1,7 @@ package us.myles.ViaVersion.api.platform; public interface ViaPlatformLoader { + /** * Initialise the loading for a platform, eg. registering listeners / providers / events etc. */ diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java index 422976c97..3f3963ea1 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java @@ -9,7 +9,7 @@ import us.myles.ViaVersion.api.data.UserConnection; import java.util.regex.Pattern; public class ChatItemRewriter { - private static Pattern indexRemoval = Pattern.compile("\\d+:(?=([^\"\\\\]*(\\\\.|\"([^\"\\\\]*\\\\.)*[^\"\\\\]*\"))*[^\"]*$)"); + private static final Pattern indexRemoval = Pattern.compile("\\d+:(?=([^\"\\\\]*(\\\\.|\"([^\"\\\\]*\\\\.)*[^\"\\\\]*\"))*[^\"]*$)"); // Taken from https://stackoverflow.com/questions/6462578/alternative-to-regex-match-all-instances-not-inside-quotes public static void toClient(JsonElement element, UserConnection user) { diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/Protocol1_13To1_12_2.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/Protocol1_13To1_12_2.java index e697f538c..974ee6fb4 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/Protocol1_13To1_12_2.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/Protocol1_13To1_12_2.java @@ -1167,9 +1167,6 @@ public class Protocol1_13To1_12_2 extends Protocol { protected void register(ViaProviders providers) { providers.register(BlockEntityProvider.class, new BlockEntityProvider()); providers.register(PaintingProvider.class, new PaintingProvider()); - if (Via.getConfig().get1_13TabCompleteDelay() > 0) { - Via.getPlatform().runRepeatingSync(new TabCompleteThread(), 1L); - } } private int getNewSoundID(final int oldID) { diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/storage/BlockConnectionStorage.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/storage/BlockConnectionStorage.java index 8845822f2..56ccd68fd 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/storage/BlockConnectionStorage.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/storage/BlockConnectionStorage.java @@ -15,10 +15,10 @@ import java.util.HashMap; import java.util.Map; public class BlockConnectionStorage extends StoredObject { - private Map> blockStorage = createLongObjectMap(); + private final Map> blockStorage = createLongObjectMap(); + private static final Map reverseBlockMappings; private static Constructor fastUtilLongObjectHashMap; - private static HashMap reverseBlockMappings; static { try { diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/Protocol1_9To1_8.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/Protocol1_9To1_8.java index ac4cd7c77..0861ee7c1 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/Protocol1_9To1_8.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/Protocol1_9To1_8.java @@ -100,9 +100,6 @@ public class Protocol1_9To1_8 extends Protocol { providers.register(BossBarProvider.class, new BossBarProvider()); providers.register(MainHandProvider.class, new MainHandProvider()); providers.require(MovementTransmitterProvider.class); - if (Via.getConfig().isSimulatePlayerTick()) { - Via.getPlatform().runRepeatingSync(new ViaIdleThread(), 1L); - } } @Override