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