diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2d513a0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/.idea/ +/target/ diff --git a/pom.xml b/pom.xml index 0ab8e97..d26752e 100755 --- a/pom.xml +++ b/pom.xml @@ -22,8 +22,8 @@ - spigot-repo - https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + papermc + https://papermc.io/repo/repository/maven-public/ @@ -49,8 +49,8 @@ - org.spigotmc - spigot-api + com.destroystokyo.paper + paper-api LATEST provided @@ -58,7 +58,7 @@ com.sk89q.worldguard worldguard-core - 7.0.0-SNAPSHOT + LATEST diff --git a/releases/FlyingCarpet-1.4.4.jar b/releases/FlyingCarpet-1.4.4.jar new file mode 100644 index 0000000..c754d68 Binary files /dev/null and b/releases/FlyingCarpet-1.4.4.jar differ diff --git a/src/main/java/me/sothatsit/flyingcarpet/FCConfig.java b/src/main/java/me/sothatsit/flyingcarpet/FCConfig.java index ba1f530..f361420 100755 --- a/src/main/java/me/sothatsit/flyingcarpet/FCConfig.java +++ b/src/main/java/me/sothatsit/flyingcarpet/FCConfig.java @@ -20,7 +20,7 @@ public class FCConfig { private Set passThrough; private int descendSpeed; - private Set worldguardRegionBlacklist = new HashSet<>(); + private final Set worldguardRegionBlacklist = new HashSet<>(); private static void copySection(ConfigurationSection defaults, ConfigurationSection config, diff --git a/src/main/java/me/sothatsit/flyingcarpet/FlyingCarpet.java b/src/main/java/me/sothatsit/flyingcarpet/FlyingCarpet.java index 68ceedd..074f1c4 100755 --- a/src/main/java/me/sothatsit/flyingcarpet/FlyingCarpet.java +++ b/src/main/java/me/sothatsit/flyingcarpet/FlyingCarpet.java @@ -10,26 +10,27 @@ import me.sothatsit.flyingcarpet.model.BlockOffset; import org.bukkit.Bukkit; -import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockExplodeEvent; import org.bukkit.event.block.BlockPistonExtendEvent; import org.bukkit.event.block.BlockPistonRetractEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityExplodeEvent; +import org.bukkit.event.entity.EntitySpawnEvent; import org.bukkit.event.hanging.HangingBreakEvent; import org.bukkit.event.player.*; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.potion.PotionEffectType; import org.bukkit.scheduler.BukkitRunnable; public class FlyingCarpet extends JavaPlugin implements Listener { @@ -38,7 +39,7 @@ public class FlyingCarpet extends JavaPlugin implements Listener { private FCConfig mainConfig; static List pluginHooks; - private List players = new ArrayList<>(); + private final List players = new ArrayList<>(); @Override public void onEnable() { @@ -64,6 +65,7 @@ public void onDisable() { for (UPlayer up : players) { up.setEnabled(false); } + players.clear(); } public boolean isCarpetAllowed(Location loc) { @@ -99,14 +101,6 @@ public UPlayer getUPlayer(Player p) { return up; } - public UPlayer getUPlayer(UUID uuid) { - for (UPlayer up : players) { - if (up.getPlayer().getUniqueId().equals(uuid)) - return up; - } - return null; - } - public void removeUPlayer(Player p) { UPlayer up = getUPlayer(p); @@ -114,7 +108,6 @@ public void removeUPlayer(Player p) { return; players.remove(up); - up.setEnabled(false); } @@ -130,28 +123,18 @@ public void onPlayerKick(PlayerKickEvent e) { @EventHandler public void onBlockBreak(BlockBreakEvent e) { - for (UPlayer up : players) { - Player p = up.getPlayer(); - + for (final UPlayer up : players) { if (!up.isCarpetBlock(e.getBlock())) { if (up.isEnabled()) { - final UUID uuid = p.getUniqueId(); new BukkitRunnable() { @Override public void run() { - UPlayer up = getUPlayer(uuid); - - if (up == null) - return; - up.createCarpet(); } }.runTask(this); } - continue; } - e.setCancelled(true); return; } @@ -195,32 +178,46 @@ public void onHangingBreak(HangingBreakEvent e) { } @EventHandler - public void onEntityExplode(EntityExplodeEvent e) { + public void onBlockExplode(BlockExplodeEvent e) { List remove = new ArrayList<>(); - for (Block b : e.blockList()) { - for (UPlayer up : players) { - Player p = up.getPlayer(); - + for (final UPlayer up : players) { if (!up.isCarpetBlock(b)) { if (up.isEnabled()) { - final UUID uuid = p.getUniqueId(); new BukkitRunnable() { @Override public void run() { - UPlayer up = getUPlayer(uuid); + up.createCarpet(); + } + }.runTask(this); + } + continue; + } + remove.add(b); + } + } - if (up == null) - return; + for (Block block : remove) { + e.blockList().remove(block); + } + } + @EventHandler + public void onEntityExplode(EntityExplodeEvent e) { + List remove = new ArrayList<>(); + for (Block b : e.blockList()) { + for (final UPlayer up : players) { + if (!up.isCarpetBlock(b)) { + if (up.isEnabled()) { + new BukkitRunnable() { + @Override + public void run() { up.createCarpet(); } }.runTask(this); } - continue; } - remove.add(b); } } @@ -325,6 +322,19 @@ public void onPlayerToggleSneak(PlayerToggleSneakEvent e) { up.startDescent(); } + @EventHandler + public void onFallBlockPlace(EntitySpawnEvent e) { + if (e.getEntityType().equals(EntityType.FALLING_BLOCK)) { + for (UPlayer up : players) { + if (!up.isCarpetBlock(e.getLocation())) + continue; + + e.getEntity().remove(); + return; + } + } + } + public static FlyingCarpet getInstance() { return instance; } @@ -344,12 +354,4 @@ public static void warning(String warning) { public static void severe(String severe) { instance.getLogger().severe(severe); } - - public static void sync(Runnable task) { - Bukkit.getScheduler().runTask(instance, task); - } - - public static void async(Runnable task) { - Bukkit.getScheduler().runTaskAsynchronously(instance, task); - } } diff --git a/src/main/java/me/sothatsit/flyingcarpet/UPlayer.java b/src/main/java/me/sothatsit/flyingcarpet/UPlayer.java index a3269d0..e8d343a 100755 --- a/src/main/java/me/sothatsit/flyingcarpet/UPlayer.java +++ b/src/main/java/me/sothatsit/flyingcarpet/UPlayer.java @@ -7,7 +7,6 @@ import me.sothatsit.flyingcarpet.model.Region; import me.sothatsit.flyingcarpet.util.Checks; import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.Block; import org.bukkit.block.BlockState; @@ -56,6 +55,11 @@ public void setSize(int size) { } public void setMaterial(String material) { + if (!enabled || (this.material == null || this.material.equals(material))) { + this.material = material; + return; + } + this.material = material; createCarpet(); } @@ -75,7 +79,6 @@ public void setLocation(Location loc) { } this.loc = loc; - createCarpet(); } @@ -106,7 +109,6 @@ public void setTools(boolean tools) { } this.tools = tools; - this.createCarpet(); } @@ -121,7 +123,6 @@ public void setLight(boolean light) { } this.light = light; - this.createCarpet(); } diff --git a/src/main/java/me/sothatsit/flyingcarpet/hooks/RedProtectHook.java b/src/main/java/me/sothatsit/flyingcarpet/hooks/RedProtectHook.java index 9a2fabc..d89699e 100644 --- a/src/main/java/me/sothatsit/flyingcarpet/hooks/RedProtectHook.java +++ b/src/main/java/me/sothatsit/flyingcarpet/hooks/RedProtectHook.java @@ -13,7 +13,7 @@ public String hookName() { @Override public boolean isCarpetAllowed(Location loc) { - Region r = RedProtect.get().rm.getTopRegion(loc); + Region r = RedProtect.get().getAPI().getRegion(loc); if (r == null) return true; return r.getFlagBool("allow-magiccarpet"); @@ -21,7 +21,7 @@ public boolean isCarpetAllowed(Location loc) { @Override public boolean canBuild(Player player) { - Region r = RedProtect.get().rm.getTopRegion(player.getLocation()); + Region r = RedProtect.get().getAPI().getRegion(player.getLocation()); if (r == null) return true; return r.canBuild(player); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 8a4a9f7..17c10b2 100755 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,7 +1,7 @@ main: me.sothatsit.flyingcarpet.FlyingCarpet author: sothatsit name: FlyingCarpet -version: 1.4.3 +version: 1.4.4 api-version: 1.13 softdepend: [WorldGuard, WorldEdit, RedProtect] commands: