53 lines
1.9 KiB
Java
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);
|
|
}
|
|
|