mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-19 15:09:15 +00:00
添加简易的迁移指令
This commit is contained in:
@@ -48,6 +48,7 @@ public class BukkitCommandManager extends AbstractCommandManager<CommandSender>
|
||||
new DebugSpawnFurnitureCommand(this, plugin),
|
||||
new DebugTargetBlockCommand(this, plugin),
|
||||
new DebugIsSectionInjectedCommand(this, plugin),
|
||||
new DebugMigrateTemplatesCommand(this, plugin),
|
||||
new DebugEntityId2UUIDCommand(this, plugin),
|
||||
new TotemAnimationCommand(this, plugin),
|
||||
new EnableResourceCommand(this, plugin),
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
package net.momirealms.craftengine.bukkit.plugin.command.feature;
|
||||
|
||||
import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
|
||||
import net.momirealms.craftengine.bukkit.plugin.command.BukkitCommandFeature;
|
||||
import net.momirealms.craftengine.core.pack.Pack;
|
||||
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
||||
import net.momirealms.craftengine.core.plugin.command.CraftEngineCommandManager;
|
||||
import net.momirealms.craftengine.core.util.FileUtils;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.incendo.cloud.Command;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class DebugMigrateTemplatesCommand extends BukkitCommandFeature<CommandSender> {
|
||||
private static final Pattern PATTERN = Pattern.compile("(?<!\\$)\\{([^}]+)}");
|
||||
|
||||
public DebugMigrateTemplatesCommand(CraftEngineCommandManager<CommandSender> commandManager, CraftEngine plugin) {
|
||||
super(commandManager, plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Command.Builder<? extends CommandSender> assembleCommand(org.incendo.cloud.CommandManager<CommandSender> manager, Command.Builder<CommandSender> builder) {
|
||||
return builder
|
||||
.handler(context -> {
|
||||
for (Pack pack : BukkitCraftEngine.instance().packManager().loadedPacks()) {
|
||||
for (Path file : FileUtils.getYmlConfigsDeeply(pack.configurationFolder())) {
|
||||
try {
|
||||
Files.writeString(file, replacePlaceholders(Files.readString(file)));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
context.sender().sendMessage("Done");
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFeatureID() {
|
||||
return "debug_migrate_templates";
|
||||
}
|
||||
|
||||
private static String replacePlaceholders(String input) {
|
||||
if (input == null) {
|
||||
return null;
|
||||
}
|
||||
Matcher matcher = PATTERN.matcher(input);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
while (matcher.find()) {
|
||||
// 将 {xxx} 替换为 ${xxx}
|
||||
matcher.appendReplacement(sb, "\\${" + matcher.group(1) + "}");
|
||||
}
|
||||
matcher.appendTail(sb);
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
@@ -189,6 +189,13 @@ debug_entity_id_to_uuid:
|
||||
- /craftengine debug entity-id-to-uuid
|
||||
- /ce debug entity-id-to-uuid
|
||||
|
||||
debug_migrate_templates:
|
||||
enable: true
|
||||
permission: ce.command.debug.migrate_templates
|
||||
usage:
|
||||
- /craftengine debug migrate-templates
|
||||
- /ce debug migrate-templates
|
||||
|
||||
debug_test:
|
||||
enable: true
|
||||
permission: ce.command.debug.test
|
||||
|
||||
@@ -153,6 +153,11 @@ public class ItemSettings {
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemSettings craftRemainder(Key key) {
|
||||
this.craftRemainder = key;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemSettings canRepair(boolean canRepair) {
|
||||
this.canRepair = canRepair;
|
||||
return this;
|
||||
@@ -246,6 +251,10 @@ public class ItemSettings {
|
||||
if (value == null) settings.consumeReplacement(null);
|
||||
else settings.consumeReplacement(Key.of(value.toString()));
|
||||
}));
|
||||
registerFactory("craft-remainder", (value -> settings -> {
|
||||
if (value == null) settings.craftRemainder(null);
|
||||
else settings.craftRemainder(Key.of(value.toString()));
|
||||
}));
|
||||
registerFactory("tags", (value -> {
|
||||
List<String> tags = MiscUtils.getAsStringList(value);
|
||||
return settings -> settings.tags(tags.stream().map(Key::of).collect(Collectors.toSet()));
|
||||
@@ -298,9 +307,6 @@ public class ItemSettings {
|
||||
);
|
||||
return settings -> settings.foodData(data);
|
||||
}));
|
||||
// registerFactory("craft-remainder", (value -> {
|
||||
//
|
||||
// }));
|
||||
}
|
||||
|
||||
private static void registerFactory(String id, ItemSettings.Modifier.Factory factory) {
|
||||
|
||||
@@ -3,8 +3,8 @@ org.gradle.jvmargs=-Xmx1G
|
||||
# Project settings
|
||||
# Rule: [major update].[feature update].[bug fix]
|
||||
project_version=0.0.56.6
|
||||
config_version=36
|
||||
lang_version=15
|
||||
config_version=37
|
||||
lang_version=16
|
||||
project_group=net.momirealms
|
||||
latest_supported_version=1.21.5
|
||||
|
||||
|
||||
Reference in New Issue
Block a user