diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b52fb7e..df6a6ad 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip networkTimeout=10000 retries=0 retryBackOffMs=500 diff --git a/src/main/java/dev/plex/extras/TFMExtras.java b/src/main/java/dev/plex/extras/TFMExtras.java index 3035199..469d5c5 100755 --- a/src/main/java/dev/plex/extras/TFMExtras.java +++ b/src/main/java/dev/plex/extras/TFMExtras.java @@ -2,7 +2,7 @@ package dev.plex.extras; import com.google.common.collect.ImmutableSet; import com.google.common.reflect.ClassPath; -import dev.plex.Plex; +import dev.plex.api.PlexApi; import dev.plex.command.PlexCommand; import dev.plex.command.annotation.CommandParameters; import dev.plex.command.annotation.CommandPermissions; @@ -10,7 +10,6 @@ import dev.plex.config.ModuleConfig; import dev.plex.extras.jumppads.JumpPads; import dev.plex.listener.PlexListener; import dev.plex.module.PlexModule; -import dev.plex.util.PlexLog; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.Collections; @@ -31,6 +30,11 @@ public class TFMExtras extends PlexModule @Getter private ModuleConfig config; + public static PlexApi plexApi() + { + return module.api(); + } + @Override public void load() { @@ -38,7 +42,7 @@ public class TFMExtras extends PlexModule config = new ModuleConfig(this, "tfmextras/config.yml", "config.yml"); config.load(); jumpPads = new JumpPads(); -// PlexLog.debug(String.valueOf(config.getInt("server.jumppad_strength"))); +// plexApi().logging().debug(String.valueOf(config.getInt("server.jumppad_strength"))); } @Override @@ -131,14 +135,14 @@ public class TFMExtras extends PlexModule } catch (ClassNotFoundException var4) { - PlexLog.error("Unable to find class " + info.getName() + " in " + packageName); + plexApi().logging().error("Unable to find class {0} in {1}", info.getName(), packageName); } }); } catch (IOException var4) { - PlexLog.error("Something went wrong while fetching classes from " + packageName); + plexApi().logging().error("Something went wrong while fetching classes from {0}", packageName); throw new RuntimeException(var4); } diff --git a/src/main/java/dev/plex/extras/command/AutoClearCommand.java b/src/main/java/dev/plex/extras/command/AutoClearCommand.java index 4c0331a..8f27970 100755 --- a/src/main/java/dev/plex/extras/command/AutoClearCommand.java +++ b/src/main/java/dev/plex/extras/command/AutoClearCommand.java @@ -1,14 +1,12 @@ package dev.plex.extras.command; import com.google.common.collect.ImmutableList; -import dev.plex.cache.DataUtils; +import dev.plex.api.player.PlexPlayerView; import dev.plex.command.PlexCommand; import dev.plex.command.annotation.CommandParameters; import dev.plex.command.annotation.CommandPermissions; import dev.plex.command.exception.PlayerNotFoundException; import dev.plex.extras.TFMExtras; -import dev.plex.player.PlexPlayer; -import dev.plex.util.PlexUtils; import java.util.List; import net.kyori.adventure.text.Component; import org.bukkit.command.CommandSender; @@ -27,31 +25,27 @@ public class AutoClearCommand extends PlexCommand { return usage(); } - PlexPlayer target = DataUtils.getPlayer(args[0]); - if (target == null) - { - throw new PlayerNotFoundException(); - } + PlexPlayerView target = TFMExtras.plexApi().players().byName(args[0]).orElseThrow(PlayerNotFoundException::new); List names = TFMExtras.getModule().getConfig().getStringList("server.clear-on-join"); - boolean isEnabled = names.contains(target.getName()); + boolean isEnabled = names.contains(target.name()); if (!isEnabled) { - names.add(target.getName()); + names.add(target.name()); } else { - names.remove(target.getName()); + names.remove(target.name()); } TFMExtras.getModule().getConfig().set("server.clear-on-join", names); TFMExtras.getModule().getConfig().save(); isEnabled = !isEnabled; - return messageComponent("modifiedAutoClear", target.getName(), isEnabled ? "now" : "no longer"); + return messageComponent("modifiedAutoClear", target.name(), isEnabled ? "now" : "no longer"); } @Override public @NotNull List smartTabComplete(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args) throws IllegalArgumentException { - return args.length == 1 && silentCheckPermission(sender, this.getPermission()) ? PlexUtils.getPlayerNameList() : ImmutableList.of(); + return args.length == 1 && silentCheckPermission(sender, this.getPermission()) ? onlinePlayerNames() : ImmutableList.of(); } } diff --git a/src/main/java/dev/plex/extras/command/AutoTeleportCommand.java b/src/main/java/dev/plex/extras/command/AutoTeleportCommand.java index edd6310..dcc5090 100755 --- a/src/main/java/dev/plex/extras/command/AutoTeleportCommand.java +++ b/src/main/java/dev/plex/extras/command/AutoTeleportCommand.java @@ -1,14 +1,12 @@ package dev.plex.extras.command; import com.google.common.collect.ImmutableList; -import dev.plex.cache.DataUtils; +import dev.plex.api.player.PlexPlayerView; import dev.plex.command.PlexCommand; import dev.plex.command.annotation.CommandParameters; import dev.plex.command.annotation.CommandPermissions; import dev.plex.command.exception.PlayerNotFoundException; import dev.plex.extras.TFMExtras; -import dev.plex.player.PlexPlayer; -import dev.plex.util.PlexUtils; import java.util.List; import net.kyori.adventure.text.Component; import org.bukkit.command.CommandSender; @@ -30,34 +28,30 @@ public class AutoTeleportCommand extends PlexCommand { return usage(); } - player.teleportAsync(TFMExtras.getRandomLocation(player.getWorld())); + TFMExtras.plexApi().scheduler().runEntity(player, () -> player.teleportAsync(TFMExtras.getRandomLocation(player.getWorld()))); return null; } checkPermission(sender, "plex.tfmextras.autotp.other"); - PlexPlayer target = DataUtils.getPlayer(args[0]); - if (target == null) - { - throw new PlayerNotFoundException(); - } + PlexPlayerView target = TFMExtras.plexApi().players().byName(args[0]).orElseThrow(PlayerNotFoundException::new); List names = TFMExtras.getModule().getConfig().getStringList("server.teleport-on-join"); - boolean isEnabled = names.contains(target.getName()); + boolean isEnabled = names.contains(target.name()); if (!isEnabled) { - names.add(target.getName()); + names.add(target.name()); } else { - names.remove(target.getName()); + names.remove(target.name()); } TFMExtras.getModule().getConfig().set("server.teleport-on-join", names); TFMExtras.getModule().getConfig().save(); isEnabled = !isEnabled; - return messageComponent("modifiedAutoTeleport", target.getName(), isEnabled ? "now" : "no longer"); + return messageComponent("modifiedAutoTeleport", target.name(), isEnabled ? "now" : "no longer"); } @Override public @NotNull List smartTabComplete(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args) throws IllegalArgumentException { - return args.length == 1 && silentCheckPermission(sender, this.getPermission()) ? PlexUtils.getPlayerNameList() : ImmutableList.of(); + return args.length == 1 && silentCheckPermission(sender, this.getPermission()) ? onlinePlayerNames() : ImmutableList.of(); } } diff --git a/src/main/java/dev/plex/extras/command/CakeCommand.java b/src/main/java/dev/plex/extras/command/CakeCommand.java index 873bcf5..db1c193 100755 --- a/src/main/java/dev/plex/extras/command/CakeCommand.java +++ b/src/main/java/dev/plex/extras/command/CakeCommand.java @@ -3,8 +3,7 @@ package dev.plex.extras.command; import dev.plex.command.PlexCommand; import dev.plex.command.annotation.CommandParameters; import dev.plex.command.annotation.CommandPermissions; -import dev.plex.util.PlexUtils; -import dev.plex.util.item.ItemBuilder; +import dev.plex.extras.TFMExtras; import java.util.Collections; import java.util.List; import net.kyori.adventure.text.Component; @@ -14,6 +13,7 @@ import org.bukkit.Material; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -21,21 +21,25 @@ import org.jetbrains.annotations.Nullable; @CommandPermissions(permission = "plex.tfmextras.cake") public class CakeCommand extends PlexCommand { - private static final ItemStack CAKE = new ItemBuilder(Material.CAKE) - .displayName(MiniMessage.miniMessage().deserialize("The Lie")) - .build(); + private static final ItemStack CAKE = cake(); @Override protected Component execute(@NotNull CommandSender sender, @Nullable Player player, @NotNull String[] args) { - Bukkit.getOnlinePlayers().forEach(p -> - { - p.getInventory().addItem(CAKE); - }); - PlexUtils.broadcast(messageComponent("cakeLyrics")); + Bukkit.getOnlinePlayers().forEach(p -> TFMExtras.plexApi().scheduler().runEntity(p, () -> p.getInventory().addItem(CAKE.clone()))); + broadcast(messageComponent("cakeLyrics")); return null; } + private static ItemStack cake() + { + ItemStack cake = new ItemStack(Material.CAKE); + ItemMeta meta = cake.getItemMeta(); + meta.displayName(MiniMessage.miniMessage().deserialize("The Lie")); + cake.setItemMeta(meta); + return cake; + } + @Override public @NotNull List smartTabComplete(@NotNull CommandSender commandSender, @NotNull String s, @NotNull String[] strings) throws IllegalArgumentException { diff --git a/src/main/java/dev/plex/extras/command/CartSitCommand.java b/src/main/java/dev/plex/extras/command/CartSitCommand.java index 67b5814..2666988 100755 --- a/src/main/java/dev/plex/extras/command/CartSitCommand.java +++ b/src/main/java/dev/plex/extras/command/CartSitCommand.java @@ -1,17 +1,15 @@ package dev.plex.extras.command; import com.google.common.collect.ImmutableList; -import dev.plex.Plex; import dev.plex.command.PlexCommand; import dev.plex.command.annotation.CommandParameters; import dev.plex.command.annotation.CommandPermissions; -import dev.plex.util.PlexUtils; +import dev.plex.extras.TFMExtras; +import java.util.Comparator; import java.util.List; -import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; -import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; @@ -42,10 +40,8 @@ public class CartSitCommand extends PlexCommand { return MiniMessage.miniMessage().deserialize("Could not find a nearby minecart!"); } - findNearestEntity(player, minecart).whenComplete((entity, throwable) -> - { - Bukkit.getScheduler().runTask(Plex.get(), () -> entity.addPassenger(player)); - }); + Entity entity = findNearestEntity(player, minecart); + TFMExtras.plexApi().scheduler().runEntity(entity, () -> entity.addPassenger(player)); return null; } Player target = getNonNullPlayer(args[0]); @@ -58,31 +54,22 @@ public class CartSitCommand extends PlexCommand { return MiniMessage.miniMessage().deserialize("Could not find a nearby minecart near " + target.getName() + "!"); } - findNearestEntity(target, minecart).whenComplete((entity, throwable) -> - { - Bukkit.getScheduler().runTask(Plex.get(), () -> entity.addPassenger(target)); - }); + Entity entity = findNearestEntity(target, minecart); + TFMExtras.plexApi().scheduler().runEntity(entity, () -> entity.addPassenger(target)); return null; } - public CompletableFuture findNearestEntity(Player player, List entities) + public Entity findNearestEntity(Player player, List entities) { - return CompletableFuture.supplyAsync(() -> - { - Entity nearest = entities.getFirst(); - for (Entity e : entities) { - if (player.getLocation().distance(e.getLocation()) < player.getLocation().distance(nearest.getLocation())) { - nearest = e; - } - } - return nearest; - }); + return entities.stream() + .min(Comparator.comparingDouble(entity -> player.getLocation().distanceSquared(entity.getLocation()))) + .orElseThrow(); } @Override public @NotNull List smartTabComplete(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args) throws IllegalArgumentException { - return args.length == 1 && silentCheckPermission(sender, this.getPermission()) ? PlexUtils.getPlayerNameList() : ImmutableList.of(); + return args.length == 1 && silentCheckPermission(sender, this.getPermission()) ? onlinePlayerNames() : ImmutableList.of(); } } diff --git a/src/main/java/dev/plex/extras/command/ClearChatCommand.java b/src/main/java/dev/plex/extras/command/ClearChatCommand.java index 402311e..69dd0f7 100755 --- a/src/main/java/dev/plex/extras/command/ClearChatCommand.java +++ b/src/main/java/dev/plex/extras/command/ClearChatCommand.java @@ -3,7 +3,7 @@ package dev.plex.extras.command; import dev.plex.command.PlexCommand; import dev.plex.command.annotation.CommandParameters; import dev.plex.command.annotation.CommandPermissions; -import dev.plex.util.PlexUtils; +import dev.plex.extras.TFMExtras; import java.util.Collections; import java.util.List; import net.kyori.adventure.text.Component; @@ -23,12 +23,15 @@ public class ClearChatCommand extends PlexCommand Bukkit.getOnlinePlayers().stream().filter(p -> !silentCheckPermission(p, "plex.tfmextras.clearchat")) .forEach(p -> { - for (int i = 0; i < 100; i++) + TFMExtras.plexApi().scheduler().runEntity(p, () -> { - send(p, ""); - } + for (int i = 0; i < 100; i++) + { + send(p, ""); + } + }); }); - PlexUtils.broadcast(messageComponent("chatCleared", sender.getName())); + broadcast(messageComponent("chatCleared", sender.getName())); return null; } diff --git a/src/main/java/dev/plex/extras/command/CloudClearCommand.java b/src/main/java/dev/plex/extras/command/CloudClearCommand.java index e769b26..29b1029 100755 --- a/src/main/java/dev/plex/extras/command/CloudClearCommand.java +++ b/src/main/java/dev/plex/extras/command/CloudClearCommand.java @@ -3,7 +3,7 @@ package dev.plex.extras.command; import dev.plex.command.PlexCommand; import dev.plex.command.annotation.CommandParameters; import dev.plex.command.annotation.CommandPermissions; -import dev.plex.util.PlexUtils; +import dev.plex.extras.TFMExtras; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -26,12 +26,12 @@ public class CloudClearCommand extends PlexCommand protected Component execute(@NotNull CommandSender sender, @Nullable Player player, @NotNull String[] args) { AtomicInteger removed = new AtomicInteger(); - Bukkit.getWorlds().stream().map(World::getEntities).flatMap(Collection::stream).filter(entity -> entity.getType() == EntityType.AREA_EFFECT_CLOUD).peek(entity -> + Bukkit.getWorlds().stream().map(World::getEntities).flatMap(Collection::stream).filter(entity -> entity.getType() == EntityType.AREA_EFFECT_CLOUD).forEach(entity -> { - entity.remove(); removed.incrementAndGet(); + TFMExtras.plexApi().scheduler().runEntity(entity, entity::remove); }); - PlexUtils.broadcast(messageComponent("areaEffectCloudClear", sender.getName())); + broadcast(messageComponent("areaEffectCloudClear", sender.getName())); return MiniMessage.miniMessage().deserialize("" + removed.get() + " area effect clouds removed."); } diff --git a/src/main/java/dev/plex/extras/command/ClownfishCommand.java b/src/main/java/dev/plex/extras/command/ClownfishCommand.java index b3fe481..031e83d 100644 --- a/src/main/java/dev/plex/extras/command/ClownfishCommand.java +++ b/src/main/java/dev/plex/extras/command/ClownfishCommand.java @@ -1,13 +1,11 @@ package dev.plex.extras.command; -import dev.plex.cache.DataUtils; +import dev.plex.api.player.PlexPlayerView; import dev.plex.command.PlexCommand; import dev.plex.command.annotation.CommandParameters; import dev.plex.command.annotation.CommandPermissions; import dev.plex.command.exception.PlayerNotFoundException; import dev.plex.extras.TFMExtras; -import dev.plex.player.PlexPlayer; -import dev.plex.util.PlexUtils; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.Material; @@ -37,7 +35,7 @@ public class ClownfishCommand extends PlexCommand meta.displayName(Component.text("Clownfish")); clownfish.setItemMeta(meta); - player.getInventory().addItem(clownfish); + TFMExtras.plexApi().scheduler().runEntity(player, () -> player.getInventory().addItem(clownfish)); return MiniMessage.miniMessage().deserialize("blub blub... ><_>"); } else if (args[0].equals("toggle")) @@ -63,28 +61,24 @@ public class ClownfishCommand extends PlexCommand { if (silentCheckPermission(commandSender, "plex.tfmextras.clownfish.restrict")) { - PlexPlayer target = DataUtils.getPlayer(args[1]); - if (target == null) - { - throw new PlayerNotFoundException(); - } + PlexPlayerView target = TFMExtras.plexApi().players().byName(args[1]).orElseThrow(PlayerNotFoundException::new); List restrictedPlayers = TFMExtras.getModule().getConfig().getStringList("server.clownfish.restricted"); - boolean isRestricted = restrictedPlayers.contains(target.getUuid().toString()); + boolean isRestricted = restrictedPlayers.contains(target.uuid().toString()); if (isRestricted) { - restrictedPlayers.remove(target.getUuid().toString()); + restrictedPlayers.remove(target.uuid().toString()); } else { - restrictedPlayers.add(target.getUuid().toString()); + restrictedPlayers.add(target.uuid().toString()); } TFMExtras.getModule().getConfig().set("server.clownfish.restricted", restrictedPlayers); TFMExtras.getModule().getConfig().save(); - return messageComponent("restrictClownfish", target.getName(), isRestricted ? "now" : "no longer"); + return messageComponent("restrictClownfish", target.name(), isRestricted ? "now" : "no longer"); } else { @@ -107,7 +101,7 @@ public class ClownfishCommand extends PlexCommand } else if (args.length == 2 && args[0].equals("restrict")) { - return PlexUtils.getPlayerNameList(); + return onlinePlayerNames(); } } else if (args.length == 1) diff --git a/src/main/java/dev/plex/extras/command/EjectCommand.java b/src/main/java/dev/plex/extras/command/EjectCommand.java index 4ba3fa8..ab7d353 100755 --- a/src/main/java/dev/plex/extras/command/EjectCommand.java +++ b/src/main/java/dev/plex/extras/command/EjectCommand.java @@ -4,6 +4,7 @@ import dev.plex.command.PlexCommand; import dev.plex.command.annotation.CommandParameters; import dev.plex.command.annotation.CommandPermissions; import dev.plex.command.source.RequiredCommandSource; +import dev.plex.extras.TFMExtras; import java.util.Collections; import java.util.List; import net.kyori.adventure.text.Component; @@ -21,7 +22,7 @@ public class EjectCommand extends PlexCommand protected Component execute(@NotNull CommandSender sender, @Nullable Player player, @NotNull String[] args) { final int passengers = player.getPassengers().size(); - player.eject(); + TFMExtras.plexApi().scheduler().runEntity(player, player::eject); return MiniMessage.miniMessage().deserialize("Ejected " + passengers + " passengers."); } diff --git a/src/main/java/dev/plex/extras/command/EnglishMfCommand.java b/src/main/java/dev/plex/extras/command/EnglishMfCommand.java index f809889..a99416b 100755 --- a/src/main/java/dev/plex/extras/command/EnglishMfCommand.java +++ b/src/main/java/dev/plex/extras/command/EnglishMfCommand.java @@ -4,7 +4,7 @@ import com.google.common.collect.ImmutableList; import dev.plex.command.PlexCommand; import dev.plex.command.annotation.CommandParameters; import dev.plex.command.annotation.CommandPermissions; -import dev.plex.util.PlexUtils; +import dev.plex.extras.TFMExtras; import java.util.List; import net.kyori.adventure.text.Component; import org.bukkit.command.CommandSender; @@ -29,16 +29,19 @@ public class EnglishMfCommand extends PlexCommand return usage(); } Player target = getNonNullPlayer(args[0]); - target.sendMessage(mmString("ENGLISH MOTHERFUCKER, Do you speak it!?")); - PlexUtils.broadcast("" + sender.getName() + " is sick of " + target.getName() + " not speaking English!"); - target.setHealth(0); - target.getWorld().strikeLightningEffect(target.getLocation()); + TFMExtras.plexApi().scheduler().runEntity(target, () -> + { + target.sendMessage(mmString("ENGLISH MOTHERFUCKER, Do you speak it!?")); + target.setHealth(0); + target.getWorld().strikeLightningEffect(target.getLocation()); + }); + broadcast("" + sender.getName() + " is sick of " + target.getName() + " not speaking English!"); return null; } @Override public @NotNull List smartTabComplete(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args) throws IllegalArgumentException { - return args.length == 1 && silentCheckPermission(sender, this.getPermission()) ? PlexUtils.getPlayerNameList() : ImmutableList.of(); + return args.length == 1 && silentCheckPermission(sender, this.getPermission()) ? onlinePlayerNames() : ImmutableList.of(); } } diff --git a/src/main/java/dev/plex/extras/command/JumpPadsCommand.java b/src/main/java/dev/plex/extras/command/JumpPadsCommand.java index cfaa481..1f241e3 100755 --- a/src/main/java/dev/plex/extras/command/JumpPadsCommand.java +++ b/src/main/java/dev/plex/extras/command/JumpPadsCommand.java @@ -7,7 +7,6 @@ import dev.plex.command.source.RequiredCommandSource; import dev.plex.extras.TFMExtras; import dev.plex.extras.jumppads.JumpPads; import dev.plex.extras.jumppads.Mode; -import dev.plex.util.PlexUtils; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -130,7 +129,7 @@ public class JumpPadsCommand extends PlexCommand } else if (args.length == 2) { - return PlexUtils.getPlayerNameList(); + return onlinePlayerNames(); } return Collections.emptyList(); } diff --git a/src/main/java/dev/plex/extras/command/OrbitCommand.java b/src/main/java/dev/plex/extras/command/OrbitCommand.java index be9808a..26f8090 100644 --- a/src/main/java/dev/plex/extras/command/OrbitCommand.java +++ b/src/main/java/dev/plex/extras/command/OrbitCommand.java @@ -4,7 +4,7 @@ import com.google.common.collect.ImmutableList; import dev.plex.command.PlexCommand; import dev.plex.command.annotation.CommandParameters; import dev.plex.command.annotation.CommandPermissions; -import dev.plex.util.PlexUtils; +import dev.plex.extras.TFMExtras; import net.kyori.adventure.text.Component; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -15,15 +15,15 @@ import org.jetbrains.annotations.Nullable; import java.util.Collections; import java.util.List; -import java.util.HashMap; import java.util.Map; import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; @CommandParameters(name = "orbit", description = "Accelerates the player at a super fast rate", usage = "/ [< | stop>]") @CommandPermissions(permission = "plex.tfmextras.orbit") public class OrbitCommand extends PlexCommand { - private static final Map isOrbited = new HashMap<>(); + private static final Map isOrbited = new ConcurrentHashMap<>(); @Override protected Component execute(@NotNull CommandSender sender, @Nullable Player playerSender, String[] args) @@ -61,7 +61,7 @@ public class OrbitCommand extends PlexCommand } startOrbiting(targetPlayer, strength); - PlexUtils.broadcast(messageComponent("playerOrbited", sender.getName(), targetPlayer.getName())); + broadcast(messageComponent("playerOrbited", sender.getName(), targetPlayer.getName())); return null; } @@ -70,7 +70,7 @@ public class OrbitCommand extends PlexCommand { if (args.length == 1 && silentCheckPermission(sender, this.getPermission())) { - return PlexUtils.getPlayerNameList(); + return onlinePlayerNames(); } else if (args.length == 2 && silentCheckPermission(sender, this.getPermission())) { @@ -81,15 +81,18 @@ public class OrbitCommand extends PlexCommand private void startOrbiting(Player player, int strength) { - player.setGameMode(org.bukkit.GameMode.SURVIVAL); - player.addPotionEffect(new PotionEffect(PotionEffectType.LEVITATION, Integer.MAX_VALUE, strength, false, false)); - isOrbited.put(player.getUniqueId(), strength); + TFMExtras.plexApi().scheduler().runEntity(player, () -> + { + player.setGameMode(org.bukkit.GameMode.SURVIVAL); + player.addPotionEffect(new PotionEffect(PotionEffectType.LEVITATION, Integer.MAX_VALUE, strength, false, false)); + isOrbited.put(player.getUniqueId(), strength); + }); } private void stopOrbiting(Player player) { - player.removePotionEffect(PotionEffectType.LEVITATION); isOrbited.remove(player.getUniqueId()); + TFMExtras.plexApi().scheduler().runEntity(player, () -> player.removePotionEffect(PotionEffectType.LEVITATION)); } public static boolean isPlayerOrbited(UUID playerId) diff --git a/src/main/java/dev/plex/extras/command/RandomFishCommand.java b/src/main/java/dev/plex/extras/command/RandomFishCommand.java index 60fc331..da5d4bc 100755 --- a/src/main/java/dev/plex/extras/command/RandomFishCommand.java +++ b/src/main/java/dev/plex/extras/command/RandomFishCommand.java @@ -4,12 +4,14 @@ import dev.plex.command.PlexCommand; import dev.plex.command.annotation.CommandParameters; import dev.plex.command.annotation.CommandPermissions; import dev.plex.command.source.RequiredCommandSource; +import dev.plex.extras.TFMExtras; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.concurrent.ThreadLocalRandom; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; +import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.command.CommandSender; import org.bukkit.entity.EntityType; @@ -31,7 +33,8 @@ public class RandomFishCommand extends PlexCommand { return MiniMessage.miniMessage().deserialize("There is no block within 15 blocks of you."); } - player.getWorld().spawnEntity(block.getLocation().add(0, 1, 0), randomFish()); + Location location = block.getLocation().add(0, 1, 0); + TFMExtras.plexApi().scheduler().runRegion(location, () -> location.getWorld().spawnEntity(location, randomFish())); return MiniMessage.miniMessage().deserialize(":goodbird:"); } diff --git a/src/main/java/dev/plex/extras/jumppads/JumpPads.java b/src/main/java/dev/plex/extras/jumppads/JumpPads.java index 9df99d7..bd4b672 100755 --- a/src/main/java/dev/plex/extras/jumppads/JumpPads.java +++ b/src/main/java/dev/plex/extras/jumppads/JumpPads.java @@ -4,6 +4,7 @@ import dev.plex.extras.TFMExtras; import java.util.HashMap; import java.util.Map; import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ThreadLocalRandom; import org.bukkit.Material; import org.bukkit.Tag; @@ -14,7 +15,7 @@ import org.bukkit.util.Vector; public class JumpPads { - public final Map playerModeMap = new HashMap<>(); + public final Map playerModeMap = new ConcurrentHashMap<>(); public final double SCALAR = 0.8; public final double STRENGTH = TFMExtras.getModule().getConfig().getInt("server.jumppad_strength", 1) + 0.1F; public final double EXTREME = STRENGTH + 0.5; @@ -60,4 +61,4 @@ public class JumpPads public record Wrap(int x, int y, int z) { } -} \ No newline at end of file +} diff --git a/src/main/java/dev/plex/extras/listener/JumpPadsListener.java b/src/main/java/dev/plex/extras/listener/JumpPadsListener.java index 36ef702..a5edb5f 100755 --- a/src/main/java/dev/plex/extras/listener/JumpPadsListener.java +++ b/src/main/java/dev/plex/extras/listener/JumpPadsListener.java @@ -4,7 +4,6 @@ import dev.plex.extras.TFMExtras; import dev.plex.extras.jumppads.JumpPads; import dev.plex.extras.jumppads.Mode; import dev.plex.listener.PlexListener; -import dev.plex.util.PlexLog; import java.util.Map; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; @@ -44,7 +43,7 @@ public class JumpPadsListener extends PlexListener { vector = vector.multiply(new Vector(0, -1, 0)); } - PlexLog.debug("New Velocity: {0}", vector.toString()); + TFMExtras.plexApi().logging().debug("New Velocity: {0}", vector.toString()); player.setFallDistance(0); player.setVelocity(vector); } diff --git a/src/main/java/dev/plex/extras/listener/OrbitEffectListener.java b/src/main/java/dev/plex/extras/listener/OrbitEffectListener.java index 9ba21fe..0c2beb8 100644 --- a/src/main/java/dev/plex/extras/listener/OrbitEffectListener.java +++ b/src/main/java/dev/plex/extras/listener/OrbitEffectListener.java @@ -1,8 +1,7 @@ package dev.plex.extras.listener; -import dev.plex.Plex; +import dev.plex.extras.TFMExtras; import dev.plex.extras.command.OrbitCommand; -import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -23,7 +22,7 @@ public class OrbitEffectListener extends PlexListener if ((event.getAction() == EntityPotionEffectEvent.Action.CLEARED || event.getAction() == EntityPotionEffectEvent.Action.REMOVED) && event.getModifiedType() == PotionEffectType.LEVITATION) { - Bukkit.getScheduler().runTaskLater(Plex.get(), () -> + TFMExtras.plexApi().scheduler().runEntityLater(player, () -> { if (OrbitCommand.isPlayerOrbited(player.getUniqueId())) { @@ -40,12 +39,13 @@ public class OrbitEffectListener extends PlexListener { Player player = event.getPlayer(); - Bukkit.getScheduler().runTaskLater(Plex.get(), () -> + GameMode newGameMode = event.getNewGameMode(); + TFMExtras.plexApi().scheduler().runEntityLater(player, () -> { - if (OrbitCommand.isPlayerOrbited(player.getUniqueId()) && event.getNewGameMode() != GameMode.SURVIVAL) + if (OrbitCommand.isPlayerOrbited(player.getUniqueId()) && newGameMode != GameMode.SURVIVAL) { player.setGameMode(GameMode.SURVIVAL); } }, 2); } -} \ No newline at end of file +} diff --git a/src/main/java/dev/plex/extras/listener/PlayerListener.java b/src/main/java/dev/plex/extras/listener/PlayerListener.java index 7235b73..6d14e03 100755 --- a/src/main/java/dev/plex/extras/listener/PlayerListener.java +++ b/src/main/java/dev/plex/extras/listener/PlayerListener.java @@ -1,11 +1,9 @@ package dev.plex.extras.listener; -import dev.plex.Plex; import dev.plex.extras.TFMExtras; import dev.plex.listener.PlexListener; import org.bukkit.event.EventHandler; import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.scheduler.BukkitRunnable; public class PlayerListener extends PlexListener { @@ -14,25 +12,11 @@ public class PlayerListener extends PlexListener { if (TFMExtras.getModule().getConfig().getStringList("server.clear-on-join").contains(event.getPlayer().getName())) { - new BukkitRunnable() - { - @Override - public void run() - { - event.getPlayer().getInventory().clear(); - } - }.runTaskLater(Plex.get(), 1); + TFMExtras.plexApi().scheduler().runEntityLater(event.getPlayer(), () -> event.getPlayer().getInventory().clear(), 1); } if (TFMExtras.getModule().getConfig().getStringList("server.teleport-on-join").contains(event.getPlayer().getName())) { - new BukkitRunnable() - { - @Override - public void run() - { - event.getPlayer().teleportAsync(TFMExtras.getRandomLocation(event.getPlayer().getWorld())); - } - }.runTaskLater(Plex.get(), 1); + TFMExtras.plexApi().scheduler().runEntityLater(event.getPlayer(), () -> event.getPlayer().teleportAsync(TFMExtras.getRandomLocation(event.getPlayer().getWorld())), 1); } } diff --git a/src/main/resources/module.yml b/src/main/resources/module.yml index c32b106..e9adc71 100755 --- a/src/main/resources/module.yml +++ b/src/main/resources/module.yml @@ -1,4 +1,5 @@ name: Module-TFMExtras main: dev.plex.extras.TFMExtras description: TFM extras for Plex -version: 1.6 \ No newline at end of file +version: 1.6 +apiCompatibility: 1