Skip to content

Commit

Permalink
v3.2.4 - /token sell/worth all & bug fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Realizedd committed Jul 20, 2019
1 parent 25d9431 commit ce61032
Show file tree
Hide file tree
Showing 22 changed files with 204 additions and 42 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ plugins {
}

group 'me.realized'
version '3.2.3'
version '3.2.4'

compileJava.options.encoding = 'UTF-8'
sourceCompatibility = targetCompatibility = JavaVersion.VERSION_1_8
Expand Down
22 changes: 22 additions & 0 deletions src/main/java/me/realized/tokenmanager/Permissions.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package me.realized.tokenmanager;

public final class Permissions {

private static final String PREFIX = "tokenmanager.";

public static final String CMD_TOKEN = PREFIX + "use";
public static final String CMD_ADMIN = PREFIX + "admin";
public static final String CMD_BALANCE_OTHERS = PREFIX + "use.balance.others";
public static final String CMD_SELL = PREFIX + "use.sell";
public static final String CMD_SELL_ALL = PREFIX + "use.sell.all";
public static final String CMD_SEND = PREFIX + "use.send";
public static final String CMD_SHOP = PREFIX + "use.shop";
public static final String CMD_TOP = PREFIX + "use.top";
public static final String CMD_WORTH = PREFIX + "use.worth";
public static final String CMD_WORTH_ALL = PREFIX + "use.worth.all";

public static final String SHOP = PREFIX + "use.shop.";
public static final String SHOP_SLOT_OLD = PREFIX + "use."; // TODO: Deprecated, remove support in future versions.

private Permissions() {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ public List<String> getReloadables() {
public void on(final PlayerJoinEvent event) {
final Player player = event.getPlayer();

if (updateAvailable && (player.isOp() || player.hasPermission("tokenmanager.admin"))) {
if (updateAvailable && (player.isOp() || player.hasPermission(Permissions.CMD_ADMIN))) {
player.sendMessage(StringUtil.color(String.format(ADMIN_UPDATE_MESSAGE, newVersion, RESOURCE_URL)));
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package me.realized.tokenmanager.api.event;

import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;

public class TMSellAllEvent extends TMEvent {

private static final HandlerList handlers = new HandlerList();

public TMSellAllEvent(final Player player, final long amount) {
super(player, amount);
}

@Override
public HandlerList getHandlers() {
return handlers;
}

public static HandlerList getHandlerList() {
return handlers;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@

package me.realized.tokenmanager.command.commands;

import me.realized.tokenmanager.Permissions;
import me.realized.tokenmanager.TokenManagerPlugin;
import me.realized.tokenmanager.command.BaseCommand;
import me.realized.tokenmanager.command.commands.subcommands.GiveAllCommand;
Expand All @@ -40,7 +41,7 @@
public class TMCommand extends BaseCommand {

public TMCommand(final TokenManagerPlugin plugin) {
super(plugin, "tokenmanager", "tokenmanager.admin", false);
super(plugin, "tokenmanager", Permissions.CMD_ADMIN, false);
child(
new OfflineCommand(plugin, ModifyType.ADD, "add <username> <amount>", "give"),
new OfflineCommand(plugin, ModifyType.REMOVE, "remove <username> <amount>", "delete"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
package me.realized.tokenmanager.command.commands;

import java.util.OptionalLong;
import me.realized.tokenmanager.Permissions;
import me.realized.tokenmanager.TokenManagerPlugin;
import me.realized.tokenmanager.command.BaseCommand;
import me.realized.tokenmanager.command.commands.subcommands.BalanceCommand;
Expand All @@ -44,7 +45,7 @@
public class TokenCommand extends BaseCommand {

public TokenCommand(final TokenManagerPlugin plugin) {
super(plugin, "token", "tokenmanager.use", false);
super(plugin, "token", Permissions.CMD_TOKEN, false);
child(
new BalanceCommand(plugin),
new SendCommand(plugin),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
package me.realized.tokenmanager.command.commands.subcommands;

import java.util.OptionalLong;
import me.realized.tokenmanager.Permissions;
import me.realized.tokenmanager.TokenManagerPlugin;
import me.realized.tokenmanager.command.BaseCommand;
import org.bukkit.Bukkit;
Expand Down Expand Up @@ -56,8 +57,8 @@ protected void execute(final CommandSender sender, final String label, final Str
return;
}

if (!sender.hasPermission("tokenmanager.use.balance.others")) {
sendMessage(sender, true, "ERROR.no-permission", "permission", "tokenmanager.use.balance.others");
if (!sender.hasPermission(Permissions.CMD_BALANCE_OTHERS)) {
sendMessage(sender, true, "ERROR.no-permission", "permission", Permissions.CMD_BALANCE_OTHERS);
return;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,78 @@
package me.realized.tokenmanager.command.commands.subcommands;

import java.util.OptionalLong;
import me.realized.tokenmanager.Permissions;
import me.realized.tokenmanager.TokenManagerPlugin;
import me.realized.tokenmanager.api.event.TMSellAllEvent;
import me.realized.tokenmanager.api.event.TMSellHandEvent;
import me.realized.tokenmanager.command.BaseCommand;
import org.apache.commons.lang.WordUtils;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;

public class SellCommand extends BaseCommand {

public SellCommand(final TokenManagerPlugin plugin) {
super(plugin, "sell", "sell", "tokenmanager.use.sell", 1, true);
super(plugin, "sell", "sell", Permissions.CMD_SELL, 1, true);
}

@Override
protected void execute(final CommandSender sender, final String label, final String[] args) {
final Player player = (Player) sender;

if (args.length > getLength() && args[1].equalsIgnoreCase("all")) {
if (!player.hasPermission(Permissions.CMD_SELL_ALL)) {
sendMessage(sender, true, "ERROR.no-permission", "permission", Permissions.CMD_SELL_ALL);
return;
}

final PlayerInventory inventory = player.getInventory();
int total = 0;
long price = 0;

for (int slot = 0; slot < 36; slot++) {
final ItemStack item = inventory.getItem(slot);

if (item == null) {
continue;
}

final OptionalLong worth = plugin.getWorth(item);

if (worth.isPresent()) {
price += worth.getAsLong();
total += item.getAmount();
}
}

final TMSellAllEvent event = new TMSellAllEvent(player, price);
plugin.getServer().getPluginManager().callEvent(event);

if (event.isCancelled()) {
return;
}

for (int slot = 0; slot < 36; slot++) {
final ItemStack item = inventory.getItem(slot);

if (item == null) {
continue;
}

final OptionalLong worth = plugin.getWorth(item);

if (worth.isPresent()) {
inventory.setItem(slot, null);
}
}

dataManager.set(player, dataManager.get(player).orElse(0) + price);
sendMessage(sender, true, "COMMAND.token.sell-all", "item_amount", total, "amount", price);
return;
}

final int heldSlot = player.getInventory().getHeldItemSlot();
final ItemStack item = player.getInventory().getItem(heldSlot);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import java.util.Arrays;
import java.util.List;
import java.util.OptionalLong;
import me.realized.tokenmanager.Permissions;
import me.realized.tokenmanager.TokenManagerPlugin;
import me.realized.tokenmanager.api.event.TMTokenSendEvent;
import me.realized.tokenmanager.command.BaseCommand;
Expand All @@ -45,7 +46,7 @@ public class SendCommand extends BaseCommand {
private static final List<String> TAB_AMOUNTS = Arrays.asList("5", "10", "25", "50", "75", "100", "500", "1000");

public SendCommand(final TokenManagerPlugin plugin) {
super(plugin, "send", "send <username> <amount>", "tokenmanager.use.send", 3, true);
super(plugin, "send", "send <username> <amount>", Permissions.CMD_SEND, 3, true);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import me.realized.tokenmanager.Permissions;
import me.realized.tokenmanager.TokenManagerPlugin;
import me.realized.tokenmanager.command.BaseCommand;
import me.realized.tokenmanager.shop.Shop;
Expand All @@ -41,7 +42,7 @@
public class ShopCommand extends BaseCommand {

public ShopCommand(final TokenManagerPlugin plugin) {
super(plugin, "shop", "shop <name>", "tokenmanager.use.shop", plugin.getConfiguration().isOpenSelectedEnabled() ? 1 : 2, true);
super(plugin, "shop", "shop <name>", Permissions.CMD_SHOP, plugin.getConfiguration().isOpenSelectedEnabled() ? 1 : 2, true);
}

@Override
Expand Down Expand Up @@ -71,8 +72,8 @@ protected void execute(final CommandSender sender, final String label, final Str
return;
}

if (shop.get().isUsePermission() && !player.hasPermission("tokenmanager.use.shop." + target)) {
sendMessage(player, true, "ERROR.no-permission", "permission", "tokenmanager.use.shop." + target);
if (shop.get().isUsePermission() && !player.hasPermission(Permissions.SHOP + target)) {
sendMessage(player, true, "ERROR.no-permission", "permission", Permissions.SHOP + target);
return;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
package me.realized.tokenmanager.command.commands.subcommands;

import java.util.stream.Collectors;
import me.realized.tokenmanager.Permissions;
import me.realized.tokenmanager.TokenManagerPlugin;
import me.realized.tokenmanager.command.BaseCommand;
import me.realized.tokenmanager.shop.Shop;
Expand All @@ -37,7 +38,7 @@
public class ShopsCommand extends BaseCommand {

public ShopsCommand(final TokenManagerPlugin plugin) {
super(plugin, "shops", "shops", "tokenmanager.use.shop", 1, false);
super(plugin, "shops", "shops", Permissions.CMD_SHOP, 1, false);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
package me.realized.tokenmanager.command.commands.subcommands;

import java.util.List;
import me.realized.tokenmanager.Permissions;
import me.realized.tokenmanager.TokenManagerPlugin;
import me.realized.tokenmanager.command.BaseCommand;
import me.realized.tokenmanager.data.database.Database.TopElement;
Expand All @@ -36,7 +37,7 @@
public class TopCommand extends BaseCommand {

public TopCommand(final TokenManagerPlugin plugin) {
super(plugin, "top", "top", "tokenmanager.use.top", 1, false, "balancetop");
super(plugin, "top", "top", Permissions.CMD_TOP, 1, false, "balancetop");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,57 @@
package me.realized.tokenmanager.command.commands.subcommands;

import java.util.OptionalLong;
import me.realized.tokenmanager.Permissions;
import me.realized.tokenmanager.TokenManagerPlugin;
import me.realized.tokenmanager.command.BaseCommand;
import org.apache.commons.lang.WordUtils;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;

public class WorthCommand extends BaseCommand {

public WorthCommand(final TokenManagerPlugin plugin) {
super(plugin, "worth", "worth", "tokenmanager.use.worth", 1, true);
super(plugin, "worth", "worth", Permissions.CMD_WORTH, 1, true);
}

@Override
protected void execute(final CommandSender sender, final String label, final String[] args) {
final Player player = (Player) sender;

if (args.length > getLength() && args[1].equalsIgnoreCase("all")) {
if (!player.hasPermission(Permissions.CMD_WORTH_ALL)) {
sendMessage(sender, true, "ERROR.no-permission", "permission", Permissions.CMD_WORTH_ALL);
return;
}

final PlayerInventory inventory = player.getInventory();
int total = 0;
long price = 0;

for (int slot = 0; slot < 36; slot++) {
final ItemStack item = inventory.getItem(slot);

if (item == null) {
continue;
}

final OptionalLong worth = plugin.getWorth(item);

if (worth.isPresent()) {
price += worth.getAsLong();
total += item.getAmount();

final String name = WordUtils.capitalizeFully(item.getType().toString().replace("_", " ").toLowerCase());
sendMessage(sender, true, "COMMAND.token.worth-all.item-format", "item_type", name, "item_amount", item.getAmount(), "amount", price);
}
}

sendMessage(sender, true, "COMMAND.token.worth-all.total", "item_amount", total, "amount", price);
return;
}

final ItemStack item = player.getInventory().getItem(player.getInventory().getHeldItemSlot());

if (item == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public void setup() throws Exception {
if (ProfileUtil.isUUID(key) != online) {
// clear to prevent saving previously loaded data overwriting the file
data.clear();
throw new Exception(String.format(SERVER_MODE_MISMATCH, online ? "ONLINE" : "OFFLINE", online ? "UUIDs" : "Usernames"));
throw new Exception(String.format(SERVER_MODE_MISMATCH, online ? "ONLINE" : "OFFLINE", online ? "UUIDs" : "usernames"));
}

data.put(key, section.getLong(key));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ public void on(final InventoryClickEvent event) {
final Inventory clicked = InventoryUtil.getClickedInventory(event.getRawSlot(), event.getView());
final Inventory top = player.getOpenInventory().getTopInventory();

if (clicked == null || top == null) {
if (clicked == null) {
return;
}

Expand Down
5 changes: 3 additions & 2 deletions src/main/java/me/realized/tokenmanager/shop/Slot.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import java.util.Optional;
import java.util.OptionalLong;
import lombok.Getter;
import me.realized.tokenmanager.Permissions;
import me.realized.tokenmanager.TokenManagerPlugin;
import me.realized.tokenmanager.api.event.TMShopPurchaseEvent;
import me.realized.tokenmanager.shop.gui.guis.ConfirmGui;
Expand Down Expand Up @@ -149,8 +150,8 @@ public boolean purchase(final Player player, final boolean confirmPurchase, fina

final Shop target = result.get();

if (target.isUsePermission() && !player.hasPermission("tokenmanager.use.shop." + target.getName())) {
plugin.getLang().sendMessage(player, true, "ERROR.no-permission", "permission", "tokenmanager.use.shop." + target.getName());
if (target.isUsePermission() && !player.hasPermission(Permissions.SHOP + target.getName())) {
plugin.getLang().sendMessage(player, true, "ERROR.no-permission", "permission", Permissions.SHOP + target.getName());
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,13 @@ private ItemStack replace(final Player player, final ItemStack item, final long
@Override
public boolean handle(final Player player, final int slot) {
if (slot == CONFIRM_PURCHASE_SLOT) {
return shop.getSlot(this.slot).purchase(player, false, true);
} else if (slot == CANCEL_PURCHASE_SLOT) {
// Open shop
boolean result = shop.getSlot(this.slot).purchase(player, false, shop.isAutoClose());
refresh(player, false);
return result;
}

if (slot == CANCEL_PURCHASE_SLOT) {
// Open back the parent shop.
shopManager.open(player, new ShopGui(plugin, shop));
}

Expand Down
Loading

0 comments on commit ce61032

Please sign in to comment.