1
mirror of https://github.com/CarmJos/UltraDepository.git synced 2024-09-19 19:55:45 +00:00

完成界面部分

This commit is contained in:
Carm Jos 2021-12-28 20:02:05 +08:00
parent 55bc8179e7
commit 43c20a9e5e
12 changed files with 75 additions and 44 deletions

View File

@ -127,11 +127,10 @@ public class Main extends JavaPlugin {
return economyManager;
}
public static DepositoryManager getBackpackManager() {
public static DepositoryManager getDepositoryManager() {
return depositoryManager;
}
/**
* 注册监听器
*

View File

@ -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");
}

View File

@ -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();

View File

@ -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);
}

View File

@ -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);
}
}

View File

@ -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();

View File

@ -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();
}

View File

@ -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();
}

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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
});
}

View File

@ -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元。"