diff --git a/pom.xml b/pom.xml
index 9d1565e5..ee82c084 100644
--- a/pom.xml
+++ b/pom.xml
@@ -73,37 +73,60 @@
UTF-8
yyyy-MM-dd'T'HH.mm.ss
${maven.build.timestamp}
-
+ org/shanerx/tradeshop
+ src/main/resources
+
+
+
+
+
+
+
+ target/output-files
+
+
expiration
- builddate.yml
+ builddate.yml
+
+
+
+ clean
+
+ clean
+
+
+
+ skipDocs
+
+ true
- install
- ${project.artifactId}-${project.version}-${maven.build.timestamp}
+ ${doClean} install
+ ${project.name}-${project.version}-${maven.build.timestamp}
src/main/java
.
true
- ${basedir}/src/main/resources/
+ ${basedir}/${resourceDir}
plugin.yml
- ${builddate}
+ ${expirationFile}
./Lang
false
- ${basedir}/src/main/resources/Lang
+ ${basedir}/${resourceDir}/Lang
@@ -111,7 +134,7 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.0
+ 3.8.1
1.8
1.8
@@ -120,25 +143,34 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.1.0
+ 3.3.0
+ ${outputDir}/PreShade
false
org.bstats:*
- de.themoep:*
+ de.themoep:*
org.bstats
- org.shanerx.tradeshop
+ ${project.groupId}.${project.artifactId}.bstats
de.themoep
- io.github.apfelcreme.Pipes.libs
+ ${project.groupId}.${project.artifactId}
+
+
+ *:*
+
+ META-INF/maven/**
+
+
+
@@ -152,17 +184,18 @@
org.apache.maven.plugins
maven-javadoc-plugin
- 3.3.1
+ 3.4.0
false
+ ${outputDir}/JavaDocs
- ${skip_docs}
+ ${skipDocs}
- org/shanerx/tradeshop/TradeShop.java
- org/shanerx/tradeshop/commands/**
- org/shanerx/tradeshop/listeners/**
- org/shanerx/tradeshop/utils/Updater.java
- org/shanerx/tradeshop/utils/BukkitVersion.java
+ ${pluginDir}/TradeShop.java
+ ${pluginDir}/commands/**
+ ${pluginDir}/shop/listeners/**
+ ${pluginDir}/utils/versionmanagement/**
+ ${pluginDir}/player/JoinEventListener.java
@@ -212,15 +245,14 @@
de.themoep
inventorygui
-
- 1.4.2-SNAPSHOT
+ 1.5-SNAPSHOT
compile
org.apache.maven.plugins
maven-javadoc-plugin
- 3.3.2
+ 3.4.0
maven-plugin
diff --git a/src/main/java/org/shanerx/tradeshop/commands/CommandTabCompleter.java b/src/main/java/org/shanerx/tradeshop/commands/CommandTabCompleter.java
index 88cbaee8..7e9e513f 100644
--- a/src/main/java/org/shanerx/tradeshop/commands/CommandTabCompleter.java
+++ b/src/main/java/org/shanerx/tradeshop/commands/CommandTabCompleter.java
@@ -30,6 +30,7 @@
import org.bukkit.entity.Player;
import org.shanerx.tradeshop.TradeShop;
import org.shanerx.tradeshop.data.config.Setting;
+import org.shanerx.tradeshop.player.ShopRole;
import org.shanerx.tradeshop.shop.Shop;
import org.shanerx.tradeshop.shop.ShopType;
import org.shanerx.tradeshop.utils.Utils;
@@ -99,7 +100,7 @@ public List fillShopPlayer() {
}
Shop shop = Shop.loadShop(s);
- return shop.getUserNames();
+ return shop.getUserNames(ShopRole.MANAGER, ShopRole.MEMBER);
}
return Collections.EMPTY_LIST;
diff --git a/src/main/java/org/shanerx/tradeshop/commands/Commands.java b/src/main/java/org/shanerx/tradeshop/commands/Commands.java
index 1ba23831..67b78cb5 100644
--- a/src/main/java/org/shanerx/tradeshop/commands/Commands.java
+++ b/src/main/java/org/shanerx/tradeshop/commands/Commands.java
@@ -63,8 +63,8 @@ public enum Commands {
ADD_COST(Lists.newArrayList("addCost"), Permissions.NONE, 1, 3, true, "Add cost to shop", "/tradeshop $cmd$ [Amount] [Material]"),
SET_PRODUCT(Lists.newArrayList("setProduct"), Permissions.NONE, 1, 3, true, "Set product of shop ", "/tradeshop $cmd$ [Amount] [Material]"),
SET_COST(Lists.newArrayList("setCost"), Permissions.NONE, 1, 3, true, "Set cost of shop", "/tradeshop $cmd$ [Amount] [Material]"),
- REMOVE_PRODUCT(Lists.newArrayList("removeProduct", "delProduct"), Permissions.NONE, 2, 2, true, "Removes a product from the shop", "/tradeshop $cmd$ "),
- REMOVE_COST(Lists.newArrayList("removeCost", "delCost"), Permissions.NONE, 2, 2, true, "Removes a product from the shop", "/tradeshop $cmd$ "),
+ REMOVE_PRODUCT(Lists.newArrayList("removeProduct", "delProduct"), Permissions.NONE, 1, 2, true, "Removes a product from the shop", "/tradeshop $cmd$ "),
+ REMOVE_COST(Lists.newArrayList("removeCost", "delCost"), Permissions.NONE, 1, 2, true, "Removes a product from the shop", "/tradeshop $cmd$ "),
LIST_PRODUCT(Lists.newArrayList("listProduct"), Permissions.NONE, 1, 1, true, "Lists the products in the shop", "/tradeshop $cmd$"),
LIST_COST(Lists.newArrayList("listCost"), Permissions.NONE, 1, 1, true, "Lists the costs in a shop", "/tradeshop $cmd$"),
diff --git a/src/main/java/org/shanerx/tradeshop/commands/commandrunners/AdminCommand.java b/src/main/java/org/shanerx/tradeshop/commands/commandrunners/AdminCommand.java
index c9c732fb..1d1f4314 100644
--- a/src/main/java/org/shanerx/tradeshop/commands/commandrunners/AdminCommand.java
+++ b/src/main/java/org/shanerx/tradeshop/commands/commandrunners/AdminCommand.java
@@ -66,7 +66,7 @@ public void reload() {
return;
}
- command.sendMessage(Setting.MESSAGE_PREFIX.getString() + "&6The configuration files have been reloaded!");
+ command.sendMessage(Setting.MESSAGE_PREFIX.getString().trim() + "&6The configuration files have been reloaded!");
Bukkit.getPluginManager().callEvent(new TradeShopReloadEvent(plugin, command.getSender()));
}
diff --git a/src/main/java/org/shanerx/tradeshop/commands/commandrunners/ShopItemCommand.java b/src/main/java/org/shanerx/tradeshop/commands/commandrunners/ShopItemCommand.java
index 7281bfd7..c72933af 100644
--- a/src/main/java/org/shanerx/tradeshop/commands/commandrunners/ShopItemCommand.java
+++ b/src/main/java/org/shanerx/tradeshop/commands/commandrunners/ShopItemCommand.java
@@ -81,10 +81,12 @@ public void removeSide() {
if (shop == null)
return;
- int index = 0;
+ int index;
if (isInt(command.getArgAt(1))) {
index = Integer.parseInt(command.getArgAt(1)) - 1;
+ } else if (shop.getSideList(side).size() == 1) {
+ index = 0;
} else {
Message.INVALID_ARGUMENTS.sendMessage(pSender);
return;
diff --git a/src/main/java/org/shanerx/tradeshop/data/config/Message.java b/src/main/java/org/shanerx/tradeshop/data/config/Message.java
index 83013b8e..44bbf55e 100644
--- a/src/main/java/org/shanerx/tradeshop/data/config/Message.java
+++ b/src/main/java/org/shanerx/tradeshop/data/config/Message.java
@@ -239,7 +239,7 @@ public String toString() {
}
public String getPrefixed() {
- return PLUGIN.getMessageManager().colour(Setting.MESSAGE_PREFIX.getString() + " " + this);
+ return PLUGIN.getMessageManager().colour(Setting.MESSAGE_PREFIX.getString().trim() + " " + this);
}
diff --git a/src/main/java/org/shanerx/tradeshop/data/config/Setting.java b/src/main/java/org/shanerx/tradeshop/data/config/Setting.java
index 3b39c1c7..86a6086e 100644
--- a/src/main/java/org/shanerx/tradeshop/data/config/Setting.java
+++ b/src/main/java/org/shanerx/tradeshop/data/config/Setting.java
@@ -57,7 +57,7 @@ public enum Setting {
UNLIMITED_ADMIN(SettingSection.SYSTEM_OPTIONS, "unlimited-admin", false),
// Language Options
- MESSAGE_PREFIX(SettingSection.LANGUAGE_OPTIONS, "message-prefix", "&a[&eTradeShop&a] "),
+ MESSAGE_PREFIX(SettingSection.LANGUAGE_OPTIONS, "message-prefix", "&a[&eTradeShop&a]"),
SHOP_GOOD_COLOUR(SettingSection.LANGUAGE_OPTIONS, "shop-good-colour", "&2"),
SHOP_INCOMPLETE_COLOUR(SettingSection.LANGUAGE_OPTIONS, "shop-incomplete-colour", "&7"),
diff --git a/src/main/java/org/shanerx/tradeshop/data/storage/DataStorage.java b/src/main/java/org/shanerx/tradeshop/data/storage/DataStorage.java
index 23afbc86..429c45aa 100644
--- a/src/main/java/org/shanerx/tradeshop/data/storage/DataStorage.java
+++ b/src/main/java/org/shanerx/tradeshop/data/storage/DataStorage.java
@@ -25,11 +25,15 @@
package org.shanerx.tradeshop.data.storage;
+import org.apache.commons.lang.NotImplementedException;
import org.bukkit.Chunk;
import org.bukkit.World;
-import org.shanerx.tradeshop.data.storage.Json.LinkageConfiguration;
-import org.shanerx.tradeshop.data.storage.Json.PlayerConfiguration;
-import org.shanerx.tradeshop.data.storage.Json.ShopConfiguration;
+import org.shanerx.tradeshop.data.storage.Json.JsonLinkageConfiguration;
+import org.shanerx.tradeshop.data.storage.Json.JsonPlayerConfiguration;
+import org.shanerx.tradeshop.data.storage.Json.JsonShopConfiguration;
+import org.shanerx.tradeshop.data.storage.sqlite.SQLiteLinkageConfiguration;
+import org.shanerx.tradeshop.data.storage.sqlite.SQLitePlayerConfiguration;
+import org.shanerx.tradeshop.data.storage.sqlite.SQLiteShopConfiguration;
import org.shanerx.tradeshop.player.PlayerSetting;
import org.shanerx.tradeshop.shop.Shop;
import org.shanerx.tradeshop.shoplocation.ShopChunk;
@@ -54,56 +58,24 @@ public void reload(DataType dataType) {
}
public Shop loadShopFromSign(ShopLocation sign) {
- switch (dataType) {
- case FLATFILE:
- return new ShopConfiguration(new ShopChunk(sign.getChunk())).load(sign);
- case SQLITE:
- return null; //TODO add SQLITE support
- }
- return null;
+ return getShopConfiguration(sign.getChunk()).load(sign);
}
public Shop loadShopFromStorage(ShopLocation chest) {
- switch (dataType) {
- case FLATFILE:
- return loadShopFromSign(new LinkageConfiguration(chest.getWorld()).getLinkedShop(chest));
- case SQLITE:
- return null; //TODO add SQLITE support
- }
- return null;
+ return loadShopFromSign(getLinkageConfiguration(chest.getWorld()).getLinkedShop(chest));
}
public void saveShop(Shop shop) {
- switch (dataType) {
- case FLATFILE:
- new ShopConfiguration(new ShopChunk(shop.getShopLocation().getChunk())).save(shop);
- break;
- case SQLITE:
- //TODO add SQLITE support
- break;
- }
+ getShopConfiguration(shop.getShopLocation().getChunk()).save(shop);
}
public void removeShop(Shop shop) {
- switch (dataType) {
- case FLATFILE:
- new ShopConfiguration(new ShopChunk(shop.getShopLocation().getChunk())).remove(shop.getShopLocationAsSL());
- new LinkageConfiguration(shop.getShopLocationAsSL().getWorld()).removeShop(shop.getShopLocationAsSL());
- break;
- case SQLITE:
- //TODO add SQLITE support
- break;
- }
+ getShopConfiguration(shop.getShopLocation().getChunk()).remove(shop.getShopLocationAsSL());
+ getLinkageConfiguration(shop.getShopLocationAsSL().getWorld()).removeShop(shop.getShopLocationAsSL());
}
public int getShopCountInChunk(Chunk chunk) {
- switch (dataType) {
- case FLATFILE:
- return new ShopConfiguration(new ShopChunk(chunk)).size();
- case SQLITE:
- return 0; //TODO add SQLITE support
- }
- return 0;
+ return getShopConfiguration(chunk).size();
}
public int getShopCountInWorld(World world) {
@@ -114,83 +86,79 @@ public int getShopCountInWorld(World world) {
if (folder.exists() && folder.listFiles() != null) {
for (File file : folder.listFiles()) {
if (file.getName().contains(world.getName()))
- count += new ShopConfiguration(ShopChunk.deserialize(file.getName().replace(".json", ""))).size();
+ count += new JsonShopConfiguration(ShopChunk.deserialize(file.getName().replace(".json", ""))).size();
}
}
break;
case SQLITE:
//TODO add SQLITE support
- break;
+ throw new NotImplementedException("SQLITE for getShopCountInWorld has not been implemented yet.");
}
return count;
}
public PlayerSetting loadPlayer(UUID uuid) {
- PlayerSetting playerSetting = null;
- switch (dataType) {
- case FLATFILE:
- playerSetting = new PlayerConfiguration(uuid).load();
- break;
- case SQLITE:
- //TODO add SQLITE support
- break;
- }
+ PlayerSetting playerSetting = getPlayerConfiguration(uuid).load();
//If playerSetting data not find create new and return
return playerSetting != null ? playerSetting : new PlayerSetting(uuid);
}
public void savePlayer(PlayerSetting playerSetting) {
- switch (dataType) {
- case FLATFILE:
- new PlayerConfiguration(playerSetting.getUuid()).save(playerSetting);
- break;
- case SQLITE:
- //TODO add SQLITE support
- break;
- }
+ getPlayerConfiguration(playerSetting.getUuid()).save(playerSetting);
}
public void removePlayer(PlayerSetting playerSetting) {
- switch (dataType) {
- case FLATFILE:
- new PlayerConfiguration(playerSetting.getUuid()).remove();
- break;
- case SQLITE:
- //TODO add SQLITE support
- break;
- }
+ getPlayerConfiguration(playerSetting.getUuid()).remove();
}
public ShopLocation getChestLinkage(ShopLocation chestLocation) {
- switch (dataType) {
+ return getLinkageConfiguration(chestLocation.getWorld()).getLinkedShop(chestLocation);
+ }
+
+ public void addChestLinkage(ShopLocation chestLocation, ShopLocation shopLocation) {
+ getLinkageConfiguration(chestLocation.getWorld()).add(chestLocation, shopLocation);
+ }
+
+ public void removeChestLinkage(ShopLocation chestLocation) {
+ getLinkageConfiguration(chestLocation.getWorld()).removeChest(chestLocation);
+ }
+
+ protected PlayerConfiguration getPlayerConfiguration(UUID uuid) {
+ switch(dataType) {
case FLATFILE:
- return new LinkageConfiguration(chestLocation.getWorld()).getLinkedShop(chestLocation);
- case SQLITE:
- //TODO add SQLITE support
- break;
+ return new JsonPlayerConfiguration(uuid);
+ case SQLITE:
+ return new SQLitePlayerConfiguration(uuid);
+ default:
+ throw new NotImplementedException("Data storage type " + dataType + " has not been implemented yet.");
}
+ }
- return null;
+ protected ShopConfiguration getShopConfiguration(Chunk chunk) {
+ return getShopConfiguration(new ShopChunk(chunk));
}
- public void addChestLinkage(ShopLocation chestLocation, ShopLocation shopLocation) {
+ protected ShopConfiguration getShopConfiguration(ShopChunk chunk) {
switch (dataType) {
case FLATFILE:
- new LinkageConfiguration(chestLocation.getWorld()).add(chestLocation, shopLocation);
+ return new JsonShopConfiguration(chunk);
case SQLITE:
- //TODO add SQLITE support
- break;
+ return new SQLiteShopConfiguration(chunk);
+ default:
+ throw new NotImplementedException("Data storage type " + dataType + " has not been implemented yet.");
}
}
- public void removeChestLinkage(ShopLocation chestLocation) {
+ protected LinkageConfiguration getLinkageConfiguration(World w) {
switch (dataType) {
case FLATFILE:
- new LinkageConfiguration(chestLocation.getWorld()).removeChest(chestLocation);
+ return new JsonLinkageConfiguration(w);
case SQLITE:
- //TODO add SQLITE support
- break;
+ return new SQLiteLinkageConfiguration(w);
+ default:
+ throw new NotImplementedException("Data storage type " + dataType + " has not been implemented yet.");
}
}
-}
\ No newline at end of file
+}
+
diff --git a/src/main/java/org/shanerx/tradeshop/data/storage/Json/LinkageConfiguration.java b/src/main/java/org/shanerx/tradeshop/data/storage/Json/JsonLinkageConfiguration.java
similarity index 53%
rename from src/main/java/org/shanerx/tradeshop/data/storage/Json/LinkageConfiguration.java
rename to src/main/java/org/shanerx/tradeshop/data/storage/Json/JsonLinkageConfiguration.java
index ce465e11..54f665b2 100644
--- a/src/main/java/org/shanerx/tradeshop/data/storage/Json/LinkageConfiguration.java
+++ b/src/main/java/org/shanerx/tradeshop/data/storage/Json/JsonLinkageConfiguration.java
@@ -27,6 +27,7 @@
import com.google.gson.reflect.TypeToken;
import org.bukkit.World;
+import org.shanerx.tradeshop.data.storage.LinkageConfiguration;
import org.shanerx.tradeshop.shop.ShopChest;
import org.shanerx.tradeshop.shoplocation.ShopLocation;
@@ -35,15 +36,16 @@
import java.util.List;
import java.util.Map;
-public class LinkageConfiguration extends JsonConfiguration {
+public class JsonLinkageConfiguration extends JsonConfiguration implements LinkageConfiguration {
Map linkageData;
- public LinkageConfiguration(World world) {
+ public JsonLinkageConfiguration(World world) {
super(world.getName(), "chest_linkage");
load();
}
+ @Override
public void load() {
linkageData = gson.fromJson(jsonObj.get("linkage_data"), new TypeToken