2025-11-24 22:52:51 +03:00

53 lines
1.9 KiB
Java

/*
* Decompiled with CFR 0.152.
*
* Could not load the following classes:
* com.mojang.brigadier.StringReader
* com.mojang.brigadier.exceptions.CommandSyntaxException
* org.jspecify.annotations.Nullable
*/
package net.minecraft.util.parsing.packrat.commands;
import com.mojang.brigadier.StringReader;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import net.minecraft.util.parsing.packrat.DelayedException;
import net.minecraft.util.parsing.packrat.ParseState;
import net.minecraft.util.parsing.packrat.Rule;
import org.jspecify.annotations.Nullable;
public abstract class NumberRunParseRule
implements Rule<StringReader, String> {
private final DelayedException<CommandSyntaxException> noValueError;
private final DelayedException<CommandSyntaxException> underscoreNotAllowedError;
public NumberRunParseRule(DelayedException<CommandSyntaxException> noValueError, DelayedException<CommandSyntaxException> underscoreNotAllowedError) {
this.noValueError = noValueError;
this.underscoreNotAllowedError = underscoreNotAllowedError;
}
@Override
public @Nullable String parse(ParseState<StringReader> state) {
int start;
int pos;
StringReader input = state.input();
input.skipWhitespace();
String fullString = input.getString();
for (pos = start = input.getCursor(); pos < fullString.length() && this.isAccepted(fullString.charAt(pos)); ++pos) {
}
int length = pos - start;
if (length == 0) {
state.errorCollector().store(state.mark(), this.noValueError);
return null;
}
if (fullString.charAt(start) == '_' || fullString.charAt(pos - 1) == '_') {
state.errorCollector().store(state.mark(), this.underscoreNotAllowedError);
return null;
}
input.setCursor(pos);
return fullString.substring(start, pos);
}
protected abstract boolean isAccepted(char var1);
}