From 9b9e63e251a04f5cb24d6e2c0ebbef82a8d4682f Mon Sep 17 00:00:00 2001 From: Winfried Date: Fri, 8 Aug 2014 17:18:12 +1000 Subject: [PATCH 1/2] Add WorldGuard support (did this ages ago, forgot to push) --- pom.xml | 30 +++++++---- .../trainticket/TrainTicketBlockListener.java | 7 +-- .../trainticket/TrainTicketListener.java | 22 ++++++-- .../TrainTicketPlayerListener.java | 7 +-- .../plugins/trainticket/Trainticket.java | 51 ++++++++++++++----- src/main/resources/plugin.yml | 4 +- 6 files changed, 89 insertions(+), 32 deletions(-) diff --git a/pom.xml b/pom.xml index b709aee..94e84dd 100644 --- a/pom.xml +++ b/pom.xml @@ -2,12 +2,20 @@ 4.0.0 me.wizzledonker.plugins.trainticket TrainTicket - 1.3 + 1.5 TrainTicket bukkit-repo - http://repo.bukkit.org/artifactory/repo + http://repo.bukkit.org/content/groups/public/ + + + vault-repo + http://ci.herocraftonline.com/plugin/repository/everything + + + sk89q-repo + http://maven.sk89q.com/repo/ @@ -24,19 +32,23 @@ + + com.sk89q + worldguard + 5.7.3 + compile + jar + org.bukkit bukkit - 0.0.1-SNAPSHOT - jar - compile + 1.4.7-R1.1-SNAPSHOT - net.milkbowl + net.milkbowl.vault Vault - 1.1.4 - jar - compile + 1.2.26-SNAPSHOT + provided \ No newline at end of file diff --git a/src/main/java/me/wizzledonker/plugins/trainticket/TrainTicketBlockListener.java b/src/main/java/me/wizzledonker/plugins/trainticket/TrainTicketBlockListener.java index 6764684..635df18 100644 --- a/src/main/java/me/wizzledonker/plugins/trainticket/TrainTicketBlockListener.java +++ b/src/main/java/me/wizzledonker/plugins/trainticket/TrainTicketBlockListener.java @@ -6,21 +6,22 @@ import org.bukkit.ChatColor; import org.bukkit.entity.Player; -import org.bukkit.event.block.BlockListener; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; import org.bukkit.event.block.SignChangeEvent; /** * * @author Win */ -public class TrainTicketBlockListener extends BlockListener { +public class TrainTicketBlockListener implements Listener { public static Trainticket plugin; public TrainTicketBlockListener(Trainticket instance) { plugin = instance; } - @Override + @EventHandler public void onSignChange(SignChangeEvent event) { Player player = event.getPlayer(); if (!event.getLine(0).equalsIgnoreCase("[booth]")) { diff --git a/src/main/java/me/wizzledonker/plugins/trainticket/TrainTicketListener.java b/src/main/java/me/wizzledonker/plugins/trainticket/TrainTicketListener.java index ce6c246..4a49e62 100644 --- a/src/main/java/me/wizzledonker/plugins/trainticket/TrainTicketListener.java +++ b/src/main/java/me/wizzledonker/plugins/trainticket/TrainTicketListener.java @@ -1,14 +1,18 @@ package me.wizzledonker.plugins.trainticket; +import com.sk89q.worldguard.protection.ApplicableRegionSet; +import com.sk89q.worldguard.protection.managers.RegionManager; +import com.sk89q.worldguard.protection.regions.ProtectedRegion; import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; import org.bukkit.event.vehicle.VehicleEnterEvent; -import org.bukkit.event.vehicle.VehicleListener; /** * * @author Win */ -public class TrainTicketListener extends VehicleListener{ +public class TrainTicketListener implements Listener{ public static Trainticket plugin; @@ -16,7 +20,7 @@ public TrainTicketListener(Trainticket instance) { plugin = instance; } - @Override + @EventHandler public void onVehicleEnter(VehicleEnterEvent event) { if (event.getEntered() instanceof Player) { Player player = (Player) event.getEntered(); @@ -27,6 +31,18 @@ public void onVehicleEnter(VehicleEnterEvent event) { player.sendMessage(plugin.handleMessages(2)); return; } + if (plugin.isWorldGuard()) { + RegionManager regionManager = plugin.worldGuard.getRegionManager(player.getWorld()); + ApplicableRegionSet set = regionManager.getApplicableRegions(player.getLocation()); + + boolean ticket = false; + for (ProtectedRegion region : set) { + if (plugin.worldGuardRegions.contains(region.getId())) { + ticket = true; + } + } + if (!ticket) return; + } if (player.getItemInHand().getTypeId() == plugin.ticketDataValue && plugin.hasTicket(player)) { plugin.setTicket(player, false); player.sendMessage(plugin.handleMessages(1)); diff --git a/src/main/java/me/wizzledonker/plugins/trainticket/TrainTicketPlayerListener.java b/src/main/java/me/wizzledonker/plugins/trainticket/TrainTicketPlayerListener.java index 8c611a7..8629de4 100644 --- a/src/main/java/me/wizzledonker/plugins/trainticket/TrainTicketPlayerListener.java +++ b/src/main/java/me/wizzledonker/plugins/trainticket/TrainTicketPlayerListener.java @@ -9,11 +9,12 @@ import org.bukkit.block.Block; import org.bukkit.block.Sign; import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerListener; -public class TrainTicketPlayerListener extends PlayerListener { +public class TrainTicketPlayerListener implements Listener { public static Trainticket plugin; @@ -21,7 +22,7 @@ public TrainTicketPlayerListener(Trainticket instance) { plugin = instance; } - @Override + @EventHandler public void onPlayerInteract(PlayerInteractEvent event) { Action action = event.getAction(); if (!action.equals(Action.RIGHT_CLICK_BLOCK)) { diff --git a/src/main/java/me/wizzledonker/plugins/trainticket/Trainticket.java b/src/main/java/me/wizzledonker/plugins/trainticket/Trainticket.java index 7b7d14a..6cfb785 100644 --- a/src/main/java/me/wizzledonker/plugins/trainticket/Trainticket.java +++ b/src/main/java/me/wizzledonker/plugins/trainticket/Trainticket.java @@ -11,18 +11,16 @@ package me.wizzledonker.plugins.trainticket; +import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import java.io.File; +import java.util.Arrays; import java.util.HashSet; +import java.util.List; import java.util.Set; import net.milkbowl.vault.economy.Economy; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; -import org.bukkit.event.Event.Priority; -import org.bukkit.event.Event.Type; -import org.bukkit.event.block.BlockListener; -import org.bukkit.event.player.PlayerListener; -import org.bukkit.event.vehicle.VehicleListener; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.Plugin; @@ -31,14 +29,16 @@ import org.bukkit.plugin.java.JavaPlugin; public class Trainticket extends JavaPlugin { - VehicleListener signChestListener = new TrainTicketListener(this); - PlayerListener trainPlayerListener = new TrainTicketPlayerListener(this); - BlockListener trainBlockListener = new TrainTicketBlockListener(this); + TrainTicketListener signChestListener = new TrainTicketListener(this); + TrainTicketPlayerListener trainPlayerListener = new TrainTicketPlayerListener(this); + TrainTicketBlockListener trainBlockListener = new TrainTicketBlockListener(this); public static Economy economy = null; + public WorldGuardPlugin worldGuard = null; public boolean messagesEnable = true; public boolean dispenseMinecart = false; public int ticketDataValue; + public List worldGuardRegions = null; private Set ticketSet = new HashSet(); @@ -55,9 +55,14 @@ public void onEnable() { System.out.println(this + ": Vault economy not found, switching to gold ingots!"); } - pm.registerEvent(Type.VEHICLE_ENTER, signChestListener, Priority.Normal, this); - pm.registerEvent(Type.PLAYER_INTERACT, trainPlayerListener, Priority.Normal, this); - pm.registerEvent(Type.SIGN_CHANGE, trainBlockListener, Priority.Normal, this); + worldGuard = getWorldGuard(); + if (worldGuard != null) { + System.out.println(this + ": Successfully linked with WorldGuard"); + } + + pm.registerEvents(signChestListener, this); + pm.registerEvents(trainPlayerListener, this); + pm.registerEvents(trainBlockListener, this); setupConfig(); System.out.println(this + " by wizzledonker loaded all events"); @@ -87,6 +92,10 @@ public void setupConfig() { if (!getConfig().contains("booth.dispense_minecart")) { getConfig().set("booth.dispense_minecart", false); } + if (!getConfig().contains("worldguard_regions")) { + List listOfStrings = Arrays.asList("trainstation", "road", "city"); + getConfig().set("worldguard_regions", listOfStrings); + } saveConfig(); @@ -94,6 +103,7 @@ public void setupConfig() { messagesEnable = getConfig().getBoolean("messages.enabled", true); dispenseMinecart = getConfig().getBoolean("booth.dispense_minecart", false); ticketDataValue = getConfig().getInt("booth.ticket_item_id", 339); + worldGuardRegions = getConfig().getStringList("worldguard_regions"); System.out.println(this + " has finished loading the config file."); } @@ -138,8 +148,10 @@ public void setTicket(Player player, boolean enabled) { public void buyTicket(Double price, Player player) { //All messages are taken from method (String) handleMessages() - ItemStack it = new ItemStack(ticketDataValue, 1); + if (hasTicket(player)) return; + ItemStack it = new ItemStack(ticketDataValue, 1); + if (!isGoldIngot()) { if (!(economy.getBalance(player.getName()) > price)) { player.sendMessage(ChatColor.RED + handleMessages(4)); @@ -174,6 +186,10 @@ private boolean isGoldIngot() { return (economy == null); } + public boolean isWorldGuard() { + return (economy != null); + } + private Boolean setupEconomy() { //Sets up Vault to be used with the plugin Plugin vault = this.getServer().getPluginManager().getPlugin("Vault"); @@ -187,4 +203,15 @@ private Boolean setupEconomy() { return (economy != null); } + + private WorldGuardPlugin getWorldGuard() { + Plugin plugin = getServer().getPluginManager().getPlugin("WorldGuard"); + + // WorldGuard may not be loaded + if (plugin == null || !(plugin instanceof WorldGuardPlugin)) { + return null; // Maybe you want throw an exception instead + } + + return (WorldGuardPlugin) plugin; + } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index e9e8094..4545b0f 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -4,8 +4,8 @@ description: Users must buy tickets before they are allowed to enter a train/car main: me.wizzledonker.plugins.trainticket.Trainticket name: TrainTicket startup: postworld -version: '1.3' -softdepend: [Vault] +version: '1.5' +softdepend: [Vault, WorldGuard] permissions: TrainTicket.exempt: Description: Defines whether the player is exempt from ticket payment From 643c124bbf992161dce809cb5e9b9d0af7316605 Mon Sep 17 00:00:00 2001 From: Winfried Date: Fri, 8 Aug 2014 17:20:06 +1000 Subject: [PATCH 2/2] Fix --- pom.xml | 2 +- .../java/me/wizzledonker/plugins/trainticket/Trainticket.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 94e84dd..8a9a85d 100644 --- a/pom.xml +++ b/pom.xml @@ -47,7 +47,7 @@ net.milkbowl.vault Vault - 1.2.26-SNAPSHOT + 1.4.1 provided diff --git a/src/main/java/me/wizzledonker/plugins/trainticket/Trainticket.java b/src/main/java/me/wizzledonker/plugins/trainticket/Trainticket.java index 6cfb785..aa18b6d 100644 --- a/src/main/java/me/wizzledonker/plugins/trainticket/Trainticket.java +++ b/src/main/java/me/wizzledonker/plugins/trainticket/Trainticket.java @@ -153,12 +153,12 @@ public void buyTicket(Double price, Player player) { ItemStack it = new ItemStack(ticketDataValue, 1); if (!isGoldIngot()) { - if (!(economy.getBalance(player.getName()) > price)) { + if (!(economy.getBalance(player) > price)) { player.sendMessage(ChatColor.RED + handleMessages(4)); return; } setTicket(player, true); - economy.withdrawPlayer(player.getName(), price); + economy.withdrawPlayer(player, price); player.setItemInHand(it); player.sendMessage(ChatColor.GREEN + handleMessages(5).replace("%price%", ChatColor.WHITE + price.toString())); } else {