mirror of
https://github.com/amalthea-mc/ShopChest.git
synced 2024-11-22 18:32:24 +00:00
Added way to disable WorldGuard/Towny integration
+ Added permission to use shops in WorldGuard regions that deny shop use
This commit is contained in:
parent
1251d187ed
commit
d097a15122
@ -74,6 +74,12 @@ public class Config {
|
|||||||
/** Whether the debug log file should be created **/
|
/** Whether the debug log file should be created **/
|
||||||
public boolean enable_debug_log;
|
public boolean enable_debug_log;
|
||||||
|
|
||||||
|
/** Whether WorldGuard integration should be enabled **/
|
||||||
|
public boolean enable_worldguard_integration;
|
||||||
|
|
||||||
|
/** Whether Towny integration should be enabled **/
|
||||||
|
public boolean enable_towny_integration;
|
||||||
|
|
||||||
/** Whether admin shops should be excluded of the shop limits **/
|
/** Whether admin shops should be excluded of the shop limits **/
|
||||||
public boolean exclude_admin_shops;
|
public boolean exclude_admin_shops;
|
||||||
|
|
||||||
@ -282,6 +288,8 @@ public class Config {
|
|||||||
two_line_prices = plugin.getConfig().getBoolean("two-line-prices");
|
two_line_prices = plugin.getConfig().getBoolean("two-line-prices");
|
||||||
enable_hologram_interaction = plugin.getConfig().getBoolean("enable-hologram-interaction");
|
enable_hologram_interaction = plugin.getConfig().getBoolean("enable-hologram-interaction");
|
||||||
enable_debug_log = plugin.getConfig().getBoolean("enable-debug-log");
|
enable_debug_log = plugin.getConfig().getBoolean("enable-debug-log");
|
||||||
|
enable_worldguard_integration = plugin.getConfig().getBoolean("enable-worldguard-integration");
|
||||||
|
enable_towny_integration = plugin.getConfig().getBoolean("enable-towny-integration");
|
||||||
explosion_protection = plugin.getConfig().getBoolean("explosion-protection");
|
explosion_protection = plugin.getConfig().getBoolean("explosion-protection");
|
||||||
exclude_admin_shops = plugin.getConfig().getBoolean("shop-limits.exclude-admin-shops");
|
exclude_admin_shops = plugin.getConfig().getBoolean("shop-limits.exclude-admin-shops");
|
||||||
append_potion_level_to_item_name = plugin.getConfig().getBoolean("append-potion-level-to-item-name");
|
append_potion_level_to_item_name = plugin.getConfig().getBoolean("append-potion-level-to-item-name");
|
||||||
|
@ -135,13 +135,13 @@ public class ChestProtectListener implements Listener {
|
|||||||
|
|
||||||
boolean externalPluginsAllowed = true;
|
boolean externalPluginsAllowed = true;
|
||||||
|
|
||||||
if (plugin.hasWorldGuard()) {
|
if (plugin.hasWorldGuard() && plugin.getShopChestConfig().enable_worldguard_integration) {
|
||||||
RegionContainer container = worldGuard.getRegionContainer();
|
RegionContainer container = worldGuard.getRegionContainer();
|
||||||
RegionQuery query = container.createQuery();
|
RegionQuery query = container.createQuery();
|
||||||
externalPluginsAllowed = query.testState(b.getLocation(), p, ShopFlag.CREATE_SHOP);
|
externalPluginsAllowed = query.testState(b.getLocation(), p, ShopFlag.CREATE_SHOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plugin.hasTowny()) {
|
if (plugin.hasTowny() && plugin.getShopChestConfig().enable_towny_integration) {
|
||||||
TownBlock townBlock = TownyUniverse.getTownBlock(b.getLocation());
|
TownBlock townBlock = TownyUniverse.getTownBlock(b.getLocation());
|
||||||
externalPluginsAllowed &= (townBlock != null && townBlock.getType() == TownBlockType.COMMERCIAL);
|
externalPluginsAllowed &= (townBlock != null && townBlock.getType() == TownBlockType.COMMERCIAL);
|
||||||
}
|
}
|
||||||
|
@ -94,7 +94,7 @@ public class ShopInteractListener implements Listener {
|
|||||||
chestLocations[1] = ((Chest) dc.getRightSide()).getLocation();
|
chestLocations[1] = ((Chest) dc.getRightSide()).getLocation();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plugin.hasWorldGuard()) {
|
if (plugin.hasWorldGuard() && config.enable_worldguard_integration) {
|
||||||
RegionContainer container = worldGuard.getRegionContainer();
|
RegionContainer container = worldGuard.getRegionContainer();
|
||||||
RegionQuery query = container.createQuery();
|
RegionQuery query = container.createQuery();
|
||||||
|
|
||||||
@ -105,7 +105,7 @@ public class ShopInteractListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plugin.hasTowny()) {
|
if (plugin.hasTowny() && config.enable_towny_integration) {
|
||||||
for (Location loc : chestLocations) {
|
for (Location loc : chestLocations) {
|
||||||
if (loc != null) {
|
if (loc != null) {
|
||||||
TownBlock townBlock = TownyUniverse.getTownBlock(loc);
|
TownBlock townBlock = TownyUniverse.getTownBlock(loc);
|
||||||
@ -237,26 +237,26 @@ public class ShopInteractListener implements Listener {
|
|||||||
boolean worldGuardAllowed = true;
|
boolean worldGuardAllowed = true;
|
||||||
|
|
||||||
if (shop.getShopType() == ShopType.ADMIN) {
|
if (shop.getShopType() == ShopType.ADMIN) {
|
||||||
if (plugin.hasWorldGuard()) {
|
if (plugin.hasWorldGuard() && config.enable_worldguard_integration) {
|
||||||
RegionContainer container = worldGuard.getRegionContainer();
|
RegionContainer container = worldGuard.getRegionContainer();
|
||||||
RegionQuery query = container.createQuery();
|
RegionQuery query = container.createQuery();
|
||||||
worldGuardAllowed = query.testState(b.getLocation(), p, ShopFlag.USE_ADMIN_SHOP);
|
worldGuardAllowed = query.testState(b.getLocation(), p, ShopFlag.USE_ADMIN_SHOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (worldGuardAllowed) {
|
if (worldGuardAllowed || p.hasPermission(Permissions.WORLDGUARD_BYPASS)) {
|
||||||
buy(p, shop);
|
buy(p, shop);
|
||||||
} else {
|
} else {
|
||||||
plugin.debug(p.getName() + " doesn't have worldguard permission");
|
plugin.debug(p.getName() + " doesn't have worldguard permission");
|
||||||
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NO_PERMISSION_WG_BUY));
|
p.sendMessage(LanguageUtils.getMessage(LocalizedMessage.Message.NO_PERMISSION_WG_BUY));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (plugin.hasWorldGuard()) {
|
if (plugin.hasWorldGuard() && config.enable_worldguard_integration) {
|
||||||
RegionContainer container = worldGuard.getRegionContainer();
|
RegionContainer container = worldGuard.getRegionContainer();
|
||||||
RegionQuery query = container.createQuery();
|
RegionQuery query = container.createQuery();
|
||||||
worldGuardAllowed = query.testState(b.getLocation(), p, ShopFlag.USE_SHOP);
|
worldGuardAllowed = query.testState(b.getLocation(), p, ShopFlag.USE_SHOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (worldGuardAllowed) {
|
if (worldGuardAllowed || p.hasPermission(Permissions.WORLDGUARD_BYPASS)) {
|
||||||
Chest c = (Chest) b.getState();
|
Chest c = (Chest) b.getState();
|
||||||
if (Utils.getAmount(c.getInventory(), shop.getProduct()) >= shop.getProduct().getAmount()) {
|
if (Utils.getAmount(c.getInventory(), shop.getProduct()) >= shop.getProduct().getAmount()) {
|
||||||
buy(p, shop);
|
buy(p, shop);
|
||||||
@ -307,7 +307,7 @@ public class ShopInteractListener implements Listener {
|
|||||||
if (p.hasPermission(Permissions.SELL)) {
|
if (p.hasPermission(Permissions.SELL)) {
|
||||||
boolean worldGuardAllowed = true;
|
boolean worldGuardAllowed = true;
|
||||||
|
|
||||||
if (plugin.hasWorldGuard()) {
|
if (plugin.hasWorldGuard() && config.enable_worldguard_integration) {
|
||||||
RegionContainer container = worldGuard.getRegionContainer();
|
RegionContainer container = worldGuard.getRegionContainer();
|
||||||
RegionQuery query = container.createQuery();
|
RegionQuery query = container.createQuery();
|
||||||
|
|
||||||
@ -315,7 +315,7 @@ public class ShopInteractListener implements Listener {
|
|||||||
worldGuardAllowed = query.testState(b.getLocation(), p, flag);
|
worldGuardAllowed = query.testState(b.getLocation(), p, flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (worldGuardAllowed) {
|
if (worldGuardAllowed || p.hasPermission(Permissions.WORLDGUARD_BYPASS)) {
|
||||||
if (Utils.getAmount(p.getInventory(), shop.getProduct()) >= shop.getProduct().getAmount()) {
|
if (Utils.getAmount(p.getInventory(), shop.getProduct()) >= shop.getProduct().getAmount()) {
|
||||||
sell(p, shop);
|
sell(p, shop);
|
||||||
} else {
|
} else {
|
||||||
|
@ -84,29 +84,31 @@ public class WorldGuardListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOW)
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
public void onUseBlock(UseBlockEvent event) {
|
public void onUseBlock(UseBlockEvent event) {
|
||||||
if (event.getCause().getFirstPlayer() == null) return;
|
if (plugin.getShopChestConfig().enable_worldguard_integration) {
|
||||||
|
if (event.getCause().getFirstPlayer() == null) return;
|
||||||
|
|
||||||
if (event.getOriginalEvent() instanceof PlayerInteractEvent) {
|
if (event.getOriginalEvent() instanceof PlayerInteractEvent) {
|
||||||
PlayerInteractEvent orig = (PlayerInteractEvent) event.getOriginalEvent();
|
PlayerInteractEvent orig = (PlayerInteractEvent) event.getOriginalEvent();
|
||||||
|
|
||||||
if (orig.hasBlock()) {
|
if (orig.hasBlock()) {
|
||||||
Material type = orig.getClickedBlock().getType();
|
Material type = orig.getClickedBlock().getType();
|
||||||
if (type == Material.CHEST || type == Material.TRAPPED_CHEST) {
|
if (type == Material.CHEST || type == Material.TRAPPED_CHEST) {
|
||||||
if (isAllowed(event, orig.getClickedBlock().getLocation(), orig.getAction())) {
|
if (isAllowed(event, orig.getClickedBlock().getLocation(), orig.getAction())) {
|
||||||
|
event.setAllowed(true);
|
||||||
|
orig.setCancelled(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (event.getOriginalEvent() instanceof InventoryOpenEvent) {
|
||||||
|
InventoryOpenEvent orig = (InventoryOpenEvent) event.getOriginalEvent();
|
||||||
|
|
||||||
|
if (orig.getInventory().getType() == InventoryType.CHEST) {
|
||||||
|
if (isAllowed(event, orig.getInventory().getLocation(), Action.RIGHT_CLICK_BLOCK)) {
|
||||||
event.setAllowed(true);
|
event.setAllowed(true);
|
||||||
orig.setCancelled(false);
|
orig.setCancelled(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (event.getOriginalEvent() instanceof InventoryOpenEvent) {
|
|
||||||
InventoryOpenEvent orig = (InventoryOpenEvent) event.getOriginalEvent();
|
|
||||||
|
|
||||||
if (orig.getInventory().getType() == InventoryType.CHEST) {
|
|
||||||
if (isAllowed(event, orig.getInventory().getLocation(), Action.RIGHT_CLICK_BLOCK)) {
|
|
||||||
event.setAllowed(true);
|
|
||||||
orig.setCancelled(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,5 +16,6 @@ public class Permissions {
|
|||||||
public static final String CONFIG = "shopchest.config";
|
public static final String CONFIG = "shopchest.config";
|
||||||
public static final String EXTEND_OTHER = "shopchest.extend.other";
|
public static final String EXTEND_OTHER = "shopchest.extend.other";
|
||||||
public static final String EXTEND_PROTECTED = "shopchest.extend.protected";
|
public static final String EXTEND_PROTECTED = "shopchest.extend.protected";
|
||||||
|
public static final String WORLDGUARD_BYPASS = "shopchest.worldguard.bypass";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,14 @@ enable-hologram-interaction: true
|
|||||||
# The file may get large! Please enable this setting when reporting bugs.
|
# The file may get large! Please enable this setting when reporting bugs.
|
||||||
enable-debug-log: false
|
enable-debug-log: false
|
||||||
|
|
||||||
|
# Set whether WorldGuard integration should be enabled
|
||||||
|
# Of course, this only worls if WorldGuard is installed
|
||||||
|
enable-worldguard-integration: true
|
||||||
|
|
||||||
|
# Set whether Towny integration should be enabled
|
||||||
|
# Of course, this only worls if Towny is installed
|
||||||
|
enable-towny-integration: true
|
||||||
|
|
||||||
# Set whether the buy- and sell price should be arranged below each other.
|
# Set whether the buy- and sell price should be arranged below each other.
|
||||||
# The first line will be the buy price with the message "message.hologram.only-buy",
|
# The first line will be the buy price with the message "message.hologram.only-buy",
|
||||||
# the second line will be the sell price with the message "message.hologram.only-sell".
|
# the second line will be the sell price with the message "message.hologram.only-sell".
|
||||||
|
@ -25,6 +25,7 @@ permissions:
|
|||||||
shopchest.config: true
|
shopchest.config: true
|
||||||
shopchest.extend.other: true
|
shopchest.extend.other: true
|
||||||
shopchest.extend.protected: true
|
shopchest.extend.protected: true
|
||||||
|
shopchest.worldguard.bypass: true
|
||||||
shopchest.create:
|
shopchest.create:
|
||||||
description: Allows you to create a shop.
|
description: Allows you to create a shop.
|
||||||
default: true
|
default: true
|
||||||
@ -70,3 +71,6 @@ permissions:
|
|||||||
shopchest.extend.protected:
|
shopchest.extend.protected:
|
||||||
description: Allows you to extend shops into a protected region.
|
description: Allows you to extend shops into a protected region.
|
||||||
default: op
|
default: op
|
||||||
|
shopchest.worlguard.bypass:
|
||||||
|
description: Allows you to to use shops in WorldGuard regions that deny shop use.
|
||||||
|
default: op
|
||||||
|
Loading…
Reference in New Issue
Block a user