diff --git a/src/main/java/ua/leonidius/trading/Main.java b/src/main/java/ua/leonidius/trading/Main.java index e31ff49..34d63e5 100644 --- a/src/main/java/ua/leonidius/trading/Main.java +++ b/src/main/java/ua/leonidius/trading/Main.java @@ -3,6 +3,8 @@ import cn.nukkit.command.SimpleCommandMap; import cn.nukkit.plugin.PluginBase; import cn.nukkit.utils.Config; +import me.onebone.economyapi.EconomyAPI; +import ua.leonidius.trading.auction.Auction; import ua.leonidius.trading.auction.BetCmd; import ua.leonidius.trading.auction.StartAuctionCmd; import ua.leonidius.trading.buy.AddBuyItemCmd; @@ -13,9 +15,9 @@ import ua.leonidius.trading.help.*; import ua.leonidius.trading.sell.AddSellItemCmd; import ua.leonidius.trading.sell.DelSellItemCmd; +import ua.leonidius.trading.sell.Sell; import ua.leonidius.trading.sell.SellCmd; import ua.leonidius.trading.help.SellListCmd; -import ua.leonidius.trading.settings.Settings; import ua.leonidius.trading.utils.Message; import java.io.File; @@ -27,7 +29,7 @@ public class Main extends PluginBase { - public static Main plugin; + private static Main plugin; public static Main getPlugin() { return plugin; } @@ -36,14 +38,14 @@ public static Main getPlugin() { public static Config discountCfg; public static Config sellcfg; + public static String currency = EconomyAPI.getInstance().getMonetaryUnit(); + //public static String plgname; - //стринг енам вальюс в параметрах команді, можно свои делать! @Override public void onEnable() { plugin = this; initConfig(); - Settings.init(); Message.init(this); initCmd(); } @@ -68,17 +70,17 @@ private void initCmd(){ cm.register(prefix, new BuyListCmd()); //addsale delsale } - if (Settings.sell.active) { + if (Sell.active) { cm.register(prefix, new SellCmd()); cm.register(prefix, new AddSellItemCmd()); cm.register(prefix, new DelSellItemCmd()); cm.register(prefix, new SellListCmd()); } - if (Settings.auction.active){ + if (Auction.isSystemActive()){ cm.register(prefix, new StartAuctionCmd()); cm.register(prefix, new BetCmd()); } - if (Buy.active || Settings.sell.active || Settings.auction.active) { + if (Buy.active || Sell.active || Auction.isSystemActive()) { cm.register(prefix, new IdCmd()); cm.register(prefix, new HelpCmd()); } diff --git a/src/main/java/ua/leonidius/trading/auction/Auction.java b/src/main/java/ua/leonidius/trading/auction/Auction.java index 822ec99..a1f9896 100644 --- a/src/main/java/ua/leonidius/trading/auction/Auction.java +++ b/src/main/java/ua/leonidius/trading/auction/Auction.java @@ -3,7 +3,7 @@ import cn.nukkit.Player; import cn.nukkit.item.Item; import me.onebone.economyapi.EconomyAPI; -import ua.leonidius.trading.settings.Settings; +import ua.leonidius.trading.Main; import ua.leonidius.trading.utils.Message; import java.text.SimpleDateFormat; @@ -21,14 +21,16 @@ public class Auction { static SimpleDateFormat sdf = new SimpleDateFormat("mm:ss"); static volatile Timer notifierTimer; static volatile long startTime; + private static boolean isActive() { return active; } + static void setActive(boolean a){ active = a; } - public static void startAuction (Item i, double bet, Player player){ + static void startAuction (Item i, double bet, Player player){ if (isActive()) { Message.AUC_RUNNING.print(player, 'c'); return; @@ -39,8 +41,8 @@ public static void startAuction (Item i, double bet, Player player){ return; } - if (EconomyAPI.getInstance().myMoney(player) < Settings.auction.startTax) { - Message.AUC_NOT_ENOUGH_MONEY.print(player, Settings.auction.startTax, 'c'); + if (EconomyAPI.getInstance().myMoney(player) < AucSettings.startTax) { + Message.AUC_NOT_ENOUGH_MONEY.print(player, AucSettings.startTax, 'c'); return; } @@ -50,9 +52,9 @@ public static void startAuction (Item i, double bet, Player player){ } //стартовые функции - EconomyAPI.getInstance().reduceMoney(player, Settings.auction.startTax); + EconomyAPI.getInstance().reduceMoney(player, AucSettings.startTax); player.getInventory().removeItem(i); - active = true; + setActive(true); item = i; currentBet = bet; trader = player; @@ -64,23 +66,22 @@ public static void startAuction (Item i, double bet, Player player){ //таймер остановки аукциона Timer stopTimer = new Timer(); StopAuction stop = new StopAuction(); - stopTimer.schedule(stop, Settings.auction.duration); + stopTimer.schedule(stop, AucSettings.duration); //таймер для уведомлений всем игрокам notifierTimer = new Timer(); AuctionNotifier notifier = new AuctionNotifier(); - notifierTimer.schedule(notifier, Settings.auction.notifyPeriod, Settings.auction.notifyPeriod); + notifierTimer.schedule(notifier, AucSettings.notifyPeriod, AucSettings.notifyPeriod); //отправка уведомления о старте в чат - Date date = new Date(Settings.auction.duration); - Message.AUC_START.broadcast(null, item.getCount(), item.getName(), item.getId(), item.getDamage(), currentBet, trader.getName(), Settings.auction.primaryColor, Settings.auction.secondaryColor); - Message.AUC_DURATION.broadcast(null, sdf.format(date), Settings.auction.primaryColor, Settings.auction.secondaryColor); - //if (Settings.auction.logging) Message.AUC_START.log(item.getCount(), item.getName(), item.getId(), item.getDamage(), currentBet, trader.getName(), "NOCOLOR"); + Date date = new Date(AucSettings.duration); + Message.AUC_START.broadcast(null, item.getCount(), item.getName(), item.getId(), item.getDamage(), currentBet, trader.getName(), AucSettings.primaryColor, AucSettings.secondaryColor); + Message.AUC_DURATION.broadcast(null, sdf.format(date), AucSettings.primaryColor, AucSettings.secondaryColor); - if (Settings.auction.startTax!=0) Message.AUC_TAX_TAKEN.print(trader, Settings.auction.startTax, Settings.auction.primaryColor, Settings.auction.secondaryColor); + if (AucSettings.startTax!=0) Message.AUC_TAX_TAKEN.print(trader, AucSettings.startTax, AucSettings.primaryColor, AucSettings.secondaryColor); } - public static void bet (Player player, double bet){ + static void bet (Player player, double bet){ if (isActive()) { if (player != trader) { if ((bet - currentBet) >= 1) { @@ -93,6 +94,10 @@ public static void bet (Player player, double bet){ } else Message.AUC_YOUR.print(player, 'c'); } else Message.AUC_NOT_RUNNING.print(player, 'c'); } + + public static boolean isSystemActive(){ + return AucSettings.active; + } } class StopAuction extends TimerTask { @@ -105,22 +110,21 @@ public void run() { if (Auction.currentWinner.getInventory().canAddItem(Auction.item)) { EconomyAPI.getInstance().reduceMoney(Auction.currentWinner, Auction.currentBet); Auction.currentWinner.getInventory().addItem(Auction.item); - double endTax = Math.round((Settings.auction.endTax/100)* Auction.currentBet); + double endTax = Math.round((AucSettings.endTax/100)* Auction.currentBet); double finalEarnings = Auction.currentBet - endTax; EconomyAPI.getInstance().addMoney(Auction.trader, finalEarnings); - Message.AUC_FINISHED_WINNER.broadcast(null, Auction.currentWinner.getName(), Settings.auction.primaryColor, Settings.auction.secondaryColor); - Auction.trader.sendTip(Message.AUC_FINISHED.getText('a')); - Auction.trader.sendPopup(Message.AUC_YOU_EARNED.getText(finalEarnings, 'a')); - // if (Settings.auction.logging) + Message.AUC_FINISHED_WINNER.broadcast(null, Auction.currentWinner.getName(), AucSettings.primaryColor, AucSettings.secondaryColor); + Auction.trader.sendTip(Message.AUC_FINISHED.getText(AucSettings.primaryColor)); + Auction.trader.sendPopup(Message.AUC_YOU_EARNED.getText(finalEarnings, AucSettings.primaryColor, AucSettings.secondaryColor)); } else { - Message.AUC_FINISHED_WINNER.broadcast(null, Auction.currentWinner.getName(), Settings.auction.primaryColor, Settings.auction.secondaryColor); + Message.AUC_FINISHED_WINNER.broadcast(null, Auction.currentWinner.getName(), AucSettings.primaryColor, AucSettings.secondaryColor); Message.AUC_WINNER_NO_SPACE.print(Auction.trader, 'c'); Message.AUC_YOU_WON_NO_SPACE.print(Auction.currentWinner, 'c'); - EconomyAPI.getInstance().addMoney(Auction.trader, Settings.auction.startTax); + EconomyAPI.getInstance().addMoney(Auction.trader, AucSettings.startTax); } } else { Auction.trader.getInventory().addItem(Auction.item); - Message.AUC_FINISHED_NOWINNER.broadcast(null, Settings.auction.primaryColor); + Message.AUC_FINISHED_NOWINNER.broadcast(null, AucSettings.primaryColor); Auction.trader.sendTip(Message.AUC_FINISHED.getText('c')); Auction.trader.sendPopup(Message.AUC_NOBODY.getText('c')); } @@ -134,8 +138,18 @@ public void run() { Date currentDate = new Date(); long currentTime = currentDate.getTime(); long timePast = currentTime- Auction.startTime; - long timeLeft = Settings.auction.duration - timePast; + long timeLeft = AucSettings.duration - timePast; Date timeLeftDate = new Date (timeLeft); - Message.AUC_NOTIFICATION.broadcast(null, Auction.item.getCount(), Auction.item.getName(), Auction.item.getId(), Auction.item.getDamage(), Auction.currentBet, Auction.sdf.format(timeLeftDate), Settings.auction.primaryColor, Settings.auction.secondaryColor); + Message.AUC_NOTIFICATION.broadcast(null, Auction.item.getCount(), Auction.item.getName(), Auction.item.getId(), Auction.item.getDamage(), Auction.currentBet, Auction.sdf.format(timeLeftDate), AucSettings.primaryColor, AucSettings.secondaryColor); } +} + +class AucSettings { + static boolean active = Main.getPlugin().getConfig().getBoolean("auction.active", true); + static int duration = Main.getPlugin().getConfig().getInt("auction.duration", 300000); + static int notifyPeriod = Main.getPlugin().getConfig().getInt("auction.notify-period", 60000); + static int startTax = Main.getPlugin().getConfig().getInt("auction.tax", 50); + static int endTax = Main.getPlugin().getConfig().getInt("auction.end-tax", 1); + static char primaryColor = Main.getPlugin().getConfig().getString("auction.primary-color", "a").charAt(0); + static char secondaryColor = Main.getPlugin().getConfig().getString("auction.secondary-color", "2").charAt(0); } \ No newline at end of file diff --git a/src/main/java/ua/leonidius/trading/buy/AddBuyItemCmd.java b/src/main/java/ua/leonidius/trading/buy/AddBuyItemCmd.java index 0b7cf9d..1caad90 100644 --- a/src/main/java/ua/leonidius/trading/buy/AddBuyItemCmd.java +++ b/src/main/java/ua/leonidius/trading/buy/AddBuyItemCmd.java @@ -9,7 +9,6 @@ import cn.nukkit.item.Item; import cn.nukkit.utils.Config; import ua.leonidius.trading.Main; -import ua.leonidius.trading.settings.Settings; import ua.leonidius.trading.utils.Message; import ua.leonidius.trading.utils.ItemName; diff --git a/src/main/java/ua/leonidius/trading/buy/Buy.java b/src/main/java/ua/leonidius/trading/buy/Buy.java index 2ee6d08..42f26ef 100644 --- a/src/main/java/ua/leonidius/trading/buy/Buy.java +++ b/src/main/java/ua/leonidius/trading/buy/Buy.java @@ -20,7 +20,7 @@ public class Buy { static char color2 = Main.getPlugin().getConfig().getString("buy.secondary-color", "2").charAt(0); static char errorColor = 'c'; - protected static void buy (Player player, Item item){ + static void buy (Player player, Item item){ int amount = item.getCount(); if (!canBuy(item)){ diff --git a/src/main/java/ua/leonidius/trading/buy/BuyCmd.java b/src/main/java/ua/leonidius/trading/buy/BuyCmd.java index 26206b8..ef9102f 100644 --- a/src/main/java/ua/leonidius/trading/buy/BuyCmd.java +++ b/src/main/java/ua/leonidius/trading/buy/BuyCmd.java @@ -6,13 +6,8 @@ import cn.nukkit.command.CommandSender; import cn.nukkit.command.PluginCommand; import cn.nukkit.command.data.CommandParameter; -import cn.nukkit.inventory.PlayerInventory; import cn.nukkit.item.Item; -import me.onebone.economyapi.EconomyAPI; import ua.leonidius.trading.Main; -import ua.leonidius.trading.settings.Settings; -import ua.leonidius.trading.utils.ItemName; -import ua.leonidius.trading.utils.MaxStackSize; import ua.leonidius.trading.utils.Message; /** diff --git a/src/main/java/ua/leonidius/trading/buy/DelBuyItemCmd.java b/src/main/java/ua/leonidius/trading/buy/DelBuyItemCmd.java index cdb6496..5727e42 100644 --- a/src/main/java/ua/leonidius/trading/buy/DelBuyItemCmd.java +++ b/src/main/java/ua/leonidius/trading/buy/DelBuyItemCmd.java @@ -9,7 +9,6 @@ import cn.nukkit.item.Item; import cn.nukkit.utils.Config; import ua.leonidius.trading.Main; -import ua.leonidius.trading.settings.Settings; import ua.leonidius.trading.utils.Message; import ua.leonidius.trading.utils.ItemName; @@ -51,11 +50,11 @@ public boolean onCommand (CommandSender sender, Command command, String label, S config.save(); config.reload(); Message.LIST_BUY_DELETED.print(sender, name, id, meta, Buy.color1, Buy.color2); - if (Settings.general.editLogging) { + if (Buy.editLogging) { Message.LIST_BUY_DELETED_LOG.log(sender.getName(), name, id, meta, "NOCOLOR"); } Message.LIST_BUY_DELETED_LOG.broadcast("trading.editshoplist", '7','7', sender.getName(), name, id, meta); - } else Message.LIST_DOESNOT_EXIST.print(sender, 'c'); + } else Message.LIST_DOESNOT_EXIST.print(sender, Buy.errorColor); return true; } } diff --git a/src/main/java/ua/leonidius/trading/help/BuyListCmd.java b/src/main/java/ua/leonidius/trading/help/BuyListCmd.java index 12e8a81..13fa1d0 100644 --- a/src/main/java/ua/leonidius/trading/help/BuyListCmd.java +++ b/src/main/java/ua/leonidius/trading/help/BuyListCmd.java @@ -7,7 +7,6 @@ import cn.nukkit.utils.Config; import cn.nukkit.utils.TextFormat; import ua.leonidius.trading.Main; -import ua.leonidius.trading.settings.Settings; import ua.leonidius.trading.utils.Message; import ua.leonidius.trading.utils.ItemName; @@ -54,12 +53,10 @@ public boolean onCommand(CommandSender sender, Command command, String label, St String name = ItemName.get(id, meta); String price = cfg.getString(key); output = output+" "+TextFormat.YELLOW+name+TextFormat.WHITE+" ("+id+":"+meta+")"+" - "+TextFormat.GREEN+price+TextFormat.WHITE+","; - } catch (NumberFormatException e) { - continue; - } + } catch (NumberFormatException e) {} } } - output = output +" "+Message.LIST_PRICES_IN.getCleanText(Settings.general.currency); + output = output +" "+Message.LIST_PRICES_IN.getCleanText(Main.currency); sender.sendMessage(output); } else { Message.LIST_NOTHING.print(sender, "NOCOLOR"); diff --git a/src/main/java/ua/leonidius/trading/help/HelpCmd.java b/src/main/java/ua/leonidius/trading/help/HelpCmd.java index ed66d97..c899765 100644 --- a/src/main/java/ua/leonidius/trading/help/HelpCmd.java +++ b/src/main/java/ua/leonidius/trading/help/HelpCmd.java @@ -6,6 +6,7 @@ import cn.nukkit.command.PluginCommand; import cn.nukkit.utils.TextFormat; import ua.leonidius.trading.Main; +import ua.leonidius.trading.auction.Auction; import ua.leonidius.trading.auction.BetCmd; import ua.leonidius.trading.auction.StartAuctionCmd; import ua.leonidius.trading.buy.AddBuyItemCmd; @@ -14,8 +15,8 @@ import ua.leonidius.trading.buy.DelBuyItemCmd; import ua.leonidius.trading.sell.AddSellItemCmd; import ua.leonidius.trading.sell.DelSellItemCmd; +import ua.leonidius.trading.sell.Sell; import ua.leonidius.trading.sell.SellCmd; -import ua.leonidius.trading.settings.Settings; import ua.leonidius.trading.utils.Message; /** @@ -40,13 +41,13 @@ public boolean onCommand(CommandSender sender, Command command, String label, St PluginCommand blist = new BuyListCmd(); sender.sendMessage(TextFormat.AQUA + blist.getUsage() + TextFormat.WHITE + " - " + blist.getDescription()); } - if (Settings.sell.active){ + if (Sell.active){ PluginCommand sell = new SellCmd(); sender.sendMessage(TextFormat.AQUA+sell.getUsage()+TextFormat.WHITE+" - "+sell.getDescription()); PluginCommand slist = new SellListCmd(); sender.sendMessage(TextFormat.AQUA+slist.getUsage()+TextFormat.WHITE+" - "+slist.getDescription()); } - if (Settings.auction.active) { + if (Auction.isSystemActive()) { PluginCommand auc = new StartAuctionCmd(); sender.sendMessage(TextFormat.AQUA + auc.getUsage() + TextFormat.WHITE + " - " + auc.getDescription()); PluginCommand bet = new BetCmd(); @@ -59,14 +60,14 @@ public boolean onCommand(CommandSender sender, Command command, String label, St PluginCommand dbi = new DelBuyItemCmd(); sender.sendMessage(TextFormat.AQUA+dbi.getUsage()+TextFormat.WHITE+" - "+dbi.getDescription()); } - if (Settings.sell.active) { + if (Sell.active) { PluginCommand asi = new AddSellItemCmd(); sender.sendMessage(TextFormat.AQUA + asi.getUsage() + TextFormat.WHITE + " - " + asi.getDescription()); PluginCommand dsi = new DelSellItemCmd(); sender.sendMessage(TextFormat.AQUA + dsi.getUsage() + TextFormat.WHITE + " - " + dsi.getDescription()); } } - if (Buy.active || Settings.sell.active || Settings.auction.active) { + if (Buy.active || Sell.active || Auction.isSystemActive()) { PluginCommand id = new IdCmd(); sender.sendMessage(TextFormat.AQUA + id.getUsage() + TextFormat.WHITE + " - " + id.getDescription()); } diff --git a/src/main/java/ua/leonidius/trading/sell/AddSellItemCmd.java b/src/main/java/ua/leonidius/trading/sell/AddSellItemCmd.java index 5f79beb..81bb480 100644 --- a/src/main/java/ua/leonidius/trading/sell/AddSellItemCmd.java +++ b/src/main/java/ua/leonidius/trading/sell/AddSellItemCmd.java @@ -9,7 +9,6 @@ import cn.nukkit.item.Item; import cn.nukkit.utils.Config; import ua.leonidius.trading.Main; -import ua.leonidius.trading.settings.Settings; import ua.leonidius.trading.utils.Message; import ua.leonidius.trading.utils.ItemName; @@ -50,14 +49,14 @@ public boolean onCommand(CommandSender sender, Command command, String label, St Config config = Main.sellcfg; String key = "s-" + id + "-" + meta; if (config.exists(key)) { - Message.LIST_EXISTS.print(sender, 'c'); + Message.LIST_EXISTS.print(sender, Sell.errorColor); return true; } config.set(key, price); config.save(); config.reload(); - Message.LIST_SELL_ADDED.print(sender, name, id, meta, price, Settings.sell.primaryColor, Settings.sell.secondaryColor); - if (Settings.general.editLogging) { + Message.LIST_SELL_ADDED.print(sender, name, id, meta, price, Sell.color1, Sell.color2); + if (Sell.editLogging) { Message.LIST_SELL_ADDED_LOG.log(sender.getName(), name, id, meta, price, "NOCOLOR"); } Message.LIST_SELL_ADDED_LOG.broadcast("trading.editshoplist", '7', '7', sender.getName(), name, id, meta, price); diff --git a/src/main/java/ua/leonidius/trading/sell/DelSellItemCmd.java b/src/main/java/ua/leonidius/trading/sell/DelSellItemCmd.java index 475b29b..8751ead 100644 --- a/src/main/java/ua/leonidius/trading/sell/DelSellItemCmd.java +++ b/src/main/java/ua/leonidius/trading/sell/DelSellItemCmd.java @@ -9,7 +9,6 @@ import cn.nukkit.item.Item; import cn.nukkit.utils.Config; import ua.leonidius.trading.Main; -import ua.leonidius.trading.settings.Settings; import ua.leonidius.trading.utils.Message; import ua.leonidius.trading.utils.ItemName; @@ -50,12 +49,12 @@ public boolean onCommand (CommandSender sender, Command command, String label, S config.remove(key); config.save(); config.reload(); - Message.LIST_SELL_DELETED.print(sender, name, id, meta, Settings.sell.primaryColor, Settings.sell.secondaryColor); - if (Settings.general.editLogging) { + Message.LIST_SELL_DELETED.print(sender, name, id, meta, Sell.color1, Sell.color2); + if (Sell.editLogging) { Message.LIST_SELL_DELETED_LOG.log(sender.getName(), name, id, meta, "NOCOLOR"); } Message.LIST_SELL_DELETED_LOG.broadcast("trading.editshoplist", '7','7', sender.getName(), name, id, meta); - } else Message.LIST_DOESNOT_EXIST.print(sender, 'c'); + } else Message.LIST_DOESNOT_EXIST.print(sender, Sell.errorColor); return true; } } diff --git a/src/main/java/ua/leonidius/trading/sell/Sell.java b/src/main/java/ua/leonidius/trading/sell/Sell.java new file mode 100644 index 0000000..d7d9ca5 --- /dev/null +++ b/src/main/java/ua/leonidius/trading/sell/Sell.java @@ -0,0 +1,104 @@ +package ua.leonidius.trading.sell; + +import cn.nukkit.Player; +import cn.nukkit.inventory.PlayerInventory; +import cn.nukkit.item.Item; +import me.onebone.economyapi.EconomyAPI; +import ua.leonidius.trading.Main; +import ua.leonidius.trading.utils.ItemName; +import ua.leonidius.trading.utils.Message; + +/** + * Created by Leonidius20 on 22.12.17. + */ +public class Sell { + + public static boolean active = Main.getPlugin().getConfig().getBoolean("sell.active", true); + private static boolean countMaxAmount = Main.getPlugin().getConfig().getBoolean("sell.count-max-amount", true); + static boolean editLogging = Main.getPlugin().getConfig().getBoolean("general.shopedit-logging", true); + static char color1 = Main.getPlugin().getConfig().getString("sell.primary-color", "a").charAt(0); + static char color2 = Main.getPlugin().getConfig().getString("sell.secondary-color", "2").charAt(0); + static char errorColor = 'c'; + + static void sellFromHand (Player player, Item item, int slot){ + int id = item.getId(); + int meta = item.getDamage(); + String key = "s-"+id+"-"+meta; + + if (id == 0){ + Message.ID_EMPTY.print(player, errorColor); + return; + } + + if (!Main.sellcfg.exists(key)) { + Message.SELL_NOT_SELLING.print(player, errorColor); + return; + } + + int amount = item.getCount(); + String name = ItemName.get(item); + double price = Main.sellcfg.getDouble(key); + double cost = price*amount; + player.getInventory().clear(slot); + EconomyAPI.getInstance().addMoney(player, cost); + Message.SELL_YOU_SOLD.print(player, amount, name, id, meta, cost, Main.currency); + + + } + + static void sellItem(Player player, Item item) { + int id = item.getId(); + int meta = item.getDamage(); + int amount = item.getCount(); + String key = "s-" + String.valueOf(id) + "-" + meta; + + if (!Main.sellcfg.exists(key)) { + Message.SELL_NOT_SELLING.print(player, 'c'); + return; + } + + if (amount < 1) { + Message.SELL_LESS_THAN_ONE.print(player, 'c'); + return; + } + + if (amount > 2304){ + amount = 2304; + } + + if (!player.getInventory().contains(item)) { + if (countMaxAmount) { + amount = getItemCount(player, item); + if (amount == 0) { + Message.SELL_NO_ITEM.print(player, errorColor); + return; + } + Message.SELL_NO_ITEM_MAX.print(player, amount, color1, color2); + } else { + Message.SELL_NO_ITEM.print(player, errorColor); + return; + } + } + + double price = Main.sellcfg.getDouble(key); + double cost = price*amount; + String name = ItemName.get(item); + player.getInventory().removeItem(item); + EconomyAPI.getInstance().addMoney(player, cost); + + Message.SELL_YOU_SOLD.print(player, amount, name, id, meta, cost, Main.currency, color1, color2); + } + + private static int getItemCount(Player player, Item item){ + int amount = 0; + PlayerInventory inventory = player.getInventory(); + for (int i=0; i < 36; i++){ + Item itemInSlot = inventory.getItem(i); + if (itemInSlot.getId() == item.getId() && itemInSlot.getDamage() == item.getDamage()){ + amount = amount + itemInSlot.getCount(); + } + } + return amount; + } + +} diff --git a/src/main/java/ua/leonidius/trading/sell/SellCmd.java b/src/main/java/ua/leonidius/trading/sell/SellCmd.java index df2c0da..406da21 100644 --- a/src/main/java/ua/leonidius/trading/sell/SellCmd.java +++ b/src/main/java/ua/leonidius/trading/sell/SellCmd.java @@ -6,13 +6,9 @@ import cn.nukkit.command.CommandSender; import cn.nukkit.command.PluginCommand; import cn.nukkit.command.data.CommandParameter; -import cn.nukkit.inventory.PlayerInventory; import cn.nukkit.item.Item; -import me.onebone.economyapi.EconomyAPI; import ua.leonidius.trading.Main; -import ua.leonidius.trading.settings.Settings; import ua.leonidius.trading.utils.Message; -import ua.leonidius.trading.utils.ItemName; /** * Created by lion on 05.03.17. @@ -51,7 +47,7 @@ public boolean onCommand (CommandSender sender, Command command, String label, S if (args.length > 2){return false;} if(args.length == 0){ - sellFromHand(player, player.getInventory().getItemInHand(), player.getInventory().getHeldItemSlot()); + Sell.sellFromHand(player, player.getInventory().getItemInHand(), player.getInventory().getHeldItemSlot()); return true; } @@ -60,83 +56,8 @@ public boolean onCommand (CommandSender sender, Command command, String label, S if (args.length == 1) amount = 1; else try {amount = Integer.parseInt(args[1]);} catch (Exception e) {return false;} item.setCount(amount); - sellItem(player, item); + Sell.sellItem(player, item); return true; } - private static void sellFromHand (Player player, Item item, int slot){ - int id = item.getId(); - int meta = item.getDamage(); - int amount = item.getCount(); - String name = ItemName.get(item); - String key = "s-"+id+"-"+meta; - if (id == 0){ - Message.ID_EMPTY.print(player, 'c'); - return; - } - if (Main.sellcfg.exists(key)){ - double price = Main.sellcfg.getDouble(key); - double cost = price*amount; - player.getInventory().clear(slot); - EconomyAPI.getInstance().addMoney(player, cost); - Message.SELL_YOU_SOLD.print(player, amount, name, id, meta, cost, Settings.general.currency); - if (Settings.general.tradingLogging) { - Message.SOLD_LOG.log(player.getName(), amount, name, id, meta, cost, Settings.general.currency, "NOCOLOR"); - } - } else { - Message.SELL_NOT_SELLING.print(player, 'c'); - } - } - - private static void sellItem(Player player, Item item) { - int id = item.getId(); - int meta = item.getDamage(); - int amount = item.getCount(); - String key = "s-" + String.valueOf(id) + "-" + meta; - if (!Main.sellcfg.exists(key)) { - Message.SELL_NOT_SELLING.print(player, 'c'); - return; - } - if (amount < 1) { - Message.SELL_LESS_THAN_ONE.print(player, 'c'); - return; - } - if (amount > 2304){ - amount = 2304; - } - if (!player.getInventory().contains(item)) { - if (Settings.general.countMaxAmount) { - amount = getItemCount(player, item); - if (amount == 0) { - Message.SELL_NO_ITEM.print(player, 'c'); - return; - } - Message.SELL_NO_ITEM_MAX.print(player, amount, Settings.sell.primaryColor, Settings.sell.secondaryColor); - } else { - Message.SELL_NO_ITEM.print(player, 'c'); - return; - } - } - double price = Main.sellcfg.getDouble(key); - double cost = price*amount; - String name = ItemName.get(item); - player.getInventory().removeItem(item); - EconomyAPI.getInstance().addMoney(player, cost); - Message.SELL_YOU_SOLD.print(player, amount, name, id, meta, cost,Settings.general.currency, Settings.sell.primaryColor, Settings.sell.secondaryColor); - if (Settings.general.tradingLogging) { - Message.SOLD_LOG.log(player.getName(), amount, name, id, meta, cost, Settings.general.currency, "NOCOLOR"); - } - } - - public static int getItemCount(Player player, Item item){ - int amount = 0; - PlayerInventory inventory = player.getInventory(); - for (int i=0; i < 36; i++){ - Item itemInSlot = inventory.getItem(i); - if (itemInSlot.getId() == item.getId() && itemInSlot.getDamage() == item.getDamage()){ - amount = amount + itemInSlot.getCount(); - } - } - return amount; - } } diff --git a/src/main/java/ua/leonidius/trading/settings/AucSettings.java b/src/main/java/ua/leonidius/trading/settings/AucSettings.java deleted file mode 100644 index 05354b7..0000000 --- a/src/main/java/ua/leonidius/trading/settings/AucSettings.java +++ /dev/null @@ -1,15 +0,0 @@ -package ua.leonidius.trading.settings; - -/** - * Created by Leonidius20 on 21.09.17. - */ -public class AucSettings { - public boolean active; - public int duration; - public int notifyPeriod; - public int startTax; - public int endTax; - public char primaryColor; - public char secondaryColor; - public boolean logging; -} diff --git a/src/main/java/ua/leonidius/trading/settings/GeneralSettings.java b/src/main/java/ua/leonidius/trading/settings/GeneralSettings.java deleted file mode 100644 index e5eb20e..0000000 --- a/src/main/java/ua/leonidius/trading/settings/GeneralSettings.java +++ /dev/null @@ -1,11 +0,0 @@ -package ua.leonidius.trading.settings; - -/** - * Created by Leonidius20 on 21.09.17. - */ -public class GeneralSettings { - public boolean editLogging; - public boolean tradingLogging; - public boolean countMaxAmount; - public String currency; -} diff --git a/src/main/java/ua/leonidius/trading/settings/SellSettings.java b/src/main/java/ua/leonidius/trading/settings/SellSettings.java deleted file mode 100644 index a171d4e..0000000 --- a/src/main/java/ua/leonidius/trading/settings/SellSettings.java +++ /dev/null @@ -1,10 +0,0 @@ -package ua.leonidius.trading.settings; - -/** - * Created by Leonidius20 on 21.09.17. - */ -public class SellSettings { - public boolean active; - public char primaryColor; - public char secondaryColor; -} diff --git a/src/main/java/ua/leonidius/trading/settings/Settings.java b/src/main/java/ua/leonidius/trading/settings/Settings.java deleted file mode 100644 index d757d45..0000000 --- a/src/main/java/ua/leonidius/trading/settings/Settings.java +++ /dev/null @@ -1,48 +0,0 @@ -package ua.leonidius.trading.settings; - -import cn.nukkit.utils.Config; -import me.onebone.economyapi.EconomyAPI; -import ua.leonidius.trading.Main; - -/** - * Created by Leonidius20 on 21.09.17. - */ -public class Settings { - - public static AucSettings auction; - //public static BuySettings buy; - public static SellSettings sell; - public static GeneralSettings general; - - public static void init (){ - Config cfg = Main.getPlugin().getConfig(); - - auction = new AucSettings(); - auction.active = cfg.getBoolean("auction.active", true); - auction.duration = cfg.getInt("auction.duration", 300000); - auction.notifyPeriod = cfg.getInt("auction.notify-period", 60000); - auction.startTax = cfg.getInt("auction.tax", 50); - auction.endTax = cfg.getInt("auction.end-tax", 1); - auction.primaryColor = cfg.getString("auction.primary-color", "a").charAt(0); - auction.secondaryColor = cfg.getString("auction.secondary-color", "2").charAt(0); - auction.logging = cfg.getBoolean("auction.logging", false); - - //buy = new BuySettings(); - //buy.active = cfg.getBoolean("buy.active", true); - //buy.primaryColor = cfg.getString("buy.primary-color", "a").charAt(0); - //buy.secondaryColor = cfg.getString("buy.secondary-color", "2").charAt(0); - - sell = new SellSettings(); - sell.active = cfg.getBoolean("sell.active", true); - sell.primaryColor = cfg.getString("sell.primary-color", "a").charAt(0); - sell.secondaryColor = cfg.getString("sell.secondary-color", "2").charAt(0); - - general = new GeneralSettings(); - general.editLogging = cfg.getBoolean("general.shopedit-logging", true); - general.tradingLogging = cfg.getBoolean("general.transaction-logging", false); - general.countMaxAmount = cfg.getBoolean("general.maxitem-count", true); - general.currency = EconomyAPI.getInstance().getMonetaryUnit(); - } - -} - diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 76502cf..2662d59 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,12 +3,20 @@ buy: active: true #If there is not enough money or space in inventory, buy max possible amount (true) or cancel buying (false) count-max-amount: true + #Primary color of messages + primary-color: a + #Secondary color of messages + secondary-color: 2 sell: #Turn on/off selling system (sell, addsellitem, delsellitem commands) active: true #If there is not enough items, sell max possible amount (true) or cancel selling (false) count-max-amount: true + #Primary color of messages + primary-color: a + #Secondary color of messages + secondary-color: 2 auction: #Turn on/off auction system (auc, bet commands) @@ -21,16 +29,16 @@ auction: tax: 50 #End tax in percents (tax is taken from the final bid) end-tax: 1 - #Write about starting and finishing auctions to log - logging: false + #Primary color of messages + primary-color: a + #Secondary color of messages + secondary-color: 2 general: #Plugin language. Default - use server language, eng and rus are supported. You can use your own lang file language: default - #Saving info about transactions in log - transaction-logging: false #Saving info about editing item lists in log shopedit-logging: true #Do not touch this debug-mode: false - save-translation: true + save-translation: true \ No newline at end of file