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
|
```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)
|
![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
|
```text
|
||||||
# help
|
# help
|
||||||
- 查看插件帮助
|
- 查看插件帮助
|
||||||
|
|
||||||
# give <玩家> <物品ID> <数量>
|
# reload
|
||||||
|
- 重载插件配置文件。
|
||||||
|
|
||||||
|
# give <玩家> <物品ID> [数量(默认为1)]
|
||||||
- 给予指定玩家指定数量的物品。
|
- 给予指定玩家指定数量的物品。
|
||||||
|
|
||||||
# apply <物品ID>
|
# 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>
|
</properties>
|
||||||
|
|
||||||
<groupId>cc.carm.plugin</groupId>
|
<groupId>cc.carm.plugin</groupId>
|
||||||
<artifactId>commanditem</artifactId>
|
<artifactId>scriptitems</artifactId>
|
||||||
<version>0.1.0-SNAPSHOT</version>
|
<version>0.1.0-SNAPSHOT</version>
|
||||||
|
|
||||||
<name>CommandItem</name>
|
<name>ScriptItems</name>
|
||||||
<description>物品指令绑定插件,给予玩家可执行对应指令的消耗物品,基于EasyPlugin实现。</description>
|
<description>物品操作绑定插件,给予玩家可执行对应操作的物品,基于EasyPlugin实现。</description>
|
||||||
<url>https://github.com/CarmJos/CommandItem</url>
|
<url>https://github.com/CarmJos/ScriptItems</url>
|
||||||
|
|
||||||
<issueManagement>
|
<issueManagement>
|
||||||
<system>GitHub Issues</system>
|
<system>GitHub Issues</system>
|
||||||
<url>https://github.com/CarmJos/CommandItem/issues</url>
|
<url>https://github.com/CarmJos/ScriptItems/issues</url>
|
||||||
</issueManagement>
|
</issueManagement>
|
||||||
|
|
||||||
<ciManagement>
|
<ciManagement>
|
||||||
<system>GitHub Actions</system>
|
<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>
|
</ciManagement>
|
||||||
|
|
||||||
<distributionManagement>
|
<distributionManagement>
|
||||||
<downloadUrl>https://github.com/CarmJos/CommandItem/releases</downloadUrl>
|
<downloadUrl>https://github.com/CarmJos/ScriptItems/releases</downloadUrl>
|
||||||
</distributionManagement>
|
</distributionManagement>
|
||||||
|
|
||||||
<developers>
|
<developers>
|
||||||
@ -111,13 +111,6 @@
|
|||||||
<optional>true</optional>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.github.SaiintBrisson.command-framework</groupId>
|
|
||||||
<artifactId>bukkit</artifactId>
|
|
||||||
<version>1.3.0</version>
|
|
||||||
<scope>compile</scope>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.spigotmc</groupId>
|
<groupId>org.spigotmc</groupId>
|
||||||
<artifactId>spigot-api</artifactId>
|
<artifactId>spigot-api</artifactId>
|
||||||
@ -241,15 +234,15 @@
|
|||||||
<relocations>
|
<relocations>
|
||||||
<relocation>
|
<relocation>
|
||||||
<pattern>cc.carm.lib</pattern>
|
<pattern>cc.carm.lib</pattern>
|
||||||
<shadedPattern>cc.carm.plugin.commanditem.lib</shadedPattern>
|
<shadedPattern>cc.carm.plugin.scriptitems.lib</shadedPattern>
|
||||||
</relocation>
|
</relocation>
|
||||||
<relocation>
|
<relocation>
|
||||||
<pattern>org.bstats</pattern>
|
<pattern>org.bstats</pattern>
|
||||||
<shadedPattern>cc.carm.plugin.commanditem.lib.bstats</shadedPattern>
|
<shadedPattern>cc.carm.plugin.scriptitems.lib.bstats</shadedPattern>
|
||||||
</relocation>
|
</relocation>
|
||||||
<relocation>
|
<relocation>
|
||||||
<pattern>org.json</pattern>
|
<pattern>org.json</pattern>
|
||||||
<shadedPattern>cc.carm.plugin.commanditem.lib.json</shadedPattern>
|
<shadedPattern>cc.carm.plugin.scriptitems.lib.json</shadedPattern>
|
||||||
</relocation>
|
</relocation>
|
||||||
</relocations>
|
</relocations>
|
||||||
<filters>
|
<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.EasyPlugin;
|
||||||
import cc.carm.lib.easyplugin.i18n.EasyPluginMessageProvider;
|
import cc.carm.lib.easyplugin.i18n.EasyPluginMessageProvider;
|
||||||
import cc.carm.plugin.commanditem.command.CMDItemsCommand;
|
import cc.carm.plugin.scriptitems.command.ScriptItemsCommand;
|
||||||
import cc.carm.plugin.commanditem.command.ItemSettingsAdapter;
|
import cc.carm.plugin.scriptitems.configuration.PluginConfig;
|
||||||
import cc.carm.plugin.commanditem.command.ItemSettingsCompleter;
|
import cc.carm.plugin.scriptitems.hooker.GHUpdateChecker;
|
||||||
import cc.carm.plugin.commanditem.configuration.PluginConfig;
|
import cc.carm.plugin.scriptitems.listener.ItemListener;
|
||||||
import cc.carm.plugin.commanditem.hooker.GHUpdateChecker;
|
import cc.carm.plugin.scriptitems.manager.ConfigManager;
|
||||||
import cc.carm.plugin.commanditem.item.ItemSettings;
|
import cc.carm.plugin.scriptitems.manager.ItemsManager;
|
||||||
import cc.carm.plugin.commanditem.listener.ItemListener;
|
import cc.carm.plugin.scriptitems.util.JarResourceUtils;
|
||||||
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 org.bstats.bukkit.Metrics;
|
import org.bstats.bukkit.Metrics;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
@ -32,13 +27,15 @@ public class Main extends EasyPlugin {
|
|||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected ConfigManager configManager;
|
||||||
protected ItemsManager itemsManager;
|
protected ItemsManager itemsManager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean initialize() {
|
protected boolean initialize() {
|
||||||
|
|
||||||
info("加载配置文件...");
|
info("加载配置文件...");
|
||||||
if (!ConfigManager.initConfig()) {
|
this.configManager = new ConfigManager(this);
|
||||||
|
if (!configManager.initConfig()) {
|
||||||
severe("配置文件初始化失败,请检查。");
|
severe("配置文件初始化失败,请检查。");
|
||||||
setEnabled(false);
|
setEnabled(false);
|
||||||
return false;
|
return false;
|
||||||
@ -49,18 +46,14 @@ public class Main extends EasyPlugin {
|
|||||||
this.itemsManager.initialize();
|
this.itemsManager.initialize();
|
||||||
|
|
||||||
info("注册指令...");
|
info("注册指令...");
|
||||||
BukkitFrame frame = new BukkitFrame(this);
|
registerCommand("ScriptItems", new ScriptItemsCommand());
|
||||||
frame.setExecutor(new BukkitSchedulerExecutor(this));
|
|
||||||
frame.registerAdapter(ItemSettings.class, new ItemSettingsAdapter());
|
|
||||||
frame.registerCommands(new CMDItemsCommand());
|
|
||||||
frame.registerCompleter("commanditem.apply", new ItemSettingsCompleter());
|
|
||||||
|
|
||||||
info("注册监听器...");
|
info("注册监听器...");
|
||||||
regListener(new ItemListener());
|
regListener(new ItemListener());
|
||||||
|
|
||||||
if (PluginConfig.METRICS.get()) {
|
if (PluginConfig.METRICS.get()) {
|
||||||
info("启用统计数据...");
|
info("启用统计数据...");
|
||||||
new Metrics(this, 14560);
|
new Metrics(this, 14615);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PluginConfig.CHECK_UPDATE.get()) {
|
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;
|
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;
|
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;
|
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.EasySQL;
|
||||||
import cc.carm.lib.easysql.api.SQLManager;
|
import cc.carm.lib.easysql.api.SQLManager;
|
||||||
import cc.carm.plugin.commanditem.Main;
|
import cc.carm.plugin.scriptitems.Main;
|
||||||
import cc.carm.plugin.commanditem.util.DatabaseTable;
|
import cc.carm.plugin.scriptitems.util.DatabaseTable;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
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;
|
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.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.NotNull;
|
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.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.NotNull;
|
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 cc.carm.lib.easyplugin.utils.MessageUtils;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
@ -1,4 +1,4 @@
|
|||||||
package cc.carm.plugin.commanditem.item;
|
package cc.carm.plugin.scriptitems.item;
|
||||||
|
|
||||||
public enum ItemExecuteResult {
|
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.easyplugin.configuration.language.EasyMessageList;
|
||||||
import cc.carm.lib.easysql.api.util.TimeDateUtils;
|
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.configuration.ConfigurationSection;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.NotNull;
|
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.scriptitems.ScriptItemsAPI;
|
||||||
import cc.carm.plugin.commanditem.manager.ConfigManager;
|
import cc.carm.plugin.scriptitems.manager.ConfigManager;
|
||||||
import me.saiintbrisson.minecraft.command.argument.TypeAdapter;
|
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -90,7 +89,7 @@ public class ItemSettings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public @NotNull ItemStack applyItem(ItemStack originalItem) {
|
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 {
|
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.ColorParser;
|
||||||
import cc.carm.lib.easyplugin.utils.ItemStackFactory;
|
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.bukkit.inventory.ItemStack;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class CommandItem {
|
public class ScriptItem {
|
||||||
|
|
||||||
@NotNull UUID uuid;
|
@NotNull UUID uuid;
|
||||||
|
|
||||||
@NotNull ItemSettings settings;
|
@NotNull ItemSettings settings;
|
||||||
@NotNull ItemStack itemStack;
|
@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.uuid = uuid;
|
||||||
this.settings = settings;
|
this.settings = settings;
|
||||||
this.itemStack = itemStack;
|
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.scriptitems.ScriptItemsAPI;
|
||||||
import cc.carm.plugin.commanditem.configuration.PluginConfig;
|
import cc.carm.plugin.scriptitems.configuration.PluginConfig;
|
||||||
import cc.carm.plugin.commanditem.configuration.PluginMessages;
|
import cc.carm.plugin.scriptitems.configuration.PluginMessages;
|
||||||
import cc.carm.plugin.commanditem.item.CommandItem;
|
import cc.carm.plugin.scriptitems.item.ScriptItem;
|
||||||
import cc.carm.plugin.commanditem.item.ItemActionGroup;
|
import cc.carm.plugin.scriptitems.item.ItemActionGroup;
|
||||||
import cc.carm.plugin.commanditem.item.ItemRestrictions;
|
import cc.carm.plugin.scriptitems.item.ItemRestrictions;
|
||||||
import cc.carm.plugin.commanditem.item.ItemSettings;
|
import cc.carm.plugin.scriptitems.item.ItemSettings;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Item;
|
import org.bukkit.entity.Item;
|
||||||
import org.bukkit.entity.Player;
|
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;
|
if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
|
||||||
|
|
||||||
ItemStack item = event.getPlayer().getInventory().getItemInMainHand();
|
ItemStack item = event.getPlayer().getInventory().getItemInMainHand();
|
||||||
CommandItem commandItem = CommandItemAPI.getItemsManager().parseCommandItem(item);
|
ScriptItem scriptItem = ScriptItemsAPI.getItemsManager().parseItem(item);
|
||||||
if (commandItem == null) return;
|
if (scriptItem == null) return;
|
||||||
event.setCancelled(true); // 阻止事件执行
|
event.setCancelled(true); // 阻止事件执行
|
||||||
|
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
@ -49,7 +49,7 @@ public class ItemListener implements Listener {
|
|||||||
}
|
}
|
||||||
updateTime(player.getUniqueId());
|
updateTime(player.getUniqueId());
|
||||||
|
|
||||||
ItemSettings settings = commandItem.getSettings();
|
ItemSettings settings = scriptItem.getSettings();
|
||||||
|
|
||||||
// 检查物品的相关使用限制是否满足要求
|
// 检查物品的相关使用限制是否满足要求
|
||||||
ItemRestrictions.CheckResult result = settings.getRestrictions().check();
|
ItemRestrictions.CheckResult result = settings.getRestrictions().check();
|
||||||
@ -73,7 +73,7 @@ public class ItemListener implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void onCraft(CraftItemEvent event) {
|
public void onCraft(CraftItemEvent event) {
|
||||||
boolean shouldCancel = Arrays.stream(event.getInventory().getMatrix())
|
boolean shouldCancel = Arrays.stream(event.getInventory().getMatrix())
|
||||||
.anyMatch(matrix -> CommandItemAPI.getItemsManager().isCommandItem(matrix));
|
.anyMatch(matrix -> ScriptItemsAPI.getItemsManager().isScriptItem(matrix));
|
||||||
|
|
||||||
if (shouldCancel) event.setCancelled(true);
|
if (shouldCancel) event.setCancelled(true);
|
||||||
}
|
}
|
||||||
@ -88,7 +88,7 @@ public class ItemListener implements Listener {
|
|||||||
if (event.getEntity().getType() == EntityType.PLAYER) return;
|
if (event.getEntity().getType() == EntityType.PLAYER) return;
|
||||||
|
|
||||||
ItemStack item = event.getItem().getItemStack();
|
ItemStack item = event.getItem().getItemStack();
|
||||||
if (CommandItemAPI.getItemsManager().isCommandItem(item)) {
|
if (ScriptItemsAPI.getItemsManager().isScriptItem(item)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -103,7 +103,7 @@ public class ItemListener implements Listener {
|
|||||||
if (event.getEntity().getType() != EntityType.DROPPED_ITEM) return;
|
if (event.getEntity().getType() != EntityType.DROPPED_ITEM) return;
|
||||||
Item droppedItem = ((org.bukkit.entity.Item) event.getEntity());
|
Item droppedItem = ((org.bukkit.entity.Item) event.getEntity());
|
||||||
ItemStack item = droppedItem.getItemStack();
|
ItemStack item = droppedItem.getItemStack();
|
||||||
if (CommandItemAPI.getItemsManager().isCommandItem(item)) {
|
if (ScriptItemsAPI.getItemsManager().isScriptItem(item)) {
|
||||||
event.setCancelled(true);
|
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.file.FileConfig;
|
||||||
import cc.carm.lib.easyplugin.configuration.language.MessagesConfig;
|
import cc.carm.lib.easyplugin.configuration.language.MessagesConfig;
|
||||||
import cc.carm.lib.easyplugin.configuration.language.MessagesInitializer;
|
import cc.carm.lib.easyplugin.configuration.language.MessagesInitializer;
|
||||||
import cc.carm.plugin.commanditem.Main;
|
import cc.carm.plugin.scriptitems.configuration.PluginMessages;
|
||||||
import cc.carm.plugin.commanditem.configuration.PluginMessages;
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
@ -17,13 +17,19 @@ import java.util.function.Function;
|
|||||||
|
|
||||||
public class ConfigManager {
|
public class ConfigManager {
|
||||||
|
|
||||||
private static FileConfig config;
|
private final JavaPlugin plugin;
|
||||||
private static MessagesConfig messageConfig;
|
|
||||||
|
|
||||||
public static boolean initConfig() {
|
private FileConfig config;
|
||||||
|
private MessagesConfig messageConfig;
|
||||||
|
|
||||||
|
public ConfigManager(JavaPlugin plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean initConfig() {
|
||||||
try {
|
try {
|
||||||
ConfigManager.config = new FileConfig(Main.getInstance());
|
this.config = new FileConfig(plugin);
|
||||||
ConfigManager.messageConfig = new MessagesConfig(Main.getInstance());
|
this.messageConfig = new MessagesConfig(plugin);
|
||||||
|
|
||||||
FileConfig.pluginConfiguration = () -> config;
|
FileConfig.pluginConfiguration = () -> config;
|
||||||
FileConfig.messageConfiguration = () -> messageConfig;
|
FileConfig.messageConfiguration = () -> messageConfig;
|
||||||
@ -36,28 +42,22 @@ public class ConfigManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static FileConfig getPluginConfig() {
|
public FileConfig getPluginConfig() {
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static FileConfig getMessageConfig() {
|
public FileConfig getMessageConfig() {
|
||||||
return messageConfig;
|
return messageConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void reload() {
|
public void reload() throws Exception {
|
||||||
try {
|
|
||||||
getPluginConfig().reload();
|
getPluginConfig().reload();
|
||||||
getMessageConfig().reload();
|
getMessageConfig().reload();
|
||||||
} catch (Exception ignored) {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void saveConfig() {
|
public void saveConfig() throws Exception {
|
||||||
try {
|
|
||||||
getPluginConfig().save();
|
getPluginConfig().save();
|
||||||
getMessageConfig().save();
|
getMessageConfig().save();
|
||||||
} catch (Exception ignored) {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <V> Map<String, V> readStringMap(@Nullable ConfigurationSection section,
|
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.scriptitems.Main;
|
||||||
import cc.carm.plugin.commanditem.item.CommandItem;
|
import cc.carm.plugin.scriptitems.item.ItemSettings;
|
||||||
import cc.carm.plugin.commanditem.item.ItemSettings;
|
import cc.carm.plugin.scriptitems.item.ScriptItem;
|
||||||
import cc.carm.plugin.commanditem.util.JarResourceUtils;
|
import cc.carm.plugin.scriptitems.util.JarResourceUtils;
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.NamespacedKey;
|
import org.bukkit.NamespacedKey;
|
||||||
@ -32,7 +32,7 @@ public class ItemsManager {
|
|||||||
this.idKey = new NamespacedKey(Main.getInstance(), "id");
|
this.idKey = new NamespacedKey(Main.getInstance(), "id");
|
||||||
this.uuidKey = new NamespacedKey(Main.getInstance(), "uuid");
|
this.uuidKey = new NamespacedKey(Main.getInstance(), "uuid");
|
||||||
loadItems();
|
loadItems();
|
||||||
Main.info("成功加载了 " + items.size() + " 个指令物品。");
|
Main.info("成功加载了 " + items.size() + " 个脚本物品。");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadItems() {
|
public void loadItems() {
|
||||||
@ -105,7 +105,7 @@ public class ItemsManager {
|
|||||||
return originalItem;
|
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 == null || item.getType() == Material.AIR) return null;
|
||||||
if (!item.hasItemMeta()) return null;
|
if (!item.hasItemMeta()) return null;
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
@ -116,10 +116,10 @@ public class ItemsManager {
|
|||||||
if (settingsID == null || itemUUID == null) return null;
|
if (settingsID == null || itemUUID == null) return null;
|
||||||
ItemSettings settings = getItemSettings(settingsID);
|
ItemSettings settings = getItemSettings(settingsID);
|
||||||
if (settings == null) return null;
|
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
|
return item.hasItemMeta() && item.getItemMeta() != null
|
||||||
&& item.getItemMeta().getCustomTagContainer().hasCustomTag(idKey, ItemTagType.STRING);
|
&& 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.SQLManager;
|
||||||
import cc.carm.lib.easysql.api.action.PreparedSQLUpdateAction;
|
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;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
@ -1,4 +1,5 @@
|
|||||||
&c ___ _ &4___ _
|
&a ____ _ __ &2______
|
||||||
&c / __|___ _ __ _ __ __ _ _ _ __| |&4_ _| |_ ___ _ __
|
&a / __/_______(_)__ / /_&2/ _/ /____ __ _ ___
|
||||||
&c| (__/ _ \ ' \| ' \/ _` | ' \/ _` |&4| || _/ -_) ' \
|
&a _\ \/ __/ __/ / _ \/ __/&2/ // __/ -_) ' \(_-<
|
||||||
&c \___\___/_|_|_|_|_|_\__,_|_||_\__,_|&4___|\__\___|_|_|_|
|
&a/___/\__/_/ /_/ .__/\__/&2___/\__/\__/_/_/_/___/
|
||||||
|
&a /_/
|
@ -1,5 +1,5 @@
|
|||||||
main: cc.carm.plugin.commanditem.Main
|
main: cc.carm.plugin.scriptitems.Main
|
||||||
name: CommandItem
|
name: ScriptItems
|
||||||
|
|
||||||
version: ${project.version}
|
version: ${project.version}
|
||||||
description: ${project.description}
|
description: ${project.description}
|
||||||
@ -12,3 +12,10 @@ softdepend:
|
|||||||
- PlaceholderAPI
|
- 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