diff --git a/README.md b/README.md index e19330d..9e9311f 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ permission: runsafe.traders.delete Run this command and right click a shop button, it will delete it **without** removing tag data. -/traders createshop +/traders createshop permission: runsafe.traders.create diff --git a/src/no/runsafe/ItemControl/ItemControl.java b/src/no/runsafe/ItemControl/ItemControl.java index ffba3bf..ac74f10 100644 --- a/src/no/runsafe/ItemControl/ItemControl.java +++ b/src/no/runsafe/ItemControl/ItemControl.java @@ -59,6 +59,7 @@ protected void pluginSetup() tag.addSubCommand(getInstance(List.class)); tag.addSubCommand(getInstance(Assign.class)); tag.addSubCommand(getInstance(Remove.class)); + tag.addSubCommand(getInstance(ResetScore.class)); traderCommand.addSubCommand(tag); plugin = this; diff --git a/src/no/runsafe/ItemControl/trading/PurchaseData.java b/src/no/runsafe/ItemControl/trading/PurchaseData.java index 842a77a..9149280 100644 --- a/src/no/runsafe/ItemControl/trading/PurchaseData.java +++ b/src/no/runsafe/ItemControl/trading/PurchaseData.java @@ -5,13 +5,15 @@ public class PurchaseData { public PurchaseData(@Nullable String tag, - boolean compareName, boolean compareDurability, boolean compareLore, boolean compareEnchants) + boolean compareName, boolean compareDurability, boolean compareLore, boolean compareEnchants, boolean shouldPrintTagID + ) { this.tag = tag; this.compareName = compareName; this.compareDurability = compareDurability; this.compareLore = compareLore; this.compareEnchants = compareEnchants; + this.shouldPrintTagID = shouldPrintTagID; } public String getTag() @@ -39,9 +41,15 @@ public boolean shouldCompareEnchants() return compareEnchants; } + public boolean shouldPrintTagID() + { + return shouldPrintTagID; + } + private final String tag; private final boolean compareName; private final boolean compareDurability; private final boolean compareLore; private final boolean compareEnchants; + private final boolean shouldPrintTagID; } diff --git a/src/no/runsafe/ItemControl/trading/TraderData.java b/src/no/runsafe/ItemControl/trading/TraderData.java index 70ded0b..c537d7d 100644 --- a/src/no/runsafe/ItemControl/trading/TraderData.java +++ b/src/no/runsafe/ItemControl/trading/TraderData.java @@ -9,7 +9,7 @@ public class TraderData { public TraderData(ILocation location, RunsafeInventory inventory, @Nullable String tag, - boolean compareName, boolean compareDurability, boolean compareLore, boolean compareEnchants + boolean compareName, boolean compareDurability, boolean compareLore, boolean compareEnchants, boolean shouldPrintTagID ) { this.location = location; @@ -19,6 +19,7 @@ public TraderData(ILocation location, RunsafeInventory inventory, @Nullable Stri this.compareDurability = compareDurability; this.compareLore = compareLore; this.compareEnchants = compareEnchants; + this.shouldPrintTagID = shouldPrintTagID; refresh(); } @@ -92,6 +93,16 @@ public void setCompareEnchants(boolean value) compareEnchants = value; } + public boolean shouldPrintTagID() + { + return shouldPrintTagID; + } + + public void setShouldPrintTagID(boolean value) + { + shouldPrintTagID = value; + } + public void refresh() { purchaseValidator = new PurchaseValidator(compareName, compareDurability, compareLore, compareEnchants); @@ -123,6 +134,7 @@ public PurchaseValidator getPurchaseValidator() private boolean compareDurability; private boolean compareLore; private boolean compareEnchants; + private boolean shouldPrintTagID; private final ILocation location; private final RunsafeInventory inventory; private boolean isSaved = true; diff --git a/src/no/runsafe/ItemControl/trading/TradingHandler.java b/src/no/runsafe/ItemControl/trading/TradingHandler.java index 3b7e627..28b3352 100644 --- a/src/no/runsafe/ItemControl/trading/TradingHandler.java +++ b/src/no/runsafe/ItemControl/trading/TradingHandler.java @@ -109,6 +109,11 @@ public void deleteTag(String tag) playerTransactionRepository.deleteTagRecords(tag); } + public void deleteTagPlayerScore(String tag) + { + playerTransactionRepository.deleteTagRecords(tag); + } + public List getAllTags() { return tagRepository.getTags(); @@ -153,6 +158,7 @@ public boolean OnPlayerRightClick(IPlayer player, RunsafeMeta usingItem, IBlock targetedTrader.setCompareDurability(purchaseData.shouldCompareDurability()); targetedTrader.setCompareLore(purchaseData.shouldCompareLore()); targetedTrader.setCompareEnchants(purchaseData.shouldCompareEnchants()); + targetedTrader.setShouldPrintTagID(purchaseData.shouldPrintTagID()); editShop(player, targetedTrader); targetBlockLoc.playSound(Sound.Redstone.ComparatorClick, 2F, 0F); return false; @@ -162,8 +168,12 @@ public boolean OnPlayerRightClick(IPlayer player, RunsafeMeta usingItem, IBlock if (shopTag != null) { updateSigns(shopTag); - if (!targetedTrader.getPurchaseValidator().purchase(player, shopTag, tagRepository)) - return false; + if (targetedTrader.shouldPrintTagID()) + if (!targetedTrader.getPurchaseValidator().purchase(player, shopTag, tagRepository)) + return false; + else + if (!targetedTrader.getPurchaseValidator().purchase(player, null, null)) + return false; playerTransactionRepository.recordPurchase(player, shopTag); return true; @@ -179,7 +189,8 @@ public boolean OnPlayerRightClick(IPlayer player, RunsafeMeta usingItem, IBlock RunsafeInventory inventory = server.createInventory(null, 27); TraderData newData = new TraderData(targetBlockLoc, inventory, purchaseData.getTag(), purchaseData.shouldCompareName(), purchaseData.shouldCompareDurability(), - purchaseData.shouldCompareLore(), purchaseData.shouldCompareEnchants() + purchaseData.shouldCompareLore(), purchaseData.shouldCompareEnchants(), + purchaseData.shouldPrintTagID() ); tradingRepository.persistTrader(newData); @@ -259,8 +270,9 @@ private boolean handleTraderDebugging(IPlayer player, ILocation location) player.sendColouredMessage("&9Compare Durability: &r" + (shop.shouldCompareDurability() ? "True" : "False")); player.sendColouredMessage("&9Compare Lore: &r" + (shop.shouldCompareLore() ? "True" : "False")); player.sendColouredMessage("&9Compare Enchants: &r" + (shop.shouldCompareEnchants() ? "True" : "False")); + player.sendColouredMessage("&9Prints tag ID number: &r" + (shop.shouldPrintTagID() ? "True" : "False")); if (shop.getTag() != null) - player.sendColouredMessage("&9 Using the shop tag: &r" + shop.getTag()); + player.sendColouredMessage("&9Using the shop tag: &r" + shop.getTag()); return true; diff --git a/src/no/runsafe/ItemControl/trading/TradingRepository.java b/src/no/runsafe/ItemControl/trading/TradingRepository.java index e8031d2..ac52ca1 100644 --- a/src/no/runsafe/ItemControl/trading/TradingRepository.java +++ b/src/no/runsafe/ItemControl/trading/TradingRepository.java @@ -22,7 +22,7 @@ public List getTraders() List data = new ArrayList<>(0); for (IRow row : database.query( "SELECT `inventory`,`tagName`,`compareName`,`compareDurability`," + - "`compareLore`,`compareEnchants`,`world`, `x`, `y`, `z` FROM `traders`" + "`compareLore`,`compareEnchants`,`shouldPrintTagID`,`world`, `x`, `y`, `z` FROM `traders`" )) { RunsafeInventory inventory = server.createInventory(null, 27); @@ -31,9 +31,11 @@ public List getTraders() int compareDurability = row.Integer("compareDurability"); int compareLore = row.Integer("compareLore"); int compareEnchants = row.Integer("compareEnchants"); + int shouldPrintTagID = row.Integer("shouldPrintTagID"); data.add(new TraderData(row.Location(), inventory, row.String("tagName"), - (compareName != 0), (compareDurability != 0), (compareLore != 0), (compareEnchants != 0) + (compareName != 0), (compareDurability != 0), (compareLore != 0), (compareEnchants != 0), + (shouldPrintTagID != 0) )); } @@ -45,13 +47,14 @@ public void persistTrader(TraderData data) ILocation location = data.getLocation(); database.execute( "INSERT INTO `traders` (`inventory`, `tagName`, `compareName`, `compareDurability`, " + - "`compareLore`, `compareEnchants`, `world`, `x`, `y`, `z`) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "`compareLore`, `compareEnchants`, `shouldPrintTagID`, `world`, `x`, `y`, `z`) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", data.getInventory().serialize(), data.getTag(), data.shouldCompareName() ? 1 : 0, data.shouldCompareDurability() ? 1 : 0, data.shouldCompareLore() ? 1 : 0, data.shouldCompareEnchants() ? 1 : 0, + data.shouldPrintTagID() ? 1 : 0, location.getWorld().getName(), location.getX(), location.getY(), @@ -64,13 +67,14 @@ public void updateTrader(TraderData data) ILocation location = data.getLocation(); database.execute( "UPDATE `traders` SET `inventory` = ?, `tagName` = ?, `compareName` = ?, `compareDurability` = ?," + - "`compareLore` = ?,`compareEnchants` = ? WHERE `world` = ? AND `x` = ? AND `y` = ? AND `z` = ?", + "`compareLore` = ?,`compareEnchants` = ?, `shouldPrintTagID` = ?, WHERE `world` = ? AND `x` = ? AND `y` = ? AND `z` = ?", data.getInventory().serialize(), data.getTag(), data.shouldCompareName() ? 1 : 0, data.shouldCompareDurability() ? 1 : 0, data.shouldCompareLore() ? 1 : 0, data.shouldCompareEnchants() ? 1 : 0, + data.shouldPrintTagID() ? 1 : 0, location.getWorld().getName(), (double) location.getBlockX(), (double) location.getBlockY(), @@ -154,6 +158,8 @@ public ISchemaUpdate getSchemaUpdateQueries() "ADD COLUMN `compareEnchants` TINYINT(2) NOT NULL DEFAULT 1 AFTER `compareLore`;" ); + updates.addQueries("ALTER TABLE `traders` ADD COLUMN `shouldPrintTagID` TINYINT(2) NOT NULL DEFAULT 1 AFTER `compareEnchants`"); + return updates; } diff --git a/src/no/runsafe/ItemControl/trading/commands/CreateShop.java b/src/no/runsafe/ItemControl/trading/commands/CreateShop.java index ed99aab..1564132 100644 --- a/src/no/runsafe/ItemControl/trading/commands/CreateShop.java +++ b/src/no/runsafe/ItemControl/trading/commands/CreateShop.java @@ -19,7 +19,8 @@ public CreateShop(TradingHandler handler) new BooleanArgument(COMPARE_NAME).withDefault(true), new BooleanArgument(COMPARE_DURABILITY).withDefault(true), new BooleanArgument(COMPARE_LORE).withDefault(true), - new BooleanArgument(COMPARE_ENCHANTS).withDefault(true) + new BooleanArgument(COMPARE_ENCHANTS).withDefault(true), + new BooleanArgument(PRINT_TAG_ID).withDefault(true) ); this.handler = handler; } @@ -27,13 +28,15 @@ public CreateShop(TradingHandler handler) private static final String COMPARE_DURABILITY = "compareDurability"; private static final String COMPARE_LORE = "compareLore"; private static final String COMPARE_ENCHANTS = "compareEnchants"; + private static final String PRINT_TAG_ID = "printTagID"; @Override public String OnExecute(IPlayer executor, IArgumentList parameters) { handler.getCreatingPlayers().put(executor, new PurchaseData(null, parameters.getRequired(COMPARE_NAME), parameters.getRequired(COMPARE_DURABILITY), - parameters.getRequired(COMPARE_LORE), parameters.getRequired(COMPARE_ENCHANTS) + parameters.getRequired(COMPARE_LORE), parameters.getRequired(COMPARE_ENCHANTS), + parameters.getRequired(PRINT_TAG_ID) )); return Globals.getCommandsShopCreateMessage(); diff --git a/src/no/runsafe/ItemControl/trading/commands/CreateTagShop.java b/src/no/runsafe/ItemControl/trading/commands/CreateTagShop.java index 6a5be26..8f0ce0d 100644 --- a/src/no/runsafe/ItemControl/trading/commands/CreateTagShop.java +++ b/src/no/runsafe/ItemControl/trading/commands/CreateTagShop.java @@ -21,7 +21,8 @@ public CreateTagShop(TradingHandler handler) new BooleanArgument(COMPARE_NAME).withDefault(true), new BooleanArgument(COMPARE_DURABILITY).withDefault(true), new BooleanArgument(COMPARE_LORE).withDefault(true), - new BooleanArgument(COMPARE_ENCHANTS).withDefault(true) + new BooleanArgument(COMPARE_ENCHANTS).withDefault(true), + new BooleanArgument(PRINT_TAG_ID).withDefault(true) ); this.handler = handler; } @@ -31,6 +32,7 @@ public CreateTagShop(TradingHandler handler) private static final String COMPARE_DURABILITY = "compareDurability"; private static final String COMPARE_LORE = "compareLore"; private static final String COMPARE_ENCHANTS = "compareEnchants"; + private static final String PRINT_TAG_ID = "printTagID"; @Override public String OnExecute(IPlayer executor, IArgumentList parameters) @@ -41,7 +43,8 @@ public String OnExecute(IPlayer executor, IArgumentList parameters) handler.getCreatingPlayers().put(executor, new PurchaseData(tag, parameters.getRequired(COMPARE_NAME), parameters.getRequired(COMPARE_DURABILITY), - parameters.getRequired(COMPARE_LORE), parameters.getRequired(COMPARE_ENCHANTS) + parameters.getRequired(COMPARE_LORE), parameters.getRequired(COMPARE_ENCHANTS), + parameters.getRequired(PRINT_TAG_ID) )); if (tag == null) diff --git a/src/no/runsafe/ItemControl/trading/commands/Tag/ResetScore.java b/src/no/runsafe/ItemControl/trading/commands/Tag/ResetScore.java new file mode 100644 index 0000000..bb0eb97 --- /dev/null +++ b/src/no/runsafe/ItemControl/trading/commands/Tag/ResetScore.java @@ -0,0 +1,36 @@ +package no.runsafe.ItemControl.trading.commands.Tag; + +import no.runsafe.ItemControl.trading.TradingHandler; +import no.runsafe.framework.api.command.ExecutableCommand; +import no.runsafe.framework.api.command.ICommandExecutor; +import no.runsafe.framework.api.command.argument.IArgumentList; +import no.runsafe.framework.api.command.argument.RequiredArgument; + +public class ResetScore extends ExecutableCommand +{ + public ResetScore(TradingHandler handler) + { + super( + "resetscore", + "Resets player scores for this tag.", + "runsafe.traders.tag.resetscore", + new RequiredArgument(TAG_NAME) + ); + this.handler = handler; + } + + private static final String TAG_NAME = "tagName"; + @Override + public String OnExecute(ICommandExecutor executor, IArgumentList parameters) + { + String tag = parameters.getRequired(TAG_NAME); + + if (!handler.getAllTags().contains(tag)) + return "&cInvalid item tag."; + + handler.deleteTagPlayerScore(tag); + return "&aTag player score information cleared for:" + tag; + } + + private final TradingHandler handler; +} \ No newline at end of file