Added automatic boats

This commit is contained in:
kaenganxt
2014-11-02 18:15:15 +01:00
5 changed files with 70 additions and 2 deletions

View File

@@ -12,9 +12,11 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.entity.Arrow; import org.bukkit.entity.Arrow;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
@@ -51,6 +53,15 @@ public class AnuraCore extends JavaPlugin {
AnuraCore.sql = new MySQL(this); AnuraCore.sql = new MySQL(this);
AnuraCore.instance = this; AnuraCore.instance = this;
if (AnuraCore.sql.isValid) { 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();
}
}
}
}
this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
Setup.setupConfig(); Setup.setupConfig();
Setup.setupEvents(); Setup.setupEvents();

View File

@@ -6,21 +6,28 @@ import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.UUID;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.entity.Boat;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerToggleFlightEvent; import org.bukkit.event.player.PlayerToggleFlightEvent;
import org.bukkit.event.vehicle.VehicleDestroyEvent;
import org.bukkit.event.vehicle.VehicleExitEvent;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
public class Features implements Listener { public class Features implements Listener {
public enum Feature { public enum Feature {
DOUBLE_JUMP(1); DOUBLE_JUMP(1),
BOAT(2);
private Feature(int id) { private Feature(int id) {
this.featureId = id; this.featureId = id;
@@ -46,6 +53,7 @@ public class Features implements Listener {
private final HashMap<Player, ArrayList<Feature>> playerFeatures = new HashMap<>(); private final HashMap<Player, ArrayList<Feature>> playerFeatures = new HashMap<>();
private final HashMap<Player, Boolean> canDoubleJump = new HashMap<>(); private final HashMap<Player, Boolean> canDoubleJump = new HashMap<>();
private final HashMap<Player, HashMap<Feature, Boolean>> featureEnabled = new HashMap<>(); private final HashMap<Player, HashMap<Feature, Boolean>> featureEnabled = new HashMap<>();
public static ArrayList<UUID> wantFlight = new ArrayList<>();
public void updateFeatures(Player P) { public void updateFeatures(Player P) {
if (!mainLobby()) { if (!mainLobby()) {
@@ -188,6 +196,11 @@ public class Features implements Listener {
P.setExp(1); P.setExp(1);
} }
} }
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);
}
} }
@EventHandler @EventHandler
@@ -211,4 +224,23 @@ public class Features implements Listener {
event.setCancelled(true); event.setCancelled(true);
} }
} }
@EventHandler
public void onBoatDestory(VehicleDestroyEvent event) {
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) && 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)));
if (p.getGameMode().equals(GameMode.CREATIVE) && wantFlight.contains(p.getUniqueId())) {
p.setFlying(true);
}
}
}
} }

View File

@@ -3,6 +3,7 @@ package de.anura.core.commands;
import de.anura.core.API.Core; import de.anura.core.API.Core;
import de.anura.core.AnuraCore; import de.anura.core.AnuraCore;
import static de.anura.core.AnuraCore.sql; import static de.anura.core.AnuraCore.sql;
import de.anura.core.Features;
import de.anura.core.ImgRenderer; import de.anura.core.ImgRenderer;
import java.awt.Image; import java.awt.Image;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
@@ -317,6 +318,19 @@ public class TeamCommands implements CommandExecutor {
System.out.println("Error: " + ex.getLocalizedMessage()); System.out.println("Error: " + ex.getLocalizedMessage());
} }
} else if (cmd.getName().equalsIgnoreCase("toggleBoatFlight")) {
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!");
} 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; return false;
} }

View File

@@ -3,6 +3,8 @@ package de.anura.core.events;
import de.anura.core.API.Core; import de.anura.core.API.Core;
import de.anura.core.API.Money; import de.anura.core.API.Money;
import de.anura.core.AnuraCore; import de.anura.core.AnuraCore;
import org.bukkit.entity.Boat;
import org.bukkit.entity.EntityType;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
@@ -15,6 +17,12 @@ public class PlayerQuit implements Listener {
@EventHandler @EventHandler
public void onPlayerQuit(PlayerQuitEvent event) { 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); event.setQuitMessage(null);
Core.endSitting(event.getPlayer()); Core.endSitting(event.getPlayer());
AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer()); AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer());

View File

@@ -82,3 +82,6 @@ commands:
addAimTWWin: addAimTWWin:
description: Adds an Aim the Water win to the statistics description: Adds an Aim the Water win to the statistics
usage: /<command> <username> usage: /<command> <username>
toggleBoatFlight:
description: Toggles if you automatic flight when you escape a boat (only in gamemode 1)
usage: /<command>