Mirror von
https://github.com/IntellectualSites/FastAsyncWorldEdit.git
synchronisiert 2024-09-06 16:12:51 +02:00
Give factories a default parser.
Later registered parsers will always come before the default, ensuring that the default parser is used when no other parser can match the input, and that errors may be thrown by it to signify the end of the line.
Dieser Commit ist enthalten in:
Ursprung
6962b2e7b6
Commit
ab1e09fdaf
@ -45,9 +45,7 @@ public class BlockFactory extends AbstractFactory<BaseBlock> {
|
||||
* @param worldEdit the WorldEdit instance.
|
||||
*/
|
||||
public BlockFactory(WorldEdit worldEdit) {
|
||||
super(worldEdit);
|
||||
|
||||
register(new DefaultBlockParser(worldEdit));
|
||||
super(worldEdit, new DefaultBlockParser(worldEdit));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -32,9 +32,7 @@ public class ItemFactory extends AbstractFactory<BaseItem> {
|
||||
* @param worldEdit the WorldEdit instance.
|
||||
*/
|
||||
public ItemFactory(WorldEdit worldEdit) {
|
||||
super(worldEdit);
|
||||
|
||||
register(new DefaultItemParser(worldEdit));
|
||||
super(worldEdit, new DefaultItemParser(worldEdit));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -58,7 +58,7 @@ public final class MaskFactory extends AbstractFactory<Mask> {
|
||||
* @param worldEdit the WorldEdit instance
|
||||
*/
|
||||
public MaskFactory(WorldEdit worldEdit) {
|
||||
super(worldEdit);
|
||||
super(worldEdit, new BlocksMaskParser(worldEdit));
|
||||
|
||||
register(new ExistingMaskParser(worldEdit));
|
||||
register(new SolidMaskParser(worldEdit));
|
||||
@ -72,8 +72,6 @@ public final class MaskFactory extends AbstractFactory<Mask> {
|
||||
|
||||
register(new BlockCategoryMaskParser(worldEdit));
|
||||
register(new BiomeMaskParser(worldEdit));
|
||||
|
||||
register(new BlocksMaskParser(worldEdit));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -44,7 +44,7 @@ public final class PatternFactory extends AbstractFactory<Pattern> {
|
||||
* @param worldEdit the WorldEdit instance
|
||||
*/
|
||||
public PatternFactory(WorldEdit worldEdit) {
|
||||
super(worldEdit);
|
||||
super(worldEdit, new SingleBlockPatternParser(worldEdit));
|
||||
|
||||
// split and parse each sub-pattern
|
||||
register(new RandomPatternParser(worldEdit));
|
||||
@ -54,9 +54,6 @@ public final class PatternFactory extends AbstractFactory<Pattern> {
|
||||
register(new TypeOrStateApplyingPatternParser(worldEdit));
|
||||
register(new RandomStatePatternParser(worldEdit));
|
||||
register(new BlockCategoryPatternParser(worldEdit));
|
||||
|
||||
// inner-most pattern: just one block - must be last
|
||||
register(new SingleBlockPatternParser(worldEdit));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -54,6 +54,8 @@ import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static org.enginehub.piston.converter.SuggestionHelper.limitByPrefix;
|
||||
|
||||
/**
|
||||
* Parses block input strings.
|
||||
*/
|
||||
@ -209,7 +211,7 @@ public class DefaultBlockParser extends InputParser<BaseBlock> {
|
||||
if (input.contains(",")) {
|
||||
return Stream.empty();
|
||||
}
|
||||
return BlockType.REGISTRY.keySet().stream();
|
||||
return limitByPrefix(BlockType.REGISTRY.keySet().stream(), input).stream();
|
||||
}
|
||||
String blockType = input.substring(0, idx);
|
||||
BlockType type = BlockTypes.get(blockType.toLowerCase(Locale.ROOT));
|
||||
|
@ -46,10 +46,13 @@ public abstract class AbstractFactory<E> {
|
||||
* Create a new factory.
|
||||
*
|
||||
* @param worldEdit the WorldEdit instance
|
||||
* @param defaultParser the parser to fall back to
|
||||
*/
|
||||
protected AbstractFactory(WorldEdit worldEdit) {
|
||||
protected AbstractFactory(WorldEdit worldEdit, InputParser<E> defaultParser) {
|
||||
checkNotNull(worldEdit);
|
||||
checkNotNull(defaultParser);
|
||||
this.worldEdit = worldEdit;
|
||||
this.parsers.add(defaultParser);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -91,6 +94,6 @@ public abstract class AbstractFactory<E> {
|
||||
public void register(InputParser<E> inputParser) {
|
||||
checkNotNull(inputParser);
|
||||
|
||||
parsers.add(inputParser);
|
||||
parsers.add(parsers.size() - 1, inputParser);
|
||||
}
|
||||
}
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren