From 23b9eca4aba6b2c8a7f68927805d9d8a60f4a884 Mon Sep 17 00:00:00 2001 From: sauilitired Date: Fri, 21 Dec 2018 21:10:37 +0100 Subject: [PATCH] Add bStats support, seeing as mcstats has been down for ages --- Bukkit/build.gradle | 5 +- .../plotsquared/bukkit/BukkitMain.java | 461 +++++++++--------- .../bukkit/util/BukkitLegacyMappings.java | 5 +- 3 files changed, 238 insertions(+), 233 deletions(-) diff --git a/Bukkit/build.gradle b/Bukkit/build.gradle index ffde75600..906940308 100644 --- a/Bukkit/build.gradle +++ b/Bukkit/build.gradle @@ -2,6 +2,7 @@ repositories { maven { url "https://hub.spigotmc.org/nexus/content/repositories/snapshots/" } maven { url = "https://oss.sonatype.org/content/repositories/snapshots/" } maven { url "http://nexus.hc.to/content/repositories/pub_releases" } + maven { url = "https://repo.codemc.org/repository/maven-public" } mavenLocal() } @@ -10,6 +11,7 @@ dependencies { testCompile project(':Core') compile 'org.spigotmc:spigot-api:1.13.2-R0.1-SNAPSHOT' compile(group: 'com.sk89q.worldedit', name: 'worldedit-bukkit', version: '7.0.0-SNAPSHOT') + compile(group: 'org.bstats', name: 'bstats-bukkit', version: '1.4') compile("net.milkbowl.vault:VaultAPI:1.7") { exclude module: 'bukkit' } @@ -34,8 +36,9 @@ jar.enabled = false shadowJar { dependencies { include(dependency(':Core')) + include(dependency('org.bstats:bstats-bukkit:1.4')) } - relocate('org.mcstats', 'com.plotsquared.stats') + // relocate('org.mcstats', 'com.plotsquared.stats') archiveName = "${parent.name}-${project.name}-${parent.version}.jar" destinationDir = file '../target' } diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/BukkitMain.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/BukkitMain.java index f7b9239a2..aaba238db 100644 --- a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/BukkitMain.java +++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/BukkitMain.java @@ -113,6 +113,7 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain @Getter private SingleWorldListener singleWorldListener; private Method methodUnloadChunk0; private boolean methodUnloadSetup = false; + private boolean metricsStarted; @Override public int[] getServerVersion() { if (this.version == null) { @@ -146,17 +147,14 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain new PlotSquared(this, "Bukkit"); if (Settings.Enabled_Components.METRICS) { - new Metrics(this).start(); - PlotSquared.log(C.PREFIX + "&6Metrics enabled."); + // new Metrics(this).start(); + // PlotSquared.log(C.PREFIX + "&6Metrics enabled."); + this.startMetrics(); } else { PlotSquared.log(C.CONSOLE_PLEASE_ENABLE_METRICS.f(getPluginName())); } if (Settings.Enabled_Components.WORLDS) { - TaskManager.IMP.taskRepeat(new Runnable() { - @Override public void run() { - unload(); - } - }, 20); + TaskManager.IMP.taskRepeat(this::unload, 20); try { singleWorldListener = new SingleWorldListener(this); } catch (Exception e) { @@ -165,7 +163,7 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain } } - public void unload() { + private void unload() { if (!this.methodUnloadSetup) { this.methodUnloadSetup = true; try { @@ -298,254 +296,250 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain @Override @SuppressWarnings("deprecation") public void runEntityTask() { PlotSquared.log(C.PREFIX + "KillAllEntities started."); - TaskManager.runTaskRepeat(new Runnable() { - @Override public void run() { - PlotSquared.get().foreachPlotArea(new RunnableVal() { - @Override public void run(PlotArea plotArea) { - final World world = Bukkit.getWorld(plotArea.worldname); - try { - if (world == null) { - return; - } - List entities = world.getEntities(); - Iterator iterator = entities.iterator(); - while (iterator.hasNext()) { - Entity entity = iterator.next(); - switch (entity.getType()) { - case EGG: - case COMPLEX_PART: - case FISHING_HOOK: - case ENDER_SIGNAL: - case LINGERING_POTION: - case AREA_EFFECT_CLOUD: - case EXPERIENCE_ORB: - case LEASH_HITCH: - case FIREWORK: - case WEATHER: - case LIGHTNING: - case WITHER_SKULL: - case UNKNOWN: - case PLAYER: - // non moving / unmovable + TaskManager.runTaskRepeat(() -> PlotSquared.get().foreachPlotArea(new RunnableVal() { + @Override public void run(PlotArea plotArea) { + final World world = Bukkit.getWorld(plotArea.worldname); + try { + if (world == null) { + return; + } + List entities = world.getEntities(); + Iterator iterator = entities.iterator(); + while (iterator.hasNext()) { + Entity entity = iterator.next(); + switch (entity.getType()) { + case EGG: + case COMPLEX_PART: + case FISHING_HOOK: + case ENDER_SIGNAL: + case LINGERING_POTION: + case AREA_EFFECT_CLOUD: + case EXPERIENCE_ORB: + case LEASH_HITCH: + case FIREWORK: + case WEATHER: + case LIGHTNING: + case WITHER_SKULL: + case UNKNOWN: + case PLAYER: + // non moving / unmovable + continue; + case THROWN_EXP_BOTTLE: + case SPLASH_POTION: + case SNOWBALL: + case SHULKER_BULLET: + case SPECTRAL_ARROW: + case TIPPED_ARROW: + case ENDER_PEARL: + case ARROW: + case LLAMA_SPIT: + // managed elsewhere | projectile + continue; + case ITEM_FRAME: + case PAINTING: + // Not vehicles + continue; + case ARMOR_STAND: + // Temporarily classify as vehicle + case MINECART: + case MINECART_CHEST: + case MINECART_COMMAND: + case MINECART_FURNACE: + case MINECART_HOPPER: + case MINECART_MOB_SPAWNER: + case ENDER_CRYSTAL: + case MINECART_TNT: + case BOAT: + if (Settings.Enabled_Components.KILL_ROAD_VEHICLES) { + com.github.intellectualsites.plotsquared.plot.object.Location + location = + BukkitUtil.getLocation(entity.getLocation()); + Plot plot = location.getPlot(); + if (plot == null) { + if (location.isPlotArea()) { + if (entity.hasMetadata("ps-tmp-teleport")) { + continue; + } + iterator.remove(); + entity.remove(); + } continue; - case THROWN_EXP_BOTTLE: - case SPLASH_POTION: - case SNOWBALL: - case SHULKER_BULLET: - case SPECTRAL_ARROW: - case TIPPED_ARROW: - case ENDER_PEARL: - case ARROW: - case LLAMA_SPIT: - // managed elsewhere | projectile + } + List meta = entity.getMetadata("plot"); + if (meta.isEmpty()) { continue; - case ITEM_FRAME: - case PAINTING: - // Not vehicles - continue; - case ARMOR_STAND: - // Temporarily classify as vehicle - case MINECART: - case MINECART_CHEST: - case MINECART_COMMAND: - case MINECART_FURNACE: - case MINECART_HOPPER: - case MINECART_MOB_SPAWNER: - case ENDER_CRYSTAL: - case MINECART_TNT: - case BOAT: - if (Settings.Enabled_Components.KILL_ROAD_VEHICLES) { - com.github.intellectualsites.plotsquared.plot.object.Location - location = - BukkitUtil.getLocation(entity.getLocation()); - Plot plot = location.getPlot(); - if (plot == null) { - if (location.isPlotArea()) { - if (entity.hasMetadata("ps-tmp-teleport")) { + } + Plot origin = (Plot) meta.get(0).value(); + if (!plot.equals(origin.getBasePlot(false))) { + if (entity.hasMetadata("ps-tmp-teleport")) { + continue; + } + iterator.remove(); + entity.remove(); + } + continue; + } else { + continue; + } + case SMALL_FIREBALL: + case FIREBALL: + case DRAGON_FIREBALL: + case DROPPED_ITEM: + if (Settings.Enabled_Components.KILL_ROAD_ITEMS) { + entity.remove(); + } + // dropped item + continue; + case PRIMED_TNT: + case FALLING_BLOCK: + // managed elsewhere + continue; + case LLAMA: + case DONKEY: + case MULE: + case ZOMBIE_HORSE: + case SKELETON_HORSE: + case HUSK: + case ELDER_GUARDIAN: + case WITHER_SKELETON: + case STRAY: + case ZOMBIE_VILLAGER: + case EVOKER: + case EVOKER_FANGS: + case VEX: + case VINDICATOR: + case POLAR_BEAR: + case BAT: + case BLAZE: + case CAVE_SPIDER: + case CHICKEN: + case COW: + case CREEPER: + case ENDERMAN: + case ENDERMITE: + case ENDER_DRAGON: + case GHAST: + case GIANT: + case GUARDIAN: + case HORSE: + case IRON_GOLEM: + case MAGMA_CUBE: + case MUSHROOM_COW: + case OCELOT: + case PIG: + case PIG_ZOMBIE: + case RABBIT: + case SHEEP: + case SILVERFISH: + case SKELETON: + case SLIME: + case SNOWMAN: + case SPIDER: + case SQUID: + case VILLAGER: + case WITCH: + case WITHER: + case WOLF: + case ZOMBIE: + default: { + if (Settings.Enabled_Components.KILL_ROAD_MOBS) { + Location location = entity.getLocation(); + if (BukkitUtil.getLocation(location).isPlotRoad()) { + if (entity instanceof LivingEntity) { + LivingEntity livingEntity = + (LivingEntity) entity; + if (!livingEntity.isLeashed() || !entity + .hasMetadata("keep")) { + Entity passenger = entity.getPassenger(); + if (!(passenger instanceof Player) && entity + .getMetadata("keep").isEmpty()) { + if (entity + .hasMetadata("ps-tmp-teleport")) { continue; } iterator.remove(); entity.remove(); + continue; } - continue; } - List meta = entity.getMetadata("plot"); - if (meta.isEmpty()) { - continue; - } - Plot origin = (Plot) meta.get(0).value(); - if (!plot.equals(origin.getBasePlot(false))) { + } else { + Entity passenger = entity.getPassenger(); + if (!(passenger instanceof Player) && entity + .getMetadata("keep").isEmpty()) { if (entity.hasMetadata("ps-tmp-teleport")) { continue; } iterator.remove(); entity.remove(); + continue; } - continue; - } else { - continue; } - case SMALL_FIREBALL: - case FIREBALL: - case DRAGON_FIREBALL: - case DROPPED_ITEM: - if (Settings.Enabled_Components.KILL_ROAD_ITEMS) { - entity.remove(); - } - // dropped item - continue; - case PRIMED_TNT: - case FALLING_BLOCK: - // managed elsewhere - continue; - case LLAMA: - case DONKEY: - case MULE: - case ZOMBIE_HORSE: - case SKELETON_HORSE: - case HUSK: - case ELDER_GUARDIAN: - case WITHER_SKELETON: - case STRAY: - case ZOMBIE_VILLAGER: - case EVOKER: - case EVOKER_FANGS: - case VEX: - case VINDICATOR: - case POLAR_BEAR: - case BAT: - case BLAZE: - case CAVE_SPIDER: - case CHICKEN: - case COW: - case CREEPER: - case ENDERMAN: - case ENDERMITE: - case ENDER_DRAGON: - case GHAST: - case GIANT: - case GUARDIAN: - case HORSE: - case IRON_GOLEM: - case MAGMA_CUBE: - case MUSHROOM_COW: - case OCELOT: - case PIG: - case PIG_ZOMBIE: - case RABBIT: - case SHEEP: - case SILVERFISH: - case SKELETON: - case SLIME: - case SNOWMAN: - case SPIDER: - case SQUID: - case VILLAGER: - case WITCH: - case WITHER: - case WOLF: - case ZOMBIE: - default: { - if (Settings.Enabled_Components.KILL_ROAD_MOBS) { - Location location = entity.getLocation(); - if (BukkitUtil.getLocation(location).isPlotRoad()) { - if (entity instanceof LivingEntity) { - LivingEntity livingEntity = - (LivingEntity) entity; - if (!livingEntity.isLeashed() || !entity - .hasMetadata("keep")) { - Entity passenger = entity.getPassenger(); - if (!(passenger instanceof Player) && entity - .getMetadata("keep").isEmpty()) { - if (entity - .hasMetadata("ps-tmp-teleport")) { - continue; - } - iterator.remove(); - entity.remove(); - continue; - } - } - } else { - Entity passenger = entity.getPassenger(); - if (!(passenger instanceof Player) && entity - .getMetadata("keep").isEmpty()) { - if (entity.hasMetadata("ps-tmp-teleport")) { - continue; - } - iterator.remove(); - entity.remove(); + } + } + continue; + } + case SHULKER: { + if (Settings.Enabled_Components.KILL_ROAD_MOBS) { + LivingEntity livingEntity = (LivingEntity) entity; + List meta = entity.getMetadata("plot"); + if (meta != null && !meta.isEmpty()) { + if (livingEntity.isLeashed()) + continue; + + List keep = + entity.getMetadata("keep"); + if (keep != null && !keep.isEmpty()) + continue; + + PlotId originalPlotId = + (PlotId) meta.get(0).value(); + if (originalPlotId != null) { + com.github.intellectualsites.plotsquared.plot.object.Location + pLoc = BukkitUtil + .getLocation(entity.getLocation()); + PlotArea area = pLoc.getPlotArea(); + if (area != null) { + PlotId currentPlotId = + PlotId.of(area.getPlotAbs(pLoc)); + if (!originalPlotId.equals(currentPlotId) + && (currentPlotId == null || !area + .getPlot(originalPlotId) + .equals(area.getPlot(currentPlotId)))) { + if (entity + .hasMetadata("ps-tmp-teleport")) { continue; } + iterator.remove(); + entity.remove(); } } } - continue; - } - case SHULKER: { - if (Settings.Enabled_Components.KILL_ROAD_MOBS) { - LivingEntity livingEntity = (LivingEntity) entity; - List meta = entity.getMetadata("plot"); - if (meta != null && !meta.isEmpty()) { - if (livingEntity.isLeashed()) - continue; - - List keep = - entity.getMetadata("keep"); - if (keep != null && !keep.isEmpty()) - continue; - - PlotId originalPlotId = - (PlotId) meta.get(0).value(); - if (originalPlotId != null) { - com.github.intellectualsites.plotsquared.plot.object.Location - pLoc = BukkitUtil - .getLocation(entity.getLocation()); - PlotArea area = pLoc.getPlotArea(); - if (area != null) { - PlotId currentPlotId = - PlotId.of(area.getPlotAbs(pLoc)); - if (!originalPlotId.equals(currentPlotId) - && (currentPlotId == null || !area - .getPlot(originalPlotId) - .equals(area.getPlot(currentPlotId)))) { - if (entity - .hasMetadata("ps-tmp-teleport")) { - continue; - } - iterator.remove(); - entity.remove(); - } - } - } - } else { - //This is to apply the metadata to already spawned shulkers (see EntitySpawnListener.java) - com.github.intellectualsites.plotsquared.plot.object.Location - pLoc = - BukkitUtil.getLocation(entity.getLocation()); - PlotArea area = pLoc.getPlotArea(); - if (area != null) { - PlotId currentPlotId = - PlotId.of(area.getPlotAbs(pLoc)); - if (currentPlotId != null) { - entity.setMetadata("plot", - new FixedMetadataValue( - (Plugin) PlotSquared.get().IMP, - currentPlotId)); - } - } + } else { + //This is to apply the metadata to already spawned shulkers (see EntitySpawnListener.java) + com.github.intellectualsites.plotsquared.plot.object.Location + pLoc = + BukkitUtil.getLocation(entity.getLocation()); + PlotArea area = pLoc.getPlotArea(); + if (area != null) { + PlotId currentPlotId = + PlotId.of(area.getPlotAbs(pLoc)); + if (currentPlotId != null) { + entity.setMetadata("plot", + new FixedMetadataValue( + (Plugin) PlotSquared.get().IMP, + currentPlotId)); } } } } } - } catch (Throwable e) { - e.printStackTrace(); } } - }); + } catch (Throwable e) { + e.printStackTrace(); + } } - }, 20); + }), 20); } @Override @Nullable @@ -740,8 +734,13 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain } @Override public void startMetrics() { - new Metrics(this).start(); + if (this.metricsStarted) { + return; + } + // new Metrics(this).start(); mcstats + new org.bstats.bukkit.Metrics(this); // bstats PlotSquared.log(C.PREFIX + "&6Metrics enabled."); + this.metricsStarted = true; } @Override public void setGenerator(@NonNull final String worldName) { @@ -765,8 +764,8 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain if (!PlotSquared.get().hasPlotArea(worldName)) { SetGenCB.setGenerator(BukkitUtil.getWorld(worldName)); } - } catch (Exception ignored) { - PlotSquared.log("Failed to reload world: " + world + " | " + ignored.getMessage()); + } catch (Exception e) { + PlotSquared.log("Failed to reload world: " + world + " | " + e.getMessage()); Bukkit.getServer().unloadWorld(world, false); return; } diff --git a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitLegacyMappings.java b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitLegacyMappings.java index 9397f192e..3c644cc3f 100644 --- a/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitLegacyMappings.java +++ b/Bukkit/src/main/java/com/github/intellectualsites/plotsquared/bukkit/util/BukkitLegacyMappings.java @@ -31,7 +31,7 @@ import java.util.stream.Collectors; * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -public class BukkitLegacyMappings extends LegacyMappings { +public final class BukkitLegacyMappings extends LegacyMappings { private static final LegacyBlock[] BLOCKS = new LegacyBlock[] {new LegacyBlock(0, "air"), new LegacyBlock(1, "stone"), @@ -731,6 +731,9 @@ public class BukkitLegacyMappings extends LegacyMappings { * @return LegacyBlock if found, else null */ public PlotBlock fromAny(@NonNull final String string) { + if (string.isEmpty()) { + return StringPlotBlock.EVERYTHING; + } String workingString = string; String[] parts = null; if (string.contains(":")) {