mirror of
https://github.com/amalthea-mc/ShopChest.git
synced 2024-11-22 10:22:29 +00:00
Cleaned up code
- Removed unnecessary methods - Split long methods into multiple shorter ones - Updated Bukkit dependency to 1.12-pre5 - Removed permission for "/shop" command
This commit is contained in:
parent
7560cddb7a
commit
edd7608c02
2
pom.xml
2
pom.xml
@ -132,7 +132,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.bukkit</groupId>
|
<groupId>org.bukkit</groupId>
|
||||||
<artifactId>bukkit</artifactId>
|
<artifactId>bukkit</artifactId>
|
||||||
<version>1.12-pre2-SNAPSHOT</version>
|
<version>1.12-pre5-SNAPSHOT</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -30,6 +30,7 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.bukkit.plugin.RegisteredServiceProvider;
|
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
import pl.islandworld.IslandWorld;
|
import pl.islandworld.IslandWorld;
|
||||||
import us.talabrek.ultimateskyblock.api.uSkyBlockAPI;
|
import us.talabrek.ultimateskyblock.api.uSkyBlockAPI;
|
||||||
|
|
||||||
@ -148,6 +149,54 @@ public class ShopChest extends JavaPlugin {
|
|||||||
getLogger().warning("Plugin may still work, but more errors are expected!");
|
getLogger().warning("Plugin may still work, but more errors are expected!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
loadExternalPlugins();
|
||||||
|
|
||||||
|
debug("Loading utils and extras...");
|
||||||
|
LanguageUtils.load();
|
||||||
|
saveResource("item_names.txt", true);
|
||||||
|
|
||||||
|
loadMetrics();
|
||||||
|
checkForUpdates();
|
||||||
|
|
||||||
|
shopUtils = new ShopUtils(this);
|
||||||
|
shopCommand = new ShopCommand(this);
|
||||||
|
|
||||||
|
registerListeners();
|
||||||
|
initializeShops();
|
||||||
|
|
||||||
|
updater = new ShopUpdater(this);
|
||||||
|
updater.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
debug("Disabling ShopChest...");
|
||||||
|
|
||||||
|
if (updater != null) {
|
||||||
|
debug("Stopping updater");
|
||||||
|
updater.cancel();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (database != null) {
|
||||||
|
for (Shop shop : shopUtils.getShops()) {
|
||||||
|
shopUtils.removeShop(shop, false, true);
|
||||||
|
debug("Removed shop (#" + shop.getID() + ")");
|
||||||
|
}
|
||||||
|
|
||||||
|
database.disconnect();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fw != null && config.enable_debug_log) {
|
||||||
|
try {
|
||||||
|
fw.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
getLogger().severe("Failed to close FileWriter");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadExternalPlugins() {
|
||||||
if (worldGuard != null && !WorldGuardShopFlag.isLoaded()) {
|
if (worldGuard != null && !WorldGuardShopFlag.isLoaded()) {
|
||||||
WorldGuardShopFlag.register(this, false);
|
WorldGuardShopFlag.register(this, false);
|
||||||
|
|
||||||
@ -201,14 +250,9 @@ public class ShopChest extends JavaPlugin {
|
|||||||
if (hasPlotSquared()) {
|
if (hasPlotSquared()) {
|
||||||
new PlotSquaredShopFlag().register(this);
|
new PlotSquaredShopFlag().register(this);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
debug("Loading utils and extras...");
|
private void loadMetrics() {
|
||||||
|
|
||||||
LanguageUtils.load();
|
|
||||||
saveResource("item_names.txt", true);
|
|
||||||
|
|
||||||
shopUtils = new ShopUtils(this);
|
|
||||||
|
|
||||||
debug("Initializing Metrics...");
|
debug("Initializing Metrics...");
|
||||||
Metrics metrics = new Metrics(this);
|
Metrics metrics = new Metrics(this);
|
||||||
|
|
||||||
@ -256,8 +300,10 @@ public class ShopChest extends JavaPlugin {
|
|||||||
}, config.database_mysql_ping_interval * 20L, config.database_mysql_ping_interval * 20L);
|
}, config.database_mysql_ping_interval * 20L, config.database_mysql_ping_interval * 20L);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(this, new Runnable() {
|
private void checkForUpdates() {
|
||||||
|
new BukkitRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
UpdateChecker uc = new UpdateChecker(ShopChest.this);
|
UpdateChecker uc = new UpdateChecker(ShopChest.this);
|
||||||
@ -289,10 +335,10 @@ public class ShopChest extends JavaPlugin {
|
|||||||
Bukkit.getConsoleSender().sendMessage("[ShopChest] " + LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_ERROR));
|
Bukkit.getConsoleSender().sendMessage("[ShopChest] " + LanguageUtils.getMessage(LocalizedMessage.Message.UPDATE_ERROR));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
}.runTaskAsynchronously(this);
|
||||||
|
}
|
||||||
shopCommand = new ShopCommand(this);
|
|
||||||
|
|
||||||
|
private void registerListeners() {
|
||||||
debug("Registering listeners...");
|
debug("Registering listeners...");
|
||||||
getServer().getPluginManager().registerEvents(new ShopUpdateListener(this), this);
|
getServer().getPluginManager().registerEvents(new ShopUpdateListener(this), this);
|
||||||
getServer().getPluginManager().registerEvents(new ShopItemListener(this), this);
|
getServer().getPluginManager().registerEvents(new ShopItemListener(this), this);
|
||||||
@ -311,39 +357,23 @@ public class ShopChest extends JavaPlugin {
|
|||||||
getServer().getPluginManager().registerEvents(new AreaShopListener(this), this);
|
getServer().getPluginManager().registerEvents(new AreaShopListener(this), this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
initializeShops();
|
|
||||||
|
|
||||||
updater = new ShopUpdater(this);
|
|
||||||
updater.start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes the shops
|
||||||
|
*/
|
||||||
|
private void initializeShops() {
|
||||||
|
debug("Initializing Shops...");
|
||||||
|
shopUtils.reloadShops(false, true, new Callback(this) {
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onResult(Object result) {
|
||||||
debug("Disabling ShopChest...");
|
if (result instanceof Integer) {
|
||||||
|
int count = (int) result;
|
||||||
if (updater != null) {
|
getLogger().info("Initialized " + count + " Shops");
|
||||||
debug("Stopping updater");
|
debug("Initialized " + count + " Shops");
|
||||||
updater.cancel();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (database != null) {
|
|
||||||
for (Shop shop : shopUtils.getShops()) {
|
|
||||||
shopUtils.removeShop(shop, false, true);
|
|
||||||
debug("Removed shop (#" + shop.getID() + ")");
|
|
||||||
}
|
|
||||||
|
|
||||||
database.disconnect();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fw != null && config.enable_debug_log) {
|
|
||||||
try {
|
|
||||||
fw.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
getLogger().severe("Failed to close FileWriter");
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -376,24 +406,6 @@ public class ShopChest extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Initializes the shops
|
|
||||||
*/
|
|
||||||
private void initializeShops() {
|
|
||||||
debug("Initializing Shops...");
|
|
||||||
shopUtils.reloadShops(false, true, new Callback(this) {
|
|
||||||
@Override
|
|
||||||
public void onResult(Object result) {
|
|
||||||
if (result instanceof Integer) {
|
|
||||||
int count = (int) result;
|
|
||||||
getLogger().info("Initialized " + count + " Shops");
|
|
||||||
debug("Initialized " + count + " Shops");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return The {@link ShopCommand}
|
* @return The {@link ShopCommand}
|
||||||
*/
|
*/
|
||||||
@ -422,13 +434,6 @@ public class ShopChest extends JavaPlugin {
|
|||||||
return areaShop != null && areaShop.isEnabled();
|
return areaShop != null && areaShop.isEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return An instance of {@link AreaShop} or {@code null} if AreaShop is not enabled
|
|
||||||
*/
|
|
||||||
public AreaShop getAreaShop() {
|
|
||||||
return areaShop;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Whether the plugin 'GriefPrevention' is enabled
|
* @return Whether the plugin 'GriefPrevention' is enabled
|
||||||
*/
|
*/
|
||||||
@ -449,14 +454,6 @@ public class ShopChest extends JavaPlugin {
|
|||||||
public boolean hasIslandWorld() {
|
public boolean hasIslandWorld() {
|
||||||
return islandWorld != null && islandWorld.isEnabled();
|
return islandWorld != null && islandWorld.isEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return An instance of {@link IslandWorld} or {@code null} if IslandWorld is not enabled
|
|
||||||
*/
|
|
||||||
public IslandWorld getIslandWorld() {
|
|
||||||
return islandWorld;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Whether the plugin 'ASkyBlock' is enabled
|
* @return Whether the plugin 'ASkyBlock' is enabled
|
||||||
*/
|
*/
|
||||||
@ -464,13 +461,6 @@ public class ShopChest extends JavaPlugin {
|
|||||||
return aSkyBlock != null && aSkyBlock.isEnabled();
|
return aSkyBlock != null && aSkyBlock.isEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return An instance of {@link ASkyBlock} or {@code null} if ASkyBlock is not enabled
|
|
||||||
*/
|
|
||||||
public ASkyBlock getASkyBlock() {
|
|
||||||
return aSkyBlock;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Whether the plugin 'uSkyBlock' is enabled
|
* @return Whether the plugin 'uSkyBlock' is enabled
|
||||||
*/
|
*/
|
||||||
@ -499,14 +489,6 @@ public class ShopChest extends JavaPlugin {
|
|||||||
public boolean hasAuthMe() {
|
public boolean hasAuthMe() {
|
||||||
return authMe != null && authMe.isEnabled();
|
return authMe != null && authMe.isEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return An instance of {@link AuthMe} or {@code null} if AuthMe is not enabled
|
|
||||||
*/
|
|
||||||
public AuthMe getAuthMe() {
|
|
||||||
return authMe;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Whether the plugin 'Towny' is enabled
|
* @return Whether the plugin 'Towny' is enabled
|
||||||
*/
|
*/
|
||||||
@ -514,13 +496,6 @@ public class ShopChest extends JavaPlugin {
|
|||||||
return towny != null && towny.isEnabled();
|
return towny != null && towny.isEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return An instance of {@link Towny} or {@code null} if Towny is not enabled
|
|
||||||
*/
|
|
||||||
public Towny getTowny() {
|
|
||||||
return towny;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Whether the plugin 'WorldGuard' is enabled
|
* @return Whether the plugin 'WorldGuard' is enabled
|
||||||
*/
|
*/
|
||||||
@ -602,20 +577,9 @@ public class ShopChest extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return The {@link Config} of ShopChset
|
* @return The {@link Config} of ShopChest
|
||||||
*/
|
*/
|
||||||
public Config getShopChestConfig() {
|
public Config getShopChestConfig() {
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Provides a reader for a text file located inside the jar.</p>
|
|
||||||
* The returned reader will read text with the UTF-8 charset.
|
|
||||||
* @param file the filename of the resource to load
|
|
||||||
* @return null if {@link #getResource(String)} returns null
|
|
||||||
* @throws IllegalArgumentException if file is null
|
|
||||||
*/
|
|
||||||
public Reader _getTextResource(String file) throws IllegalArgumentException {
|
|
||||||
return getTextResource(file);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,6 @@ class ShopCommand implements CommandExecutor {
|
|||||||
cmd.setDescription("Manage players' shops or this plugin.");
|
cmd.setDescription("Manage players' shops or this plugin.");
|
||||||
cmd.setUsage("/" + name);
|
cmd.setUsage("/" + name);
|
||||||
cmd.setExecutor(this);
|
cmd.setExecutor(this);
|
||||||
cmd.setPermission(Permissions.BUY);
|
|
||||||
cmd.setTabCompleter(new ShopTabCompleter(plugin));
|
cmd.setTabCompleter(new ShopTabCompleter(plugin));
|
||||||
|
|
||||||
return cmd;
|
return cmd;
|
||||||
|
@ -10,6 +10,7 @@ import java.io.BufferedReader;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -405,6 +406,18 @@ public class Config {
|
|||||||
return langConfig;
|
return langConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Reader getTextResource(String file, boolean showMessages) {
|
||||||
|
try {
|
||||||
|
return (Reader) plugin.getClass().getDeclaredMethod("getTextResource", String.class).invoke(plugin, file);
|
||||||
|
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
|
||||||
|
if (showMessages) plugin.getLogger().severe("Failed to get file from jar: " + file);
|
||||||
|
plugin.debug("Failed to get file from jar: " + file);
|
||||||
|
plugin.debug(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private void loadLanguageConfig(boolean showMessages) {
|
private void loadLanguageConfig(boolean showMessages) {
|
||||||
langConfig = new LanguageConfiguration(plugin, showMessages);
|
langConfig = new LanguageConfiguration(plugin, showMessages);
|
||||||
File langFolder = new File(plugin.getDataFolder(), "lang");
|
File langFolder = new File(plugin.getDataFolder(), "lang");
|
||||||
@ -421,15 +434,20 @@ public class Config {
|
|||||||
if (!langConfigFile.exists()) {
|
if (!langConfigFile.exists()) {
|
||||||
if (!langDefaultFile.exists()) {
|
if (!langDefaultFile.exists()) {
|
||||||
try {
|
try {
|
||||||
Reader r = plugin._getTextResource("lang/" + langConfigFile.getName());
|
Reader r = getTextResource("lang/" + langConfigFile.getName(), showMessages);
|
||||||
|
|
||||||
if (r == null) {
|
if (r == null) {
|
||||||
r = plugin._getTextResource("lang/en_US.lang");
|
r = getTextResource("lang/en_US.lang", showMessages);
|
||||||
if (showMessages) plugin.getLogger().info("Using locale \"en_US\" (Streamed from jar file)");
|
if (showMessages) plugin.getLogger().info("Using locale \"en_US\" (Streamed from jar file)");
|
||||||
} else {
|
} else {
|
||||||
if (showMessages) plugin.getLogger().info("Using locale \"" + langConfigFile.getName().substring(0, langConfigFile.getName().length() - 5) + "\" (Streamed from jar file)");
|
if (showMessages) plugin.getLogger().info("Using locale \"" + langConfigFile.getName().substring(0, langConfigFile.getName().length() - 5) + "\" (Streamed from jar file)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (r == null) {
|
||||||
|
if (showMessages) plugin.getLogger().warning("Using default language values");
|
||||||
|
plugin.debug("Using default language values (#1)");
|
||||||
|
}
|
||||||
|
|
||||||
BufferedReader br = new BufferedReader(r);
|
BufferedReader br = new BufferedReader(r);
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
@ -447,7 +465,7 @@ public class Config {
|
|||||||
plugin.getLogger().warning("Using default language values");
|
plugin.getLogger().warning("Using default language values");
|
||||||
}
|
}
|
||||||
|
|
||||||
plugin.debug("Using default language values (#1)");
|
plugin.debug("Using default language values (#2)");
|
||||||
plugin.debug(e);
|
plugin.debug(e);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -459,7 +477,7 @@ public class Config {
|
|||||||
plugin.getLogger().warning("Using default language values");
|
plugin.getLogger().warning("Using default language values");
|
||||||
}
|
}
|
||||||
|
|
||||||
plugin.debug("Using default language values (#2)");
|
plugin.debug("Using default language values (#3)");
|
||||||
plugin.debug(e);
|
plugin.debug(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -472,7 +490,7 @@ public class Config {
|
|||||||
plugin.getLogger().warning("Using default language values");
|
plugin.getLogger().warning("Using default language values");
|
||||||
}
|
}
|
||||||
|
|
||||||
plugin.debug("Using default language values (#3)");
|
plugin.debug("Using default language values (#4)");
|
||||||
plugin.debug(e);
|
plugin.debug(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package de.epiceric.shopchest.shop;
|
package de.epiceric.shopchest.shop;
|
||||||
|
|
||||||
import de.epiceric.shopchest.ShopChest;
|
import de.epiceric.shopchest.ShopChest;
|
||||||
|
import de.epiceric.shopchest.config.Config;
|
||||||
import de.epiceric.shopchest.config.Regex;
|
import de.epiceric.shopchest.config.Regex;
|
||||||
import de.epiceric.shopchest.exceptions.ChestNotFoundException;
|
import de.epiceric.shopchest.exceptions.ChestNotFoundException;
|
||||||
import de.epiceric.shopchest.exceptions.NotEnoughSpaceException;
|
import de.epiceric.shopchest.exceptions.NotEnoughSpaceException;
|
||||||
@ -11,6 +12,7 @@ import org.bukkit.Bukkit;
|
|||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.block.Chest;
|
import org.bukkit.block.Chest;
|
||||||
@ -32,6 +34,7 @@ public class Shop {
|
|||||||
private double buyPrice;
|
private double buyPrice;
|
||||||
private double sellPrice;
|
private double sellPrice;
|
||||||
private ShopType shopType;
|
private ShopType shopType;
|
||||||
|
private Config config;
|
||||||
|
|
||||||
public Shop(int id, ShopChest plugin, OfflinePlayer vendor, ItemStack product, Location location, double buyPrice, double sellPrice, ShopType shopType) {
|
public Shop(int id, ShopChest plugin, OfflinePlayer vendor, ItemStack product, Location location, double buyPrice, double sellPrice, ShopType shopType) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
@ -42,6 +45,7 @@ public class Shop {
|
|||||||
this.buyPrice = buyPrice;
|
this.buyPrice = buyPrice;
|
||||||
this.sellPrice = sellPrice;
|
this.sellPrice = sellPrice;
|
||||||
this.shopType = shopType;
|
this.shopType = shopType;
|
||||||
|
this.config = plugin.getShopChestConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Shop(ShopChest plugin, OfflinePlayer vendor, ItemStack product, Location location, double buyPrice, double sellPrice, ShopType shopType) {
|
public Shop(ShopChest plugin, OfflinePlayer vendor, ItemStack product, Location location, double buyPrice, double sellPrice, ShopType shopType) {
|
||||||
@ -56,14 +60,14 @@ public class Shop {
|
|||||||
Block b = location.getBlock();
|
Block b = location.getBlock();
|
||||||
if (b.getType() != Material.CHEST && b.getType() != Material.TRAPPED_CHEST) {
|
if (b.getType() != Material.CHEST && b.getType() != Material.TRAPPED_CHEST) {
|
||||||
ChestNotFoundException ex = new ChestNotFoundException(String.format("No Chest found in world '%s' at location: %d; %d; %d", b.getWorld().getName(), b.getX(), b.getY(), b.getZ()));
|
ChestNotFoundException ex = new ChestNotFoundException(String.format("No Chest found in world '%s' at location: %d; %d; %d", b.getWorld().getName(), b.getX(), b.getY(), b.getZ()));
|
||||||
plugin.getShopUtils().removeShop(this, plugin.getShopChestConfig().remove_shop_on_error);
|
plugin.getShopUtils().removeShop(this, config.remove_shop_on_error);
|
||||||
if (showConsoleMessages) plugin.getLogger().severe(ex.getMessage());
|
if (showConsoleMessages) plugin.getLogger().severe(ex.getMessage());
|
||||||
plugin.debug("Failed to create shop (#" + id + ")");
|
plugin.debug("Failed to create shop (#" + id + ")");
|
||||||
plugin.debug(ex);
|
plugin.debug(ex);
|
||||||
return false;
|
return false;
|
||||||
} else if ((b.getRelative(BlockFace.UP).getType() != Material.AIR) && plugin.getShopChestConfig().show_shop_items) {
|
} else if ((b.getRelative(BlockFace.UP).getType() != Material.AIR) && config.show_shop_items) {
|
||||||
NotEnoughSpaceException ex = new NotEnoughSpaceException(String.format("No space above chest in world '%s' at location: %d; %d; %d", b.getWorld().getName(), b.getX(), b.getY(), b.getZ()));
|
NotEnoughSpaceException ex = new NotEnoughSpaceException(String.format("No space above chest in world '%s' at location: %d; %d; %d", b.getWorld().getName(), b.getX(), b.getY(), b.getZ()));
|
||||||
plugin.getShopUtils().removeShop(this, plugin.getShopChestConfig().remove_shop_on_error);
|
plugin.getShopUtils().removeShop(this, config.remove_shop_on_error);
|
||||||
if (showConsoleMessages) plugin.getLogger().severe(ex.getMessage());
|
if (showConsoleMessages) plugin.getLogger().severe(ex.getMessage());
|
||||||
plugin.debug("Failed to create shop (#" + id + ")");
|
plugin.debug("Failed to create shop (#" + id + ")");
|
||||||
plugin.debug(ex);
|
plugin.debug(ex);
|
||||||
@ -114,7 +118,7 @@ public class Shop {
|
|||||||
* <b>Call this after {@link #createHologram()}, because it depends on the hologram's location</b>
|
* <b>Call this after {@link #createHologram()}, because it depends on the hologram's location</b>
|
||||||
*/
|
*/
|
||||||
private void createItem() {
|
private void createItem() {
|
||||||
if (plugin.getShopChestConfig().show_shop_items) {
|
if (config.show_shop_items) {
|
||||||
plugin.debug("Creating item (#" + id + ")");
|
plugin.debug("Creating item (#" + id + ")");
|
||||||
|
|
||||||
Location itemLocation;
|
Location itemLocation;
|
||||||
@ -138,86 +142,108 @@ public class Shop {
|
|||||||
private void createHologram() {
|
private void createHologram() {
|
||||||
plugin.debug("Creating hologram (#" + id + ")");
|
plugin.debug("Creating hologram (#" + id + ")");
|
||||||
|
|
||||||
boolean doubleChest;
|
|
||||||
|
|
||||||
Chest[] chests = new Chest[2];
|
|
||||||
Block b = location.getBlock();
|
|
||||||
InventoryHolder ih = getInventoryHolder();
|
InventoryHolder ih = getInventoryHolder();
|
||||||
|
|
||||||
if (ih == null) return;
|
if (ih == null) return;
|
||||||
|
|
||||||
|
Chest[] chests = new Chest[2];
|
||||||
|
boolean doubleChest;
|
||||||
|
|
||||||
if (ih instanceof DoubleChest) {
|
if (ih instanceof DoubleChest) {
|
||||||
DoubleChest dc = (DoubleChest) ih;
|
DoubleChest dc = (DoubleChest) ih;
|
||||||
|
|
||||||
Chest r = (Chest) dc.getRightSide();
|
Chest r = (Chest) dc.getRightSide();
|
||||||
Chest l = (Chest) dc.getLeftSide();
|
Chest l = (Chest) dc.getLeftSide();
|
||||||
|
|
||||||
chests[0] = r;
|
chests[0] = r;
|
||||||
chests[1] = l;
|
chests[1] = l;
|
||||||
|
|
||||||
doubleChest = true;
|
doubleChest = true;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
doubleChest = false;
|
|
||||||
chests[0] = (Chest) ih;
|
chests[0] = (Chest) ih;
|
||||||
|
doubleChest = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean twoLinePrices = config.two_line_prices;
|
||||||
|
|
||||||
|
String[] holoText = getHologramText(twoLinePrices ? 3 : 2);
|
||||||
|
Location holoLocation = getHologramLocation(doubleChest, chests, holoText);
|
||||||
|
|
||||||
|
hologram = new Hologram(plugin, holoText, holoLocation);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String[] getHologramText(int length) {
|
||||||
|
String[] holoText = new String[length];
|
||||||
|
|
||||||
|
holoText[0] = LanguageUtils.getMessage(LocalizedMessage.Message.HOLOGRAM_FORMAT,
|
||||||
|
new LocalizedMessage.ReplacedRegex(Regex.AMOUNT, String.valueOf(product.getAmount())),
|
||||||
|
new LocalizedMessage.ReplacedRegex(Regex.ITEM_NAME, LanguageUtils.getItemName(product)));
|
||||||
|
|
||||||
|
if ((buyPrice <= 0) && (sellPrice > 0)) {
|
||||||
|
holoText[1] = LanguageUtils.getMessage(LocalizedMessage.Message.HOLOGRAM_SELL,
|
||||||
|
new LocalizedMessage.ReplacedRegex(Regex.SELL_PRICE, String.valueOf(sellPrice)));
|
||||||
|
} else if ((buyPrice > 0) && (sellPrice <= 0)) {
|
||||||
|
holoText[1] = LanguageUtils.getMessage(LocalizedMessage.Message.HOLOGRAM_BUY,
|
||||||
|
new LocalizedMessage.ReplacedRegex(Regex.BUY_PRICE, String.valueOf(buyPrice)));
|
||||||
|
} else {
|
||||||
|
if (length == 2) {
|
||||||
|
holoText[1] = LanguageUtils.getMessage(LocalizedMessage.Message.HOLOGRAM_BUY_SELL,
|
||||||
|
new LocalizedMessage.ReplacedRegex(Regex.BUY_PRICE, String.valueOf(buyPrice)),
|
||||||
|
new LocalizedMessage.ReplacedRegex(Regex.SELL_PRICE, String.valueOf(sellPrice)));
|
||||||
|
} else {
|
||||||
|
holoText[1] = LanguageUtils.getMessage(LocalizedMessage.Message.HOLOGRAM_BUY,
|
||||||
|
new LocalizedMessage.ReplacedRegex(Regex.BUY_PRICE, String.valueOf(buyPrice)));
|
||||||
|
holoText[2] = LanguageUtils.getMessage(LocalizedMessage.Message.HOLOGRAM_SELL,
|
||||||
|
new LocalizedMessage.ReplacedRegex(Regex.SELL_PRICE, String.valueOf(sellPrice)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return holoText;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Location getHologramLocation(boolean doubleChest, Chest[] chests, String[] holoText) {
|
||||||
|
Block b = location.getBlock();
|
||||||
Location holoLocation;
|
Location holoLocation;
|
||||||
String[] holoText = new String[plugin.getShopChestConfig().two_line_prices ? 3 : 2];
|
|
||||||
|
World w = b.getWorld();
|
||||||
|
int x = b.getX();
|
||||||
|
int y = b.getY();
|
||||||
|
int z = b.getZ();
|
||||||
|
|
||||||
if (doubleChest) {
|
if (doubleChest) {
|
||||||
|
|
||||||
Chest r = chests[0];
|
Chest r = chests[0];
|
||||||
Chest l = chests[1];
|
Chest l = chests[1];
|
||||||
|
|
||||||
if (b.getLocation().equals(r.getLocation())) {
|
if (b.getLocation().equals(r.getLocation())) {
|
||||||
|
if (r.getX() != l.getX()) {
|
||||||
if (r.getX() != l.getX())
|
holoLocation = new Location(w, x, y - 0.6, z + 0.5);
|
||||||
holoLocation = new Location(b.getWorld(), b.getX(), b.getY() - 0.6, b.getZ() + 0.5);
|
} else if (r.getZ() != l.getZ()) {
|
||||||
else if (r.getZ() != l.getZ())
|
holoLocation = new Location(w, x + 0.5, y - 0.6, z);
|
||||||
holoLocation = new Location(b.getWorld(), b.getX() + 0.5, b.getY() - 0.6, b.getZ());
|
|
||||||
else holoLocation = new Location(b.getWorld(), b.getX() + 0.5, b.getY() - 0.6, b.getZ() + 0.5);
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
holoLocation = new Location(w, x + 0.5, y - 0.6, z + 0.5);
|
||||||
if (r.getX() != l.getX())
|
|
||||||
holoLocation = new Location(b.getWorld(), b.getX() + 1, b.getY() - 0.6, b.getZ() + 0.5);
|
|
||||||
else if (r.getZ() != l.getZ())
|
|
||||||
holoLocation = new Location(b.getWorld(), b.getX() + 0.5, b.getY() - 0.6, b.getZ() + 1);
|
|
||||||
else holoLocation = new Location(b.getWorld(), b.getX() + 0.5, b.getY() - 0.6, b.getZ() + 0.5);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else holoLocation = new Location(b.getWorld(), b.getX() + 0.5, b.getY() - 0.6, b.getZ() + 0.5);
|
|
||||||
|
|
||||||
holoText[0] = LanguageUtils.getMessage(LocalizedMessage.Message.HOLOGRAM_FORMAT, new LocalizedMessage.ReplacedRegex(Regex.AMOUNT, String.valueOf(product.getAmount())),
|
|
||||||
new LocalizedMessage.ReplacedRegex(Regex.ITEM_NAME, LanguageUtils.getItemName(product)));
|
|
||||||
|
|
||||||
if ((buyPrice <= 0) && (sellPrice > 0)) {
|
|
||||||
holoText[1] = LanguageUtils.getMessage(LocalizedMessage.Message.HOLOGRAM_SELL, new LocalizedMessage.ReplacedRegex(Regex.SELL_PRICE, String.valueOf(sellPrice)));
|
|
||||||
} else if ((buyPrice > 0) && (sellPrice <= 0)) {
|
|
||||||
holoText[1] = LanguageUtils.getMessage(LocalizedMessage.Message.HOLOGRAM_BUY, new LocalizedMessage.ReplacedRegex(Regex.BUY_PRICE, String.valueOf(buyPrice)));
|
|
||||||
} else {
|
} else {
|
||||||
if (holoText.length == 2) {
|
if (r.getX() != l.getX()) {
|
||||||
holoText[1] = LanguageUtils.getMessage(LocalizedMessage.Message.HOLOGRAM_BUY_SELL, new LocalizedMessage.ReplacedRegex(Regex.BUY_PRICE, String.valueOf(buyPrice)),
|
holoLocation = new Location(w, x + 1, y - 0.6, z + 0.5);
|
||||||
new LocalizedMessage.ReplacedRegex(Regex.SELL_PRICE, String.valueOf(sellPrice)));
|
} else if (r.getZ() != l.getZ()) {
|
||||||
|
holoLocation = new Location(w, x + 0.5, y - 0.6, z + 1);
|
||||||
} else {
|
} else {
|
||||||
holoText[1] = LanguageUtils.getMessage(LocalizedMessage.Message.HOLOGRAM_BUY, new LocalizedMessage.ReplacedRegex(Regex.BUY_PRICE, String.valueOf(buyPrice)));
|
holoLocation = new Location(w, x + 0.5, y - 0.6, z + 0.5);
|
||||||
holoText[2] = LanguageUtils.getMessage(LocalizedMessage.Message.HOLOGRAM_SELL, new LocalizedMessage.ReplacedRegex(Regex.SELL_PRICE, String.valueOf(sellPrice)));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
holoLocation = new Location(w, x + 0.5, y - 0.6, z + 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
holoLocation.add(0, plugin.getShopChestConfig().hologram_lift, 0);
|
holoLocation.add(0, config.hologram_lift, 0);
|
||||||
|
|
||||||
if (plugin.getShopChestConfig().two_line_prices) {
|
if (config.two_line_prices) {
|
||||||
if (holoText.length == 3 && holoText[2] != null) {
|
if (holoText.length == 3 && holoText[2] != null) {
|
||||||
holoLocation.add(0, plugin.getShopChestConfig().two_line_hologram_lift, 0);
|
holoLocation.add(0, config.two_line_hologram_lift, 0);
|
||||||
} else {
|
} else {
|
||||||
holoLocation.add(0, plugin.getShopChestConfig().one_line_hologram_lift, 0);
|
holoLocation.add(0, config.one_line_hologram_lift, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hologram = new Hologram(plugin, holoText, holoLocation);
|
return holoLocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user