From 0f823862b2ed014d12db8a979c4aed4667541753 Mon Sep 17 00:00:00 2001 From: kaenganxt Date: Sun, 2 Nov 2014 18:39:20 +0100 Subject: [PATCH] Complete the boats feature --- src/de/anura/core/Features.java | 24 +++++++++++++++---- src/de/anura/core/Setup.java | 4 ++++ .../anura/core/commands/PlayerCommands.java | 11 +++++++++ src/de/anura/core/commands/TeamCommands.java | 1 + src/plugin.yml | 3 +++ 5 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/de/anura/core/Features.java b/src/de/anura/core/Features.java index 38fac14..d44e819 100644 --- a/src/de/anura/core/Features.java +++ b/src/de/anura/core/Features.java @@ -52,7 +52,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 final HashMap> featureEnabled = new HashMap<>(); public static ArrayList wantFlight = new ArrayList<>(); public void updateFeatures(Player P) { @@ -72,7 +72,7 @@ public class Features implements Listener { } if (Feature.getById(rs.getInt("featureId")) != null) { this.addFeature(P, Feature.getById(rs.getInt("featureId"))); - featureEnabled.get(P).put(Feature.DOUBLE_JUMP, true); + featureEnabled.get(P).put(Feature.getById(rs.getInt("featureId")), true); } } } catch (SQLException ex) { @@ -111,6 +111,12 @@ public class Features implements Listener { if (P.getGameMode() != GameMode.CREATIVE) { P.setAllowFlight(false); } + } else if (f == Feature.BOAT) { + if (!hasFeature(P, f)) { + Core.statusMsg(P, "dont_have_boats", false); + } + featureEnabled.get(P).put(f, false); + Core.statusMsg(P, "boat_off", true); } } @@ -128,6 +134,12 @@ public class Features implements Listener { P.setExp(1); canDoubleJump.put(P, true); Core.statusMsg(P, "dbl_jump_on", true); + } else if (f == Feature.BOAT) { + if (!hasFeature(P, f)) { + Core.statusMsg(P, "dont_have_boats", false); + } + featureEnabled.get(P).put(f, true); + Core.statusMsg(P, "boat_on", true); } } @@ -197,9 +209,11 @@ public class Features implements Listener { } } - 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); + if (this.hasFeature(P, Feature.BOAT) && featureEnabled.get(P).get(Feature.BOAT)) { + 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); + } } } diff --git a/src/de/anura/core/Setup.java b/src/de/anura/core/Setup.java index 59588ce..aa13bfb 100644 --- a/src/de/anura/core/Setup.java +++ b/src/de/anura/core/Setup.java @@ -213,6 +213,8 @@ public class Setup { Core.getMainClass().getCommand("leaveminigame").setExecutor(pc); Core.getMainClass().getCommand("toggleminigame").setExecutor(pc); Core.getMainClass().getCommand("addAimTWWin").setExecutor(oc); + Core.getMainClass().getCommand("toggleboat").setExecutor(pc); + Core.getMainClass().getCommand("toggleboatflight").setExecutor(tc); } private static void setupInventories() { @@ -253,7 +255,9 @@ public class Setup { Inventories.registerInventory("FEATURES", "features_inv", ChatColor.DARK_BLUE); Inventories.putIntoInventory("FEATURES", 2, Inventories.buildItems(Material.LEATHER_BOOTS, "inv_lobby_double_jump", ChatColor.DARK_AQUA)); + Inventories.putIntoInventory("FEATURES", 4, Inventories.buildItems(Material.BOAT, "inv_lobby_boat", ChatColor.DARK_AQUA)); Inventories.registerAction("FEATURES", 2, Inventories.Action.COMMAND, "toggledbljump"); + Inventories.registerAction("FEATURES", 4, Inventories.Action.COMMAND, "toggleboat"); Inventories.registerInventory("LANGUAGE", "Select language", ChatColor.DARK_BLUE); int i = 0; diff --git a/src/de/anura/core/commands/PlayerCommands.java b/src/de/anura/core/commands/PlayerCommands.java index 318ad5f..2b6a8c6 100644 --- a/src/de/anura/core/commands/PlayerCommands.java +++ b/src/de/anura/core/commands/PlayerCommands.java @@ -37,6 +37,17 @@ public class PlayerCommands implements CommandExecutor { Core.getMainClass().getFeatures().enableFeature(P, Features.Feature.DOUBLE_JUMP); } return true; + } else if (cmd.getName().equalsIgnoreCase("toggleboat")) { + if (P == null) { + Core.statusMsg(sender, "only_player_cmd", false); + return true; + } + if (Core.getMainClass().getFeatures().featureEnabled.get(P).get(Features.Feature.BOAT)) { + Core.getMainClass().getFeatures().disableFeature(P, Features.Feature.BOAT); + } else { + Core.getMainClass().getFeatures().enableFeature(P, Features.Feature.BOAT); + } + return true; } else if (cmd.getName().equalsIgnoreCase("joinminigame")) { if (P == null) { Core.statusMsg(sender, "only_player_cmd", false); diff --git a/src/de/anura/core/commands/TeamCommands.java b/src/de/anura/core/commands/TeamCommands.java index fbe16b1..644aa35 100644 --- a/src/de/anura/core/commands/TeamCommands.java +++ b/src/de/anura/core/commands/TeamCommands.java @@ -327,6 +327,7 @@ public class TeamCommands implements CommandExecutor { Features.wantFlight.add(P.getUniqueId()); P.sendMessage("Du wurdest zu der Liste hinzugefügt!"); } + return true; } else { Core.statusMsg(P, "no_perms", false); return true; diff --git a/src/plugin.yml b/src/plugin.yml index 190b4cc..a198dcd 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -84,4 +84,7 @@ commands: usage: / toggleBoatFlight: description: Toggles if you automatic flight when you escape a boat (only in gamemode 1) + usage: / + toggleboat: + description: Enables/Disables the boat feature usage: / \ No newline at end of file