mirror of
https://github.com/CarmJos/ScriptItems
synced 2026-06-04 19:58:48 +08:00
feat: 升级到 1.21,并提供folia支持
This commit is contained in:
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
脚本物品插件,给予玩家可执行对应操作的物品,基于EasyPlugin实现。
|
脚本物品插件,给予玩家可执行对应操作的物品,基于EasyPlugin实现。
|
||||||
|
|
||||||
本插件由 [ArtStyle(艺式)](https://artstyle.wiki/)、[猫窝](https://maowo.moe) 提供开发资助。
|
本插件由 [ArtStyle(艺式)](https://artstyle.wiki/)、[猫窝](https://maowo.moe)、[奥林匹亚](www.mcolympia.site) 提供开发资助。
|
||||||
|
|
||||||
## 插件功能与优势
|
## 插件功能与优势
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
<groupId>cc.carm.plugin</groupId>
|
<groupId>cc.carm.plugin</groupId>
|
||||||
<artifactId>scriptitems</artifactId>
|
<artifactId>scriptitems</artifactId>
|
||||||
<version>1.1.1</version>
|
<version>1.1.2</version>
|
||||||
|
|
||||||
<name>ScriptItems</name>
|
<name>ScriptItems</name>
|
||||||
<description>物品操作绑定插件,给予玩家可执行对应操作的物品,基于EasyPlugin实现。</description>
|
<description>物品操作绑定插件,给予玩家可执行对应操作的物品,基于EasyPlugin实现。</description>
|
||||||
@@ -101,8 +101,8 @@
|
|||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<artifactId>easyplugin-listener</artifactId>
|
<artifactId>easylistener</artifactId>
|
||||||
<version>${deps.easyplugin.version}</version>
|
<version>2.0.1</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
<optional>true</optional>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
@@ -134,7 +134,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.spigotmc</groupId>
|
<groupId>org.spigotmc</groupId>
|
||||||
<artifactId>spigot-api</artifactId>
|
<artifactId>spigot-api</artifactId>
|
||||||
<version>1.19-R0.1-20220725.090125-47</version>
|
<version>1.21.10-R0.1-SNAPSHOT</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package cc.carm.plugin.scriptitems;
|
package cc.carm.plugin.scriptitems;
|
||||||
|
|
||||||
import cc.carm.lib.configuration.core.source.ConfigurationProvider;
|
import cc.carm.lib.configuration.source.ConfigurationHolder;
|
||||||
import cc.carm.lib.easyplugin.EasyPlugin;
|
import cc.carm.lib.easyplugin.EasyPlugin;
|
||||||
import cc.carm.lib.easyplugin.updatechecker.GHUpdateChecker;
|
import cc.carm.lib.easyplugin.updatechecker.GHUpdateChecker;
|
||||||
import cc.carm.lib.mineconfiguration.bukkit.MineConfiguration;
|
import cc.carm.lib.mineconfiguration.bukkit.MineConfiguration;
|
||||||
@@ -21,8 +21,8 @@ public class Main extends EasyPlugin {
|
|||||||
instance = this;
|
instance = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected ConfigurationProvider<?> configProvider;
|
protected ConfigurationHolder<?> configProvider;
|
||||||
protected ConfigurationProvider<?> messageProvider;
|
protected ConfigurationHolder<?> messageProvider;
|
||||||
|
|
||||||
protected ItemsManager itemsManager;
|
protected ItemsManager itemsManager;
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ public class Main extends EasyPlugin {
|
|||||||
this.itemsManager.initialize();
|
this.itemsManager.initialize();
|
||||||
|
|
||||||
info("注册指令...");
|
info("注册指令...");
|
||||||
registerCommand("ScriptItems", new MainCommand(this));
|
registerCommand("ScriptItems".toLowerCase(), new MainCommand(this));
|
||||||
|
|
||||||
info("注册监听器...");
|
info("注册监听器...");
|
||||||
registerListener(new ItemListener());
|
registerListener(new ItemListener());
|
||||||
@@ -92,11 +92,11 @@ public class Main extends EasyPlugin {
|
|||||||
getInstance().debug(messages);
|
getInstance().debug(messages);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConfigurationProvider<?> getConfigProvider() {
|
public ConfigurationHolder<?> getConfigProvider() {
|
||||||
return configProvider;
|
return configProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConfigurationProvider<?> getMessageProvider() {
|
public ConfigurationHolder<?> getMessageProvider() {
|
||||||
return messageProvider;
|
return messageProvider;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,13 +21,13 @@ public class MainCommand extends CommandHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Void noArgs(CommandSender sender) {
|
public Void noArgs(CommandSender sender) {
|
||||||
PluginMessages.USAGE.send(sender);
|
PluginMessages.USAGE.sendTo(sender);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Void noPermission(CommandSender sender) {
|
public Void noPermission(CommandSender sender) {
|
||||||
PluginMessages.NO_PERMISSION.send(sender);
|
PluginMessages.NO_PERMISSION.sendTo(sender);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ public class MainCommand extends CommandHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Void onlyPlay(CommandSender sender) {
|
public Void onlyPlay(CommandSender sender) {
|
||||||
PluginMessages.ONLY_PLAYER.send(sender);
|
PluginMessages.ONLY_PLAYER.sendTo(sender);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,20 +28,20 @@ public class ApplyCommand extends SubCommand<MainCommand> {
|
|||||||
|
|
||||||
ScriptConfiguration settings = ScriptItemsAPI.getItemsManager().getItemSettings(args[0]);
|
ScriptConfiguration settings = ScriptItemsAPI.getItemsManager().getItemSettings(args[0]);
|
||||||
if (settings == null) {
|
if (settings == null) {
|
||||||
PluginMessages.NOT_EXISTS.send(sender, args[1]);
|
PluginMessages.NOT_EXISTS.sendTo(sender, args[1]);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Player player = (Player) sender;
|
Player player = (Player) sender;
|
||||||
ItemStack item = player.getInventory().getItemInMainHand();
|
ItemStack item = player.getInventory().getItemInMainHand();
|
||||||
if (item.getType() == Material.AIR) {
|
if (item.getType() == Material.AIR) {
|
||||||
PluginMessages.USE_ITEM.send(sender);
|
PluginMessages.USE_ITEM.sendTo(sender);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack after = settings.applyItem(item.clone());
|
ItemStack after = settings.applyItem(item.clone());
|
||||||
player.getInventory().setItemInMainHand(after);
|
player.getInventory().setItemInMainHand(after);
|
||||||
PluginMessages.APPLIED.send(sender, item.getType().name(), settings.getName());
|
PluginMessages.APPLIED.sendTo(sender, item.getType().name(), settings.getName());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public class GetCommand extends SubCommand<MainCommand> {
|
|||||||
|
|
||||||
ScriptConfiguration settings = ScriptItemsAPI.getItemsManager().getItemSettings(args[0]);
|
ScriptConfiguration settings = ScriptItemsAPI.getItemsManager().getItemSettings(args[0]);
|
||||||
if (settings == null) {
|
if (settings == null) {
|
||||||
PluginMessages.NOT_EXISTS.send(sender, args[0]);
|
PluginMessages.NOT_EXISTS.sendTo(sender, args[0]);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,22 +44,22 @@ public class GetCommand extends SubCommand<MainCommand> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (amount < 1) {
|
if (amount < 1) {
|
||||||
PluginMessages.WRONG_AMOUNT.send(sender);
|
PluginMessages.WRONG_AMOUNT.sendTo(sender);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack item = settings.generateItem(amount);
|
ItemStack item = settings.generateItem(amount);
|
||||||
if (item == null) {
|
if (item == null) {
|
||||||
PluginMessages.WRONG_ITEM.send(sender);
|
PluginMessages.WRONG_ITEM.sendTo(sender);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
HashMap<Integer, ItemStack> remain = player.getInventory().addItem(item);
|
HashMap<Integer, ItemStack> remain = player.getInventory().addItem(item);
|
||||||
if (remain.isEmpty()) {
|
if (remain.isEmpty()) {
|
||||||
PluginMessages.GIVEN_ALL.send(sender, player.getName(), amount, settings.getName());
|
PluginMessages.GIVEN_ALL.sendTo(sender, player.getName(), amount, settings.getName());
|
||||||
} else {
|
} else {
|
||||||
int remainAmount = remain.values().stream().mapToInt(ItemStack::getAmount).sum();
|
int remainAmount = remain.values().stream().mapToInt(ItemStack::getAmount).sum();
|
||||||
PluginMessages.GIVEN_SOME.send(sender, player.getName(), amount - remainAmount, settings.getName(), remainAmount);
|
PluginMessages.GIVEN_SOME.sendTo(sender, player.getName(), amount - remainAmount, settings.getName(), remainAmount);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -29,13 +29,13 @@ public class GiveCommand extends SubCommand<MainCommand> {
|
|||||||
Player player = Bukkit.getPlayer(args[0]);
|
Player player = Bukkit.getPlayer(args[0]);
|
||||||
|
|
||||||
if (player == null) {
|
if (player == null) {
|
||||||
PluginMessages.NOT_ONLINE.send(sender, args[0]);
|
PluginMessages.NOT_ONLINE.sendTo(sender, args[0]);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
ScriptConfiguration settings = ScriptItemsAPI.getItemsManager().getItemSettings(args[1]);
|
ScriptConfiguration settings = ScriptItemsAPI.getItemsManager().getItemSettings(args[1]);
|
||||||
if (settings == null) {
|
if (settings == null) {
|
||||||
PluginMessages.NOT_EXISTS.send(sender, args[1]);
|
PluginMessages.NOT_EXISTS.sendTo(sender, args[1]);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,22 +49,22 @@ public class GiveCommand extends SubCommand<MainCommand> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (amount < 1) {
|
if (amount < 1) {
|
||||||
PluginMessages.WRONG_AMOUNT.send(sender);
|
PluginMessages.WRONG_AMOUNT.sendTo(sender);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack item = settings.generateItem(amount);
|
ItemStack item = settings.generateItem(amount);
|
||||||
if (item == null) {
|
if (item == null) {
|
||||||
PluginMessages.WRONG_ITEM.send(sender);
|
PluginMessages.WRONG_ITEM.sendTo(sender);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
HashMap<Integer, ItemStack> remain = player.getInventory().addItem(item);
|
HashMap<Integer, ItemStack> remain = player.getInventory().addItem(item);
|
||||||
if (remain.isEmpty()) {
|
if (remain.isEmpty()) {
|
||||||
PluginMessages.GIVEN_ALL.send(sender, player.getName(), amount, settings.getName());
|
PluginMessages.GIVEN_ALL.sendTo(sender, player.getName(), amount, settings.getName());
|
||||||
} else {
|
} else {
|
||||||
int remainAmount = remain.values().stream().mapToInt(ItemStack::getAmount).sum();
|
int remainAmount = remain.values().stream().mapToInt(ItemStack::getAmount).sum();
|
||||||
PluginMessages.GIVEN_SOME.send(sender, player.getName(), amount - remainAmount, settings.getName(), remainAmount);
|
PluginMessages.GIVEN_SOME.sendTo(sender, player.getName(), amount - remainAmount, settings.getName(), remainAmount);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -1,40 +1,41 @@
|
|||||||
package cc.carm.plugin.scriptitems.conf;
|
package cc.carm.plugin.scriptitems.conf;
|
||||||
|
|
||||||
|
|
||||||
import cc.carm.lib.configuration.core.ConfigurationRoot;
|
import cc.carm.lib.configuration.Configuration;
|
||||||
import cc.carm.lib.configuration.core.annotation.HeaderComment;
|
import cc.carm.lib.configuration.annotation.ConfigPath;
|
||||||
import cc.carm.lib.configuration.core.value.ConfigValue;
|
import cc.carm.lib.configuration.annotation.HeaderComments;
|
||||||
import cc.carm.lib.configuration.core.value.type.ConfiguredValue;
|
import cc.carm.lib.configuration.value.standard.ConfiguredValue;
|
||||||
|
|
||||||
public class PluginConfig extends ConfigurationRoot {
|
@ConfigPath(root = true)
|
||||||
|
public interface PluginConfig extends Configuration {
|
||||||
|
|
||||||
public static final ConfigValue<Boolean> DEBUG = ConfiguredValue.of(Boolean.class, false);
|
ConfiguredValue<Boolean> DEBUG = ConfiguredValue.of(Boolean.class, false);
|
||||||
|
|
||||||
@HeaderComment({
|
@HeaderComments({
|
||||||
"统计数据设定",
|
"统计数据设定",
|
||||||
"该选项用于帮助开发者统计插件版本与使用情况,且绝不会影响性能与使用体验。",
|
"该选项用于帮助开发者统计插件版本与使用情况,且绝不会影响性能与使用体验。",
|
||||||
"当然,您也可以选择在这里关闭,或在plugins/bStats下的配置文件中关闭。"
|
"当然,您也可以选择在这里关闭,或在plugins/bStats下的配置文件中关闭。"
|
||||||
})
|
})
|
||||||
public static final ConfigValue<Boolean> METRICS = ConfiguredValue.of(Boolean.class, true);
|
ConfiguredValue<Boolean> METRICS = ConfiguredValue.of(Boolean.class, true);
|
||||||
|
|
||||||
@HeaderComment({
|
@HeaderComments({
|
||||||
"检查更新设定",
|
"检查更新设定",
|
||||||
"该选项用于插件判断是否要检查更新,若您不希望插件检查更新并提示您,可以选择关闭。",
|
"该选项用于插件判断是否要检查更新,若您不希望插件检查更新并提示您,可以选择关闭。",
|
||||||
"检查更新为异步操作,绝不会影响性能与使用体验。"
|
"检查更新为异步操作,绝不会影响性能与使用体验。"
|
||||||
})
|
})
|
||||||
public static final ConfigValue<Boolean> CHECK_UPDATE = ConfiguredValue.of(Boolean.class, true);
|
ConfiguredValue<Boolean> CHECK_UPDATE = ConfiguredValue.of(Boolean.class, true);
|
||||||
|
|
||||||
@HeaderComment({
|
@HeaderComments({
|
||||||
"物品使用冷却,避免短时间重复使用物品,也避免网络延迟而导致物品被错误使用而对玩家造成的损失。",
|
"物品使用冷却,避免短时间重复使用物品,也避免网络延迟而导致物品被错误使用而对玩家造成的损失。",
|
||||||
"强烈建议开启,且建议设置为 2000毫秒 以上。(1s = 1000ms)"
|
"强烈建议开启,且建议设置为 2000毫秒 以上。(1s = 1000ms)"
|
||||||
})
|
})
|
||||||
public static class COOLDOWN extends ConfigurationRoot {
|
interface COOLDOWN extends Configuration {
|
||||||
|
|
||||||
@HeaderComment("是否启用冷却功能")
|
@HeaderComments("是否启用冷却功能")
|
||||||
public static final ConfigValue<Boolean> ENABLE = ConfiguredValue.of(Boolean.class, true);
|
ConfiguredValue<Boolean> ENABLE = ConfiguredValue.of(Boolean.class, true);
|
||||||
|
|
||||||
@HeaderComment("冷却的时长,单位为毫秒 1秒 = 1000毫秒 = 20ticks")
|
@HeaderComments("冷却的时长,单位为毫秒 1秒 = 1000毫秒 = 20ticks")
|
||||||
public static final ConfigValue<Long> DURATION = ConfiguredValue.of(Long.class, 3000L);
|
ConfiguredValue<Long> DURATION = ConfiguredValue.of(Long.class, 3000L);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
package cc.carm.plugin.scriptitems.conf;
|
package cc.carm.plugin.scriptitems.conf;
|
||||||
|
|
||||||
|
|
||||||
import cc.carm.lib.configuration.core.ConfigurationRoot;
|
import cc.carm.lib.configuration.Configuration;
|
||||||
import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredMessageList;
|
import cc.carm.lib.configuration.annotation.ConfigPath;
|
||||||
|
import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredMessage;
|
||||||
|
|
||||||
public class PluginMessages extends ConfigurationRoot {
|
@ConfigPath(root = true)
|
||||||
|
public interface PluginMessages extends Configuration {
|
||||||
|
|
||||||
public static final ConfiguredMessageList<String> USAGE = ConfiguredMessageList.asStrings().defaults(
|
ConfiguredMessage<String> USAGE = ConfiguredMessage.asString().defaults(
|
||||||
"&2&l脚本物品 &f指令帮助",
|
"&2&l脚本物品 &f指令帮助",
|
||||||
"&8#&f give &a<玩家名> &a<脚本ID> &2[数量]",
|
"&8#&f give &a<玩家名> &a<脚本ID> &2[数量]",
|
||||||
"&8-&7 给予指定玩家指定数量的物品。",
|
"&8-&7 给予指定玩家指定数量的物品。",
|
||||||
@@ -18,63 +20,63 @@ public class PluginMessages extends ConfigurationRoot {
|
|||||||
"&8-&7 重载配置文件。"
|
"&8-&7 重载配置文件。"
|
||||||
).build();
|
).build();
|
||||||
|
|
||||||
public static final ConfiguredMessageList<String> NO_PERMISSION = ConfiguredMessageList.asStrings()
|
ConfiguredMessage<String> NO_PERMISSION = ConfiguredMessage.asString()
|
||||||
.defaults("&c&l抱歉!&f但您没有权限使用该命令。")
|
.defaults("&c&l抱歉!&f但您没有权限使用该命令。")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
public final static ConfiguredMessageList<String> COOLDOWN = ConfiguredMessageList.asStrings()
|
ConfiguredMessage<String> COOLDOWN = ConfiguredMessage.asString()
|
||||||
.defaults("&f您需要等待 &a%(time)秒 &f才可再次使用该物品。")
|
.defaults("&f您需要等待 &a%(time)秒 &f才可再次使用该物品。")
|
||||||
.params("time").build();
|
.params("time").build();
|
||||||
|
|
||||||
public final static ConfiguredMessageList<String> ONLY_PLAYER = ConfiguredMessageList.asStrings()
|
ConfiguredMessage<String> ONLY_PLAYER = ConfiguredMessage.asString()
|
||||||
.defaults("&c抱歉,只有作为玩家时才能使用该指令。").build();
|
.defaults("&c抱歉,只有作为玩家时才能使用该指令。").build();
|
||||||
|
|
||||||
public final static ConfiguredMessageList<String> USE_ITEM = ConfiguredMessageList.asStrings()
|
ConfiguredMessage<String> USE_ITEM = ConfiguredMessage.asString()
|
||||||
.defaults("&f请手持任意物品后再使用该指令。").build();
|
.defaults("&f请手持任意物品后再使用该指令。").build();
|
||||||
|
|
||||||
public final static ConfiguredMessageList<String> NOT_ONLINE = ConfiguredMessageList.asStrings()
|
ConfiguredMessage<String> NOT_ONLINE = ConfiguredMessage.asString()
|
||||||
.defaults("&f玩家 &a%(player) &f并不在线。")
|
.defaults("&f玩家 &a%(player) &f并不在线。")
|
||||||
.params("player").build();
|
.params("player").build();
|
||||||
|
|
||||||
public final static ConfiguredMessageList<String> NOT_EXISTS = ConfiguredMessageList.asStrings()
|
ConfiguredMessage<String> NOT_EXISTS = ConfiguredMessage.asString()
|
||||||
.defaults("&f脚本配置 &a%(id) &f并不存在。")
|
.defaults("&f脚本配置 &a%(id) &f并不存在。")
|
||||||
.params("id").build();
|
.params("id").build();
|
||||||
|
|
||||||
public final static ConfiguredMessageList<String> WRONG_AMOUNT = ConfiguredMessageList.asStrings()
|
ConfiguredMessage<String> WRONG_AMOUNT = ConfiguredMessage.asString()
|
||||||
.defaults("&f请输入正确的数量!")
|
.defaults("&f请输入正确的数量!")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
public final static ConfiguredMessageList<String> WRONG_ITEM = ConfiguredMessageList.asStrings()
|
ConfiguredMessage<String> WRONG_ITEM = ConfiguredMessage.asString()
|
||||||
.defaults("&f该脚本并未成功配置具体物品,请使用 &a/ScriptItems apply &f来绑定到指定物品上,或在配置文件中正确配置物品。")
|
.defaults("&f该脚本并未成功配置具体物品,请使用 &a/ScriptItems apply &f来绑定到指定物品上,或在配置文件中正确配置物品。")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
public final static ConfiguredMessageList<String> GIVEN_ALL = ConfiguredMessageList.asStrings()
|
ConfiguredMessage<String> GIVEN_ALL = ConfiguredMessage.asString()
|
||||||
.defaults("&f您成功给予 &2%(player) &f了 &a%(amount) &f个 &a%(name) &f。")
|
.defaults("&f您成功给予 &2%(player) &f了 &a%(amount) &f个 &a%(name) &f。")
|
||||||
.params("player", "amount", "name").build();
|
.params("player", "amount", "name").build();
|
||||||
|
|
||||||
public final static ConfiguredMessageList<String> GIVEN_SOME = ConfiguredMessageList.asStrings()
|
ConfiguredMessage<String> GIVEN_SOME = ConfiguredMessage.asString()
|
||||||
.defaults(
|
.defaults(
|
||||||
"&f您成功给予 &2%(player) &f了 &a%(amount) &f个 &a%(name) &f。",
|
"&f您成功给予 &2%(player) &f了 &a%(amount) &f个 &a%(name) &f。",
|
||||||
"&f但由于目标玩家背包已满,仍有 &a%(remain) &f个 &a%(name) &f未成功放入背包。"
|
"&f但由于目标玩家背包已满,仍有 &a%(remain) &f个 &a%(name) &f未成功放入背包。"
|
||||||
).params("player", "amount", "name", "remain").build();
|
).params("player", "amount", "name", "remain").build();
|
||||||
|
|
||||||
|
|
||||||
public final static ConfiguredMessageList<String> APPLIED = ConfiguredMessageList.asStrings()
|
ConfiguredMessage<String> APPLIED = ConfiguredMessage.asString()
|
||||||
.defaults("&f成功为手上的 &2%(type) &f绑定了脚本 &a%(name) &f。")
|
.defaults("&f成功为手上的 &2%(type) &f绑定了脚本 &a%(name) &f。")
|
||||||
.params("type", "name").build();
|
.params("type", "name").build();
|
||||||
|
|
||||||
public static class RESTRICTIONS extends ConfigurationRoot {
|
interface RESTRICTIONS extends Configuration {
|
||||||
|
|
||||||
public final static ConfiguredMessageList<String> INVALID = ConfiguredMessageList.asStrings()
|
ConfiguredMessage<String> INVALID = ConfiguredMessage.asString()
|
||||||
.defaults("&c&l抱歉!&f由于配置的时间限制错误,该物品目前暂不可用。")
|
.defaults("&c&l抱歉!&f由于配置的时间限制错误,该物品目前暂不可用。")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
public final static ConfiguredMessageList<String> NOT_STARTED = ConfiguredMessageList.asStrings()
|
ConfiguredMessage<String> NOT_STARTED = ConfiguredMessage.asString()
|
||||||
.defaults("&f该物品目前还到可使用的时间,请在 &a%(time) &f后使用~")
|
.defaults("&f该物品目前还到可使用的时间,请在 &a%(time) &f后使用~")
|
||||||
.params("time")
|
.params("time")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
public final static ConfiguredMessageList<String> EXPIRED = ConfiguredMessageList.asStrings()
|
ConfiguredMessage<String> EXPIRED = ConfiguredMessage.asString()
|
||||||
.defaults("&c&l抱歉!&f由于该物品已过最后使用期限,故无法继续使用。")
|
.defaults("&c&l抱歉!&f由于该物品已过最后使用期限,故无法继续使用。")
|
||||||
.params("time")
|
.params("time")
|
||||||
.build();
|
.build();
|
||||||
|
|||||||
@@ -1,33 +1,32 @@
|
|||||||
package cc.carm.plugin.scriptitems.database;
|
package cc.carm.plugin.scriptitems.database;
|
||||||
|
|
||||||
import cc.carm.lib.configuration.core.ConfigurationRoot;
|
import cc.carm.lib.configuration.Configuration;
|
||||||
import cc.carm.lib.configuration.core.annotation.ConfigPath;
|
import cc.carm.lib.configuration.annotation.ConfigPath;
|
||||||
import cc.carm.lib.configuration.core.annotation.HeaderComment;
|
import cc.carm.lib.configuration.annotation.HeaderComments;
|
||||||
import cc.carm.lib.configuration.core.value.ConfigValue;
|
import cc.carm.lib.configuration.value.standard.ConfiguredValue;
|
||||||
import cc.carm.lib.configuration.core.value.type.ConfiguredValue;
|
|
||||||
|
|
||||||
|
|
||||||
@HeaderComment("选择 database (如mysql) 存储方式时的数据库配置")
|
@HeaderComments("选择 database (如mysql) 存储方式时的数据库配置")
|
||||||
@ConfigPath("storage.database")
|
@ConfigPath("storage.database")
|
||||||
public class DatabaseConfig extends ConfigurationRoot {
|
public class DatabaseConfig implements Configuration {
|
||||||
|
|
||||||
@ConfigPath("driver")
|
@ConfigPath("driver")
|
||||||
protected static final ConfigValue<String> DRIVER_NAME = ConfiguredValue.of(
|
protected static final ConfiguredValue<String> DRIVER_NAME = ConfiguredValue.of(
|
||||||
String.class, "com.mysql.jdbc.Driver"
|
String.class, "com.mysql.jdbc.Driver"
|
||||||
);
|
);
|
||||||
|
|
||||||
protected static final ConfigValue<String> HOST = ConfiguredValue.of(String.class, "127.0.0.1");
|
protected static final ConfiguredValue<String> HOST = ConfiguredValue.of(String.class, "127.0.0.1");
|
||||||
protected static final ConfigValue<Integer> PORT = ConfiguredValue.of(Integer.class, 3306);
|
protected static final ConfiguredValue<Integer> PORT = ConfiguredValue.of(Integer.class, 3306);
|
||||||
protected static final ConfigValue<String> DATABASE = ConfiguredValue.of(String.class, "minecraft");
|
protected static final ConfiguredValue<String> DATABASE = ConfiguredValue.of(String.class, "minecraft");
|
||||||
protected static final ConfigValue<String> USERNAME = ConfiguredValue.of(String.class, "root");
|
protected static final ConfiguredValue<String> USERNAME = ConfiguredValue.of(String.class, "root");
|
||||||
protected static final ConfigValue<String> PASSWORD = ConfiguredValue.of(String.class, "password");
|
protected static final ConfiguredValue<String> PASSWORD = ConfiguredValue.of(String.class, "password");
|
||||||
protected static final ConfigValue<String> EXTRA = ConfiguredValue.of(String.class, "?useSSL=false");
|
protected static final ConfiguredValue<String> EXTRA = ConfiguredValue.of(String.class, "?useSSL=false");
|
||||||
|
|
||||||
@HeaderComment("插件相关表的名称")
|
@HeaderComments("插件相关表的名称")
|
||||||
public static final class TABLES extends ConfigurationRoot {
|
public static final class TABLES implements Configuration {
|
||||||
|
|
||||||
public static final ConfigValue<String> TAKEN = ConfiguredValue.of(String.class, "log_item_take");
|
public static final ConfiguredValue<String> TAKEN = ConfiguredValue.of(String.class, "log_item_take");
|
||||||
public static final ConfigValue<String> GIVEN = ConfiguredValue.of(String.class, "log_item_give");
|
public static final ConfiguredValue<String> GIVEN = ConfiguredValue.of(String.class, "log_item_give");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package cc.carm.plugin.scriptitems.database;
|
package cc.carm.plugin.scriptitems.database;
|
||||||
|
|
||||||
import cc.carm.lib.configuration.core.value.ConfigValue;
|
import cc.carm.lib.configuration.value.standard.ConfiguredValue;
|
||||||
import cc.carm.lib.easysql.api.SQLManager;
|
import cc.carm.lib.easysql.api.SQLManager;
|
||||||
import cc.carm.lib.easysql.api.SQLTable;
|
import cc.carm.lib.easysql.api.SQLTable;
|
||||||
import cc.carm.lib.easysql.api.builder.TableCreateBuilder;
|
import cc.carm.lib.easysql.api.builder.TableCreateBuilder;
|
||||||
@@ -66,10 +66,10 @@ public enum DatabaseTables implements SQLTable {
|
|||||||
});
|
});
|
||||||
|
|
||||||
private final Consumer<TableCreateBuilder> builder;
|
private final Consumer<TableCreateBuilder> builder;
|
||||||
private final ConfigValue<String> name;
|
private final ConfiguredValue<String> name;
|
||||||
private @Nullable SQLManager manager;
|
private @Nullable SQLManager manager;
|
||||||
|
|
||||||
DatabaseTables(ConfigValue<String> name,
|
DatabaseTables(ConfiguredValue<String> name,
|
||||||
Consumer<TableCreateBuilder> builder) {
|
Consumer<TableCreateBuilder> builder) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.builder = builder;
|
this.builder = builder;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package cc.carm.plugin.scriptitems.item;
|
package cc.carm.plugin.scriptitems.item;
|
||||||
|
|
||||||
import cc.carm.lib.easysql.api.util.TimeDateUtils;
|
import cc.carm.lib.easysql.api.util.TimeDateUtils;
|
||||||
import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredMessageList;
|
import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredMessage;
|
||||||
import cc.carm.plugin.scriptitems.conf.PluginMessages;
|
import cc.carm.plugin.scriptitems.conf.PluginMessages;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -63,25 +63,25 @@ public class ScriptRestrictions {
|
|||||||
(res) -> new Object[]{TimeDateUtils.getTimeString(res.getEndTime())}
|
(res) -> new Object[]{TimeDateUtils.getTimeString(res.getEndTime())}
|
||||||
);
|
);
|
||||||
|
|
||||||
private final Supplier<@Nullable ConfiguredMessageList<?>> message;
|
private final Supplier<@Nullable ConfiguredMessage<?>> message;
|
||||||
private final Function<@NotNull ScriptRestrictions, Object[]> params;
|
private final Function<@NotNull ScriptRestrictions, Object[]> params;
|
||||||
|
|
||||||
CheckResult(@NotNull Supplier<@Nullable ConfiguredMessageList<?>> message,
|
CheckResult(@NotNull Supplier<@Nullable ConfiguredMessage<?>> message,
|
||||||
@NotNull Function<@NotNull ScriptRestrictions, @Nullable Object[]> params) {
|
@NotNull Function<@NotNull ScriptRestrictions, @Nullable Object[]> params) {
|
||||||
this.message = message;
|
this.message = message;
|
||||||
this.params = params;
|
this.params = params;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Supplier<ConfiguredMessageList<?>> getMessage() {
|
public Supplier<ConfiguredMessage<?>> getMessage() {
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void send(Player player, ScriptRestrictions restrictions) {
|
public void send(Player player, ScriptRestrictions restrictions) {
|
||||||
Object[] params = this.params.apply(restrictions);
|
Object[] params = this.params.apply(restrictions);
|
||||||
if (params == null) {
|
if (params == null) {
|
||||||
getMessage().get().send(player);
|
getMessage().get().sendTo(player);
|
||||||
} else {
|
} else {
|
||||||
getMessage().get().send(player, params);
|
getMessage().get().sendTo(player, params);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public class ItemListener implements Listener {
|
|||||||
|
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
if (cooldown.isCoolingDown(player)) {
|
if (cooldown.isCoolingDown(player)) {
|
||||||
PluginMessages.COOLDOWN.send(player, cooldown.getCooldownSeconds(player));
|
PluginMessages.COOLDOWN.sendTo(player, cooldown.getCooldownSeconds(player));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
cooldown.updateTime(player);
|
cooldown.updateTime(player);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package cc.carm.plugin.scriptitems.listener;
|
package cc.carm.plugin.scriptitems.listener;
|
||||||
|
|
||||||
import cc.carm.lib.easyplugin.listener.EasyListener;
|
import cc.carm.lib.easylistener.EasyListener;
|
||||||
import cc.carm.plugin.scriptitems.ScriptItemsAPI;
|
import cc.carm.plugin.scriptitems.ScriptItemsAPI;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.Item;
|
import org.bukkit.entity.Item;
|
||||||
@@ -36,7 +36,7 @@ public class ProtectListener extends EasyListener {
|
|||||||
|
|
||||||
// 阻止物品被烧掉
|
// 阻止物品被烧掉
|
||||||
handleEvent(EntityDamageEvent.class)
|
handleEvent(EntityDamageEvent.class)
|
||||||
.filter(e -> e.getEntity().getType() == EntityType.DROPPED_ITEM)
|
.filter(e -> e.getEntity() instanceof Item)
|
||||||
.filter(e -> isScriptItem(((Item) e.getEntity()).getItemStack()))
|
.filter(e -> isScriptItem(((Item) e.getEntity()).getItemStack()))
|
||||||
.cancel();
|
.cancel();
|
||||||
|
|
||||||
|
|||||||
@@ -12,11 +12,12 @@ softdepend:
|
|||||||
- PlaceholderAPI
|
- PlaceholderAPI
|
||||||
|
|
||||||
api-version: 1.13
|
api-version: 1.13
|
||||||
|
folia-supported: true
|
||||||
|
|
||||||
commands:
|
commands:
|
||||||
"ScriptItems":
|
"scriptitems":
|
||||||
aliases:
|
aliases:
|
||||||
- sitems
|
- sitems
|
||||||
usage: "/ScriptItems help"
|
usage: "/scriptitems help"
|
||||||
description: "ScriptItems 的主指令。"
|
description: "ScriptItems 的主指令。"
|
||||||
permission: "ScriptItems.admin"
|
permission: "ScriptItems.admin"
|
||||||
Reference in New Issue
Block a user