cleanup fabric commands

This commit is contained in:
dfsek
2021-03-09 03:15:43 -07:00
parent 0f39d64d72
commit fac4cb43a8
3 changed files with 55 additions and 31 deletions
@@ -8,5 +8,6 @@ public final class CommandUtil {
public static void registerAll(CommandManager manager) throws MalformedCommandException { public static void registerAll(CommandManager manager) throws MalformedCommandException {
manager.register("structure", StructureCommand.class); manager.register("structure", StructureCommand.class);
manager.register("profile", ProfileCommand.class); manager.register("profile", ProfileCommand.class);
manager.register("reload", ReloadCommand.class);
} }
} }
@@ -1,13 +1,23 @@
package com.dfsek.terra.commands; package com.dfsek.terra.commands;
import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.command.CommandTemplate; import com.dfsek.terra.api.command.CommandTemplate;
import com.dfsek.terra.api.command.annotation.Command; import com.dfsek.terra.api.command.annotation.Command;
import com.dfsek.terra.api.injection.annotations.Inject;
import com.dfsek.terra.api.platform.CommandSender; import com.dfsek.terra.api.platform.CommandSender;
import com.dfsek.terra.config.lang.LangUtil;
@Command() @Command()
public class ReloadCommand implements CommandTemplate { public class ReloadCommand implements CommandTemplate {
@Inject
private TerraPlugin main;
@Override @Override
public void execute(CommandSender sender) { public void execute(CommandSender sender) {
if(!main.reload()) {
LangUtil.send("command.reload-error", sender);
} else {
LangUtil.send("command.reload", sender);
}
} }
} }
@@ -126,11 +126,11 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
private final CheckedRegistry<ConfigPack> checkedRegistry = new CheckedRegistry<>(registry); private final CheckedRegistry<ConfigPack> checkedRegistry = new CheckedRegistry<>(registry);
private final AddonRegistry addonRegistry = new AddonRegistry(new FabricAddon(this), this); private final AddonRegistry addonRegistry = new AddonRegistry(new FabricAddon(this), this);
private final LockedRegistry<TerraAddon> addonLockedRegistry = new LockedRegistry<>(addonRegistry); private final LockedRegistry<TerraAddon> addonLockedRegistry = new LockedRegistry<>(addonRegistry);
private final PluginConfig plugin = new PluginConfig(); private final PluginConfig config = new PluginConfig();
private final Transformer<String, Biome> biomeFixer = new Transformer.Builder<String, Biome>() private final Transformer<String, Biome> biomeFixer = new Transformer.Builder<String, Biome>()
.addTransform(id -> BuiltinRegistries.BIOME.get(Identifier.tryParse(id)), new NotNullValidator<>()) .addTransform(id -> BuiltinRegistries.BIOME.get(Identifier.tryParse(id)), new NotNullValidator<>())
.addTransform(id -> BuiltinRegistries.BIOME.get(Identifier.tryParse("minecraft:" + id.toLowerCase())), new NotNullValidator<>()).build(); .addTransform(id -> BuiltinRegistries.BIOME.get(Identifier.tryParse("minecraft:" + id.toLowerCase())), new NotNullValidator<>()).build();
private File config; private File dataFolder;
public static TerraFabricPlugin getInstance() { public static TerraFabricPlugin getInstance() {
return instance; return instance;
@@ -161,12 +161,12 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
@Override @Override
public PluginConfig getTerraConfig() { public PluginConfig getTerraConfig() {
return plugin; return config;
} }
@Override @Override
public File getDataFolder() { public File getDataFolder() {
return config; return dataFolder;
} }
@Override @Override
@@ -191,7 +191,18 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
@Override @Override
public boolean reload() { public boolean reload() {
return true; config.load(this);
LangUtil.load(config.getLanguage(), this); // Load language.
boolean succeed = registry.loadAll(this);
Map<Long, TerraWorld> newMap = new HashMap<>();
worldMap.forEach((seed, tw) -> {
tw.getConfig().getSamplerCache().clear();
String packID = tw.getConfig().getTemplate().getID();
newMap.put(seed, new TerraWorld(tw.getWorld(), registry.get(packID), this));
});
worldMap.clear();
worldMap.putAll(newMap);
return succeed;
} }
@Override @Override
@@ -266,10 +277,10 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
public void onInitialize() { public void onInitialize() {
instance = this; instance = this;
this.config = new File(FabricLoader.getInstance().getConfigDir().toFile(), "Terra"); this.dataFolder = new File(FabricLoader.getInstance().getConfigDir().toFile(), "Terra");
saveDefaultConfig(); saveDefaultConfig();
plugin.load(this); config.load(this);
LangUtil.load(plugin.getLanguage(), this); LangUtil.load(config.getLanguage(), this);
logger.info("Initializing Terra..."); logger.info("Initializing Terra...");
if(!addonRegistry.loadAll()) { if(!addonRegistry.loadAll()) {
@@ -324,12 +335,19 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
RequiredArgumentBuilder<ServerCommandSource, String> arg = RequiredArgumentBuilder.argument("arg0", StringArgumentType.string()); RequiredArgumentBuilder<ServerCommandSource, String> arg = RequiredArgumentBuilder.argument("arg0", StringArgumentType.string());
for(int i = 0; i < max; i++) { for(int i = 0; i < max; i++) {
System.out.println("arg " + i); System.out.println("arg " + i);
int finalI = i;
RequiredArgumentBuilder<ServerCommandSource, String> next = RequiredArgumentBuilder.argument("arg" + i, StringArgumentType.string()); RequiredArgumentBuilder<ServerCommandSource, String> next = RequiredArgumentBuilder.argument("arg" + i, StringArgumentType.string());
arg = arg.then(next.suggests((context, builder) -> { arg = arg.then(assemble(next, manager));
}
dispatcher.register(argumentBuilder.then(assemble(arg, manager)));
}
);
}
private RequiredArgumentBuilder<ServerCommandSource, String> assemble(RequiredArgumentBuilder<ServerCommandSource, String> in, CommandManager manager) {
return in.suggests((context, builder) -> {
List<String> args = parseCommand(context.getInput()); List<String> args = parseCommand(context.getInput());
System.out.println("Tab completing " + finalI);
System.out.println(args); System.out.println(args);
try { try {
manager.tabComplete(args.remove(0), FabricAdapter.adapt(context.getSource()), args).forEach(builder::suggest); manager.tabComplete(args.remove(0), FabricAdapter.adapt(context.getSource()), args).forEach(builder::suggest);
@@ -346,12 +364,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
return -1; return -1;
} }
return 1; return 1;
})); });
}
dispatcher.register(argumentBuilder.then(arg));
}
);
} }
private List<String> parseCommand(String command) { private List<String> parseCommand(String command) {