public ReadResults ByName(out ObjectiveCriterion result) { int start = StringReader.GetCursor(); while (!StringReader.AtEndOfArgument()) { StringReader.Skip(); } string criterion = StringReader.GetString()[start..StringReader.GetCursor()];
public static ReadResults TryRead(IStringReader stringReader, out ResourceLocation result) { int start = stringReader.GetCursor(); while (stringReader.CanRead() && IsAllowedInResourceLocation(stringReader.Peek())) { stringReader.Skip(); } string input = stringReader.GetString()[start..stringReader.GetCursor()];
public ReadResults Parse(IStringReader reader, DispatcherResources resources, out StructureRotation result) { result = default; int start = reader.GetCursor(); while (reader.CanRead() && IsUnquotedStringPart(reader.Peek())) { reader.Skip(); } string structureRotation = reader.GetString()[start..reader.GetCursor()];
public ReadResults Parse(IStringReader reader, DispatcherResources resources, out Operation result) { result = default; int start = reader.GetCursor(); while (!reader.AtEndOfArgument()) { reader.Skip(); } string operation = reader.GetString()[start..reader.GetCursor()];
public IEnumerable <Node> GetRelevantNodes(IStringReader reader) { if (Literals.Count > 0) { int start = reader.GetCursor(); while (!reader.AtEndOfArgument()) { reader.Skip(); } string value = reader.GetString()[start..reader.GetCursor()];
public static DiffRange Parse(IStringReader reader) { var range = new DiffRange(); reader.Skip("@@"); reader.SkipWhitespace(); reader.Skip('-'); range.LeftFrom = reader.ReadInt(); if (reader.Skip(',')) { range.LeftTo = range.LeftFrom + reader.ReadInt(); } else { range.LeftTo = range.LeftFrom; } reader.SkipWhitespace(); reader.Skip('+'); range.RightFrom = reader.ReadInt(); if (reader.Skip(',')) { range.RightTo = range.RightFrom + reader.ReadInt(); } else { range.RightTo = range.RightFrom; } reader.SkipWhitespace(); reader.Skip("@@"); return(range); }
public ReadResults Parse(out EntitySelector result) { result = default; ReadResults readResults; if (Reader.CanRead() && Reader.Peek() == '@') { Reader.Skip(); readResults = ParseSelector(); } else { readResults = ParseNameOrUuid(); } if (readResults.Successful) { result = GetSelector(); } return(readResults); }
private ReadResults ReadTag(out bool isTag) { isTag = false; if (StringReader.CanRead() && StringReader.Peek() == '#') { if (!ForTesting) { return(ReadResults.Failure(CommandError.ItemTagsNotAllowed().WithContext(StringReader))); } isTag = true; StringReader.Skip(); } return(ReadResults.Success()); }
private ReadResults ReadArrayTag(out INbtTag result) { result = default; ReadResults readResults = Reader.Expect('['); if (!readResults.Successful) { return(readResults); } int start = Reader.GetCursor(); char type = Reader.Read(); Reader.Skip(); Reader.SkipWhitespace(); if (!Reader.CanRead()) { return(ReadResults.Failure(CommandError.ExpectedValue().WithContext(Reader))); } INbtCollectionTag list; switch (type) { case 'B': list = new ByteArrayNbtTag(); break; case 'I': list = new IntegerArrayNbtTag(); break; case 'L': list = new LongArrayNbtTag(); break; default: Reader.SetCursor(start); return(ReadResults.Failure(CommandError.InvalidArrayType(type).WithContext(Reader))); } readResults = ReadListContents(ref list); if (readResults.Successful) { result = list; } return(readResults); }
private static ReadResults SetExecutor(EntitySelectorParser parser, IStringReader reader, bool negated, string originalName, int previousStart, DispatcherResources resources, bool useBedrock) { if (parser.IsTypeLimited()) { reader.SetCursor(previousStart); return(ReadResults.Failure(CommandError.InapplicableOption(originalName).WithContext(reader))); } int start = reader.GetCursor(); bool isTag = false; if (reader.CanRead() && reader.Peek() == '#') { reader.Skip(); isTag = true; } ReadResults readResults = ResourceLocation.TryRead(reader, out ResourceLocation entity); if (!readResults.Successful) { return(readResults); } if (ResourceLocation.PLAYER_ENTITY.Equals(entity) && !negated) { parser.SetIncludesEntities(false); } else if (useBedrock) { // Temporary return(ReadResults.Success()); } else if (!isTag) { if (!resources.Entities.Contains(entity)) { reader.SetCursor(start); return(ReadResults.Failure(CommandError.InvalidEntityType(entity).WithContext(reader))); } } parser.AddArgument(new ParsedArgument <Entity>(new Entity(entity, isTag), false)); return(ReadResults.Success()); }
public ReadResults ParseInteger(out ICoordinates result) { result = default; WorldCoordinateParser worldCoordinateParser = new WorldCoordinateParser(StringReader, UseBedrock); ReadResults readResults = worldCoordinateParser.ReadInteger(out WorldCoordinate x); if (!readResults.Successful) { return(readResults); } if (UseBedrock) { StringReader.SkipWhitespace(); } else { if (!StringReader.AtEndOfArgument()) { StringReader.SetCursor(Start); return(ReadResults.Failure(CommandError.Vec3CoordinatesIncomplete().WithContext(StringReader))); } StringReader.Skip(); } readResults = worldCoordinateParser.ReadInteger(out WorldCoordinate y); if (!readResults.Successful) { return(readResults); } if (UseBedrock) { StringReader.SkipWhitespace(); } else { if (!StringReader.AtEndOfArgument()) { StringReader.SetCursor(Start); return(ReadResults.Failure(CommandError.Vec3CoordinatesIncomplete().WithContext(StringReader))); } StringReader.Skip(); } readResults = worldCoordinateParser.ReadInteger(out WorldCoordinate z); if (readResults.Successful) { result = new WorldCoordinates(x, y, z); } return(readResults); }
public ReadResults Parse(IStringReader reader, DispatcherResources resources, out Function result) { result = default; bool isTag = false; if (reader.CanRead() && reader.Peek() == '#') { reader.Skip(); isTag = true; } ReadResults readResults = ResourceLocation.TryRead(reader, out ResourceLocation function); if (readResults.Successful) { result = new Function(function, isTag); } return(readResults); }
public ReadResults Parse(IStringReader reader, DispatcherResources resources, out ScoreHolder result) { result = default; if (reader.CanRead() && reader.Peek() == '@') { EntitySelectorParser entitySelectorParser = new EntitySelectorParser(reader, resources, UseBedrock); ReadResults readResults = entitySelectorParser.Parse(out EntitySelector entitySelector); if (!readResults.Successful) { return(readResults); } if (!Multiple && entitySelector.MaxResults > 1) { return(ReadResults.Failure(CommandError.SelectorTooManyEntities())); } result = new ScoreHolder(null, entitySelector); return(ReadResults.Success()); } if (UseBedrock) { ReadResults readResults = reader.ReadString(out string name); if (!readResults.Successful) { return(readResults); } result = new ScoreHolder(name, null); return(ReadResults.Success()); } else { int start = reader.GetCursor(); while (!reader.AtEndOfArgument()) { reader.Skip(); } string name = reader.GetString()[start..reader.GetCursor()];
public static DiffRange Parse(IStringReader reader) { var range = new DiffRange(); reader.Skip("@@"); reader.SkipWhitespace(); reader.Skip('-'); range.LeftFrom = reader.ReadInt(); if (reader.Skip(',')) { range.LeftTo = range.LeftFrom + reader.ReadInt(); } else { range.LeftTo = range.LeftFrom; } reader.SkipWhitespace(); reader.Skip('+'); range.RightFrom = reader.ReadInt(); if (reader.Skip(',')) { range.RightTo = range.RightFrom + reader.ReadInt(); } else { range.RightTo = range.RightFrom; } reader.SkipWhitespace(); reader.Skip("@@"); return range; }
private static ReadResults ReadAdvancements(EntitySelectorParser parser, IStringReader reader) { ReadResults readResults = reader.Expect('{'); if (!readResults.Successful) { return(readResults); } reader.SkipWhitespace(); while (reader.CanRead() && reader.Peek() != '}') { reader.SkipWhitespace(); readResults = ResourceLocation.TryRead(reader, out ResourceLocation advancement); if (!readResults.Successful) { return(readResults); } reader.SkipWhitespace(); readResults = reader.Expect('='); if (!readResults.Successful) { return(readResults); } reader.SkipWhitespace(); if (reader.CanRead() && reader.Peek() == '{') { reader.Skip(); reader.SkipWhitespace(); while (reader.CanRead() && reader.Peek() != '}') { reader.SkipWhitespace(); readResults = reader.ReadUnquotedString(out _); if (!readResults.Successful) { return(readResults); } reader.SkipWhitespace(); readResults = reader.Expect('='); if (!readResults.Successful) { return(readResults); } reader.SkipWhitespace(); readResults = reader.ReadBoolean(out _); if (!readResults.Successful) { return(readResults); } reader.SkipWhitespace(); if (reader.CanRead()) { char c = reader.Read(); if (c == ',') { continue; } if (c == '}') { break; } } } } else { readResults = reader.ReadBoolean(out _); if (!readResults.Successful) { return(readResults); } } parser.AddArgument(new ParsedArgument <Advancement>(new Advancement(advancement), false)); reader.SkipWhitespace(); if (reader.CanRead()) { char c = reader.Read(); if (c == ',') { continue; } if (c == '}') { return(ReadResults.Success()); } } return(ReadResults.Failure(CommandError.ExpectedCharacter('}').WithContext(reader))); } reader.SkipWhitespace(); return(reader.Expect('}')); }