mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-15 21:31:05 +00:00
cleanup fabric commands
This commit is contained in:
@@ -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,36 +335,38 @@ 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));
|
||||||
List<String> args = parseCommand(context.getInput());
|
|
||||||
System.out.println("Tab completing " + finalI);
|
|
||||||
System.out.println(args);
|
|
||||||
try {
|
|
||||||
manager.tabComplete(args.remove(0), FabricAdapter.adapt(context.getSource()), args).forEach(builder::suggest);
|
|
||||||
} catch(CommandException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return builder.buildFuture();
|
|
||||||
}).executes(context -> {
|
|
||||||
List<String> args = parseCommand(context.getInput());
|
|
||||||
try {
|
|
||||||
manager.execute(args.remove(0), FabricAdapter.adapt(context.getSource()), args);
|
|
||||||
} catch(CommandException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
dispatcher.register(argumentBuilder.then(arg));
|
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());
|
||||||
|
System.out.println(args);
|
||||||
|
try {
|
||||||
|
manager.tabComplete(args.remove(0), FabricAdapter.adapt(context.getSource()), args).forEach(builder::suggest);
|
||||||
|
} catch(CommandException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return builder.buildFuture();
|
||||||
|
}).executes(context -> {
|
||||||
|
List<String> args = parseCommand(context.getInput());
|
||||||
|
try {
|
||||||
|
manager.execute(args.remove(0), FabricAdapter.adapt(context.getSource()), args);
|
||||||
|
} catch(CommandException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private List<String> parseCommand(String command) {
|
private List<String> parseCommand(String command) {
|
||||||
if(command.startsWith("/terra ")) command = command.substring("/terra ".length());
|
if(command.startsWith("/terra ")) command = command.substring("/terra ".length());
|
||||||
else if(command.startsWith("/te ")) command = command.substring("/te ".length());
|
else if(command.startsWith("/te ")) command = command.substring("/te ".length());
|
||||||
|
|||||||
Reference in New Issue
Block a user