lazy rule fetching

This commit is contained in:
gnembon committed 2019-06-28 23:30:25 -03:00
1 parent 276e2d3769
commit 022f84b469
2 files changed
+31 -24

No files matched your search

@@ -8,7 +8,9 @@ import carpet.utils.Messenger;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.mojang.brigadier.exceptions.SimpleCommandExceptionType;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.text.BaseText;
@@ -23,6 +25,14 @@ import static net.minecraft.server.command.CommandSource.suggestMatching;
public class CarpetCommand
{
private static ParsedRule<?> getRule(CommandContext<ServerCommandSource> ctx) throws CommandSyntaxException
{
String ruleName = StringArgumentType.getString(ctx, "rule");
ParsedRule<?> rule = SettingsManager.getRule(ruleName);
if (rule == null)
throw new SimpleCommandExceptionType(Messenger.c("rb Unknown rule: "+ruleName)).create();
return rule;
}
public static void register(CommandDispatcher<ServerCommandSource> dispatcher)
{
LiteralArgumentBuilder<ServerCommandSource> literalargumentbuilder = literal("carpet").requires((player) ->
@@ -41,30 +51,27 @@ public class CarpetCommand
suggests( (c, b)->suggestMatching(SettingsManager.getCategories(), b)).
executes( (c) -> listSettings(c.getSource(),
String.format("CarpetMod Settings matching \"%s\"", StringArgumentType.getString(c, "tag")),
CarpetServer.settingsManager.getRulesMatching(StringArgumentType.getString(c, "tag"))))));
CarpetServer.settingsManager.getRulesMatching(StringArgumentType.getString(c, "tag")))))).
then(literal("removeDefault").
requires(s -> !CarpetServer.settingsManager.locked).
then(argument("rule", StringArgumentType.word()).
suggests( (c, b) -> suggestMatching(SettingsManager.getRules().stream().map(r -> r.name), b)).
executes((c) -> removeDefault(c.getSource(), getRule(c))))).
then(literal("setDefault").
requires(s -> !CarpetServer.settingsManager.locked).
then(argument("rule", StringArgumentType.word()).
suggests( (c, b) -> suggestMatching(SettingsManager.getRules().stream().map(r -> r.name), b)).
then(argument("value", StringArgumentType.word()).
suggests((c, b)-> suggestMatching(getRule(c).options, b)).
executes((c) -> setDefault(c.getSource(), getRule(c), StringArgumentType.getString(c, "value")))))).
then(argument("rule", StringArgumentType.word()).
suggests( (c, b) -> suggestMatching(SettingsManager.getRules().stream().map(r -> r.name), b)).
requires(s -> !CarpetServer.settingsManager.locked ).
executes( (c) -> displayRuleMenu(c.getSource(),getRule(c))).
then(argument("value", StringArgumentType.word()).
suggests((c, b)-> suggestMatching(getRule(c).options,b)).
executes((c) -> setRule(c.getSource(), getRule(c), StringArgumentType.getString(c, "value")))));
for (ParsedRule<?> rule: SettingsManager.getRules())
{
literalargumentbuilder.then(literal(rule.name).executes( (context) ->
displayRuleMenu(context.getSource(),rule)));
literalargumentbuilder.then(literal("removeDefault").
requires(s -> !CarpetServer.settingsManager.locked).
then(literal(rule.name).executes((context) ->
removeDefault(context.getSource(), rule))));
literalargumentbuilder.then(literal(rule.name).
requires(s -> !CarpetServer.settingsManager.locked).
then(argument("value", StringArgumentType.word()).
suggests((c, b)-> suggestMatching(rule.options,b)).
executes((context) ->
setRule(context.getSource(), rule, StringArgumentType.getString(context, "value")))));
literalargumentbuilder.then(literal("setDefault").
requires(s -> !CarpetServer.settingsManager.locked).
then(literal(rule.name).
then(argument("value", StringArgumentType.word()).
suggests((c, b)-> suggestMatching(rule.options,b)).
executes((context) ->
setDefault(context.getSource(), rule, StringArgumentType.getString(context, "value"))))));
}
dispatcher.register(literalargumentbuilder);
}
@@ -71,7 +71,7 @@ public class SettingsManager
}
public ParsedRule getRule(String name)
public static ParsedRule<?> getRule(String name)
{
return rules.get(name);
}