Move external plugin support into addon modules

Experimental, not sure how that will work out
This commit is contained in:
Eric 2022-08-20 22:34:13 +02:00
parent 1e4ba02e72
commit d88d32f939
16 changed files with 647 additions and 89 deletions

40
addons/askyblock/pom.xml Normal file
View 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>

View File

@ -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);
}
}

View File

@ -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);
}
}
}

View 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
View 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>

View File

@ -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);
}
}

View File

@ -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);
}
});
}
}

View File

@ -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);
}
}
}

View 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
View 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>

View File

@ -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
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}
}
}
}

View 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
View 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))

View File

@ -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>