mirror of
https://github.com/CarmJos/ScriptItems
synced 2024-09-19 21:35:50 +00:00
完成指令部分
This commit is contained in:
parent
19330f1bb5
commit
1a6f2071df
30
README.md
30
README.md
@ -1,17 +1,18 @@
|
||||
```text
|
||||
___ _ ___ _
|
||||
/ __|___ _ __ _ __ __ _ _ _ __| |_ _| |_ ___ _ __
|
||||
| (__/ _ \ ' \| ' \/ _` | ' \/ _` || || _/ -_) ' \
|
||||
\___\___/_|_|_|_|_|_\__,_|_||_\__,_|___|\__\___|_|_|_|
|
||||
____ _ __ ______
|
||||
/ __/_______(_)__ / /_/ _/ /____ __ _ ___
|
||||
_\ \/ __/ __/ / _ \/ __// // __/ -_) ' \(_-<
|
||||
/___/\__/_/ /_/ .__/\__/___/\__/\__/_/_/_/___/
|
||||
/_/
|
||||
```
|
||||
|
||||
# CommandItem
|
||||
# ScriptItems
|
||||
|
||||
[![workflow](https://github.com/CarmJos/CommandItem/actions/workflows/maven.yml/badge.svg?branch=master)](https://github.com/CarmJos/CommandItem/actions/workflows/maven.yml)
|
||||
[![workflow](https://github.com/CarmJos/ScriptItems/actions/workflows/maven.yml/badge.svg?branch=master)](https://github.com/CarmJos/ScriptItems/actions/workflows/maven.yml)
|
||||
![Support](https://img.shields.io/badge/Minecraft-Java%201.12--Latest-yellow)
|
||||
![](https://visitor-badge.glitch.me/badge?page_id=CommandItem.readme)
|
||||
![](https://visitor-badge.glitch.me/badge?page_id=ScriptItems.readme)
|
||||
|
||||
物品指令绑定插件,给予玩家可执行对应指令的消耗物品,基于EasyPlugin实现。
|
||||
脚本物品插件,给予玩家可执行对应操作的物品,基于EasyPlugin实现。
|
||||
|
||||
## 插件功能与优势
|
||||
|
||||
@ -45,32 +46,35 @@
|
||||
|
||||
详见源文件。
|
||||
|
||||
### 消息配置文件 ([messages.yml](src/main/java/cc/carm/plugin/commanditem/configuration/PluginMessages.java))
|
||||
### 消息配置文件 ([messages.yml](src/main/java/cc/carm/plugin/scriptitems/configuration/PluginMessages.java))
|
||||
|
||||
详见代码源文件,将在首次启动时生成配置。
|
||||
|
||||
## 插件指令
|
||||
|
||||
插件主指令为 `/CommandItem`,所需权限为 `CommandItem.admin`。
|
||||
插件主指令为 `/ScriptItems`,所需权限为 `ScriptItems.admin`。
|
||||
|
||||
```text
|
||||
# help
|
||||
- 查看插件帮助
|
||||
|
||||
# give <玩家> <物品ID> <数量>
|
||||
# reload
|
||||
- 重载插件配置文件。
|
||||
|
||||
# give <玩家> <物品ID> [数量(默认为1)]
|
||||
- 给予指定玩家指定数量的物品。
|
||||
|
||||
# apply <物品ID>
|
||||
- 为手中的物品直接绑定一个配置。
|
||||
|
||||
# details <物品ID>
|
||||
# info <物品ID>
|
||||
- 查看物品的发放与领取情况。
|
||||
|
||||
```
|
||||
|
||||
## 使用统计
|
||||
|
||||
[![bStats](https://bstats.org/signatures/bukkit/CommandItem.svg)](https://bstats.org/plugin/bukkit/CommandItem/14560)
|
||||
[![bStats](https://bstats.org/signatures/bukkit/ScriptItems.svg)](https://bstats.org/plugin/bukkit/ScriptItems/14615)
|
||||
|
||||
## 支持与捐赠
|
||||
|
||||
|
27
pom.xml
27
pom.xml
@ -13,25 +13,25 @@
|
||||
</properties>
|
||||
|
||||
<groupId>cc.carm.plugin</groupId>
|
||||
<artifactId>commanditem</artifactId>
|
||||
<artifactId>scriptitems</artifactId>
|
||||
<version>0.1.0-SNAPSHOT</version>
|
||||
|
||||
<name>CommandItem</name>
|
||||
<description>物品指令绑定插件,给予玩家可执行对应指令的消耗物品,基于EasyPlugin实现。</description>
|
||||
<url>https://github.com/CarmJos/CommandItem</url>
|
||||
<name>ScriptItems</name>
|
||||
<description>物品操作绑定插件,给予玩家可执行对应操作的物品,基于EasyPlugin实现。</description>
|
||||
<url>https://github.com/CarmJos/ScriptItems</url>
|
||||
|
||||
<issueManagement>
|
||||
<system>GitHub Issues</system>
|
||||
<url>https://github.com/CarmJos/CommandItem/issues</url>
|
||||
<url>https://github.com/CarmJos/ScriptItems/issues</url>
|
||||
</issueManagement>
|
||||
|
||||
<ciManagement>
|
||||
<system>GitHub Actions</system>
|
||||
<url>https://github.com/CarmJos/CommandItem/actions/workflows/maven.yml</url>
|
||||
<url>https://github.com/CarmJos/ScriptItems/actions/workflows/maven.yml</url>
|
||||
</ciManagement>
|
||||
|
||||
<distributionManagement>
|
||||
<downloadUrl>https://github.com/CarmJos/CommandItem/releases</downloadUrl>
|
||||
<downloadUrl>https://github.com/CarmJos/ScriptItems/releases</downloadUrl>
|
||||
</distributionManagement>
|
||||
|
||||
<developers>
|
||||
@ -111,13 +111,6 @@
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.github.SaiintBrisson.command-framework</groupId>
|
||||
<artifactId>bukkit</artifactId>
|
||||
<version>1.3.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
@ -241,15 +234,15 @@
|
||||
<relocations>
|
||||
<relocation>
|
||||
<pattern>cc.carm.lib</pattern>
|
||||
<shadedPattern>cc.carm.plugin.commanditem.lib</shadedPattern>
|
||||
<shadedPattern>cc.carm.plugin.scriptitems.lib</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>org.bstats</pattern>
|
||||
<shadedPattern>cc.carm.plugin.commanditem.lib.bstats</shadedPattern>
|
||||
<shadedPattern>cc.carm.plugin.scriptitems.lib.bstats</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>org.json</pattern>
|
||||
<shadedPattern>cc.carm.plugin.commanditem.lib.json</shadedPattern>
|
||||
<shadedPattern>cc.carm.plugin.scriptitems.lib.json</shadedPattern>
|
||||
</relocation>
|
||||
</relocations>
|
||||
<filters>
|
||||
|
@ -1,11 +0,0 @@
|
||||
package cc.carm.plugin.commanditem;
|
||||
|
||||
import cc.carm.plugin.commanditem.manager.ItemsManager;
|
||||
|
||||
public class CommandItemAPI {
|
||||
|
||||
public static ItemsManager getItemsManager() {
|
||||
return Main.getInstance().itemsManager;
|
||||
}
|
||||
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
package cc.carm.plugin.commanditem.command;
|
||||
|
||||
import cc.carm.plugin.commanditem.item.ItemSettings;
|
||||
import me.saiintbrisson.minecraft.command.annotation.Command;
|
||||
import me.saiintbrisson.minecraft.command.annotation.Completer;
|
||||
import me.saiintbrisson.minecraft.command.command.Context;
|
||||
import me.saiintbrisson.minecraft.command.target.CommandTarget;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
|
||||
public class CMDItemsCommand {
|
||||
|
||||
@Command(
|
||||
name = "commanditem", aliases = "cmdItem",
|
||||
description = "CommandItem的主要指令。",
|
||||
usage = "/CommandItem help",
|
||||
permission = "CommandItem.admin"
|
||||
)
|
||||
public void main(Context<CommandSender> sender) {
|
||||
help(sender);
|
||||
}
|
||||
|
||||
@Command(name = "commanditem.help")
|
||||
public void help(Context<CommandSender> sender) {
|
||||
sender.getSender().sendMessage("§a§lCommandItem §f§l指令帮助");
|
||||
}
|
||||
|
||||
@Command(name = "commanditem.apply", target = CommandTarget.PLAYER)
|
||||
@Completer(name = "settings")
|
||||
public void apply(Context<Player> sender,
|
||||
ItemSettings settings) {
|
||||
Player player = sender.getSender();
|
||||
if (player.getInventory().getItemInMainHand().getType() != Material.AIR) {
|
||||
ItemStack applied = settings.applyItem(player.getInventory().getItemInMainHand());
|
||||
player.getInventory().setItemInMainHand(applied);
|
||||
}
|
||||
player.sendMessage("应用成功");
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
package cc.carm.plugin.commanditem.command;
|
||||
|
||||
import cc.carm.plugin.commanditem.CommandItemAPI;
|
||||
import cc.carm.plugin.commanditem.item.ItemSettings;
|
||||
import me.saiintbrisson.minecraft.command.argument.TypeAdapter;
|
||||
|
||||
public class ItemSettingsAdapter implements TypeAdapter<ItemSettings> {
|
||||
|
||||
@Override
|
||||
public ItemSettings convert(String s) {
|
||||
return CommandItemAPI.getItemsManager().getItemSettings(s);
|
||||
}
|
||||
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package cc.carm.plugin.commanditem.command;
|
||||
|
||||
import cc.carm.plugin.commanditem.CommandItemAPI;
|
||||
import me.saiintbrisson.minecraft.command.command.Context;
|
||||
import me.saiintbrisson.minecraft.command.executor.CompleterExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ItemSettingsCompleter implements CompleterExecutor<CommandSender> {
|
||||
|
||||
@Override
|
||||
public List<String> execute(Context<CommandSender> context) {
|
||||
return new ArrayList<>(CommandItemAPI.getItemsManager().listItemSettings().keySet());
|
||||
}
|
||||
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
package cc.carm.plugin.commanditem.configuration;
|
||||
|
||||
|
||||
import cc.carm.lib.easyplugin.configuration.language.EasyMessageList;
|
||||
import cc.carm.lib.easyplugin.configuration.language.MessagesRoot;
|
||||
|
||||
public class PluginMessages extends MessagesRoot {
|
||||
|
||||
|
||||
public final static EasyMessageList COOLDOWN = EasyMessageList.builder()
|
||||
.contents("&f您需要等待 &c%(time)秒 &f才可再次使用指令物品。")
|
||||
.params("time").build();
|
||||
|
||||
public static class Restrictions {
|
||||
|
||||
public final static EasyMessageList INVALID = EasyMessageList.builder()
|
||||
.contents("&c&l抱歉!&f由于配置的时间限制错误,该物品目前暂不可用。")
|
||||
.build();
|
||||
|
||||
public final static EasyMessageList NOT_STARTED = EasyMessageList.builder()
|
||||
.contents("&f该物品目前还到可使用的时间,请在 &c%(time) &f后使用~")
|
||||
.params("time")
|
||||
.build();
|
||||
|
||||
public final static EasyMessageList EXPIRED = EasyMessageList.builder()
|
||||
.contents("&c&l抱歉!&f由于该物品已过最后使用期限,故无法继续使用。")
|
||||
.params("time")
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
@ -1,19 +1,14 @@
|
||||
package cc.carm.plugin.commanditem;
|
||||
package cc.carm.plugin.scriptitems;
|
||||
|
||||
import cc.carm.lib.easyplugin.EasyPlugin;
|
||||
import cc.carm.lib.easyplugin.i18n.EasyPluginMessageProvider;
|
||||
import cc.carm.plugin.commanditem.command.CMDItemsCommand;
|
||||
import cc.carm.plugin.commanditem.command.ItemSettingsAdapter;
|
||||
import cc.carm.plugin.commanditem.command.ItemSettingsCompleter;
|
||||
import cc.carm.plugin.commanditem.configuration.PluginConfig;
|
||||
import cc.carm.plugin.commanditem.hooker.GHUpdateChecker;
|
||||
import cc.carm.plugin.commanditem.item.ItemSettings;
|
||||
import cc.carm.plugin.commanditem.listener.ItemListener;
|
||||
import cc.carm.plugin.commanditem.manager.ConfigManager;
|
||||
import cc.carm.plugin.commanditem.manager.ItemsManager;
|
||||
import cc.carm.plugin.commanditem.util.JarResourceUtils;
|
||||
import me.saiintbrisson.bukkit.command.BukkitFrame;
|
||||
import me.saiintbrisson.bukkit.command.executor.BukkitSchedulerExecutor;
|
||||
import cc.carm.plugin.scriptitems.command.ScriptItemsCommand;
|
||||
import cc.carm.plugin.scriptitems.configuration.PluginConfig;
|
||||
import cc.carm.plugin.scriptitems.hooker.GHUpdateChecker;
|
||||
import cc.carm.plugin.scriptitems.listener.ItemListener;
|
||||
import cc.carm.plugin.scriptitems.manager.ConfigManager;
|
||||
import cc.carm.plugin.scriptitems.manager.ItemsManager;
|
||||
import cc.carm.plugin.scriptitems.util.JarResourceUtils;
|
||||
import org.bstats.bukkit.Metrics;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
@ -32,13 +27,15 @@ public class Main extends EasyPlugin {
|
||||
return instance;
|
||||
}
|
||||
|
||||
protected ConfigManager configManager;
|
||||
protected ItemsManager itemsManager;
|
||||
|
||||
@Override
|
||||
protected boolean initialize() {
|
||||
|
||||
info("加载配置文件...");
|
||||
if (!ConfigManager.initConfig()) {
|
||||
this.configManager = new ConfigManager(this);
|
||||
if (!configManager.initConfig()) {
|
||||
severe("配置文件初始化失败,请检查。");
|
||||
setEnabled(false);
|
||||
return false;
|
||||
@ -49,18 +46,14 @@ public class Main extends EasyPlugin {
|
||||
this.itemsManager.initialize();
|
||||
|
||||
info("注册指令...");
|
||||
BukkitFrame frame = new BukkitFrame(this);
|
||||
frame.setExecutor(new BukkitSchedulerExecutor(this));
|
||||
frame.registerAdapter(ItemSettings.class, new ItemSettingsAdapter());
|
||||
frame.registerCommands(new CMDItemsCommand());
|
||||
frame.registerCompleter("commanditem.apply", new ItemSettingsCompleter());
|
||||
registerCommand("ScriptItems", new ScriptItemsCommand());
|
||||
|
||||
info("注册监听器...");
|
||||
regListener(new ItemListener());
|
||||
|
||||
if (PluginConfig.METRICS.get()) {
|
||||
info("启用统计数据...");
|
||||
new Metrics(this, 14560);
|
||||
new Metrics(this, 14615);
|
||||
}
|
||||
|
||||
if (PluginConfig.CHECK_UPDATE.get()) {
|
26
src/main/java/cc/carm/plugin/scriptitems/ScriptItemsAPI.java
Normal file
26
src/main/java/cc/carm/plugin/scriptitems/ScriptItemsAPI.java
Normal file
@ -0,0 +1,26 @@
|
||||
package cc.carm.plugin.scriptitems;
|
||||
|
||||
import cc.carm.plugin.scriptitems.manager.ConfigManager;
|
||||
import cc.carm.plugin.scriptitems.manager.ItemsManager;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
public class ScriptItemsAPI {
|
||||
|
||||
public static ItemsManager getItemsManager() {
|
||||
return Main.getInstance().itemsManager;
|
||||
}
|
||||
|
||||
public static ConfigManager getConfigManager() {
|
||||
return Main.getInstance().configManager;
|
||||
}
|
||||
|
||||
public static boolean hasEmptySlot(Player player) {
|
||||
return IntStream.range(0, 36)
|
||||
.mapToObj(i -> player.getInventory().getItem(i))
|
||||
.anyMatch(i -> i == null || i.getType() == Material.AIR);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,166 @@
|
||||
package cc.carm.plugin.scriptitems.command;
|
||||
|
||||
import cc.carm.plugin.scriptitems.ScriptItemsAPI;
|
||||
import cc.carm.plugin.scriptitems.configuration.PluginMessages;
|
||||
import cc.carm.plugin.scriptitems.item.ItemSettings;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
import org.bukkit.entity.HumanEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.util.StringUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
public class ScriptItemsCommand implements CommandExecutor, TabCompleter {
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command,
|
||||
@NotNull String alias, @NotNull String[] args) {
|
||||
if (args.length >= 1) {
|
||||
String aim = args[0];
|
||||
if (aim.equalsIgnoreCase("reload")) {
|
||||
try {
|
||||
ScriptItemsAPI.getConfigManager().reload();
|
||||
sender.sendMessage("配置文件重载完成!");
|
||||
} catch (Exception e) {
|
||||
sender.sendMessage("配置文件重载失败!");
|
||||
e.printStackTrace();
|
||||
}
|
||||
return true;
|
||||
} else if (aim.equalsIgnoreCase("apply")) {
|
||||
if (args.length < 2) {
|
||||
PluginMessages.USAGE.send(sender);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!(sender instanceof Player)) {
|
||||
PluginMessages.ONLY_PLAYER.send(sender);
|
||||
return true;
|
||||
}
|
||||
|
||||
ItemSettings settings = ScriptItemsAPI.getItemsManager().getItemSettings(args[1]);
|
||||
if (settings == null) {
|
||||
PluginMessages.NOT_EXISTS.send(sender);
|
||||
return true;
|
||||
}
|
||||
|
||||
Player player = (Player) sender;
|
||||
ItemStack item = player.getInventory().getItemInMainHand();
|
||||
if (item.getType() == Material.AIR) {
|
||||
PluginMessages.USE_ITEM.send(sender);
|
||||
return true;
|
||||
}
|
||||
|
||||
ItemStack after = settings.applyItem(item);
|
||||
player.getInventory().setItemInMainHand(after);
|
||||
PluginMessages.APPLIED.send(sender);
|
||||
|
||||
return true;
|
||||
} else if (aim.equalsIgnoreCase("give")) {
|
||||
|
||||
if (args.length < 3) {
|
||||
PluginMessages.USAGE.send(sender);
|
||||
return true;
|
||||
}
|
||||
|
||||
Player player = Bukkit.getPlayer(args[1]);
|
||||
|
||||
if (player == null) {
|
||||
PluginMessages.NOT_ONLINE.send(sender);
|
||||
return true;
|
||||
}
|
||||
|
||||
ItemSettings settings = ScriptItemsAPI.getItemsManager().getItemSettings(args[2]);
|
||||
if (settings == null) {
|
||||
PluginMessages.NOT_EXISTS.send(sender);
|
||||
return true;
|
||||
}
|
||||
|
||||
int amount = 1;
|
||||
if (args.length >= 4) {
|
||||
try {
|
||||
amount = Integer.parseInt(args[3]);
|
||||
} catch (Exception ignored) {
|
||||
amount = -1;
|
||||
}
|
||||
}
|
||||
if (amount < 1) {
|
||||
PluginMessages.WRONG_AMOUNT.send(sender);
|
||||
return true;
|
||||
}
|
||||
|
||||
ItemStack item = settings.generateItem(amount);
|
||||
if (item == null) {
|
||||
PluginMessages.WRONG_ITEM.send(sender);
|
||||
return true;
|
||||
}
|
||||
|
||||
HashMap<Integer, ItemStack> remain = player.getInventory().addItem(item);
|
||||
if (remain.isEmpty()) {
|
||||
PluginMessages.GIVEN_ALL.send(sender, player, item.getAmount(), settings.getName());
|
||||
} else {
|
||||
int remainAmount = remain.values().stream().mapToInt(ItemStack::getAmount).sum();
|
||||
PluginMessages.GIVEN_SOME.send(sender, player, item.getAmount() - remainAmount, settings.getName(), remainAmount);
|
||||
}
|
||||
|
||||
return true;
|
||||
} else {
|
||||
PluginMessages.USAGE.send(sender);
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
PluginMessages.USAGE.send(sender);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command,
|
||||
@NotNull String alias, @NotNull String[] args) {
|
||||
List<String> allCompletes = new ArrayList<>();
|
||||
switch (args.length) {
|
||||
case 1: {
|
||||
allCompletes.add("help");
|
||||
allCompletes.add("give");
|
||||
if (sender instanceof Player) allCompletes.add("apply");
|
||||
allCompletes.add("reload");
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
String aim = args[args.length - 1];
|
||||
if (aim.equalsIgnoreCase("give")) {
|
||||
allCompletes = Bukkit.getOnlinePlayers().stream().map(HumanEntity::getName).collect(Collectors.toList());
|
||||
} else if (aim.equalsIgnoreCase("apply")) {
|
||||
allCompletes = new ArrayList<>(ScriptItemsAPI.getItemsManager().listItemSettings().keySet());
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
String aim = args[args.length - 1];
|
||||
if (aim.equalsIgnoreCase("give")) {
|
||||
allCompletes = new ArrayList<>(ScriptItemsAPI.getItemsManager().listItemSettings().keySet());
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return allCompletes.stream()
|
||||
.filter(s -> StringUtil.startsWithIgnoreCase(s, args[args.length - 1]))
|
||||
.limit(10).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package cc.carm.plugin.commanditem.configuration;
|
||||
package cc.carm.plugin.scriptitems.configuration;
|
||||
|
||||
import cc.carm.lib.easyplugin.configuration.values.ConfigValue;
|
||||
|
@ -0,0 +1,76 @@
|
||||
package cc.carm.plugin.scriptitems.configuration;
|
||||
|
||||
|
||||
import cc.carm.lib.easyplugin.configuration.language.EasyMessageList;
|
||||
import cc.carm.lib.easyplugin.configuration.language.MessagesRoot;
|
||||
|
||||
public class PluginMessages extends MessagesRoot {
|
||||
|
||||
public static final EasyMessageList USAGE = EasyMessageList.builder().contents(
|
||||
"&2&l脚本指令 &f指令帮助",
|
||||
"&8#&f give &a<玩家名> &a<箱子ID> &2[数量]",
|
||||
"&8-&7 给予指定玩家指定数量的物品。",
|
||||
"&8#&f apply &a<箱子ID>",
|
||||
"&8-&7 为手中的物品直接绑定一个配置。",
|
||||
"&8#&f reload",
|
||||
"&8-&7 重载配置文件。"
|
||||
).build();
|
||||
|
||||
|
||||
public final static EasyMessageList COOLDOWN = EasyMessageList.builder()
|
||||
.contents("&f您需要等待 &c%(time)秒 &f才可再次使用该物品。")
|
||||
.params("time").build();
|
||||
|
||||
public final static EasyMessageList ONLY_PLAYER = EasyMessageList.builder()
|
||||
.contents("&c抱歉,只有作为玩家时才能使用该指令。").build();
|
||||
|
||||
public final static EasyMessageList USE_ITEM = EasyMessageList.builder()
|
||||
.contents("&f请手持任意物品后再使用该指令。").build();
|
||||
|
||||
public final static EasyMessageList NOT_ONLINE = EasyMessageList.builder()
|
||||
.contents("&f玩家 &a%(player) &f并不在线。")
|
||||
.params("player").build();
|
||||
|
||||
public final static EasyMessageList NOT_EXISTS = EasyMessageList.builder()
|
||||
.contents("&f脚本配置 &a%(id) &f并不存在。")
|
||||
.params("id").build();
|
||||
|
||||
public final static EasyMessageList WRONG_AMOUNT = EasyMessageList.builder()
|
||||
.contents("&f请输入正确的数量!")
|
||||
.build();
|
||||
|
||||
public final static EasyMessageList WRONG_ITEM = EasyMessageList.builder()
|
||||
.contents("&f该脚本并未成功配置具体物品,请使用 &a/ScriptItems apply &f来绑定到指定物品上,或在配置文件中正确配置物品。")
|
||||
.build();
|
||||
|
||||
public final static EasyMessageList GIVEN_ALL = EasyMessageList.builder()
|
||||
.contents("&f您成功给予 &a%(player) &f了 &a%(amount) &f个 &a%(item) &f。")
|
||||
.params("player", "amount", "item").build();
|
||||
|
||||
public final static EasyMessageList GIVEN_SOME = EasyMessageList.builder().contents(
|
||||
"&f您成功给予 &a%(player) &f了 &a%(amount) &f个 &a%(item) &f。",
|
||||
"&f但由于目标玩家背包已满,仍有 &a%(remain) &f个 &a%(item) &f未成功放入背包。"
|
||||
).params("player", "amount", "item", "remain").build();
|
||||
|
||||
|
||||
public final static EasyMessageList APPLIED = EasyMessageList.builder()
|
||||
.contents("&f已成功为手上物品绑定脚本。").build();
|
||||
|
||||
public static class Restrictions {
|
||||
|
||||
public final static EasyMessageList INVALID = EasyMessageList.builder()
|
||||
.contents("&c&l抱歉!&f由于配置的时间限制错误,该物品目前暂不可用。")
|
||||
.build();
|
||||
|
||||
public final static EasyMessageList NOT_STARTED = EasyMessageList.builder()
|
||||
.contents("&f该物品目前还到可使用的时间,请在 &c%(time) &f后使用~")
|
||||
.params("time")
|
||||
.build();
|
||||
|
||||
public final static EasyMessageList EXPIRED = EasyMessageList.builder()
|
||||
.contents("&c&l抱歉!&f由于该物品已过最后使用期限,故无法继续使用。")
|
||||
.params("time")
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package cc.carm.plugin.commanditem.database;
|
||||
package cc.carm.plugin.scriptitems.database;
|
||||
|
||||
import cc.carm.lib.easyplugin.configuration.values.ConfigValue;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cc.carm.plugin.commanditem.database;
|
||||
package cc.carm.plugin.scriptitems.database;
|
||||
|
||||
import cc.carm.lib.easyplugin.configuration.values.ConfigValue;
|
||||
|
@ -1,9 +1,9 @@
|
||||
package cc.carm.plugin.commanditem.database;
|
||||
package cc.carm.plugin.scriptitems.database;
|
||||
|
||||
import cc.carm.lib.easysql.EasySQL;
|
||||
import cc.carm.lib.easysql.api.SQLManager;
|
||||
import cc.carm.plugin.commanditem.Main;
|
||||
import cc.carm.plugin.commanditem.util.DatabaseTable;
|
||||
import cc.carm.plugin.scriptitems.Main;
|
||||
import cc.carm.plugin.scriptitems.util.DatabaseTable;
|
||||
|
||||
import java.sql.SQLException;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cc.carm.plugin.commanditem.hooker;
|
||||
package cc.carm.plugin.scriptitems.hooker;
|
||||
|
||||
import cc.carm.lib.githubreleases4j.GithubReleases4J;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cc.carm.plugin.commanditem.item;
|
||||
package cc.carm.plugin.scriptitems.item;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
@ -1,4 +1,4 @@
|
||||
package cc.carm.plugin.commanditem.item;
|
||||
package cc.carm.plugin.scriptitems.item;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
@ -1,4 +1,4 @@
|
||||
package cc.carm.plugin.commanditem.item;
|
||||
package cc.carm.plugin.scriptitems.item;
|
||||
|
||||
import cc.carm.lib.easyplugin.utils.MessageUtils;
|
||||
import org.bukkit.Bukkit;
|
@ -1,4 +1,4 @@
|
||||
package cc.carm.plugin.commanditem.item;
|
||||
package cc.carm.plugin.scriptitems.item;
|
||||
|
||||
public enum ItemExecuteResult {
|
||||
|
@ -1,8 +1,8 @@
|
||||
package cc.carm.plugin.commanditem.item;
|
||||
package cc.carm.plugin.scriptitems.item;
|
||||
|
||||
import cc.carm.lib.easyplugin.configuration.language.EasyMessageList;
|
||||
import cc.carm.lib.easysql.api.util.TimeDateUtils;
|
||||
import cc.carm.plugin.commanditem.configuration.PluginMessages;
|
||||
import cc.carm.plugin.scriptitems.configuration.PluginMessages;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
@ -1,8 +1,7 @@
|
||||
package cc.carm.plugin.commanditem.item;
|
||||
package cc.carm.plugin.scriptitems.item;
|
||||
|
||||
import cc.carm.plugin.commanditem.CommandItemAPI;
|
||||
import cc.carm.plugin.commanditem.manager.ConfigManager;
|
||||
import me.saiintbrisson.minecraft.command.argument.TypeAdapter;
|
||||
import cc.carm.plugin.scriptitems.ScriptItemsAPI;
|
||||
import cc.carm.plugin.scriptitems.manager.ConfigManager;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -90,7 +89,7 @@ public class ItemSettings {
|
||||
}
|
||||
|
||||
public @NotNull ItemStack applyItem(ItemStack originalItem) {
|
||||
return CommandItemAPI.getItemsManager().applyTag(originalItem, identifier, UUID.randomUUID());
|
||||
return ScriptItemsAPI.getItemsManager().applyTag(originalItem, identifier, UUID.randomUUID());
|
||||
}
|
||||
|
||||
public static @NotNull ItemSettings load(@NotNull File file) throws Exception {
|
@ -1,4 +1,4 @@
|
||||
package cc.carm.plugin.commanditem.item;
|
||||
package cc.carm.plugin.scriptitems.item;
|
||||
|
||||
import cc.carm.lib.easyplugin.utils.ColorParser;
|
||||
import cc.carm.lib.easyplugin.utils.ItemStackFactory;
|
@ -1,18 +1,18 @@
|
||||
package cc.carm.plugin.commanditem.item;
|
||||
package cc.carm.plugin.scriptitems.item;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class CommandItem {
|
||||
public class ScriptItem {
|
||||
|
||||
@NotNull UUID uuid;
|
||||
|
||||
@NotNull ItemSettings settings;
|
||||
@NotNull ItemStack itemStack;
|
||||
|
||||
public CommandItem(@NotNull UUID uuid, @NotNull ItemSettings settings, @NotNull ItemStack itemStack) {
|
||||
public ScriptItem(@NotNull UUID uuid, @NotNull ItemSettings settings, @NotNull ItemStack itemStack) {
|
||||
this.uuid = uuid;
|
||||
this.settings = settings;
|
||||
this.itemStack = itemStack;
|
@ -1,12 +1,12 @@
|
||||
package cc.carm.plugin.commanditem.listener;
|
||||
package cc.carm.plugin.scriptitems.listener;
|
||||
|
||||
import cc.carm.plugin.commanditem.CommandItemAPI;
|
||||
import cc.carm.plugin.commanditem.configuration.PluginConfig;
|
||||
import cc.carm.plugin.commanditem.configuration.PluginMessages;
|
||||
import cc.carm.plugin.commanditem.item.CommandItem;
|
||||
import cc.carm.plugin.commanditem.item.ItemActionGroup;
|
||||
import cc.carm.plugin.commanditem.item.ItemRestrictions;
|
||||
import cc.carm.plugin.commanditem.item.ItemSettings;
|
||||
import cc.carm.plugin.scriptitems.ScriptItemsAPI;
|
||||
import cc.carm.plugin.scriptitems.configuration.PluginConfig;
|
||||
import cc.carm.plugin.scriptitems.configuration.PluginMessages;
|
||||
import cc.carm.plugin.scriptitems.item.ScriptItem;
|
||||
import cc.carm.plugin.scriptitems.item.ItemActionGroup;
|
||||
import cc.carm.plugin.scriptitems.item.ItemRestrictions;
|
||||
import cc.carm.plugin.scriptitems.item.ItemSettings;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -38,8 +38,8 @@ public class ItemListener implements Listener {
|
||||
if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
|
||||
|
||||
ItemStack item = event.getPlayer().getInventory().getItemInMainHand();
|
||||
CommandItem commandItem = CommandItemAPI.getItemsManager().parseCommandItem(item);
|
||||
if (commandItem == null) return;
|
||||
ScriptItem scriptItem = ScriptItemsAPI.getItemsManager().parseItem(item);
|
||||
if (scriptItem == null) return;
|
||||
event.setCancelled(true); // 阻止事件执行
|
||||
|
||||
Player player = event.getPlayer();
|
||||
@ -49,7 +49,7 @@ public class ItemListener implements Listener {
|
||||
}
|
||||
updateTime(player.getUniqueId());
|
||||
|
||||
ItemSettings settings = commandItem.getSettings();
|
||||
ItemSettings settings = scriptItem.getSettings();
|
||||
|
||||
// 检查物品的相关使用限制是否满足要求
|
||||
ItemRestrictions.CheckResult result = settings.getRestrictions().check();
|
||||
@ -73,7 +73,7 @@ public class ItemListener implements Listener {
|
||||
@EventHandler
|
||||
public void onCraft(CraftItemEvent event) {
|
||||
boolean shouldCancel = Arrays.stream(event.getInventory().getMatrix())
|
||||
.anyMatch(matrix -> CommandItemAPI.getItemsManager().isCommandItem(matrix));
|
||||
.anyMatch(matrix -> ScriptItemsAPI.getItemsManager().isScriptItem(matrix));
|
||||
|
||||
if (shouldCancel) event.setCancelled(true);
|
||||
}
|
||||
@ -88,7 +88,7 @@ public class ItemListener implements Listener {
|
||||
if (event.getEntity().getType() == EntityType.PLAYER) return;
|
||||
|
||||
ItemStack item = event.getItem().getItemStack();
|
||||
if (CommandItemAPI.getItemsManager().isCommandItem(item)) {
|
||||
if (ScriptItemsAPI.getItemsManager().isScriptItem(item)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
@ -103,7 +103,7 @@ public class ItemListener implements Listener {
|
||||
if (event.getEntity().getType() != EntityType.DROPPED_ITEM) return;
|
||||
Item droppedItem = ((org.bukkit.entity.Item) event.getEntity());
|
||||
ItemStack item = droppedItem.getItemStack();
|
||||
if (CommandItemAPI.getItemsManager().isCommandItem(item)) {
|
||||
if (ScriptItemsAPI.getItemsManager().isScriptItem(item)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
@ -1,11 +1,11 @@
|
||||
package cc.carm.plugin.commanditem.manager;
|
||||
package cc.carm.plugin.scriptitems.manager;
|
||||
|
||||
import cc.carm.lib.easyplugin.configuration.file.FileConfig;
|
||||
import cc.carm.lib.easyplugin.configuration.language.MessagesConfig;
|
||||
import cc.carm.lib.easyplugin.configuration.language.MessagesInitializer;
|
||||
import cc.carm.plugin.commanditem.Main;
|
||||
import cc.carm.plugin.commanditem.configuration.PluginMessages;
|
||||
import cc.carm.plugin.scriptitems.configuration.PluginMessages;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@ -17,13 +17,19 @@ import java.util.function.Function;
|
||||
|
||||
public class ConfigManager {
|
||||
|
||||
private static FileConfig config;
|
||||
private static MessagesConfig messageConfig;
|
||||
private final JavaPlugin plugin;
|
||||
|
||||
public static boolean initConfig() {
|
||||
private FileConfig config;
|
||||
private MessagesConfig messageConfig;
|
||||
|
||||
public ConfigManager(JavaPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public boolean initConfig() {
|
||||
try {
|
||||
ConfigManager.config = new FileConfig(Main.getInstance());
|
||||
ConfigManager.messageConfig = new MessagesConfig(Main.getInstance());
|
||||
this.config = new FileConfig(plugin);
|
||||
this.messageConfig = new MessagesConfig(plugin);
|
||||
|
||||
FileConfig.pluginConfiguration = () -> config;
|
||||
FileConfig.messageConfiguration = () -> messageConfig;
|
||||
@ -36,28 +42,22 @@ public class ConfigManager {
|
||||
}
|
||||
}
|
||||
|
||||
public static FileConfig getPluginConfig() {
|
||||
public FileConfig getPluginConfig() {
|
||||
return config;
|
||||
}
|
||||
|
||||
public static FileConfig getMessageConfig() {
|
||||
public FileConfig getMessageConfig() {
|
||||
return messageConfig;
|
||||
}
|
||||
|
||||
public static void reload() {
|
||||
try {
|
||||
getPluginConfig().reload();
|
||||
getMessageConfig().reload();
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
public void reload() throws Exception {
|
||||
getPluginConfig().reload();
|
||||
getMessageConfig().reload();
|
||||
}
|
||||
|
||||
public static void saveConfig() {
|
||||
try {
|
||||
getPluginConfig().save();
|
||||
getMessageConfig().save();
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
public void saveConfig() throws Exception {
|
||||
getPluginConfig().save();
|
||||
getMessageConfig().save();
|
||||
}
|
||||
|
||||
public static <V> Map<String, V> readStringMap(@Nullable ConfigurationSection section,
|
@ -1,9 +1,9 @@
|
||||
package cc.carm.plugin.commanditem.manager;
|
||||
package cc.carm.plugin.scriptitems.manager;
|
||||
|
||||
import cc.carm.plugin.commanditem.Main;
|
||||
import cc.carm.plugin.commanditem.item.CommandItem;
|
||||
import cc.carm.plugin.commanditem.item.ItemSettings;
|
||||
import cc.carm.plugin.commanditem.util.JarResourceUtils;
|
||||
import cc.carm.plugin.scriptitems.Main;
|
||||
import cc.carm.plugin.scriptitems.item.ItemSettings;
|
||||
import cc.carm.plugin.scriptitems.item.ScriptItem;
|
||||
import cc.carm.plugin.scriptitems.util.JarResourceUtils;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
@ -32,7 +32,7 @@ public class ItemsManager {
|
||||
this.idKey = new NamespacedKey(Main.getInstance(), "id");
|
||||
this.uuidKey = new NamespacedKey(Main.getInstance(), "uuid");
|
||||
loadItems();
|
||||
Main.info("成功加载了 " + items.size() + " 个指令物品。");
|
||||
Main.info("成功加载了 " + items.size() + " 个脚本物品。");
|
||||
}
|
||||
|
||||
public void loadItems() {
|
||||
@ -105,7 +105,7 @@ public class ItemsManager {
|
||||
return originalItem;
|
||||
}
|
||||
|
||||
public @Nullable CommandItem parseCommandItem(@Nullable ItemStack item) {
|
||||
public @Nullable ScriptItem parseItem(@Nullable ItemStack item) {
|
||||
if (item == null || item.getType() == Material.AIR) return null;
|
||||
if (!item.hasItemMeta()) return null;
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
@ -116,10 +116,10 @@ public class ItemsManager {
|
||||
if (settingsID == null || itemUUID == null) return null;
|
||||
ItemSettings settings = getItemSettings(settingsID);
|
||||
if (settings == null) return null;
|
||||
return new CommandItem(UUID.fromString(itemUUID), settings, item);
|
||||
return new ScriptItem(UUID.fromString(itemUUID), settings, item);
|
||||
}
|
||||
|
||||
public boolean isCommandItem(ItemStack item) {
|
||||
public boolean isScriptItem(ItemStack item) {
|
||||
return item.hasItemMeta() && item.getItemMeta() != null
|
||||
&& item.getItemMeta().getCustomTagContainer().hasCustomTag(idKey, ItemTagType.STRING);
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package cc.carm.plugin.commanditem.util;
|
||||
package cc.carm.plugin.scriptitems.util;
|
||||
|
||||
import cc.carm.lib.easysql.api.SQLManager;
|
||||
import cc.carm.lib.easysql.api.action.PreparedSQLUpdateAction;
|
@ -1,4 +1,4 @@
|
||||
package cc.carm.plugin.commanditem.util;
|
||||
package cc.carm.plugin.scriptitems.util;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
@ -1,4 +1,5 @@
|
||||
&c ___ _ &4___ _
|
||||
&c / __|___ _ __ _ __ __ _ _ _ __| |&4_ _| |_ ___ _ __
|
||||
&c| (__/ _ \ ' \| ' \/ _` | ' \/ _` |&4| || _/ -_) ' \
|
||||
&c \___\___/_|_|_|_|_|_\__,_|_||_\__,_|&4___|\__\___|_|_|_|
|
||||
&a ____ _ __ &2______
|
||||
&a / __/_______(_)__ / /_&2/ _/ /____ __ _ ___
|
||||
&a _\ \/ __/ __/ / _ \/ __/&2/ // __/ -_) ' \(_-<
|
||||
&a/___/\__/_/ /_/ .__/\__/&2___/\__/\__/_/_/_/___/
|
||||
&a /_/
|
@ -1,5 +1,5 @@
|
||||
main: cc.carm.plugin.commanditem.Main
|
||||
name: CommandItem
|
||||
main: cc.carm.plugin.scriptitems.Main
|
||||
name: ScriptItems
|
||||
|
||||
version: ${project.version}
|
||||
description: ${project.description}
|
||||
@ -11,4 +11,11 @@ authors:
|
||||
softdepend:
|
||||
- PlaceholderAPI
|
||||
|
||||
api-version: 1.13
|
||||
api-version: 1.13
|
||||
|
||||
commands:
|
||||
"ScriptItems":
|
||||
aliases: "sitems"
|
||||
usage: "/ScriptItems help"
|
||||
description: "ScriptItems 的主指令。"
|
||||
permission: "ScriptItems.admin"
|
Loading…
Reference in New Issue
Block a user