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 DebugSpawnFurnitureCommand(this, plugin),
new DebugTargetBlockCommand(this, plugin), new DebugTargetBlockCommand(this, plugin),
new DebugIsSectionInjectedCommand(this, plugin), new DebugIsSectionInjectedCommand(this, plugin),
new DebugMigrateTemplatesCommand(this, plugin),
new DebugEntityId2UUIDCommand(this, plugin), new DebugEntityId2UUIDCommand(this, plugin),
new TotemAnimationCommand(this, plugin), new TotemAnimationCommand(this, plugin),
new EnableResourceCommand(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 - /craftengine debug entity-id-to-uuid
- /ce 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: debug_test:
enable: true enable: true
permission: ce.command.debug.test permission: ce.command.debug.test

View File

@@ -153,6 +153,11 @@ public class ItemSettings {
return this; return this;
} }
public ItemSettings craftRemainder(Key key) {
this.craftRemainder = key;
return this;
}
public ItemSettings canRepair(boolean canRepair) { public ItemSettings canRepair(boolean canRepair) {
this.canRepair = canRepair; this.canRepair = canRepair;
return this; return this;
@@ -246,6 +251,10 @@ public class ItemSettings {
if (value == null) settings.consumeReplacement(null); if (value == null) settings.consumeReplacement(null);
else settings.consumeReplacement(Key.of(value.toString())); 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 -> { registerFactory("tags", (value -> {
List<String> tags = MiscUtils.getAsStringList(value); List<String> tags = MiscUtils.getAsStringList(value);
return settings -> settings.tags(tags.stream().map(Key::of).collect(Collectors.toSet())); return settings -> settings.tags(tags.stream().map(Key::of).collect(Collectors.toSet()));
@@ -298,9 +307,6 @@ public class ItemSettings {
); );
return settings -> settings.foodData(data); return settings -> settings.foodData(data);
})); }));
// registerFactory("craft-remainder", (value -> {
//
// }));
} }
private static void registerFactory(String id, ItemSettings.Modifier.Factory factory) { private static void registerFactory(String id, ItemSettings.Modifier.Factory factory) {

View File

@@ -3,8 +3,8 @@ org.gradle.jvmargs=-Xmx1G
# Project settings # Project settings
# Rule: [major update].[feature update].[bug fix] # Rule: [major update].[feature update].[bug fix]
project_version=0.0.56.6 project_version=0.0.56.6
config_version=36 config_version=37
lang_version=15 lang_version=16
project_group=net.momirealms project_group=net.momirealms
latest_supported_version=1.21.5 latest_supported_version=1.21.5