mirror of
https://github.com/CarmJos/UltraDepository.git
synced 2024-09-19 19:55:45 +00:00
完成界面部分
This commit is contained in:
parent
55bc8179e7
commit
43c20a9e5e
@ -127,11 +127,10 @@ public class Main extends JavaPlugin {
|
||||
return economyManager;
|
||||
}
|
||||
|
||||
public static DepositoryManager getBackpackManager() {
|
||||
public static DepositoryManager getDepositoryManager() {
|
||||
return depositoryManager;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 注册监听器
|
||||
*
|
||||
|
@ -9,8 +9,16 @@ public class PluginMessages {
|
||||
"item-sold", new String[0], new String[]{
|
||||
"%(item)", "%(amount)", "%(money)"
|
||||
});
|
||||
|
||||
public static final ConfigMessageList PICKUP = new ConfigMessageList(
|
||||
"item-pickup", new String[0], new String[]{
|
||||
"%(item)", "%(amount)"
|
||||
});
|
||||
|
||||
public static final ConfigMessageList COLLECTED = new ConfigMessageList(
|
||||
"item-collected", new String[0], new String[]{
|
||||
"%(item)", "%(amount)", "%(backpack)"
|
||||
"%(item)", "%(amount)", "%(depository)"
|
||||
});
|
||||
|
||||
public static final ConfigMessageList NO_SPACE = new ConfigMessageList("no-space");
|
||||
}
|
||||
|
@ -66,8 +66,12 @@ public class DepositoryItem {
|
||||
return lore;
|
||||
}
|
||||
|
||||
public ItemStack getRawItem(int amount) {
|
||||
return new ItemStack(getMaterial(), amount, (short) getData());
|
||||
}
|
||||
|
||||
public ItemStack getDisplayItem() {
|
||||
ItemStackFactory factory = new ItemStackFactory(getMaterial(), 1, getData());
|
||||
ItemStackFactory factory = new ItemStackFactory(getRawItem(1));
|
||||
if (getName() != null) factory.setDisplayName(getName());
|
||||
if (getLore() != null) factory.setLore(getLore());
|
||||
return factory.toItemStack();
|
||||
|
@ -1,9 +1,9 @@
|
||||
package cc.carm.plugin.ultradepository.configuration.message;
|
||||
|
||||
|
||||
import cc.carm.plugin.ultradepository.util.MessageUtil;
|
||||
import cc.carm.plugin.ultradepository.configuration.values.ConfigValue;
|
||||
import cc.carm.plugin.ultradepository.manager.ConfigManager;
|
||||
import cc.carm.plugin.ultradepository.util.MessageUtil;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import java.util.Collections;
|
||||
@ -40,14 +40,19 @@ public class ConfigMessage extends ConfigValue<String> {
|
||||
}
|
||||
|
||||
public void send(CommandSender sender) {
|
||||
MessageUtil.send(sender, get());
|
||||
}
|
||||
|
||||
public void sendWithPlaceholders(CommandSender sender) {
|
||||
MessageUtil.sendWithPlaceholders(sender, get());
|
||||
}
|
||||
|
||||
public void sendWithPlaceholders(CommandSender sender, String[] params, Object[] values) {
|
||||
public void send(CommandSender sender, Object[] values) {
|
||||
if (messageParams != null) {
|
||||
send(sender, messageParams, values);
|
||||
} else {
|
||||
send(sender, new String[0], new Object[0]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void send(CommandSender sender, String[] params, Object[] values) {
|
||||
MessageUtil.sendWithPlaceholders(sender, Collections.singletonList(get()), params, values);
|
||||
}
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
package cc.carm.plugin.ultradepository.configuration.message;
|
||||
|
||||
|
||||
import cc.carm.plugin.ultradepository.util.MessageUtil;
|
||||
import cc.carm.plugin.ultradepository.configuration.values.ConfigValueList;
|
||||
import cc.carm.plugin.ultradepository.manager.ConfigManager;
|
||||
import cc.carm.plugin.ultradepository.util.MessageUtil;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@ -43,22 +43,18 @@ public class ConfigMessageList extends ConfigValueList<String> {
|
||||
}
|
||||
|
||||
public void send(@Nullable CommandSender sender) {
|
||||
MessageUtil.send(sender, get());
|
||||
}
|
||||
|
||||
public void sendWithPlaceholders(@Nullable CommandSender sender) {
|
||||
MessageUtil.sendWithPlaceholders(sender, get());
|
||||
}
|
||||
|
||||
public void sendWithPlaceholders(@Nullable CommandSender sender, Object[] values) {
|
||||
public void send(@Nullable CommandSender sender, Object[] values) {
|
||||
if (messageParams != null) {
|
||||
sendWithPlaceholders(sender, messageParams, values);
|
||||
send(sender, messageParams, values);
|
||||
} else {
|
||||
sendWithPlaceholders(sender);
|
||||
send(sender);
|
||||
}
|
||||
}
|
||||
|
||||
public void sendWithPlaceholders(@Nullable CommandSender sender, String[] params, Object[] values) {
|
||||
public void send(@Nullable CommandSender sender, String[] params, Object[] values) {
|
||||
MessageUtil.sendWithPlaceholders(sender, get(), params, values);
|
||||
}
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ public class UserData {
|
||||
|
||||
|
||||
public @Nullable DepositoryData getBackpackData(String backpackID) {
|
||||
Depository configuration = Main.getBackpackManager().getDepository(backpackID);
|
||||
Depository configuration = Main.getDepositoryManager().getDepository(backpackID);
|
||||
if (configuration == null) return null;
|
||||
return getBackpackData(configuration);
|
||||
}
|
||||
@ -61,7 +61,7 @@ public class UserData {
|
||||
public @Nullable ItemData getItemData(@NotNull String backpackID, @NotNull String typeID) {
|
||||
DepositoryData data = getBackpackData(backpackID);
|
||||
if (data == null) return null;
|
||||
if (!Main.getBackpackManager().hasItem(backpackID, typeID)) return null;
|
||||
if (!Main.getDepositoryManager().hasItem(backpackID, typeID)) return null;
|
||||
ItemData itemData = data.getItemData(typeID);
|
||||
if (itemData == null) {
|
||||
itemData = ItemData.emptyItemData();
|
||||
|
@ -77,20 +77,20 @@ public class PAPIExpansion extends PlaceholderExpansion {
|
||||
Integer sold = Main.getUserManager().getData(player).getItemSold(args[2], args[3]);
|
||||
if (sold == null) return "仓库或物品不存在";
|
||||
|
||||
Integer limit = Main.getBackpackManager().getItemSellLimit(args[2], args[3]);
|
||||
Integer limit = Main.getDepositoryManager().getItemSellLimit(args[2], args[3]);
|
||||
if (limit == null) return "仓库或物品不存在";
|
||||
|
||||
return Integer.toString(limit - sold);
|
||||
}
|
||||
case "limit": {
|
||||
if (args.length < 3) return "参数不足";
|
||||
Integer limit = Main.getBackpackManager().getItemSellLimit(args[2], args[3]);
|
||||
Integer limit = Main.getDepositoryManager().getItemSellLimit(args[2], args[3]);
|
||||
if (limit == null) return "仓库或物品不存在";
|
||||
else return limit.toString();
|
||||
}
|
||||
case "price": {
|
||||
if (args.length < 3) return "参数不足";
|
||||
Double price = Main.getBackpackManager().getItemPrice(args[2], args[3]);
|
||||
Double price = Main.getDepositoryManager().getItemPrice(args[2], args[3]);
|
||||
if (price == null) return "仓库或物品不存在";
|
||||
else return price.toString();
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ public class CollectListener implements Listener {
|
||||
if (drops.isEmpty()) return;
|
||||
event.setDropItems(false);
|
||||
|
||||
Collection<ItemStack> finalDrops = Main.getBackpackManager().collectItem(player, drops);
|
||||
Collection<ItemStack> finalDrops = Main.getDepositoryManager().collectItem(player, drops);
|
||||
finalDrops.forEach(finalDrop -> world.dropItemNaturally(location, finalDrop));
|
||||
|
||||
}
|
||||
@ -51,7 +51,7 @@ public class CollectListener implements Listener {
|
||||
if (player == null) return;
|
||||
if (!Main.getUserManager().isCollectEnabled(player)) return;
|
||||
|
||||
Collection<ItemStack> finalDrops = Main.getBackpackManager().collectItem(player, event.getDrops());
|
||||
Collection<ItemStack> finalDrops = Main.getDepositoryManager().collectItem(player, event.getDrops());
|
||||
event.getDrops().clear();
|
||||
event.getDrops().addAll(finalDrops);
|
||||
}
|
||||
@ -69,7 +69,7 @@ public class CollectListener implements Listener {
|
||||
if (thrower != null && thrower.equals(player.getUniqueId())) return;
|
||||
|
||||
ItemStack item = event.getItem().getItemStack();
|
||||
if (Main.getBackpackManager().collectItem(player, item)) {
|
||||
if (Main.getDepositoryManager().collectItem(player, item)) {
|
||||
event.setCancelled(true);
|
||||
event.getItem().remove();
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import com.google.common.collect.HashMultimap;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@ -88,6 +89,11 @@ public class DepositoryManager {
|
||||
|
||||
public boolean collectItem(Player player, ItemStack item) {
|
||||
if (!Main.getUserManager().isCollectEnabled(player)) return false;
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
if (meta != null && (meta.hasLore() || meta.hasDisplayName() || meta.hasEnchants())) {
|
||||
// 不收集有特殊属性的物品
|
||||
return false;
|
||||
}
|
||||
Set<Depository> usableDepositories = getPlayerUsableDepository(player, item);
|
||||
if (usableDepositories.size() < 1) return false;
|
||||
Depository depository = usableDepositories.stream().findFirst().orElse(null);
|
||||
|
@ -2,8 +2,9 @@ package cc.carm.plugin.ultradepository.ui;
|
||||
|
||||
import cc.carm.plugin.ultradepository.Main;
|
||||
import cc.carm.plugin.ultradepository.configuration.PluginConfig;
|
||||
import cc.carm.plugin.ultradepository.configuration.depository.DepositoryItem;
|
||||
import cc.carm.plugin.ultradepository.configuration.PluginMessages;
|
||||
import cc.carm.plugin.ultradepository.configuration.depository.Depository;
|
||||
import cc.carm.plugin.ultradepository.configuration.depository.DepositoryItem;
|
||||
import cc.carm.plugin.ultradepository.data.ItemData;
|
||||
import cc.carm.plugin.ultradepository.data.UserData;
|
||||
import cc.carm.plugin.ultradepository.util.ItemStackFactory;
|
||||
@ -20,28 +21,27 @@ public class DepositoryGUI extends GUI {
|
||||
|
||||
Player player;
|
||||
UserData userData;
|
||||
Depository configuration;
|
||||
Depository depository;
|
||||
|
||||
public DepositoryGUI(Player player, Depository configuration) {
|
||||
super(configuration.getGUIConfiguration().getGUIType(), configuration.getGUIConfiguration().getTitle());
|
||||
public DepositoryGUI(Player player, Depository depository) {
|
||||
super(depository.getGUIConfiguration().getGUIType(), depository.getGUIConfiguration().getTitle());
|
||||
|
||||
this.player = player;
|
||||
this.userData = Main.getUserManager().getData(player);
|
||||
this.configuration = configuration;
|
||||
|
||||
this.depository = depository;
|
||||
|
||||
setupItems();
|
||||
}
|
||||
|
||||
public void setupItems() {
|
||||
configuration.getGUIConfiguration().setupItems(this);
|
||||
for (DepositoryItem depositoryItem : configuration.getItems().values()) {
|
||||
setItem(depositoryItem.getSlot(), new GUIItem(depositoryItem.getDisplayItem()));
|
||||
}
|
||||
depository.getGUIConfiguration().setupItems(this);
|
||||
depository.getItems().values().forEach(depositoryItem -> setItem(depositoryItem.getSlot(), createGUIItem(depositoryItem)));
|
||||
}
|
||||
|
||||
|
||||
private GUIItem createGUIItem(DepositoryItem item) {
|
||||
ItemStackFactory factory = new ItemStackFactory(item.getDisplayItem());
|
||||
ItemData itemData = userData.getItemData(configuration, item);
|
||||
ItemData itemData = userData.getItemData(depository, item);
|
||||
List<String> additionalLore = PluginConfig.General.ADDITIONAL_LORE.get(player, new Object[]{
|
||||
item.getName(), itemData.getAmount(), item.getPrice(), itemData.getSold(), item.getLimit()
|
||||
});
|
||||
@ -56,14 +56,18 @@ public class DepositoryGUI extends GUI {
|
||||
public void onClick(ClickType type) {
|
||||
if (itemData.getAmount() < 1) return;
|
||||
if (type == ClickType.LEFT) {
|
||||
SellItemGUI.open(player, userData, itemData, configuration, item);
|
||||
SellItemGUI.open(player, userData, itemData, depository, item);
|
||||
} else if (type == ClickType.RIGHT) {
|
||||
if (hasEmptySlot(player)) {
|
||||
int pickupAmount = Math.min(itemData.getAmount(), item.getMaterial().getMaxStackSize());
|
||||
|
||||
player.getInventory().addItem(item.getRawItem(pickupAmount));
|
||||
PluginMessages.PICKUP.send(player, new Object[]{
|
||||
item.getName(), pickupAmount
|
||||
});
|
||||
} else {
|
||||
|
||||
PluginMessages.NO_SPACE.send(player);
|
||||
}
|
||||
player.closeInventory();
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -75,5 +79,9 @@ public class DepositoryGUI extends GUI {
|
||||
.anyMatch(i -> i == null || i.getType() == Material.AIR);
|
||||
}
|
||||
|
||||
public static void open(Player player, Depository depository) {
|
||||
DepositoryGUI gui = new DepositoryGUI(player, depository);
|
||||
gui.openGUI(player);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,13 +1,13 @@
|
||||
package cc.carm.plugin.ultradepository.ui;
|
||||
|
||||
import cc.carm.plugin.ultradepository.Main;
|
||||
import cc.carm.plugin.ultradepository.data.ItemData;
|
||||
import cc.carm.plugin.ultradepository.util.ItemStackFactory;
|
||||
import cc.carm.plugin.ultradepository.configuration.PluginConfig;
|
||||
import cc.carm.plugin.ultradepository.configuration.PluginMessages;
|
||||
import cc.carm.plugin.ultradepository.configuration.depository.Depository;
|
||||
import cc.carm.plugin.ultradepository.configuration.depository.DepositoryItem;
|
||||
import cc.carm.plugin.ultradepository.data.ItemData;
|
||||
import cc.carm.plugin.ultradepository.data.UserData;
|
||||
import cc.carm.plugin.ultradepository.util.ItemStackFactory;
|
||||
import cc.carm.plugin.ultradepository.util.gui.GUI;
|
||||
import cc.carm.plugin.ultradepository.util.gui.GUIItem;
|
||||
import cc.carm.plugin.ultradepository.util.gui.GUIType;
|
||||
@ -127,7 +127,7 @@ public class SellItemGUI extends GUI {
|
||||
int amount = Math.min(getCurrentAmount(), Math.min(getRemainAmount(), getSellLimit() - getSoldAmount()));
|
||||
if (amount > 0) {
|
||||
double money = Main.getEconomyManager().sell(player, getItemPrice(), amount);
|
||||
PluginMessages.SOLD.sendWithPlaceholders(player, new Object[]{
|
||||
PluginMessages.SOLD.send(player, new Object[]{
|
||||
getItemName(), amount, money
|
||||
});
|
||||
}
|
||||
|
@ -1,6 +1,11 @@
|
||||
item-collected:
|
||||
- "&f您收集了 &e%(item)&7x%(amount) &f,已自动放入到您的 &6%(depository) &f中。"
|
||||
|
||||
|
||||
item-pickup:
|
||||
- "&f您取出了 &e%(item)&7x%(amount) &f,已自动放入到您的背包中。"
|
||||
|
||||
|
||||
item-sold:
|
||||
- "&f您出售了 &e%(item)&7x%(amount) &f,共赚取 &6%(money) &f元。"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user