mirror of
https://github.com/amalthea-mc/ShopChest.git
synced 2024-11-22 10:22:29 +00:00
Added support for GriefPrevention
Only players who are allowed to build can create a shop
This commit is contained in:
parent
53a9bb0274
commit
4ecbbb417b
10
pom.xml
10
pom.xml
@ -126,6 +126,10 @@
|
|||||||
<id>tastybento-repo</id>
|
<id>tastybento-repo</id>
|
||||||
<url>http://dl.bintray.com/tastybento/maven-repo</url>
|
<url>http://dl.bintray.com/tastybento/maven-repo</url>
|
||||||
</repository>
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>jitpack-repo</id>
|
||||||
|
<url>https://jitpack.io</url>
|
||||||
|
</repository>
|
||||||
</repositories>
|
</repositories>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
@ -188,6 +192,12 @@
|
|||||||
<version>7.0</version>
|
<version>7.0</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.TechFortress</groupId>
|
||||||
|
<artifactId>GriefPrevention</artifactId>
|
||||||
|
<version>16.6</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<distributionManagement>
|
<distributionManagement>
|
||||||
|
@ -20,6 +20,7 @@ import de.epiceric.shopchest.utils.*;
|
|||||||
import de.epiceric.shopchest.utils.UpdateChecker.UpdateCheckerResult;
|
import de.epiceric.shopchest.utils.UpdateChecker.UpdateCheckerResult;
|
||||||
import de.epiceric.shopchest.external.WorldGuardShopFlag;
|
import de.epiceric.shopchest.external.WorldGuardShopFlag;
|
||||||
import fr.xephi.authme.AuthMe;
|
import fr.xephi.authme.AuthMe;
|
||||||
|
import me.ryanhamshire.GriefPrevention.GriefPrevention;
|
||||||
import net.milkbowl.vault.economy.Economy;
|
import net.milkbowl.vault.economy.Economy;
|
||||||
import org.bstats.Metrics;
|
import org.bstats.Metrics;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@ -55,6 +56,7 @@ public class ShopChest extends JavaPlugin {
|
|||||||
private uSkyBlockAPI uSkyBlock;
|
private uSkyBlockAPI uSkyBlock;
|
||||||
private ASkyBlock aSkyBlock;
|
private ASkyBlock aSkyBlock;
|
||||||
private IslandWorld islandWorld;
|
private IslandWorld islandWorld;
|
||||||
|
private GriefPrevention griefPrevention;
|
||||||
private ShopUpdater updater;
|
private ShopUpdater updater;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -183,6 +185,11 @@ public class ShopChest extends JavaPlugin {
|
|||||||
islandWorld = (IslandWorld) islandWorldPlugin;
|
islandWorld = (IslandWorld) islandWorldPlugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Plugin griefPreventionPlugin = Bukkit.getServer().getPluginManager().getPlugin("GriefPrevention");
|
||||||
|
if (griefPreventionPlugin instanceof GriefPrevention) {
|
||||||
|
griefPrevention = (GriefPrevention) griefPreventionPlugin;
|
||||||
|
}
|
||||||
|
|
||||||
if (hasPlotSquared()) {
|
if (hasPlotSquared()) {
|
||||||
new PlotSquaredShopFlag().register(this);
|
new PlotSquaredShopFlag().register(this);
|
||||||
}
|
}
|
||||||
@ -408,6 +415,20 @@ public class ShopChest extends JavaPlugin {
|
|||||||
this.updater = updater;
|
this.updater = updater;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Whether the plugin 'GriefPrevention' is enabled
|
||||||
|
*/
|
||||||
|
public boolean hasGriefPrevention() {
|
||||||
|
return griefPrevention != null && griefPrevention.isEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return An instance of {@link GriefPrevention} or {@code null} if GriefPrevention is not enabled
|
||||||
|
*/
|
||||||
|
public GriefPrevention getGriefPrevention() {
|
||||||
|
return griefPrevention;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Whether the plugin 'IslandWorld' is enabled
|
* @return Whether the plugin 'IslandWorld' is enabled
|
||||||
*/
|
*/
|
||||||
|
@ -125,6 +125,9 @@ public class Config {
|
|||||||
/** Whether IslandWorld integration should be enabled **/
|
/** Whether IslandWorld integration should be enabled **/
|
||||||
public boolean enable_islandworld_integration;
|
public boolean enable_islandworld_integration;
|
||||||
|
|
||||||
|
/** Whether GriefPrevention integration should be enabled **/
|
||||||
|
public boolean enable_griefprevention_integration;
|
||||||
|
|
||||||
/** Whether the vendor of the shop should get messages about buys and sells **/
|
/** Whether the vendor of the shop should get messages about buys and sells **/
|
||||||
public boolean enable_vendor_messages;
|
public boolean enable_vendor_messages;
|
||||||
|
|
||||||
@ -373,6 +376,7 @@ public class Config {
|
|||||||
enable_uskyblock_integration = plugin.getConfig().getBoolean("enable-uskyblock-integration");
|
enable_uskyblock_integration = plugin.getConfig().getBoolean("enable-uskyblock-integration");
|
||||||
enable_askyblock_integration = plugin.getConfig().getBoolean("enable-askyblock-integration");
|
enable_askyblock_integration = plugin.getConfig().getBoolean("enable-askyblock-integration");
|
||||||
enable_islandworld_integration = plugin.getConfig().getBoolean("enable-islandworld-integration");
|
enable_islandworld_integration = plugin.getConfig().getBoolean("enable-islandworld-integration");
|
||||||
|
enable_griefprevention_integration = plugin.getConfig().getBoolean("enable-griefprevention-integration");
|
||||||
enable_vendor_messages = plugin.getConfig().getBoolean("enable-vendor-messages");
|
enable_vendor_messages = plugin.getConfig().getBoolean("enable-vendor-messages");
|
||||||
explosion_protection = plugin.getConfig().getBoolean("explosion-protection");
|
explosion_protection = plugin.getConfig().getBoolean("explosion-protection");
|
||||||
only_show_shops_in_sight = plugin.getConfig().getBoolean("only-show-shops-in-sight");
|
only_show_shops_in_sight = plugin.getConfig().getBoolean("only-show-shops-in-sight");
|
||||||
|
@ -162,7 +162,7 @@ public class ChestProtectListener implements Listener {
|
|||||||
externalPluginsAllowed = query.testState(b.getLocation(), p, WorldGuardShopFlag.CREATE_SHOP);
|
externalPluginsAllowed = query.testState(b.getLocation(), p, WorldGuardShopFlag.CREATE_SHOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plugin.hasTowny() && config.enable_towny_integration) {
|
if (externalPluginsAllowed && plugin.hasTowny() && config.enable_towny_integration) {
|
||||||
TownBlock townBlock = TownyUniverse.getTownBlock(b.getLocation());
|
TownBlock townBlock = TownyUniverse.getTownBlock(b.getLocation());
|
||||||
if (townBlock != null) {
|
if (townBlock != null) {
|
||||||
try {
|
try {
|
||||||
@ -184,33 +184,37 @@ public class ChestProtectListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plugin.hasPlotSquared() && config.enable_plotsquared_integration) {
|
if (externalPluginsAllowed && plugin.hasPlotSquared() && config.enable_plotsquared_integration) {
|
||||||
com.intellectualcrafters.plot.object.Location loc =
|
com.intellectualcrafters.plot.object.Location loc =
|
||||||
new com.intellectualcrafters.plot.object.Location(b.getWorld().getName(), b.getX(), b.getY(), b.getZ());
|
new com.intellectualcrafters.plot.object.Location(b.getWorld().getName(), b.getX(), b.getY(), b.getZ());
|
||||||
|
|
||||||
externalPluginsAllowed &= Utils.isFlagAllowedOnPlot(loc.getOwnedPlot(), PlotSquaredShopFlag.CREATE_SHOP, p);
|
externalPluginsAllowed &= Utils.isFlagAllowedOnPlot(loc.getOwnedPlot(), PlotSquaredShopFlag.CREATE_SHOP, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plugin.hasUSkyBlock() && config.enable_uskyblock_integration) {
|
if (externalPluginsAllowed && plugin.hasUSkyBlock() && config.enable_uskyblock_integration) {
|
||||||
IslandInfo islandInfo = plugin.getUSkyBlock().getIslandInfo(b.getLocation());
|
IslandInfo islandInfo = plugin.getUSkyBlock().getIslandInfo(b.getLocation());
|
||||||
if (islandInfo != null) {
|
if (islandInfo != null) {
|
||||||
externalPluginsAllowed &= islandInfo.getMembers().contains(p.getName()) || islandInfo.getLeader().equals(p.getName());
|
externalPluginsAllowed &= islandInfo.getMembers().contains(p.getName()) || islandInfo.getLeader().equals(p.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plugin.hasASkyBlock() && config.enable_askyblock_integration) {
|
if (externalPluginsAllowed && plugin.hasASkyBlock() && config.enable_askyblock_integration) {
|
||||||
Island island = ASkyBlockAPI.getInstance().getIslandAt(b.getLocation());
|
Island island = ASkyBlockAPI.getInstance().getIslandAt(b.getLocation());
|
||||||
if (island != null) {
|
if (island != null) {
|
||||||
externalPluginsAllowed &= island.getMembers().contains(p.getUniqueId()) || island.getOwner().equals(p.getUniqueId());
|
externalPluginsAllowed &= island.getMembers().contains(p.getUniqueId()) || island.getOwner().equals(p.getUniqueId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plugin.hasIslandWorld() && config.enable_islandworld_integration && IslandWorldApi.isInitialized()) {
|
if (externalPluginsAllowed && plugin.hasIslandWorld() && config.enable_islandworld_integration && IslandWorldApi.isInitialized()) {
|
||||||
if (b.getWorld().getName().equals(IslandWorldApi.getIslandWorld().getName())) {
|
if (b.getWorld().getName().equals(IslandWorldApi.getIslandWorld().getName())) {
|
||||||
externalPluginsAllowed &= IslandWorldApi.canBuildOnLocation(p, b.getLocation(), true);
|
externalPluginsAllowed &= IslandWorldApi.canBuildOnLocation(p, b.getLocation(), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (externalPluginsAllowed && plugin.hasGriefPrevention() && config.enable_griefprevention_integration) {
|
||||||
|
externalPluginsAllowed &= plugin.getGriefPrevention().allowBuild(p, b.getLocation()) == null;
|
||||||
|
}
|
||||||
|
|
||||||
if (externalPluginsAllowed || p.hasPermission(Permissions.EXTEND_PROTECTED)) {
|
if (externalPluginsAllowed || p.hasPermission(Permissions.EXTEND_PROTECTED)) {
|
||||||
if (shop.getVendor().getUniqueId().equals(p.getUniqueId()) || p.hasPermission(Permissions.EXTEND_OTHER)) {
|
if (shop.getVendor().getUniqueId().equals(p.getUniqueId()) || p.hasPermission(Permissions.EXTEND_OTHER)) {
|
||||||
|
|
||||||
|
@ -229,6 +229,19 @@ public class ShopInteractListener implements Listener {
|
|||||||
if (!externalPluginsAllowed) denyReason = "IslandWorld";
|
if (!externalPluginsAllowed) denyReason = "IslandWorld";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (externalPluginsAllowed && plugin.hasGriefPrevention() && config.enable_griefprevention_integration) {
|
||||||
|
plugin.debug("Checking if GriefPrevention allows shop creation...");
|
||||||
|
String gpDenyReason = "";
|
||||||
|
for (Location loc : chestLocations) {
|
||||||
|
if (loc != null) {
|
||||||
|
gpDenyReason = plugin.getGriefPrevention().allowBuild(p, loc);
|
||||||
|
externalPluginsAllowed &= gpDenyReason == null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!externalPluginsAllowed) denyReason = "GriefPrevention (" + gpDenyReason + ")";
|
||||||
|
}
|
||||||
|
|
||||||
if ((e.isCancelled() || !externalPluginsAllowed) && !p.hasPermission(Permissions.CREATE_PROTECTED)) {
|
if ((e.isCancelled() || !externalPluginsAllowed) && !p.hasPermission(Permissions.CREATE_PROTECTED)) {
|
||||||
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NO_PERMISSION_CREATE_PROTECTED));
|
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NO_PERMISSION_CREATE_PROTECTED));
|
||||||
ClickType.removePlayerClickType(p);
|
ClickType.removePlayerClickType(p);
|
||||||
|
@ -61,6 +61,10 @@ enable-askyblock-integration: true
|
|||||||
# Of course, this only works if IslandWorld is installed
|
# Of course, this only works if IslandWorld is installed
|
||||||
enable-islandworld-integration: true
|
enable-islandworld-integration: true
|
||||||
|
|
||||||
|
# Set whether GriefPrevention integration should be enabled
|
||||||
|
# Of course, this only works if GriefPrevention is installed
|
||||||
|
enable-griefprevention-integration: true
|
||||||
|
|
||||||
# Set whether the vendor of a shop should get messages when players
|
# Set whether the vendor of a shop should get messages when players
|
||||||
# buy or sell something from/to his shop or if his shop is out of stock
|
# buy or sell something from/to his shop or if his shop is out of stock
|
||||||
enable-vendor-messages: true
|
enable-vendor-messages: true
|
||||||
|
Loading…
Reference in New Issue
Block a user