Migrate the Carpet codebase to Mojang Mappings

This commit is contained in:
altrisi committed 2022-01-24 20:33:16 +01:00
1 parent a1a2488bc3
commit 06af9ce8b1
346 files changed
+8353 -8492

No files matched your search

@@ -2,8 +2,6 @@ package carpet.settings;
import carpet.utils.Translations;
import carpet.utils.Messenger;
import net.minecraft.server.command.ServerCommandSource;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.util.ArrayList;
@@ -11,7 +9,7 @@ import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;
import net.minecraft.commands.CommandSourceStack;
import org.apache.commons.lang3.ClassUtils;
import static carpet.utils.Translations.tr;
@@ -120,7 +118,7 @@ public final class ParsedRule<T> implements Comparable<ParsedRule> {
}
}
public ParsedRule<T> set(ServerCommandSource source, String value)
public ParsedRule<T> set(CommandSourceStack source, String value)
{
if (settingsManager != null && settingsManager.locked)
return null;
@@ -152,7 +150,7 @@ public final class ParsedRule<T> implements Comparable<ParsedRule> {
}
}
ParsedRule<T> set(ServerCommandSource source, T value, String stringValue)
ParsedRule<T> set(CommandSourceStack source, T value, String stringValue)
{
try
{
@@ -230,7 +228,7 @@ public final class ParsedRule<T> implements Comparable<ParsedRule> {
/**
* Resets this rule to its default value
*/
public void resetToDefault(ServerCommandSource source)
public void resetToDefault(CommandSourceStack source)
{
set(source, defaultValue, defaultAsString);
}
@@ -17,14 +17,14 @@ import com.mojang.brigadier.suggestion.Suggestions;
import com.mojang.brigadier.suggestion.SuggestionsBuilder;
import net.fabricmc.api.EnvType;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.command.CommandSource;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.network.chat.BaseComponent;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.ServerTask;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.BaseText;
import net.minecraft.util.WorldSavePath;
import net.minecraft.server.TickTask;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.storage.LevelResource;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.logging.log4j.util.TriConsumer;
@@ -54,9 +54,9 @@ import java.util.stream.Stream;
import static carpet.utils.Translations.tr;
import static carpet.script.CarpetEventServer.Event.CARPET_RULE_CHANGES;
import static net.minecraft.command.CommandSource.suggestMatching;
import static net.minecraft.server.command.CommandManager.argument;
import static net.minecraft.server.command.CommandManager.literal;
import static net.minecraft.commands.SharedSuggestionProvider.suggest;
import static net.minecraft.commands.Commands.argument;
import static net.minecraft.commands.Commands.literal;
/**
* Manages and parses Carpet rules with their own command.
@@ -76,8 +76,8 @@ public class SettingsManager
private final String identifier;
private final String fancyName;
private MinecraftServer server;
private List<TriConsumer<ServerCommandSource, ParsedRule<?>, String>> observers = new ArrayList<>();
private static List<TriConsumer<ServerCommandSource, ParsedRule<?>, String>> staticObservers = new ArrayList<>();
private List<TriConsumer<CommandSourceStack, ParsedRule<?>, String>> observers = new ArrayList<>();
private static List<TriConsumer<CommandSourceStack, ParsedRule<?>, String>> staticObservers = new ArrayList<>();
static record ConfigReadResult(Map<String, String> ruleMap, boolean locked) {}
/**
@@ -174,11 +174,11 @@ public class SettingsManager
* @see SettingsManager#addGlobalRuleObserver(TriConsumer)
*
* @param observer A {@link TriConsumer} that will be called with
* the used {@link ServerCommandSource}, the changed
* the used {@link CommandSourceStack}, the changed
* {@link ParsedRule} and a {@link String} being the
* value that the user typed.
*/
public void addRuleObserver(TriConsumer<ServerCommandSource, ParsedRule<?>, String> observer)
public void addRuleObserver(TriConsumer<CommandSourceStack, ParsedRule<?>, String> observer)
{
observers.add(observer);
}
@@ -189,17 +189,17 @@ public class SettingsManager
* @see SettingsManager#addRuleObserver(TriConsumer)
*
* @param observer A {@link TriConsumer} that will be called with
* the used {@link ServerCommandSource}, the changed
* the used {@link CommandSourceStack}, the changed
* {@link ParsedRule} and a {@link String} being the
* value that the user typed.
*/
public static void addGlobalRuleObserver(TriConsumer<ServerCommandSource, ParsedRule<?>, String> observer)
public static void addGlobalRuleObserver(TriConsumer<CommandSourceStack, ParsedRule<?>, String> observer)
{
staticObservers.add(observer);
}
void notifyRuleChanged(ServerCommandSource source, ParsedRule<?> rule, String userTypedValue)
void notifyRuleChanged(CommandSourceStack source, ParsedRule<?> rule, String userTypedValue)
{
observers.forEach(observer -> observer.accept(source, rule, userTypedValue));
staticObservers.forEach(observer -> observer.accept(source, rule, userTypedValue));
@@ -208,7 +208,7 @@ public class SettingsManager
if (CARPET_RULE_CHANGES.isNeeded()) CARPET_RULE_CHANGES.onCarpetRuleChanges(rule, source);
}
private void switchScarpetRuleIfNeeded(ServerCommandSource source, ParsedRule<?> rule)
private void switchScarpetRuleIfNeeded(CommandSourceStack source, ParsedRule<?> rule)
{
if (!rule.scarpetApp.isEmpty())
{
@@ -229,7 +229,7 @@ public class SettingsManager
for (ParsedRule<?> rule : rules.values())
{
if (!rule.scarpetApp.isEmpty()) {
switchScarpetRuleIfNeeded(server.getCommandSource(), rule);
switchScarpetRuleIfNeeded(server.createCommandSourceStack(), rule);
}
}
}
@@ -287,7 +287,7 @@ public class SettingsManager
private Path getFile()
{
return server.getSavePath(WorldSavePath.ROOT).resolve(identifier+".conf");
return server.getWorldPath(LevelResource.ROOT).resolve(identifier+".conf");
}
/**
@@ -301,9 +301,9 @@ public class SettingsManager
if (!rule.categories.contains(RuleCategory.COMMAND))
continue;
if (rule.type == boolean.class)
((ParsedRule<Boolean>) rule).set(server.getCommandSource(), false, "false");
((ParsedRule<Boolean>) rule).set(server.createCommandSourceStack(), false, "false");
if (rule.type == String.class && rule.options.contains("false"))
((ParsedRule<String>) rule).set(server.getCommandSource(), "false", "false");
((ParsedRule<String>) rule).set(server.createCommandSourceStack(), "false", "false");
}
}
@@ -332,15 +332,15 @@ public class SettingsManager
*/
public void notifyPlayersCommandsChanged()
{
if (server == null || server.getPlayerManager() == null)
if (server == null || server.getPlayerList() == null)
{
return;
}
server.send(new ServerTask(this.server.getTicks(), () ->
server.tell(new TickTask(this.server.getTickCount(), () ->
{
try {
for (ServerPlayerEntity entityplayermp : server.getPlayerManager().getPlayerList()) {
server.getCommandManager().sendCommandTree(entityplayermp);
for (ServerPlayer entityplayermp : server.getPlayerList().getPlayers()) {
server.getCommands().sendCommands(entityplayermp);
}
}
catch (NullPointerException ignored) {}
@@ -348,15 +348,15 @@ public class SettingsManager
}
/**
* Returns whether the the {@link ServerCommandSource} can execute
* Returns whether the the {@link CommandSourceStack} can execute
* a command given the required permission level, according to
* Carpet's standard for permissions.
* @param source The origin {@link ServerCommandSource}
* @param source The origin {@link CommandSourceStack}
* @param commandLevel A {@link String} being the permission level (either 0-4, a
* {@link boolean} value or "ops".
* @return Whether or not the {@link ServerCommandSource} meets the required level
* @return Whether or not the {@link CommandSourceStack} meets the required level
*/
public static boolean canUseCommand(ServerCommandSource source, Object commandLevel)
public static boolean canUseCommand(CommandSourceStack source, Object commandLevel)
{
if (commandLevel instanceof Boolean) return (Boolean) commandLevel;
String commandLevelString = commandLevel.toString();
@@ -364,13 +364,13 @@ public class SettingsManager
{
case "true": return true;
case "false": return false;
case "ops": return source.hasPermissionLevel(2); // typical for other cheaty commands
case "ops": return source.hasPermission(2); // typical for other cheaty commands
case "0":
case "1":
case "2":
case "3":
case "4":
return source.hasPermissionLevel(Integer.parseInt(commandLevelString));
return source.hasPermission(Integer.parseInt(commandLevelString));
}
return false;
}
@@ -401,7 +401,7 @@ public class SettingsManager
private void loadConfigurationFromConf()
{
for (ParsedRule<?> rule : rules.values()) rule.resetToDefault(server.getCommandSource());
for (ParsedRule<?> rule : rules.values()) rule.resetToDefault(server.createCommandSourceStack());
ConfigReadResult conf = readSettingsFromConf(getFile());
locked = false;
if (conf.locked())
@@ -413,7 +413,7 @@ public class SettingsManager
{
try
{
if (rules.get(key).set(server.getCommandSource(), conf.ruleMap().get(key)) != null)
if (rules.get(key).set(server.createCommandSourceStack(), conf.ruleMap().get(key)) != null)
CarpetSettings.LOG.info("[CM]: loaded setting " + key + " as " + conf.ruleMap().get(key) + " from " + identifier + ".conf");
}
catch (Exception exc)
@@ -541,7 +541,7 @@ public class SettingsManager
}
private ParsedRule<?> contextRule(CommandContext<ServerCommandSource> ctx) throws CommandSyntaxException
private ParsedRule<?> contextRule(CommandContext<CommandSourceStack> ctx) throws CommandSyntaxException
{
String ruleName = StringArgumentType.getString(ctx, "rule");
ParsedRule<?> rule = getRule(ruleName);
@@ -564,7 +564,7 @@ public class SettingsManager
smartSuggestionList.add(listItem);
}
// Regular prefix matching, reference: CommandSource.suggestMatching
if (CommandSource.shouldSuggest(query, listItem.toLowerCase(Locale.ROOT))) {
if (SharedSuggestionProvider.matchesSubStr(query, listItem.toLowerCase(Locale.ROOT))) {
regularSuggestionList.add(listItem);
}
});
@@ -579,7 +579,7 @@ public class SettingsManager
* It is handled automatically by Carpet.
* @param dispatcher The current {@link CommandDispatcher}
*/
public void registerCommand(CommandDispatcher<ServerCommandSource> dispatcher)
public void registerCommand(CommandDispatcher<CommandSourceStack> dispatcher)
{
if (dispatcher.getRoot().getChildren().stream().anyMatch(node -> node.getName().equalsIgnoreCase(identifier)))
{
@@ -587,7 +587,7 @@ public class SettingsManager
return;
}
LiteralArgumentBuilder<ServerCommandSource> literalargumentbuilder = literal(identifier).requires((player) ->
LiteralArgumentBuilder<CommandSourceStack> literalargumentbuilder = literal(identifier).requires((player) ->
canUseCommand(player, CarpetSettings.carpetCommandPermissionLevel) && !locked);
literalargumentbuilder.executes((context)-> listAllSettings(context.getSource())).
@@ -599,7 +599,7 @@ public class SettingsManager
String.format(tr("ui.current_%(mod)s_startup_settings_from_%(conf)s","Current %s Startup Settings from %s"), fancyName, (identifier+".conf")),
findStartupOverrides()))).
then(argument("tag",StringArgumentType.word()).
suggests( (c, b)->suggestMatching(getCategories(), b)).
suggests( (c, b)->suggest(getCategories(), b)).
executes( (c) -> listSettings(c.getSource(),
String.format(tr("ui.%(mod)s_settings_matching_'%(query)s'","%s Settings matching \"%s\""), fancyName, tr("category." + StringArgumentType.getString(c, "tag"),StringArgumentType.getString(c, "tag"))),
getRulesMatching(StringArgumentType.getString(c, "tag")))))).
@@ -613,22 +613,22 @@ public class SettingsManager
then(argument("rule", StringArgumentType.word()).
suggests( (c, b) -> suggestMatchingContains(getRules().stream().map(r -> r.name), b)).
then(argument("value", StringArgumentType.greedyString()).
suggests((c, b)-> suggestMatching(contextRule(c).options, b)).
suggests((c, b)-> suggest(contextRule(c).options, b)).
executes((c) -> setDefault(c.getSource(), contextRule(c), StringArgumentType.getString(c, "value")))))).
then(argument("rule", StringArgumentType.word()).
suggests( (c, b) -> suggestMatchingContains(getRules().stream().map(r -> r.name), b)).
requires(s -> !locked ).
executes( (c) -> displayRuleMenu(c.getSource(), contextRule(c))).
then(argument("value", StringArgumentType.greedyString()).
suggests((c, b)-> suggestMatching(contextRule(c).options,b)).
suggests((c, b)-> suggest(contextRule(c).options,b)).
executes((c) -> setRule(c.getSource(), contextRule(c), StringArgumentType.getString(c, "value")))));
dispatcher.register(literalargumentbuilder);
}
private int displayRuleMenu(ServerCommandSource source, ParsedRule<?> rule)
private int displayRuleMenu(CommandSourceStack source, ParsedRule<?> rule)
{
PlayerEntity player;
Player player;
String displayName = rule.translatedName();
Messenger.m(source, "");
@@ -637,7 +637,7 @@ public class SettingsManager
rule.translatedExtras().forEach(s -> Messenger.m(source, "g "+s));
List<BaseText> tags = new ArrayList<>();
List<BaseComponent> tags = new ArrayList<>();
tags.add(Messenger.c("w "+ tr("ui.tags", "Tags")+": "));
for (String t: rule.categories)
{
@@ -649,7 +649,7 @@ public class SettingsManager
Messenger.m(source, tags.toArray(new Object[0]));
Messenger.m(source, "w "+ tr("ui.current_value", "Current value")+": ",String.format("%s %s (%s value)",rule.getBoolValue()?"lb":"nb", rule.getAsString(),rule.isDefault()?"default":"modified"));
List<BaseText> options = new ArrayList<>();
List<BaseComponent> options = new ArrayList<>();
options.add(Messenger.c("w Options: ", "y [ "));
for (String o: rule.options)
{
@@ -663,7 +663,7 @@ public class SettingsManager
return 1;
}
private int setRule(ServerCommandSource source, ParsedRule<?> rule, String newValue)
private int setRule(CommandSourceStack source, ParsedRule<?> rule, String newValue)
{
if (rule.set(source, newValue) != null)
Messenger.m(source, "w "+rule.toString()+", ", "c ["+ tr("ui.change_permanently","change permanently")+"?]",
@@ -673,7 +673,7 @@ public class SettingsManager
}
// stores different defaults in the file
private int setDefault(ServerCommandSource source, ParsedRule<?> rule, String stringValue)
private int setDefault(CommandSourceStack source, ParsedRule<?> rule, String stringValue)
{
if (locked) return 0;
if (!rules.containsKey(rule.name)) return 0;
@@ -686,7 +686,7 @@ public class SettingsManager
return 1;
}
// removes overrides of the default values in the file
private int removeDefault(ServerCommandSource source, ParsedRule<?> rule)
private int removeDefault(CommandSourceStack source, ParsedRule<?> rule)
{
if (locked) return 0;
if (!rules.containsKey(rule.name)) return 0;
@@ -698,7 +698,7 @@ public class SettingsManager
return 1;
}
private BaseText displayInteractiveSetting(ParsedRule<?> rule)
private BaseComponent displayInteractiveSetting(ParsedRule<?> rule)
{
String displayName = rule.translatedName();
List<Object> args = new ArrayList<>();
@@ -719,7 +719,7 @@ public class SettingsManager
return Messenger.c(args.toArray(new Object[0]));
}
private BaseText makeSetRuleButton(ParsedRule<?> rule, String option, boolean brackets)
private BaseComponent makeSetRuleButton(ParsedRule<?> rule, String option, boolean brackets)
{
String style = rule.isDefault()?"g":(option.equalsIgnoreCase(rule.defaultAsString)?"e":"y");
if (option.equalsIgnoreCase(rule.getAsString()))
@@ -736,14 +736,14 @@ public class SettingsManager
return Messenger.c(baseText, "^g "+ tr("ui.switch_to","Switch to") +" " + option+(option.equalsIgnoreCase(rule.defaultAsString)?" (default)":""), "?/"+identifier+" " + rule.name + " " + option);
}
private int listSettings(ServerCommandSource source, String title, Collection<ParsedRule<?>> settings_list)
private int listSettings(CommandSourceStack source, String title, Collection<ParsedRule<?>> settings_list)
{
Messenger.m(source,String.format("wb %s:",title));
settings_list.forEach(e -> Messenger.m(source,displayInteractiveSetting(e)));
return settings_list.size();
}
private int listAllSettings(ServerCommandSource source)
private int listAllSettings(CommandSourceStack source)
{
int count = listSettings(source, String.format(tr("ui.current_%(mod)s_settings","Current %s Settings"), fancyName), getNonDefault());
@@ -768,7 +768,7 @@ public class SettingsManager
return count;
}
public void inspectClientsideCommand(ServerCommandSource source, String string)
public void inspectClientsideCommand(CommandSourceStack source, String string)
{
if (string.startsWith("/"+identifier+" "))
{
+12 -13
View File
@@ -2,11 +2,10 @@ package carpet.settings;
import carpet.CarpetServer;
import carpet.utils.Messenger;
import net.minecraft.server.command.ServerCommandSource;
import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;
import net.minecraft.commands.CommandSourceStack;
public abstract class Validator<T>
{
@@ -14,9 +13,9 @@ public abstract class Validator<T>
* Validate the new value of a rule
* @return true if valid, false if new rule invalid.
*/
public abstract T validate(ServerCommandSource source, ParsedRule<T> currentRule, T newValue, String string);
public abstract T validate(CommandSourceStack source, ParsedRule<T> currentRule, T newValue, String string);
public String description() {return null;}
public void notifyFailure(ServerCommandSource source, ParsedRule<T> currentRule, String providedValue)
public void notifyFailure(CommandSourceStack source, ParsedRule<T> currentRule, String providedValue)
{
Messenger.m(source, "r Wrong value for " + currentRule.name + ": " + providedValue);
}
@@ -24,7 +23,7 @@ public abstract class Validator<T>
public static class _COMMAND<T> extends Validator<T>
{
@Override
public T validate(ServerCommandSource source, ParsedRule<T> currentRule, T newValue, String string)
public T validate(CommandSourceStack source, ParsedRule<T> currentRule, T newValue, String string)
{
if (CarpetServer.settingsManager != null && source != null)
CarpetServer.settingsManager.notifyPlayersCommandsChanged();
@@ -37,7 +36,7 @@ public abstract class Validator<T>
public static class _CLIENT<T> extends Validator<T>
{
@Override
public T validate(ServerCommandSource source, ParsedRule<T> currentRule, T newValue, String string)
public T validate(CommandSourceStack source, ParsedRule<T> currentRule, T newValue, String string)
{
return newValue;
}
@@ -49,7 +48,7 @@ public abstract class Validator<T>
public static class _COMMAND_LEVEL_VALIDATOR extends Validator<String> {
private static List<String> OPTIONS = List.of("true", "false", "ops", "0", "1", "2", "3", "4");
@Override public String validate(ServerCommandSource source, ParsedRule<String> currentRule, String newValue, String userString) {
@Override public String validate(CommandSourceStack source, ParsedRule<String> currentRule, String newValue, String userString) {
if (!OPTIONS.contains(userString.toLowerCase(Locale.ROOT)))
{
Messenger.m(source, "r Valid options for command type rules is 'true' or 'false'");
@@ -64,7 +63,7 @@ public abstract class Validator<T>
public static class _SCARPET<T> extends Validator<T> {
@Override
public T validate(ServerCommandSource source, ParsedRule<T> currentRule, T newValue, String string)
public T validate(CommandSourceStack source, ParsedRule<T> currentRule, T newValue, String string)
{
return newValue;
}
@@ -76,7 +75,7 @@ public abstract class Validator<T>
public static class WIP<T> extends Validator<T>
{
@Override
public T validate(ServerCommandSource source, ParsedRule<T> currentRule, T newValue, String string)
public T validate(CommandSourceStack source, ParsedRule<T> currentRule, T newValue, String string)
{
Messenger.m(source, "r "+currentRule.name+" is missing a few bits - we are still working on it.");
return newValue;
@@ -87,7 +86,7 @@ public abstract class Validator<T>
public static class _STRICT<T> extends Validator<T>
{
@Override
public T validate(ServerCommandSource source, ParsedRule<T> currentRule, T newValue, String string)
public T validate(CommandSourceStack source, ParsedRule<T> currentRule, T newValue, String string)
{
if (!currentRule.options.contains(string))
{
@@ -101,7 +100,7 @@ public abstract class Validator<T>
public static class _STRICT_IGNORECASE<T> extends Validator<T>
{
@Override
public T validate(ServerCommandSource source, ParsedRule<T> currentRule, T newValue, String string)
public T validate(CommandSourceStack source, ParsedRule<T> currentRule, T newValue, String string)
{
if (!currentRule.options.stream().map(s->s.toLowerCase(Locale.ROOT)).collect(Collectors.toSet())
.contains(string.toLowerCase(Locale.ROOT)))
@@ -116,7 +115,7 @@ public abstract class Validator<T>
public static class NONNEGATIVE_NUMBER <T extends Number> extends Validator<T>
{
@Override
public T validate(ServerCommandSource source, ParsedRule<T> currentRule, T newValue, String string)
public T validate(CommandSourceStack source, ParsedRule<T> currentRule, T newValue, String string)
{
return newValue.doubleValue() >= 0 ? newValue : null;
}
@@ -127,7 +126,7 @@ public abstract class Validator<T>
public static class PROBABILITY <T extends Number> extends Validator<T>
{
@Override
public T validate(ServerCommandSource source, ParsedRule<T> currentRule, T newValue, String string)
public T validate(CommandSourceStack source, ParsedRule<T> currentRule, T newValue, String string)
{
return (newValue.doubleValue() >= 0 && newValue.doubleValue() <= 1 )? newValue : null;
}