9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-19 15:09:15 +00:00

添加简易的迁移指令

This commit is contained in:
XiaoMoMi
2025-06-11 20:28:09 +08:00
parent 6adf7de9a4
commit 2c06db83af
5 changed files with 79 additions and 5 deletions

View File

@@ -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),

View File

@@ -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();
}
}

View File

@@ -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

View File

@@ -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) {

View File

@@ -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