diff --git a/build.gradle.kts b/build.gradle.kts index 8e64439..3a64dce 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -36,6 +36,7 @@ dependencies { compileOnly(libs.blockstudio) compileOnly(libs.paperApi) implementation(libs.cloudPaper) + implementation(libs.jspecify) } // Project Settings diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 026b3df..933dc82 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,6 +12,7 @@ bukkit = "1.14.4-R0.1-SNAPSHOT" spigot = "1.14.4-R0.1-SNAPSHOT" spigotApi = "1.14.4-R0.1-SNAPSHOT" cloudPaper = "2.0.0-beta.10" +jspecify = "1.0.0" [plugins] runPaper = { id = "xyz.jpenilla.run-paper", version.ref = "runPaper" } @@ -28,4 +29,5 @@ lunachat = { module = "com.github.ucchyocean:LunaChat", version.ref = "lunachat" bukkit = { module = "org.bukkit:bukkit", version.ref = "bukkit" } spigot = { module = "org.spigotmc:spigot", version.ref = "spigot" } spigotApi = { module = "org.spigotmc:spigot-api", version.ref = "spigotApi" } -cloudPaper = { module = "org.incendo:cloud-paper", version.ref = "cloudPaper" } \ No newline at end of file +cloudPaper = { module = "org.incendo:cloud-paper", version.ref = "cloudPaper" } +jspecify = { module = "org.jspecify:jspecify", version.ref = "jspecify" } \ No newline at end of file diff --git a/src/main/java/be4rjp/sclat/Main.java b/src/main/java/be4rjp/sclat/Sclat.java similarity index 91% rename from src/main/java/be4rjp/sclat/Main.java rename to src/main/java/be4rjp/sclat/Sclat.java index 6f03546..156b675 100644 --- a/src/main/java/be4rjp/sclat/Main.java +++ b/src/main/java/be4rjp/sclat/Sclat.java @@ -3,18 +3,20 @@ import be4rjp.blockstudio.BlockStudio; import be4rjp.blockstudio.api.BlockStudioAPI; import be4rjp.dadadachecker.DADADACheckerAPI; -import be4rjp.sclat.api.Sclat; +import be4rjp.sclat.api.Plugins; +import be4rjp.sclat.api.SclatUtil; import be4rjp.sclat.api.ServerType; import be4rjp.sclat.api.async.AsyncPlayerListener; import be4rjp.sclat.api.async.AsyncThreadManager; import be4rjp.sclat.api.config.CustomConfig; +import be4rjp.sclat.api.holo.PlayerHolograms; +import be4rjp.sclat.api.wiremesh.Wiremesh; import be4rjp.sclat.commands.sclatCommandExecutor; import be4rjp.sclat.config.Config; import be4rjp.sclat.data.DataMgr; import be4rjp.sclat.data.MapData; import be4rjp.sclat.data.Match; import be4rjp.sclat.data.PaintData; -import be4rjp.sclat.data.Wiremesh; import be4rjp.sclat.gui.ClickListener; import be4rjp.sclat.listener.SquidListener; import be4rjp.sclat.lunachat.LunaChatListener; @@ -50,6 +52,8 @@ import org.bukkit.scoreboard.NameTagVisibility; import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.ScoreboardManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.List; @@ -58,11 +62,12 @@ * * @author Be4rJP */ -public class Main extends JavaPlugin implements PluginMessageListener { +public class Sclat extends JavaPlugin implements PluginMessageListener { + private static final Logger logger = LoggerFactory.getLogger(Sclat.class); public static Config conf; - private static Main plugin; + private static Sclat plugin; public static Location lobby; @@ -90,10 +95,6 @@ public class Main extends JavaPlugin implements PluginMessageListener { // EquipmentShare public static EquipmentServer es = null; - // API - public static boolean NoteBlockAPI = true; - public static boolean LunaChat = true; - // 重複しない数字 // ボム等で使用 private static int NDNumber = 0; @@ -111,6 +112,8 @@ public class Main extends JavaPlugin implements PluginMessageListener { public static double PARTICLE_RENDER_DISTANCE = 0; public static double PARTICLE_RENDER_DISTANCE_SQUARED; + public static final PlayerHolograms playerHolograms = new PlayerHolograms(); + @Override public void onEnable() { plugin = this; @@ -122,35 +125,14 @@ public void onEnable() { AsyncThreadManager.setup(1); // ----------------------------APICheck------------------------------- - NoteBlockAPI = true; - if (!Bukkit.getPluginManager().isPluginEnabled("NoteBlockAPI")) { - getLogger().severe("*** NoteBlockAPI is not installed or not enabled. ***"); - NoteBlockAPI = false; + if (!Plugins.onInit(logger)) return; - } + logger.info("API check was complted."); - // LunaChat - if (!Bukkit.getPluginManager().isPluginEnabled("LunaChat")) { - getLogger().severe("*** LunaChat is not installed or not enabled. ***"); - LunaChat = false; - } + protocolManager = ProtocolLibrary.getProtocolManager(); + SclatPacketListener.init(); - // ProtocolLib - if (!Bukkit.getPluginManager().isPluginEnabled("ProtocolLib")) { - getLogger().severe("*** ProtocolLib is not installed or not enabled. ***"); - return; - } else { - protocolManager = ProtocolLibrary.getProtocolManager(); - new SclatPacketListener(); - } - - // DADADAChecker - if (!Bukkit.getPluginManager().isPluginEnabled("DADADAChecker")) { - getLogger().severe("*** DADADAChecker is not installed or not enabled. ***"); - return; - } else { - dadadaCheckerAPI = new DADADACheckerAPI(this); - } + dadadaCheckerAPI = new DADADACheckerAPI(this); // ------------------------------------------------------------------- // --------------------------Load config------------------------------ @@ -196,7 +178,7 @@ public void onEnable() { pm.registerEvents(new SnowballListener(), this); pm.registerEvents(new AsyncPlayerListener(), this); - if (LunaChat) + if (Plugins.LUNACHAT.isLoaded()) pm.registerEvents(new LunaChatListener(), this); // ------------------------------------------------------------------- @@ -277,7 +259,7 @@ public void onEnable() { // ------------------------------------------------------------------- // ------------------------Load NBS songs----------------------------- - if (NoteBlockAPI) + if (Plugins.NOTEBLOCKAPI.isLoaded()) NoteBlockAPIMgr.LoadSongFiles(); // ------------------------------------------------------------------- @@ -324,7 +306,7 @@ public void onEnable() { // --------------------Send restarted server info--------------------- if (conf.getConfig().contains("RestartMatchCount")) - Sclat.sendRestartedServerInfo(); + SclatUtil.sendRestartedServerInfo(); // ------------------------------------------------------------------- // -----------------------------Shop---------------------------------- @@ -369,7 +351,7 @@ public void onEnable() { // ------------------------------------------------------------------- // ------------------------Tutorial wire mesh------------------------- - if (Main.tutorial) { + if (Sclat.tutorial) { for (MapData mData : DataMgr.maplist) { for (Wiremesh wiremesh : mData.getWiremeshListTask().getWiremeshsList()) { wiremesh.startTask(); @@ -442,7 +424,7 @@ public void onDisable() { as.remove(); // Worldが保存される前にアンロードして塗られた状態で保存されるのを防ぐ - if (Main.type == ServerType.LOBBY) { + if (Sclat.type == ServerType.LOBBY) { for (String mapname : conf.getMapConfig().getConfigurationSection("Maps").getKeys(false)) { String worldName = conf.getMapConfig().getString("Maps." + mapname + ".WorldName"); Bukkit.unloadWorld(worldName, false); @@ -454,7 +436,7 @@ public void onDisable() { } } - public static Main getPlugin() { + public static Sclat getPlugin() { return plugin; } diff --git a/src/main/java/be4rjp/sclat/Animation.java b/src/main/java/be4rjp/sclat/api/Animation.java similarity index 92% rename from src/main/java/be4rjp/sclat/Animation.java rename to src/main/java/be4rjp/sclat/api/Animation.java index 40a7471..8714960 100644 --- a/src/main/java/be4rjp/sclat/Animation.java +++ b/src/main/java/be4rjp/sclat/api/Animation.java @@ -1,11 +1,9 @@ -package be4rjp.sclat; +package be4rjp.sclat.api; -import be4rjp.sclat.api.GaugeAPI; -import be4rjp.sclat.api.Sclat; -import be4rjp.sclat.api.SoundType; +import be4rjp.sclat.Sclat; +import be4rjp.sclat.api.team.Team; import be4rjp.sclat.data.DataMgr; -import be4rjp.sclat.data.Team; import org.bukkit.ChatColor; import org.bukkit.Sound; import org.bukkit.entity.Player; @@ -61,13 +59,13 @@ public void run() { } if (i == 40) { if (winteam == DataMgr.getPlayerData(player).getTeam()) - Sclat.playGameSound(player, SoundType.CONGRATULATIONS); + SclatUtil.playGameSound(player, SoundType.CONGRATULATIONS); cancel(); } i++; } }; - task.runTaskTimer(Main.getPlugin(), 0, 2); + task.runTaskTimer(Sclat.getPlugin(), 0, 2); } public static void AreaResultAnimation(Player p, int team0point, int team1point, String team0color, @@ -103,13 +101,13 @@ public void run() { } if (i == 40) { if (winteam == DataMgr.getPlayerData(player).getTeam()) - Sclat.playGameSound(player, SoundType.CONGRATULATIONS); + SclatUtil.playGameSound(player, SoundType.CONGRATULATIONS); cancel(); } i++; } }; - task.runTaskTimer(Main.getPlugin(), 0, 2); + task.runTaskTimer(Sclat.getPlugin(), 0, 2); } public static void TDMResultAnimation(Player p, int team0point, int team1point, String team0color, @@ -173,12 +171,12 @@ public void run() { } if (i == 40) { if (winteam == DataMgr.getPlayerData(player).getTeam()) - Sclat.playGameSound(player, SoundType.CONGRATULATIONS); + SclatUtil.playGameSound(player, SoundType.CONGRATULATIONS); cancel(); } i++; } }; - task.runTaskTimer(Main.getPlugin(), 0, 2); + task.runTaskTimer(Sclat.getPlugin(), 0, 2); } } diff --git a/src/main/java/be4rjp/sclat/api/GlowingAPI.java b/src/main/java/be4rjp/sclat/api/GlowingAPI.java index f823586..35359ac 100644 --- a/src/main/java/be4rjp/sclat/api/GlowingAPI.java +++ b/src/main/java/be4rjp/sclat/api/GlowingAPI.java @@ -1,6 +1,6 @@ package be4rjp.sclat.api; -import be4rjp.sclat.Main; +import be4rjp.sclat.Sclat; import com.comphenix.protocol.PacketType; import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.wrappers.WrappedDataWatcher; @@ -9,7 +9,7 @@ public class GlowingAPI { public static void setGlowing(Entity entity, Player player, boolean flag) { - PacketContainer packet = Main.protocolManager.createPacket(PacketType.Play.Server.ENTITY_METADATA); + PacketContainer packet = Sclat.protocolManager.createPacket(PacketType.Play.Server.ENTITY_METADATA); packet.getIntegers().write(0, entity.getEntityId()); WrappedDataWatcher watcher = new WrappedDataWatcher(); WrappedDataWatcher.Serializer serializer = WrappedDataWatcher.Registry.get(Byte.class); @@ -17,7 +17,7 @@ public static void setGlowing(Entity entity, Player player, boolean flag) { watcher.setObject(0, serializer, (byte) (flag ? 0x40 : 0)); packet.getWatchableCollectionModifier().write(0, watcher.getWatchableObjects()); try { - Main.protocolManager.sendServerPacket(player, packet); + Sclat.protocolManager.sendServerPacket(player, packet); } catch (RuntimeException e) { e.printStackTrace(); } diff --git a/src/main/java/be4rjp/sclat/api/Plugins.java b/src/main/java/be4rjp/sclat/api/Plugins.java new file mode 100644 index 0000000..e14569d --- /dev/null +++ b/src/main/java/be4rjp/sclat/api/Plugins.java @@ -0,0 +1,62 @@ +package be4rjp.sclat.api; + +import org.bukkit.Bukkit; +import org.slf4j.Logger; + +import java.util.ArrayList; + +public enum Plugins { + DADADACHECKER("DADADAChecker"), LUNACHAT("LunaChat", + false), NOTEBLOCKAPI("NoteBlockAPI"), PROTOCOLLIB("ProtocolLib"); + + public final String pluginName; + public final boolean isRequired; + private Boolean _isLoaded = null; + Plugins(String pluginName) { + this(pluginName, true); + } + Plugins(String pluginName, boolean isRequired) { + this.pluginName = pluginName; + this.isRequired = isRequired; + } + + public boolean isLoaded() { + if (_isLoaded == null) { + _isLoaded = Bukkit.getPluginManager().isPluginEnabled(pluginName); + } + return _isLoaded; + } + + /** + * To support plugman load. + */ + private void resetLoadedState() { + _isLoaded = false; + } + + /** + * Initialize check + * + * @return is init-check succeeded + */ + public static boolean onInit(Logger logger) { + ArrayList missingPlugins = new ArrayList<>(); + for (Plugins plugin : Plugins.values()) { + plugin.resetLoadedState(); + if (!plugin.isLoaded() && plugin.isRequired) { + missingPlugins.add(plugin.pluginName); + } + } + + // If some required plugins are missing + if (!missingPlugins.isEmpty()) { + logger.error("Some plugins are missing. Please install or enable."); + logger.error("*** Missing required plugins ***"); + missingPlugins.forEach(p -> logger.error("- {}", p)); + logger.error("********************************"); + return false; + } + + return true; + } +} diff --git a/src/main/java/be4rjp/sclat/api/Sclat.java b/src/main/java/be4rjp/sclat/api/SclatUtil.java similarity index 93% rename from src/main/java/be4rjp/sclat/api/Sclat.java rename to src/main/java/be4rjp/sclat/api/SclatUtil.java index 83636c9..9c26482 100644 --- a/src/main/java/be4rjp/sclat/api/Sclat.java +++ b/src/main/java/be4rjp/sclat/api/SclatUtil.java @@ -1,9 +1,9 @@ package be4rjp.sclat.api; -import be4rjp.sclat.Main; +import be4rjp.sclat.Sclat; +import be4rjp.sclat.api.player.PlayerData; +import be4rjp.sclat.api.team.Team; import be4rjp.sclat.data.DataMgr; -import be4rjp.sclat.data.PlayerData; -import be4rjp.sclat.data.Team; import be4rjp.sclat.manager.BungeeCordMgr; import be4rjp.sclat.manager.DeathMgr; import be4rjp.sclat.manager.MatchMgr; @@ -36,7 +36,7 @@ import java.util.ArrayList; import java.util.List; -import static be4rjp.sclat.Main.conf; +import static be4rjp.sclat.Sclat.conf; /** * @@ -46,7 +46,7 @@ * */ -public class Sclat { +public class SclatUtil { public static void setBlockByNMS(org.bukkit.block.Block b, org.bukkit.Material material, boolean applyPhysics) { Location loc = b.getLocation(); @@ -82,7 +82,7 @@ public static void sendBlockChangeForAllPlayer(org.bukkit.block.Block b, org.buk Block block = ((CraftBlockData) Bukkit.createBlockData(material)).getState().getBlock(); IBlockAccess iba = (IBlockAccess) nmsWorld; PacketPlayOutBlockChange packet = new PacketPlayOutBlockChange(iba, bp); - for (Player target : Main.getPlugin().getServer().getOnlinePlayers()) { + for (Player target : Sclat.getPlugin().getServer().getOnlinePlayers()) { if (target.getWorld() == b.getWorld()) { ((CraftPlayer) target).getHandle().playerConnection.sendPacket(packet); } @@ -143,7 +143,7 @@ public static void restartServer() { conf.getConfig().getInt("StatusShare.Port"), commands); sc.startClient(); - for (Player player : Main.getPlugin().getServer().getOnlinePlayers()) { + for (Player player : Sclat.getPlugin().getServer().getOnlinePlayers()) { BungeeCordMgr.PlayerSendServer(player, "sclat"); DataMgr.getPlayerData(player).setServerName("Sclat"); } @@ -153,7 +153,7 @@ public void run() { Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "restart"); } }; - task.runTaskLater(Main.getPlugin(), 100); + task.runTaskLater(Sclat.getPlugin(), 100); } public static void sendRestartedServerInfo() { @@ -172,7 +172,7 @@ public static void setPlayerPrefix(Player player, String prefix) { CraftPlayer cp = (CraftPlayer) player; EntityPlayer ep = cp.getHandle(); String origName = ep.getName(); - for (Player target : Main.getPlugin().getServer().getOnlinePlayers()) { + for (Player target : Sclat.getPlugin().getServer().getOnlinePlayers()) { if (player != target) { CraftPlayer ct = (CraftPlayer) player; ct.getHandle().playerConnection.sendPacket(new PacketPlayOutNamedEntitySpawn(ep)); @@ -188,17 +188,17 @@ public static void sendMessage(String message, MessageType type) { buff.append(message); switch (type) { case ALL_PLAYER : { - for (Player player : Main.getPlugin().getServer().getOnlinePlayers()) { + for (Player player : Sclat.getPlugin().getServer().getOnlinePlayers()) { player.sendMessage(buff.toString()); } break; } case CONSOLE : { - Main.getPlugin().getServer().getLogger().info(buff.toString()); + Sclat.getPlugin().getServer().getLogger().info(buff.toString()); break; } case BROADCAST : { - Main.getPlugin().getServer().broadcastMessage(buff.toString()); + Sclat.getPlugin().getServer().broadcastMessage(buff.toString()); break; } } @@ -210,7 +210,7 @@ public static void sendMessage(String message, MessageType type, Team team) { buff.append(sclat); buff.append(message); if (type == MessageType.TEAM) { - for (Player player : Main.getPlugin().getServer().getOnlinePlayers()) { + for (Player player : Sclat.getPlugin().getServer().getOnlinePlayers()) { Team playerTeam = DataMgr.getPlayerData(player).getTeam(); if (playerTeam == null) continue; @@ -258,18 +258,18 @@ public void run() { } } }; - send.runTaskLater(Main.getPlugin(), 20); + send.runTaskLater(Sclat.getPlugin(), 20); } public static void createInkExplosionEffect(Location center, double radius, int accuracy, Player player) { List s_locs = Sphere.getSphere(center, radius - 0.5, accuracy); org.bukkit.block.data.BlockData bd = DataMgr.getPlayerData(player).getTeam().getTeamColor().getWool() .createBlockData(); - for (Player o_player : Main.getPlugin().getServer().getOnlinePlayers()) { + for (Player o_player : Sclat.getPlugin().getServer().getOnlinePlayers()) { if (DataMgr.getPlayerData(o_player).getSettings().ShowEffect_BombEx()) { for (Location loc : s_locs) { if (o_player.getWorld() == loc.getWorld()) { - if (o_player.getLocation().distanceSquared(loc) < Main.PARTICLE_RENDER_DISTANCE_SQUARED) { + if (o_player.getLocation().distanceSquared(loc) < Sclat.PARTICLE_RENDER_DISTANCE_SQUARED) { o_player.spawnParticle(org.bukkit.Particle.BLOCK_DUST, loc, 0, loc.getX() - center.getX(), loc.getY() - center.getY(), loc.getZ() - center.getZ(), 1, bd); } @@ -280,7 +280,7 @@ public static void createInkExplosionEffect(Location center, double radius, int } public static void repelBarrier(Location center, double radius, Player shooter) { - for (Player player : Main.getPlugin().getServer().getOnlinePlayers()) { + for (Player player : Sclat.getPlugin().getServer().getOnlinePlayers()) { PlayerData playerData = DataMgr.getPlayerData(player); if (player.getWorld() != center.getWorld()) diff --git a/src/main/java/be4rjp/sclat/api/Sphere.java b/src/main/java/be4rjp/sclat/api/Sphere.java index ca196cb..f0c6fc3 100644 --- a/src/main/java/be4rjp/sclat/api/Sphere.java +++ b/src/main/java/be4rjp/sclat/api/Sphere.java @@ -13,7 +13,7 @@ public class Sphere { public static List getSphere(Location baseLoc, double r, int accuracy) { - List tempList = new ArrayList(); + List tempList = new ArrayList<>(); int count = 0; for (int i = 0; i < 180; i += accuracy) { for (int t = 0; t < 360; t += accuracy) { @@ -33,7 +33,7 @@ public static List getSphere(Location baseLoc, double r, int accuracy) } public static List getXZCircle(Location baseLoc, double r, double r_accuracy, int accuracy) { - List tempList = new ArrayList(); + List tempList = new ArrayList<>(); for (int tr = 1; tr <= r; tr += r_accuracy) { for (int t = 0; t < 360; t += accuracy / tr) { double x = tr * Math.sin(Math.toRadians(t)); diff --git a/src/main/java/be4rjp/sclat/api/async/AsyncTask.java b/src/main/java/be4rjp/sclat/api/async/AsyncTask.java index 1e3a243..168d851 100644 --- a/src/main/java/be4rjp/sclat/api/async/AsyncTask.java +++ b/src/main/java/be4rjp/sclat/api/async/AsyncTask.java @@ -1,6 +1,6 @@ package be4rjp.sclat.api.async; -import be4rjp.sclat.Main; +import be4rjp.sclat.Sclat; import org.bukkit.scheduler.BukkitRunnable; public abstract class AsyncTask implements Runnable { @@ -26,7 +26,7 @@ public void runTaskLater(long delay) { public void run() { AsyncThreadManager.getRandomTickThread().runTask(runnable); } - }.runTaskLater(Main.getPlugin(), delay); + }.runTaskLater(Sclat.getPlugin(), delay); } public void runTaskTimer(long delay, long period) { @@ -41,7 +41,7 @@ public void run() { } thread.runTask(runnable); } - }.runTaskTimer(Main.getPlugin(), delay, period); + }.runTaskTimer(Sclat.getPlugin(), delay, period); } } diff --git a/src/main/java/be4rjp/sclat/api/async/AsyncThreadManager.java b/src/main/java/be4rjp/sclat/api/async/AsyncThreadManager.java index de222c6..ef71d34 100644 --- a/src/main/java/be4rjp/sclat/api/async/AsyncThreadManager.java +++ b/src/main/java/be4rjp/sclat/api/async/AsyncThreadManager.java @@ -1,6 +1,6 @@ package be4rjp.sclat.api.async; -import be4rjp.sclat.Main; +import be4rjp.sclat.Sclat; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -42,7 +42,7 @@ public static void toOffline(Player player) { } public static void sync(Runnable runnable) { - Bukkit.getScheduler().runTask(Main.getPlugin(), runnable); + Bukkit.getScheduler().runTask(Sclat.getPlugin(), runnable); } } diff --git a/src/main/java/be4rjp/sclat/api/holo/PlayerHolograms.java b/src/main/java/be4rjp/sclat/api/holo/PlayerHolograms.java new file mode 100644 index 0000000..d168702 --- /dev/null +++ b/src/main/java/be4rjp/sclat/api/holo/PlayerHolograms.java @@ -0,0 +1,47 @@ +package be4rjp.sclat.api.holo; + +import be4rjp.sclat.manager.PlayerStatusMgr; +import org.bukkit.entity.Player; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; + +import java.util.HashMap; +import java.util.Set; +import java.util.UUID; +import java.util.function.Consumer; + +@NullMarked +public class PlayerHolograms { + protected final HashMap rankingHoloMap = new HashMap<>(); + + public void add(Player player) { + RankingHolograms playerHolo = new RankingHolograms(player); + rankingHoloMap.put(player.getUniqueId(), playerHolo); + PlayerStatusMgr.HologramUpdateRunnable(player); + } + + public void ifPresent(Player player, Consumer holoConsumer) { + RankingHolograms holo = get(player); + if (holo != null) { + holoConsumer.accept(holo); + } + } + + @Nullable + public RankingHolograms get(Player player) { + return get(player.getUniqueId()); + } + + @Nullable + public RankingHolograms get(UUID playerUuid) { + return rankingHoloMap.get(playerUuid); + } + + public void remove(Player player) { + rankingHoloMap.remove(player.getUniqueId()); + } + + public Set getKeys() { + return rankingHoloMap.keySet(); + } +} diff --git a/src/main/java/be4rjp/sclat/data/RankingHolograms.java b/src/main/java/be4rjp/sclat/api/holo/RankingHolograms.java similarity index 96% rename from src/main/java/be4rjp/sclat/data/RankingHolograms.java rename to src/main/java/be4rjp/sclat/api/holo/RankingHolograms.java index 531c593..bad6e3f 100644 --- a/src/main/java/be4rjp/sclat/data/RankingHolograms.java +++ b/src/main/java/be4rjp/sclat/api/holo/RankingHolograms.java @@ -1,9 +1,13 @@ -package be4rjp.sclat.data; +package be4rjp.sclat.api.holo; -import be4rjp.sclat.Main; +import be4rjp.sclat.Sclat; +import be4rjp.sclat.data.RankingType; import be4rjp.sclat.manager.PlayerStatusMgr; import be4rjp.sclat.manager.RankMgr; -import net.minecraft.server.v1_14_R1.*; +import net.minecraft.server.v1_14_R1.EntityArmorStand; +import net.minecraft.server.v1_14_R1.PacketPlayOutEntityDestroy; +import net.minecraft.server.v1_14_R1.PacketPlayOutSpawnEntityLiving; +import net.minecraft.server.v1_14_R1.WorldServer; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; @@ -16,7 +20,7 @@ import java.util.ArrayList; import java.util.List; -import static be4rjp.sclat.Main.conf; +import static be4rjp.sclat.Sclat.conf; public class RankingHolograms { private final EntityArmorStand title; @@ -325,6 +329,6 @@ public void run() { } } }; - async.runTaskAsynchronously(Main.getPlugin()); + async.runTaskAsynchronously(Sclat.getPlugin()); } } diff --git a/src/main/java/be4rjp/sclat/data/PlayerData.java b/src/main/java/be4rjp/sclat/api/player/PlayerData.java similarity index 98% rename from src/main/java/be4rjp/sclat/data/PlayerData.java rename to src/main/java/be4rjp/sclat/api/player/PlayerData.java index 7f5bc22..35aa158 100644 --- a/src/main/java/be4rjp/sclat/data/PlayerData.java +++ b/src/main/java/be4rjp/sclat/api/player/PlayerData.java @@ -1,5 +1,9 @@ -package be4rjp.sclat.data; +package be4rjp.sclat.api.player; +import be4rjp.sclat.api.team.Team; +import be4rjp.sclat.data.MainWeapon; +import be4rjp.sclat.data.Match; +import be4rjp.sclat.data.WeaponClass; import net.minecraft.server.v1_14_R1.ItemStack; import org.bukkit.Location; import org.bukkit.entity.ArmorStand; diff --git a/src/main/java/be4rjp/sclat/data/PlayerReturn.java b/src/main/java/be4rjp/sclat/api/player/PlayerReturn.java similarity index 79% rename from src/main/java/be4rjp/sclat/data/PlayerReturn.java rename to src/main/java/be4rjp/sclat/api/player/PlayerReturn.java index 018909a..4bfbdd6 100644 --- a/src/main/java/be4rjp/sclat/data/PlayerReturn.java +++ b/src/main/java/be4rjp/sclat/api/player/PlayerReturn.java @@ -1,6 +1,6 @@ -package be4rjp.sclat.data; +package be4rjp.sclat.api.player; -import be4rjp.sclat.Main; +import be4rjp.sclat.Sclat; import org.bukkit.scheduler.BukkitRunnable; public class PlayerReturn { @@ -18,7 +18,7 @@ public void run() { flag = false; } }; - this.task.runTaskLater(Main.getPlugin(), 400); + this.task.runTaskLater(Sclat.getPlugin(), 400); } public boolean getFlag() { diff --git a/src/main/java/be4rjp/sclat/data/PlayerSettings.java b/src/main/java/be4rjp/sclat/api/player/PlayerSettings.java similarity index 98% rename from src/main/java/be4rjp/sclat/data/PlayerSettings.java rename to src/main/java/be4rjp/sclat/api/player/PlayerSettings.java index 526f965..d2cbc33 100644 --- a/src/main/java/be4rjp/sclat/data/PlayerSettings.java +++ b/src/main/java/be4rjp/sclat/api/player/PlayerSettings.java @@ -1,5 +1,5 @@ -package be4rjp.sclat.data; +package be4rjp.sclat.api.player; import org.bukkit.entity.Player; diff --git a/src/main/java/be4rjp/sclat/data/Team.java b/src/main/java/be4rjp/sclat/api/team/Team.java similarity index 95% rename from src/main/java/be4rjp/sclat/data/Team.java rename to src/main/java/be4rjp/sclat/api/team/Team.java index 56e6ed1..254ef80 100644 --- a/src/main/java/be4rjp/sclat/data/Team.java +++ b/src/main/java/be4rjp/sclat/api/team/Team.java @@ -1,4 +1,6 @@ -package be4rjp.sclat.data; +package be4rjp.sclat.api.team; + +import be4rjp.sclat.data.Color; /** * diff --git a/src/main/java/be4rjp/sclat/data/TeamLoc.java b/src/main/java/be4rjp/sclat/api/team/TeamLoc.java similarity index 96% rename from src/main/java/be4rjp/sclat/data/TeamLoc.java rename to src/main/java/be4rjp/sclat/api/team/TeamLoc.java index 9b201de..80f156e 100644 --- a/src/main/java/be4rjp/sclat/data/TeamLoc.java +++ b/src/main/java/be4rjp/sclat/api/team/TeamLoc.java @@ -1,8 +1,10 @@ -package be4rjp.sclat.data; +package be4rjp.sclat.api.team; + +import be4rjp.sclat.data.MapData; +import org.bukkit.Location; import java.util.Collections; import java.util.List; -import org.bukkit.Location; /** * diff --git a/src/main/java/be4rjp/sclat/data/Wiremesh.java b/src/main/java/be4rjp/sclat/api/wiremesh/Wiremesh.java similarity index 80% rename from src/main/java/be4rjp/sclat/data/Wiremesh.java rename to src/main/java/be4rjp/sclat/api/wiremesh/Wiremesh.java index 13100e1..ccb726d 100644 --- a/src/main/java/be4rjp/sclat/data/Wiremesh.java +++ b/src/main/java/be4rjp/sclat/api/wiremesh/Wiremesh.java @@ -1,9 +1,17 @@ -package be4rjp.sclat.data; - -import java.util.*; - -import be4rjp.sclat.Main; -import net.minecraft.server.v1_14_R1.*; +package be4rjp.sclat.api.wiremesh; + +import be4rjp.sclat.Sclat; +import net.minecraft.server.v1_14_R1.DataWatcher; +import net.minecraft.server.v1_14_R1.EntityArmorStand; +import net.minecraft.server.v1_14_R1.EntityFallingBlock; +import net.minecraft.server.v1_14_R1.EntityPlayer; +import net.minecraft.server.v1_14_R1.IBlockData; +import net.minecraft.server.v1_14_R1.PacketPlayOutEntityDestroy; +import net.minecraft.server.v1_14_R1.PacketPlayOutEntityMetadata; +import net.minecraft.server.v1_14_R1.PacketPlayOutMount; +import net.minecraft.server.v1_14_R1.PacketPlayOutSpawnEntity; +import net.minecraft.server.v1_14_R1.PacketPlayOutSpawnEntityLiving; +import net.minecraft.server.v1_14_R1.WorldServer; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; @@ -14,6 +22,10 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + /** * * @author Be4rJP @@ -53,7 +65,7 @@ public Wiremesh(Block b, Material origType, BlockData bData) { as.setInvisible(true); fb.startRiding(as); - for (Player player : Main.getPlugin().getServer().getOnlinePlayers()) { + for (Player player : Sclat.getPlugin().getServer().getOnlinePlayers()) { if (block.getWorld() != player.getWorld()) continue; @@ -66,7 +78,7 @@ public void run() { try { playerList.removeIf(player -> !player.isOnline()); - for (Player player : Main.getPlugin().getServer().getOnlinePlayers()) { + for (Player player : Sclat.getPlugin().getServer().getOnlinePlayers()) { if (block.getWorld() != player.getWorld()) continue; @@ -123,7 +135,7 @@ public void run() { } public void startTask() { - this.runTaskTimerAsynchronously(Main.getPlugin(), 0, 5); + this.runTaskTimerAsynchronously(Sclat.getPlugin(), 0, 5); } public void stopTask() { diff --git a/src/main/java/be4rjp/sclat/data/WiremeshListTask.java b/src/main/java/be4rjp/sclat/api/wiremesh/WiremeshListTask.java similarity index 93% rename from src/main/java/be4rjp/sclat/data/WiremeshListTask.java rename to src/main/java/be4rjp/sclat/api/wiremesh/WiremeshListTask.java index d91dfbf..d2b89e7 100644 --- a/src/main/java/be4rjp/sclat/data/WiremeshListTask.java +++ b/src/main/java/be4rjp/sclat/api/wiremesh/WiremeshListTask.java @@ -1,14 +1,16 @@ -package be4rjp.sclat.data; +package be4rjp.sclat.api.wiremesh; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import be4rjp.sclat.data.RegionBlocks; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.data.BlockData; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * * @author Be4rJP @@ -52,8 +54,6 @@ public List getWiremeshsList() { } public void stopTask() { - wiremeshsList.forEach((wm) -> { - wm.stopTask(); - }); + wiremeshsList.forEach(Wiremesh::stopTask); } } diff --git a/src/main/java/be4rjp/sclat/commands/sclatCommandExecutor.java b/src/main/java/be4rjp/sclat/commands/sclatCommandExecutor.java index db053fc..4de9b89 100644 --- a/src/main/java/be4rjp/sclat/commands/sclatCommandExecutor.java +++ b/src/main/java/be4rjp/sclat/commands/sclatCommandExecutor.java @@ -1,8 +1,8 @@ package be4rjp.sclat.commands; -import be4rjp.sclat.Main; +import be4rjp.sclat.Sclat; import be4rjp.sclat.api.MessageType; -import be4rjp.sclat.api.Sclat; +import be4rjp.sclat.api.SclatUtil; import be4rjp.sclat.api.ServerType; import be4rjp.sclat.api.SoundType; import be4rjp.sclat.data.DataMgr; @@ -28,9 +28,10 @@ import java.util.Map; import java.util.Set; -import static be4rjp.sclat.Main.conf; +import static be4rjp.sclat.Sclat.conf; //sclat Command +// Todo: use cloud command framework public class sclatCommandExecutor implements CommandExecutor, TabExecutor { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String commandLabel, @@ -57,13 +58,13 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @N if (type == CommanderType.MEMBER) { sender.sendMessage(ChatColor.RED + "You don't have permission."); - Sclat.playGameSound((Player) sender, SoundType.ERROR); + SclatUtil.playGameSound((Player) sender, SoundType.ERROR); return true; } String num = args[1]; - if (Sclat.isNumber(num)) { - Main.conf.getConfig().set("BlockUpdateRate", Integer.valueOf(num)); + if (SclatUtil.isNumber(num)) { + Sclat.conf.getConfig().set("BlockUpdateRate", Integer.valueOf(num)); sender.sendMessage("setConfig [BlockUpdateRate] : " + num); return true; } else { @@ -80,14 +81,14 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @N if (type == CommanderType.MEMBER) { sender.sendMessage(ChatColor.RED + "You don't have permission."); - Sclat.playGameSound((Player) sender, SoundType.ERROR); + SclatUtil.playGameSound((Player) sender, SoundType.ERROR); return true; } String playerName = args[1]; - for (Player player : Main.getPlugin().getServer().getOnlinePlayers()) { + for (Player player : Sclat.getPlugin().getServer().getOnlinePlayers()) { if (playerName.equals(player.getName())) { - Main.flyList.add(playerName); + Sclat.flyList.add(playerName); return true; } } @@ -101,14 +102,14 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @N if (type == CommanderType.MEMBER) { sender.sendMessage(ChatColor.RED + "You don't have permission."); - Sclat.playGameSound((Player) sender, SoundType.ERROR); + SclatUtil.playGameSound((Player) sender, SoundType.ERROR); return true; } if (sender instanceof Player) { Player player = (Player) sender; String targetConfig = args[1]; - Sclat.sendMessage(String.format("%sの設定を再読み込み中...", targetConfig), MessageType.PLAYER, player); + SclatUtil.sendMessage(String.format("%sの設定を再読み込み中...", targetConfig), MessageType.PLAYER, player); switch (targetConfig.toLowerCase()) { case "emblemuserdata" : conf.loadEmblemUserData(); @@ -117,10 +118,10 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @N conf.loadEmblemLoreData(); break; default : - Sclat.sendMessage("そのオプションは存在しません!", MessageType.PLAYER, player); + SclatUtil.sendMessage("そのオプションは存在しません!", MessageType.PLAYER, player); return true; } - Sclat.sendMessage("再読み込み完了", MessageType.PLAYER, player); + SclatUtil.sendMessage("再読み込み完了", MessageType.PLAYER, player); } } // -------------------------------- @@ -132,7 +133,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @N if (type == CommanderType.MEMBER) { sender.sendMessage(ChatColor.RED + "You don't have permission."); - Sclat.playGameSound((Player) sender, SoundType.ERROR); + SclatUtil.playGameSound((Player) sender, SoundType.ERROR); return true; } @@ -169,7 +170,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @N if (type == CommanderType.MEMBER) { sender.sendMessage(ChatColor.RED + "You don't have permission."); - Sclat.playGameSound((Player) sender, SoundType.ERROR); + SclatUtil.playGameSound((Player) sender, SoundType.ERROR); return true; } @@ -191,7 +192,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @N if (type == CommanderType.MEMBER) { sender.sendMessage(ChatColor.RED + "You don't have permission."); - Sclat.playGameSound((Player) sender, SoundType.ERROR); + SclatUtil.playGameSound((Player) sender, SoundType.ERROR); return true; } @@ -211,7 +212,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @N if (type == CommanderType.MEMBER) { sender.sendMessage(ChatColor.RED + "You don't have permission."); - Sclat.playGameSound((Player) sender, SoundType.ERROR); + SclatUtil.playGameSound((Player) sender, SoundType.ERROR); return true; } @@ -222,14 +223,15 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @N List commands = new ArrayList<>(); commands.add("mod " + sender.getName()); commands.add("stop"); + // Todo: use redis. fallbacks PluginMessaging EquipmentClient sc = new EquipmentClient( conf.getConfig().getString("EquipShare." + serverName + ".Host"), conf.getConfig().getInt("EquipShare." + serverName + ".Port"), commands); sc.startClient(); - Sclat.sendMessage("Moderatorとして転送中...", MessageType.PLAYER, (Player) sender); - Sclat.sendMessage("2秒後に転送されます", MessageType.PLAYER, (Player) sender); - Sclat.playGameSound((Player) sender, SoundType.SUCCESS); + SclatUtil.sendMessage("Moderatorとして転送中...", MessageType.PLAYER, (Player) sender); + SclatUtil.sendMessage("2秒後に転送されます", MessageType.PLAYER, (Player) sender); + SclatUtil.playGameSound((Player) sender, SoundType.SUCCESS); BukkitRunnable task = new BukkitRunnable() { @Override @@ -241,7 +243,7 @@ public void run() { } } }; - task.runTaskLater(Main.getPlugin(), 40); + task.runTaskLater(Sclat.getPlugin(), 40); } } return true; @@ -254,12 +256,12 @@ public void run() { // ------------------/sclat ss --------------------- if (args[0].equalsIgnoreCase("ss")) { - if (args.length < 4 || Main.type != ServerType.LOBBY) + if (args.length < 4 || Sclat.type != ServerType.LOBBY) return false; if (type == CommanderType.MEMBER) { sender.sendMessage(ChatColor.RED + "You don't have permission."); - Sclat.playGameSound((Player) sender, SoundType.ERROR); + SclatUtil.playGameSound((Player) sender, SoundType.ERROR); return true; } @@ -279,12 +281,12 @@ public void run() { // ---------------------/sclat tutorial