/* * 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 { private final DelayedException noValueError; private final DelayedException underscoreNotAllowedError; public NumberRunParseRule(DelayedException noValueError, DelayedException underscoreNotAllowedError) { this.noValueError = noValueError; this.underscoreNotAllowedError = underscoreNotAllowedError; } @Override public @Nullable String parse(ParseState 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); }