diff --git a/pom.xml b/pom.xml index dd76ead..758a6eb 100644 --- a/pom.xml +++ b/pom.xml @@ -85,15 +85,6 @@ - - sacredlabyrinth-repo - http://repo.sacredlabyrinth.net:8081/artifactory/repo/ - - true - always - - - junction-repo http://junction.at/repo/ @@ -107,6 +98,15 @@ mcstats-repo http://repo.mcstats.org/content/repositories/public + + + sacredlabyrinth-repo + http://repo.sacredlabyrinth.net:8081/artifactory/repo/ + + true + always + + @@ -142,6 +142,14 @@ jar + + me.ryanhamshire + griefprevention + 7.8 + compile + jar + + de.diddiz logblock diff --git a/src/com/dre/brewery/Barrel.java b/src/com/dre/brewery/Barrel.java index 6ef54ef..749876e 100644 --- a/src/com/dre/brewery/Barrel.java +++ b/src/com/dre/brewery/Barrel.java @@ -15,6 +15,7 @@ import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.plugin.Plugin; +import com.dre.brewery.integration.GriefPreventionBarrel; import com.dre.brewery.integration.LWCBarrel; import com.dre.brewery.integration.LogBlockBarrel; import com.dre.brewery.integration.WGBarrel; @@ -114,6 +115,11 @@ public class Barrel { } } + if (P.p.getServer().getPluginManager().isPluginEnabled("GriefPrevention")) { + if (!GriefPreventionBarrel.checkAccess(player, spigot)) { + return false; + } + } if (event != null) { plugin = P.p.getServer().getPluginManager().getPlugin("LWC"); diff --git a/src/com/dre/brewery/Words.java b/src/com/dre/brewery/Words.java index 93428ce..aa7985a 100644 --- a/src/com/dre/brewery/Words.java +++ b/src/com/dre/brewery/Words.java @@ -227,14 +227,15 @@ public class Words { words = words + " "; } // remove all "from" and split "words" there - String[] splitted = words.split(from); + String[] splitted = words.split(java.util.regex.Pattern.quote(from)); + int index = 0; String part; // if there are occurences of "from" if (splitted.length > 1) { // - 1 because dont add "to" to the end of last part - for (int i = 0; i < splitted.length - 1; i++) { - part = splitted[i]; + while (index < splitted.length - 1) { + part = splitted[index]; // add current part of "words" to the output newWords = newWords + part; // check if the part ends with correct string @@ -246,10 +247,10 @@ public class Words { // add original newWords = newWords + from; } + index++; } - // add the last part to finish the sentence - part = splitted[splitted.length - 1]; + part = splitted[index]; if (part.equals(" ")) { // dont add the space to the end return newWords; @@ -297,4 +298,5 @@ public class Words { } } } + } \ No newline at end of file diff --git a/src/com/dre/brewery/integration/GriefPreventionBarrel.java b/src/com/dre/brewery/integration/GriefPreventionBarrel.java new file mode 100644 index 0000000..0f470f4 --- /dev/null +++ b/src/com/dre/brewery/integration/GriefPreventionBarrel.java @@ -0,0 +1,45 @@ +package com.dre.brewery.integration; + + +import org.bukkit.block.Block; +import org.bukkit.entity.Player; + +import com.dre.brewery.P; +import me.ryanhamshire.GriefPrevention.Claim; +import me.ryanhamshire.GriefPrevention.Configuration.WorldConfig; +import me.ryanhamshire.GriefPrevention.GriefPrevention; +import me.ryanhamshire.GriefPrevention.Messages; +import me.ryanhamshire.GriefPrevention.PlayerData; +import me.ryanhamshire.GriefPrevention.TextMode; + +public class GriefPreventionBarrel { + + public static boolean checkAccess(Player player, Block sign) { + + WorldConfig wc = GriefPrevention.instance.getWorldCfg(player.getWorld()); + /*if (!wc.Enabled()) { + return true; + }*/ + + PlayerData playerData = GriefPrevention.instance.dataStore.getPlayerData(player.getName()); + + // block container use during pvp combat + if (playerData.inPvpCombat() && wc.getPvPBlockContainers()) { + GriefPrevention.sendMessage(player, TextMode.Err, Messages.PvPNoContainers); + return false; + } + + // check permissions for the claim the Barrel is in + if (wc.getContainersRules().Allowed(sign.getLocation(), player, true).Denied()) { + P.p.msg(player, P.p.languageReader.get("Error_NoBarrelAccess")); + return false; + } + + // drop any pvp protection, as the player opens a barrel + if (playerData.pvpImmune) { + playerData.pvpImmune = false; + GriefPrevention.sendMessage(player, TextMode.Warn, Messages.PvPImmunityEnd); + } + return true; + } +} diff --git a/src/com/dre/brewery/listeners/PlayerListener.java b/src/com/dre/brewery/listeners/PlayerListener.java index 8711254..c560a3a 100644 --- a/src/com/dre/brewery/listeners/PlayerListener.java +++ b/src/com/dre/brewery/listeners/PlayerListener.java @@ -1,14 +1,7 @@ package com.dre.brewery.listeners; import org.bukkit.entity.Player; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerItemConsumeEvent; -import org.bukkit.event.player.PlayerRespawnEvent; -import org.bukkit.event.player.PlayerMoveEvent; -import org.bukkit.event.player.AsyncPlayerChatEvent; -import org.bukkit.event.player.PlayerCommandPreprocessEvent; -import org.bukkit.event.player.PlayerLoginEvent; -import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.event.player.*; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; @@ -200,27 +193,29 @@ public class PlayerListener implements Listener { } // player joins while passed out - @EventHandler(priority = EventPriority.LOW) + @EventHandler() public void onPlayerLogin(PlayerLoginEvent event) { - final Player player = event.getPlayer(); - BPlayer bplayer = BPlayer.get(player.getName()); - if (bplayer != null) { - if (player.hasPermission("brewery.bypass.logindeny")) { - if (bplayer.getDrunkeness() > 100) { - bplayer.setData(100, 0); + if (event.getResult() == PlayerLoginEvent.Result.ALLOWED) { + final Player player = event.getPlayer(); + BPlayer bplayer = BPlayer.get(player.getName()); + if (bplayer != null) { + if (player.hasPermission("brewery.bypass.logindeny")) { + if (bplayer.getDrunkeness() > 100) { + bplayer.setData(100, 0); + } + bplayer.join(player); + return; + } + switch (bplayer.canJoin()) { + case 0: + bplayer.join(player); + return; + case 2: + event.disallow(PlayerLoginEvent.Result.KICK_OTHER, P.p.languageReader.get("Player_LoginDeny")); + return; + case 3: + event.disallow(PlayerLoginEvent.Result.KICK_OTHER, P.p.languageReader.get("Player_LoginDenyLong")); } - bplayer.join(player); - return; - } - switch (bplayer.canJoin()) { - case 0: - bplayer.join(player); - return; - case 2: - event.disallow(PlayerLoginEvent.Result.KICK_OTHER, P.p.languageReader.get("Player_LoginDeny")); - return; - case 3: - event.disallow(PlayerLoginEvent.Result.KICK_OTHER, P.p.languageReader.get("Player_LoginDenyLong")); } } } @@ -232,4 +227,12 @@ public class PlayerListener implements Listener { bplayer.disconnecting(); } } + + @EventHandler + public void onPlayerKick(PlayerKickEvent event) { + BPlayer bplayer = BPlayer.get(event.getPlayer().getName()); + if (bplayer != null) { + bplayer.disconnecting(); + } + } } \ No newline at end of file