From 149ba5e92d14a25fb9b3a877cd12c84e567153a9 Mon Sep 17 00:00:00 2001 From: Lukas Date: Sun, 2 Nov 2014 17:09:14 +0100 Subject: [PATCH] *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