From 149ba5e92d14a25fb9b3a877cd12c84e567153a9 Mon Sep 17 00:00:00 2001 From: Lukas Date: Sun, 2 Nov 2014 17:09:14 +0100 Subject: [PATCH 1/2] *Added Autoboat --- src/de/anura/core/AnuraCore.java | 13 ++++++++ src/de/anura/core/Features.java | 35 +++++++++++++++++++- src/de/anura/core/commands/TeamCommands.java | 14 ++++++++ src/de/anura/core/events/PlayerQuit.java | 8 +++++ src/plugin.yml | 5 ++- 5 files changed, 73 insertions(+), 2 deletions(-) diff --git a/src/de/anura/core/AnuraCore.java b/src/de/anura/core/AnuraCore.java index 6648309..6b26186 100644 --- a/src/de/anura/core/AnuraCore.java +++ b/src/de/anura/core/AnuraCore.java @@ -12,9 +12,11 @@ import java.util.ArrayList; import java.util.HashMap; import org.bukkit.Bukkit; import org.bukkit.Location; +import org.bukkit.World; import org.bukkit.block.Block; import org.bukkit.entity.Arrow; import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; @@ -50,6 +52,17 @@ public class AnuraCore extends JavaPlugin { public void onEnable() { AnuraCore.sql = new MySQL(this); AnuraCore.instance = this; + if(AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")){ + for(World w : Bukkit.getWorlds()){ + for(Entity e : w.getEntities()){ + if(e.getType().equals(EntityType.BOAT)){ + e.remove(); + } + } + } + } + + if (AnuraCore.sql.isValid) { this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); Setup.setupConfig(); diff --git a/src/de/anura/core/Features.java b/src/de/anura/core/Features.java index b93a032..463c34c 100644 --- a/src/de/anura/core/Features.java +++ b/src/de/anura/core/Features.java @@ -6,21 +6,30 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; +import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.GameMode; +import org.bukkit.Material; +import org.bukkit.entity.Boat; import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerToggleFlightEvent; +import org.bukkit.event.vehicle.VehicleDestroyEvent; +import org.bukkit.event.vehicle.VehicleExitEvent; import org.bukkit.util.Vector; public class Features implements Listener { + + public static ArrayList wantFlight = new ArrayList<>(); public enum Feature { - DOUBLE_JUMP(1); + DOUBLE_JUMP(1), + BOAT(2); private Feature(int id) { this.featureId = id; @@ -188,6 +197,11 @@ public class Features implements Listener { P.setExp(1); } } + + if (P.getLocation().getBlock().getType().equals(Material.STATIONARY_WATER) && P.getVehicle() == null) { + Boat b = (Boat) P.getWorld().spawnEntity(event.getTo(), EntityType.BOAT); + b.setPassenger(P); + } } @EventHandler @@ -211,4 +225,23 @@ public class Features implements Listener { event.setCancelled(true); } } + + @EventHandler + public void onBoatDestory(VehicleDestroyEvent event) { + if (event.getVehicle().getType().equals(EntityType.BOAT)) { + event.setCancelled(true); + } + } + + @EventHandler + public void onExit(VehicleExitEvent event) { + if (event.getVehicle().getType().equals(EntityType.BOAT)) { + event.getVehicle().remove(); + Player p = (Player) event.getExited(); + p.setVelocity(p.getVelocity().add(new Vector(0D, 1D, 0D))); + if (p.getGameMode().equals(GameMode.CREATIVE) && wantFlight.contains(p.getUniqueId())) { + p.setFlying(true); + } + } + } } diff --git a/src/de/anura/core/commands/TeamCommands.java b/src/de/anura/core/commands/TeamCommands.java index 4f48486..f7bc83d 100644 --- a/src/de/anura/core/commands/TeamCommands.java +++ b/src/de/anura/core/commands/TeamCommands.java @@ -3,6 +3,7 @@ package de.anura.core.commands; import de.anura.core.API.Core; import de.anura.core.AnuraCore; import static de.anura.core.AnuraCore.sql; +import de.anura.core.Features; import de.anura.core.ImgRenderer; import java.awt.Image; import java.awt.image.BufferedImage; @@ -317,6 +318,19 @@ public class TeamCommands implements CommandExecutor { System.out.println("Error: " + ex.getLocalizedMessage()); } + } else if (cmd.getName().equalsIgnoreCase("toggleBoatFlight")) { + if (P.hasPermission("core.boat.toggleflight")) { + if (Features.wantFlight.contains(P.getUniqueId())) { + Features.wantFlight.remove(P.getUniqueId()); + P.sendMessage("Du wurdest aus der Liste entfernt!"); + } else { + Features.wantFlight.add(P.getUniqueId()); + P.sendMessage("Du wurdest zu der Liste hinzugefügt!"); + } + } else { + Core.statusMsg(P, "no_perms", false); + return true; + } } return false; } diff --git a/src/de/anura/core/events/PlayerQuit.java b/src/de/anura/core/events/PlayerQuit.java index b2c2539..d255915 100644 --- a/src/de/anura/core/events/PlayerQuit.java +++ b/src/de/anura/core/events/PlayerQuit.java @@ -3,6 +3,8 @@ package de.anura.core.events; import de.anura.core.API.Core; import de.anura.core.API.Money; import de.anura.core.AnuraCore; +import org.bukkit.entity.Boat; +import org.bukkit.entity.EntityType; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerQuitEvent; @@ -15,6 +17,12 @@ public class PlayerQuit implements Listener { @EventHandler public void onPlayerQuit(PlayerQuitEvent event) { + if(event.getPlayer().getVehicle() != null){ + if(event.getPlayer().getVehicle().getType().equals(EntityType.BOAT)){ + Boat b = (Boat) event.getPlayer().getVehicle(); + b.remove(); + } + } event.setQuitMessage(null); Core.endSitting(event.getPlayer()); AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer()); diff --git a/src/plugin.yml b/src/plugin.yml index 6b31f26..ebbda5d 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -81,4 +81,7 @@ commands: usage: / (xpBattle|pool) addAimTWWin: description: Adds an Aim the Water win to the statistics - usage: / \ No newline at end of file + usage: / + toggleBoatFlight: + description: Adds an Aim the Water win to the statistics + usage: / \ No newline at end of file From f4d84c40b105a6729fa0c42cbe43b27bc97653d6 Mon Sep 17 00:00:00 2001 From: Lukas Date: Sun, 2 Nov 2014 18:08:16 +0100 Subject: [PATCH 2/2] *Bug fixes --- src/de/anura/core/AnuraCore.java | 16 +++++++--------- src/de/anura/core/Features.java | 9 ++++----- src/de/anura/core/commands/TeamCommands.java | 2 +- src/plugin.yml | 2 +- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/src/de/anura/core/AnuraCore.java b/src/de/anura/core/AnuraCore.java index 6b26186..9483b32 100644 --- a/src/de/anura/core/AnuraCore.java +++ b/src/de/anura/core/AnuraCore.java @@ -52,18 +52,16 @@ public class AnuraCore extends JavaPlugin { public void onEnable() { AnuraCore.sql = new MySQL(this); AnuraCore.instance = this; - if(AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")){ - for(World w : Bukkit.getWorlds()){ - for(Entity e : w.getEntities()){ - if(e.getType().equals(EntityType.BOAT)){ - e.remove(); + if (AnuraCore.sql.isValid) { + if (AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) { + for (World w : Bukkit.getWorlds()) { + for (Entity e : w.getEntities()) { + if (e.getType().equals(EntityType.BOAT)) { + e.remove(); + } } } } - } - - - if (AnuraCore.sql.isValid) { this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); Setup.setupConfig(); Setup.setupEvents(); diff --git a/src/de/anura/core/Features.java b/src/de/anura/core/Features.java index 463c34c..38fac14 100644 --- a/src/de/anura/core/Features.java +++ b/src/de/anura/core/Features.java @@ -23,8 +23,6 @@ import org.bukkit.event.vehicle.VehicleExitEvent; import org.bukkit.util.Vector; public class Features implements Listener { - - public static ArrayList wantFlight = new ArrayList<>(); public enum Feature { @@ -55,6 +53,7 @@ public class Features implements Listener { private final HashMap> playerFeatures = new HashMap<>(); private final HashMap canDoubleJump = new HashMap<>(); private final HashMap> featureEnabled = new HashMap<>(); + public static ArrayList wantFlight = new ArrayList<>(); public void updateFeatures(Player P) { if (!mainLobby()) { @@ -198,7 +197,7 @@ public class Features implements Listener { } } - if (P.getLocation().getBlock().getType().equals(Material.STATIONARY_WATER) && P.getVehicle() == null) { + if (P.getLocation().getBlock().getType().equals(Material.STATIONARY_WATER) && P.getVehicle() == null && P.getVehicle().getType().equals(EntityType.BOAT)) { Boat b = (Boat) P.getWorld().spawnEntity(event.getTo(), EntityType.BOAT); b.setPassenger(P); } @@ -228,14 +227,14 @@ public class Features implements Listener { @EventHandler public void onBoatDestory(VehicleDestroyEvent event) { - if (event.getVehicle().getType().equals(EntityType.BOAT)) { + if (event.getVehicle().getType().equals(EntityType.BOAT) && AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) { event.setCancelled(true); } } @EventHandler public void onExit(VehicleExitEvent event) { - if (event.getVehicle().getType().equals(EntityType.BOAT)) { + if (event.getVehicle().getType().equals(EntityType.BOAT) && AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) { event.getVehicle().remove(); Player p = (Player) event.getExited(); p.setVelocity(p.getVelocity().add(new Vector(0D, 1D, 0D))); diff --git a/src/de/anura/core/commands/TeamCommands.java b/src/de/anura/core/commands/TeamCommands.java index f7bc83d..fbe16b1 100644 --- a/src/de/anura/core/commands/TeamCommands.java +++ b/src/de/anura/core/commands/TeamCommands.java @@ -319,7 +319,7 @@ public class TeamCommands implements CommandExecutor { } } else if (cmd.getName().equalsIgnoreCase("toggleBoatFlight")) { - if (P.hasPermission("core.boat.toggleflight")) { + if (P != null && P.hasPermission("core.boat.toggleflight")) { if (Features.wantFlight.contains(P.getUniqueId())) { Features.wantFlight.remove(P.getUniqueId()); P.sendMessage("Du wurdest aus der Liste entfernt!"); diff --git a/src/plugin.yml b/src/plugin.yml index ebbda5d..190b4cc 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -83,5 +83,5 @@ commands: description: Adds an Aim the Water win to the statistics usage: / toggleBoatFlight: - description: Adds an Aim the Water win to the statistics + description: Toggles if you automatic flight when you escape a boat (only in gamemode 1) usage: / \ No newline at end of file