mirror of
https://github.com/EpicEricEE/ShopChest.git
synced 2025-02-17 21:11:53 +01:00
Move external plugin support into addon modules
Experimental, not sure how that will work out
This commit is contained in:
parent
1e4ba02e72
commit
d88d32f939
40
addons/askyblock/pom.xml
Normal file
40
addons/askyblock/pom.xml
Normal file
@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>de.epiceric.shopchest.addon</groupId>
|
||||
<artifactId>shopchest-addon-askyblock</artifactId>
|
||||
<version>3.0.9</version>
|
||||
|
||||
<name>ShopChest ASkyBlock Addon</name>
|
||||
|
||||
<parent>
|
||||
<groupId>de.epiceric.shopchest</groupId>
|
||||
<artifactId>shopchest-parent</artifactId>
|
||||
<version>1.13-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>tastybento-repo</id>
|
||||
<url>http://dl.bintray.com/tastybento/maven-repo</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>de.epiceric.shopchest</groupId>
|
||||
<artifactId>shopchest-api</artifactId>
|
||||
<version>1.13-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.wasteofplastic</groupId>
|
||||
<artifactId>askyblock</artifactId>
|
||||
<version>3.0.9</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
@ -0,0 +1,20 @@
|
||||
package de.epiceric.shopchest.addon.askyblock;
|
||||
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class AddonMain extends JavaPlugin {
|
||||
private ShopListener shopListener;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
shopListener = new ShopListener();
|
||||
|
||||
getServer().getPluginManager().registerEvents(shopListener, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
HandlerList.unregisterAll(shopListener);
|
||||
}
|
||||
}
|
@ -0,0 +1,58 @@
|
||||
package de.epiceric.shopchest.addon.askyblock;
|
||||
|
||||
import com.wasteofplastic.askyblock.ASkyBlockAPI;
|
||||
import com.wasteofplastic.askyblock.Island;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.inventory.DoubleChestInventory;
|
||||
|
||||
import de.epiceric.shopchest.api.event.ShopCreateEvent;
|
||||
import de.epiceric.shopchest.api.event.ShopExtendEvent;
|
||||
import de.epiceric.shopchest.api.exceptions.ChestNotFoundException;
|
||||
import de.epiceric.shopchest.api.shop.Shop;
|
||||
|
||||
public class ShopListener implements Listener {
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onCreateShop(ShopCreateEvent e) {
|
||||
Shop shop = e.getShop();
|
||||
Player player = e.getPlayer().getBukkitPlayer();
|
||||
|
||||
if (shop.isDoubleChest()) {
|
||||
try {
|
||||
Location left = ((DoubleChestInventory) shop.getInventory()).getLeftSide().getLocation();
|
||||
Location right = ((DoubleChestInventory) shop.getInventory()).getRightSide().getLocation();
|
||||
handle(player, left, e);
|
||||
handle(player, right, e);
|
||||
} catch (ChestNotFoundException ignored) {
|
||||
// Should not be possible since Shop#isDoubleChest()
|
||||
// requires chest to exist
|
||||
}
|
||||
} else {
|
||||
handle(player, shop.getLocation(), e);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onExtendShop(ShopExtendEvent e) {
|
||||
handle(e.getPlayer().getBukkitPlayer(), e.getNewChestLocation(), e);
|
||||
}
|
||||
|
||||
private void handle(Player player, Location loc, Cancellable e) {
|
||||
Island island = ASkyBlockAPI.getInstance().getIslandAt(loc);
|
||||
|
||||
if (island == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
boolean isOwner = player.getUniqueId().equals(island.getOwner());
|
||||
boolean isMember = island.getMembers().contains(player.getUniqueId());
|
||||
|
||||
if (!isOwner && !isMember) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
9
addons/askyblock/src/main/resources/plugin.yml
Normal file
9
addons/askyblock/src/main/resources/plugin.yml
Normal file
@ -0,0 +1,9 @@
|
||||
name: ShopChest-Addon-ASkyBlock
|
||||
author: EpicEric
|
||||
version: ${project.version}
|
||||
|
||||
main: de.epiceric.shopchest.addon.askyblock.AddonMain
|
||||
api-version: 1.16
|
||||
depend:
|
||||
- ASkyBlock
|
||||
- ShopChest
|
33
addons/bentobox/pom.xml
Normal file
33
addons/bentobox/pom.xml
Normal file
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>de.epiceric.shopchest.addon</groupId>
|
||||
<artifactId>shopchest-addon-bentobox</artifactId>
|
||||
<version>1.14.0-SNAPSHOT</version>
|
||||
|
||||
<name>ShopChest BentoBox Addon</name>
|
||||
|
||||
<parent>
|
||||
<groupId>de.epiceric.shopchest</groupId>
|
||||
<artifactId>shopchest-parent</artifactId>
|
||||
<version>1.13-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>de.epiceric.shopchest</groupId>
|
||||
<artifactId>shopchest-api</artifactId>
|
||||
<version>1.13-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>world.bentobox</groupId>
|
||||
<artifactId>bentobox</artifactId>
|
||||
<version>1.14.0-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
@ -0,0 +1,44 @@
|
||||
package de.epiceric.shopchest.addon.bentobox;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import de.epiceric.shopchest.api.ShopChest;
|
||||
import world.bentobox.bentobox.BentoBox;
|
||||
import world.bentobox.bentobox.api.flags.Flag;
|
||||
import world.bentobox.bentobox.managers.RanksManager;
|
||||
|
||||
public class AddonMain extends JavaPlugin {
|
||||
public static final Flag SHOP_FLAG = new Flag.Builder("CREATE_SHOPS", Material.CHEST)
|
||||
.type(Flag.Type.PROTECTION)
|
||||
.mode(Flag.Mode.BASIC)
|
||||
.defaultRank(RanksManager.TRUSTED_RANK)
|
||||
.build();
|
||||
|
||||
private IslandListener islandListener;
|
||||
private ShopListener shopListener;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
if (!BentoBox.getInstance().getFlagsManager().registerFlag(SHOP_FLAG)) {
|
||||
getLogger().warning("Failed to register BentoBox shop flag");
|
||||
}
|
||||
|
||||
ShopChest shopChest = getPlugin(ShopChest.class);
|
||||
|
||||
islandListener = new IslandListener(shopChest);
|
||||
shopListener = new ShopListener();
|
||||
|
||||
getServer().getPluginManager().registerEvents(islandListener, this);
|
||||
getServer().getPluginManager().registerEvents(shopListener, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
HandlerList.unregisterAll(islandListener);
|
||||
HandlerList.unregisterAll(shopListener);
|
||||
|
||||
BentoBox.getInstance().getFlagsManager().unregister(SHOP_FLAG);
|
||||
}
|
||||
}
|
@ -0,0 +1,79 @@
|
||||
package de.epiceric.shopchest.addon.bentobox;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.util.BoundingBox;
|
||||
|
||||
import de.epiceric.shopchest.api.ShopChest;
|
||||
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandBanEvent;
|
||||
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandDeleteChunksEvent;
|
||||
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandDeletedEvent;
|
||||
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandResettedEvent;
|
||||
import world.bentobox.bentobox.api.events.team.TeamEvent.TeamKickEvent;
|
||||
import world.bentobox.bentobox.api.events.team.TeamEvent.TeamLeaveEvent;
|
||||
import world.bentobox.bentobox.database.objects.Island;
|
||||
import world.bentobox.bentobox.database.objects.IslandDeletion;
|
||||
|
||||
public class IslandListener implements Listener {
|
||||
private final ShopChest plugin;
|
||||
|
||||
public IslandListener(ShopChest plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onIslandDeleted(IslandDeletedEvent e) {
|
||||
deleteShops(e.getDeletedIslandInfo());
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onIslandDeleteChunks(IslandDeleteChunksEvent e) {
|
||||
deleteShops(e.getDeletedIslandInfo());
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onIslandResetted(IslandResettedEvent e) {
|
||||
deleteShops(e.getIsland(), null);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onIslandBan(IslandBanEvent e) {
|
||||
deleteShops(e.getIsland(), e.getPlayerUUID());
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onTeamKick(TeamKickEvent e) {
|
||||
deleteShops(e.getIsland(), e.getPlayerUUID());
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onTeamLeave(TeamLeaveEvent e) {
|
||||
deleteShops(e.getIsland(), e.getPlayerUUID());
|
||||
}
|
||||
|
||||
// Utility methods
|
||||
|
||||
private void deleteShops(IslandDeletion deletedIsland) {
|
||||
deleteShops(deletedIsland.getWorld(), deletedIsland.getBox(), null);
|
||||
}
|
||||
|
||||
private void deleteShops(Island island, UUID vendorUuid) {
|
||||
deleteShops(island.getWorld(), island.getBoundingBox(), vendorUuid);
|
||||
}
|
||||
|
||||
private void deleteShops(World world, BoundingBox box, UUID vendorUuid) {
|
||||
plugin.getShopManager().getShops(world).stream()
|
||||
.filter(shop -> vendorUuid == null || (!shop.isAdminShop() && shop.getVendor().get().getUniqueId().equals(vendorUuid)))
|
||||
.forEach(shop -> {
|
||||
int x = shop.getLocation().getBlockX();
|
||||
int z = shop.getLocation().getBlockZ();
|
||||
if (box.contains(x, 0, z)) {
|
||||
plugin.getShopManager().removeShop(shop);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
package de.epiceric.shopchest.addon.bentobox;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.inventory.DoubleChestInventory;
|
||||
|
||||
import de.epiceric.shopchest.api.event.ShopCreateEvent;
|
||||
import de.epiceric.shopchest.api.event.ShopExtendEvent;
|
||||
import de.epiceric.shopchest.api.exceptions.ChestNotFoundException;
|
||||
import de.epiceric.shopchest.api.shop.Shop;
|
||||
import world.bentobox.bentobox.api.flags.FlagListener;
|
||||
|
||||
public class ShopListener extends FlagListener {
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onCreateShop(ShopCreateEvent e) {
|
||||
Shop shop = e.getShop();
|
||||
Player player = e.getPlayer().getBukkitPlayer();
|
||||
|
||||
if (shop.isDoubleChest()) {
|
||||
try {
|
||||
Location left = ((DoubleChestInventory) shop.getInventory()).getLeftSide().getLocation();
|
||||
Location right = ((DoubleChestInventory) shop.getInventory()).getRightSide().getLocation();
|
||||
handle(player, left, e);
|
||||
handle(player, right, e);
|
||||
} catch (ChestNotFoundException ignored) {
|
||||
// Should not be possible since Shop#isDoubleChest()
|
||||
// requires chest to exist
|
||||
}
|
||||
} else {
|
||||
handle(player, shop.getLocation(), e);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onExtendShop(ShopExtendEvent e) {
|
||||
handle(e.getPlayer().getBukkitPlayer(), e.getNewChestLocation(), e);
|
||||
}
|
||||
|
||||
private void handle(Player player, Location loc, Cancellable e) {
|
||||
if (!checkIsland((Event) e, player, loc, AddonMain.SHOP_FLAG)) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
9
addons/bentobox/src/main/resources/plugin.yml
Normal file
9
addons/bentobox/src/main/resources/plugin.yml
Normal file
@ -0,0 +1,9 @@
|
||||
name: ShopChest-Addon-BentoBox
|
||||
author: EpicEric
|
||||
version: ${project.version}
|
||||
|
||||
main: de.epiceric.shopchest.addon.bentobox.AddonMain
|
||||
api-version: 1.16
|
||||
depend:
|
||||
- BentoBox
|
||||
- ShopChest
|
46
addons/worldguard/pom.xml
Normal file
46
addons/worldguard/pom.xml
Normal file
@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>de.epiceric.shopchest.addon</groupId>
|
||||
<artifactId>shopchest-addon-worldguard</artifactId>
|
||||
<version>7.0.3</version>
|
||||
|
||||
<name>ShopChest WorldGuard Addon</name>
|
||||
|
||||
<parent>
|
||||
<groupId>de.epiceric.shopchest</groupId>
|
||||
<artifactId>shopchest-parent</artifactId>
|
||||
<version>1.13-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>sk89q-repo</id>
|
||||
<url>https://maven.enginehub.org/repo/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>de.epiceric.shopchest</groupId>
|
||||
<artifactId>shopchest-api</artifactId>
|
||||
<version>1.13-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sk89q.worldguard</groupId>
|
||||
<artifactId>worldguard-bukkit</artifactId>
|
||||
<version>7.0.3</version>
|
||||
<scope>provided</scope>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>com.destroystokyo.paper</groupId>
|
||||
<artifactId>paper-api</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
@ -0,0 +1,46 @@
|
||||
package de.epiceric.shopchest.addon.worldguard;
|
||||
|
||||
import com.sk89q.worldguard.WorldGuard;
|
||||
import com.sk89q.worldguard.protection.flags.StateFlag;
|
||||
import com.sk89q.worldguard.protection.flags.registry.FlagConflictException;
|
||||
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import de.epiceric.shopchest.api.ShopChest;
|
||||
|
||||
public class AddonMain extends JavaPlugin {
|
||||
public static final StateFlag SHOP_CREATE_FLAG = new StateFlag("shop-creation", false);
|
||||
public static final StateFlag SHOP_USE_FLAG = new StateFlag("shop-usage", true);
|
||||
|
||||
private WorldGuardListener worldGuardListener;
|
||||
private ShopListener shopListener;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
ShopChest shopChest = getPlugin(ShopChest.class);
|
||||
|
||||
worldGuardListener = new WorldGuardListener(shopChest);
|
||||
shopListener = new ShopListener();
|
||||
|
||||
try {
|
||||
WorldGuard.getInstance().getFlagRegistry().register(SHOP_CREATE_FLAG);
|
||||
WorldGuard.getInstance().getFlagRegistry().register(SHOP_USE_FLAG);
|
||||
} catch (FlagConflictException ignored) {
|
||||
// Flags are probably already registered
|
||||
} catch (IllegalStateException ex) {
|
||||
getLogger().warning("Failed to register WorldGuard flags");
|
||||
}
|
||||
|
||||
getServer().getPluginManager().registerEvents(worldGuardListener, this);
|
||||
getServer().getPluginManager().registerEvents(shopListener, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
HandlerList.unregisterAll(worldGuardListener);
|
||||
HandlerList.unregisterAll(shopListener);
|
||||
|
||||
// It's not possible to unregister flags at the time of writing
|
||||
}
|
||||
}
|
@ -0,0 +1,72 @@
|
||||
package de.epiceric.shopchest.addon.worldguard;
|
||||
|
||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
||||
import com.sk89q.worldguard.WorldGuard;
|
||||
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
|
||||
import com.sk89q.worldguard.internal.platform.WorldGuardPlatform;
|
||||
import com.sk89q.worldguard.protection.regions.RegionQuery;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.inventory.DoubleChestInventory;
|
||||
|
||||
import de.epiceric.shopchest.api.event.ShopCreateEvent;
|
||||
import de.epiceric.shopchest.api.event.ShopExtendEvent;
|
||||
import de.epiceric.shopchest.api.event.ShopUseEvent;
|
||||
import de.epiceric.shopchest.api.exceptions.ChestNotFoundException;
|
||||
import de.epiceric.shopchest.api.shop.Shop;
|
||||
|
||||
public class ShopListener implements Listener {
|
||||
private final WorldGuardPlatform platform = WorldGuard.getInstance().getPlatform();
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onCreateShop(ShopCreateEvent e) {
|
||||
Shop shop = e.getShop();
|
||||
Player player = e.getPlayer().getBukkitPlayer();
|
||||
|
||||
if (shop.isDoubleChest()) {
|
||||
try {
|
||||
Location left = ((DoubleChestInventory) shop.getInventory()).getLeftSide().getLocation();
|
||||
Location right = ((DoubleChestInventory) shop.getInventory()).getRightSide().getLocation();
|
||||
handle(player, left, e);
|
||||
handle(player, right, e);
|
||||
} catch (ChestNotFoundException ignored) {
|
||||
// Should not be possible since Shop#isDoubleChest()
|
||||
// requires chest to exist
|
||||
}
|
||||
} else {
|
||||
handle(player, shop.getLocation(), e);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onExtendShop(ShopExtendEvent e) {
|
||||
handle(e.getPlayer().getBukkitPlayer(), e.getNewChestLocation(), e);
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onUseShop(ShopUseEvent e) {
|
||||
// Ignore double chests potentially being in two regions
|
||||
|
||||
RegionQuery query = platform.getRegionContainer().createQuery();
|
||||
|
||||
if (!query.testState(BukkitAdapter.adapt(e.getShop().getLocation()),
|
||||
WorldGuardPlugin.inst().wrapPlayer(e.getPlayer().getBukkitPlayer()),
|
||||
AddonMain.SHOP_USE_FLAG)) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void handle(Player player, Location loc, Cancellable e) {
|
||||
RegionQuery query = platform.getRegionContainer().createQuery();
|
||||
|
||||
if (!query.testState(BukkitAdapter.adapt(loc),
|
||||
WorldGuardPlugin.inst().wrapPlayer(player),
|
||||
AddonMain.SHOP_CREATE_FLAG)) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,75 @@
|
||||
package de.epiceric.shopchest.addon.worldguard;
|
||||
|
||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
||||
import com.sk89q.worldguard.WorldGuard;
|
||||
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
|
||||
import com.sk89q.worldguard.bukkit.event.block.UseBlockEvent;
|
||||
import com.sk89q.worldguard.protection.regions.RegionQuery;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.Chest;
|
||||
import org.bukkit.event.Event.Result;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.InventoryOpenEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
|
||||
import de.epiceric.shopchest.api.ShopChest;
|
||||
import de.epiceric.shopchest.api.flag.CreateFlag;
|
||||
import de.epiceric.shopchest.api.player.ShopPlayer;
|
||||
|
||||
public class WorldGuardListener implements Listener {
|
||||
private final ShopChest plugin;
|
||||
|
||||
public WorldGuardListener(ShopChest plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
private boolean hidePermissionMessage(ShopPlayer player, Location location) {
|
||||
if (player.getFlag().filter(flag -> flag instanceof CreateFlag).isPresent()) {
|
||||
RegionQuery query = WorldGuard.getInstance().getPlatform()
|
||||
.getRegionContainer().createQuery();
|
||||
|
||||
return query.testState(BukkitAdapter.adapt(location),
|
||||
WorldGuardPlugin.inst().wrapPlayer(player.getBukkitPlayer()),
|
||||
AddonMain.SHOP_CREATE_FLAG);
|
||||
}
|
||||
|
||||
if (plugin.getShopManager().getShop(location).isPresent()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW)
|
||||
public void onUseBlock(UseBlockEvent e) {
|
||||
if (e.getCause().getFirstPlayer() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
ShopPlayer player = plugin.wrapPlayer(e.getCause().getFirstPlayer());
|
||||
|
||||
if (e.getOriginalEvent() instanceof PlayerInteractEvent) {
|
||||
Block block = e.getBlocks().get(0);
|
||||
Material type = block.getType();
|
||||
|
||||
if (type == Material.CHEST || type == Material.TRAPPED_CHEST) {
|
||||
if (hidePermissionMessage(player, block.getLocation())) {
|
||||
e.setResult(Result.ALLOW);
|
||||
}
|
||||
}
|
||||
} else if (e.getOriginalEvent() instanceof InventoryOpenEvent) {
|
||||
InventoryOpenEvent orig = (InventoryOpenEvent) e.getOriginalEvent();
|
||||
|
||||
if (orig.getInventory().getHolder() instanceof Chest) {
|
||||
if (hidePermissionMessage(player, ((Chest) orig.getInventory().getHolder()).getLocation())) {
|
||||
e.setResult(Result.ALLOW);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
9
addons/worldguard/src/main/resources/plugin.yml
Normal file
9
addons/worldguard/src/main/resources/plugin.yml
Normal file
@ -0,0 +1,9 @@
|
||||
name: ShopChest-Addon-WorldGuard
|
||||
author: EpicEric
|
||||
version: ${project.version}
|
||||
|
||||
main: de.epiceric.shopchest.addon.worldguard.AddonMain
|
||||
api-version: 1.16
|
||||
depend:
|
||||
- ShopChest
|
||||
- WorldGuard
|
60
copy-target.py
Normal file
60
copy-target.py
Normal file
@ -0,0 +1,60 @@
|
||||
import os
|
||||
from os.path import isdir, isfile, join
|
||||
from shutil import copy2
|
||||
|
||||
|
||||
def clearTarget():
|
||||
files = os.listdir("target")
|
||||
print(files)
|
||||
for file in files:
|
||||
if file.endswith(".jar"):
|
||||
os.remove(join("target", file))
|
||||
|
||||
|
||||
def findJar(directory: str):
|
||||
files = os.listdir(directory)
|
||||
for file in files:
|
||||
path = join(directory, file)
|
||||
if isfile(path) and file.endswith(".jar"):
|
||||
|
||||
if file.endswith("-javadoc.jar"): continue
|
||||
if file.endswith("-sources.jar"): continue
|
||||
if file.startswith("original-"): continue
|
||||
|
||||
return path
|
||||
return None
|
||||
|
||||
|
||||
def findTargetDirs():
|
||||
result = [
|
||||
# join("api", "target"),
|
||||
join("core", "target"),
|
||||
]
|
||||
|
||||
directories = os.listdir("addons")
|
||||
for directory in directories:
|
||||
path = join("addons", directory)
|
||||
if isdir(path):
|
||||
result.append(join(path, "target"))
|
||||
|
||||
return result
|
||||
|
||||
|
||||
try:
|
||||
clearTarget()
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
|
||||
targetDirs = findTargetDirs()
|
||||
|
||||
for targetDir in targetDirs:
|
||||
jarFile = findJar(targetDir)
|
||||
if jarFile != None:
|
||||
fileName = jarFile.split("\\")[-1]
|
||||
|
||||
try:
|
||||
os.mkdir("target")
|
||||
except FileExistsError:
|
||||
pass
|
||||
|
||||
copy2(jarFile, join("target", fileName))
|
89
core/pom.xml
89
core/pom.xml
@ -27,30 +27,6 @@
|
||||
<id>codemc-repo</id>
|
||||
<url>https://repo.codemc.org/repository/maven-public/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>sk89q-repo</id>
|
||||
<url>http://maven.sk89q.com/artifactory/repo/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>athion-repo</id>
|
||||
<url>http://ci.athion.net/job/PlotSquared-Releases/ws/mvn/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>uskyblock-repo</id>
|
||||
<url>https://raw.github.com/rlf/uSkyBlock/mvn-repo/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>tastybento-repo</id>
|
||||
<url>http://dl.bintray.com/tastybento/maven-repo</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>jitpack-repo</id>
|
||||
<url>https://jitpack.io</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>nlthijs48-repo</id>
|
||||
<url>http://maven.wiefferink.me</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
@ -60,62 +36,6 @@
|
||||
<version>1.7</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>fr.xephi</groupId>
|
||||
<artifactId>authme</artifactId>
|
||||
<version>5.4.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.intellectualsites.plotsquared</groupId>
|
||||
<artifactId>PlotSquared-API</artifactId>
|
||||
<version>4.226</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.rlf</groupId>
|
||||
<artifactId>uSkyBlock-API</artifactId>
|
||||
<version>2.6.4</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.wasteofplastic</groupId>
|
||||
<artifactId>askyblock</artifactId>
|
||||
<version>3.0.6.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.TechFortress</groupId>
|
||||
<artifactId>GriefPrevention</artifactId>
|
||||
<version>16.11.6</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>me.wiefferink</groupId>
|
||||
<artifactId>areashop</artifactId>
|
||||
<version>2.6.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>world.bentobox</groupId>
|
||||
<artifactId>bentobox</artifactId>
|
||||
<version>1.11.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.palmergames</groupId>
|
||||
<artifactId>Towny</artifactId>
|
||||
<version>0.93.1.0</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>${project.basedir}/lib/Towny-0.93.1.0.jar</systemPath>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>pl.gnacik</groupId>
|
||||
<artifactId>IslandWorld</artifactId>
|
||||
<version>8.5</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>${project.basedir}/lib/IslandWorld-8.5.jar</systemPath>
|
||||
</dependency>
|
||||
|
||||
<!-- Shaded dependencies -->
|
||||
<dependency>
|
||||
@ -128,11 +48,6 @@
|
||||
<artifactId>shopchest-nms</artifactId>
|
||||
<version>1.13-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codemc.worldguardwrapper</groupId>
|
||||
<artifactId>worldguardwrapper</artifactId>
|
||||
<version>1.1.6-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.bstats</groupId>
|
||||
<artifactId>bstats-bukkit</artifactId>
|
||||
@ -171,10 +86,6 @@
|
||||
<pattern>org.bstats.bukkit</pattern>
|
||||
<shadedPattern>de.epiceric.shopchest.dependencies.bstats</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>org.codemc.worldguardwrapper</pattern>
|
||||
<shadedPattern>de.epiceric.shopchest.dependencies.worldguardwrapper</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>com.zaxxer.hikari</pattern>
|
||||
<shadedPattern>de.epiceric.shopchest.dependencies.hikari</shadedPattern>
|
||||
|
Loading…
Reference in New Issue
Block a user