Add the missing y variable to generate biome

This commit is contained in:
Octavia Togami 2020-11-18 15:44:43 -08:00
parent 4999018f36
commit cc1f530aa4
3 changed files with 11 additions and 12 deletions

View File

@ -135,6 +135,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
@ -2640,23 +2641,21 @@ private void recurseHollow(Region region, BlockVector3 origin, Set<BlockVector3>
}
public int makeBiomeShape(final Region region, final Vector3 zero, final Vector3 unit, final BiomeType biomeType,
final String expressionString, final boolean hollow)
throws ExpressionException, MaxChangedBlocksException {
final String expressionString, final boolean hollow) throws ExpressionException {
return makeBiomeShape(region, zero, unit, biomeType, expressionString, hollow, WorldEdit.getInstance().getConfiguration().calculationTimeout);
}
public int makeBiomeShape(final Region region, final Vector3 zero, final Vector3 unit, final BiomeType biomeType,
final String expressionString, final boolean hollow, final int timeout)
throws ExpressionException, MaxChangedBlocksException {
final String expressionString, final boolean hollow, final int timeout) throws ExpressionException {
final Expression expression = Expression.compile(expressionString, "x", "z");
final Expression expression = Expression.compile(expressionString, "x", "y", "z");
expression.optimize();
final EditSession editSession = this;
final WorldEditExpressionEnvironment environment = new WorldEditExpressionEnvironment(editSession, unit, zero);
expression.setEnvironment(environment);
final int[] timedOut = {0};
AtomicInteger timedOut = new AtomicInteger();
final ArbitraryBiomeShape shape = new ArbitraryBiomeShape(region) {
@Override
protected BiomeType getBiome(int x, int y, int z, BiomeType defaultBiomeType) {
@ -2672,7 +2671,7 @@ protected BiomeType getBiome(int x, int y, int z, BiomeType defaultBiomeType) {
// TODO: Allow biome setting via a script variable (needs BiomeType<->int mapping)
return defaultBiomeType;
} catch (ExpressionTimeoutException e) {
timedOut[0] = timedOut[0] + 1;
timedOut.getAndIncrement();
return null;
} catch (Exception e) {
log.warn("Failed to create shape", e);
@ -2681,10 +2680,10 @@ protected BiomeType getBiome(int x, int y, int z, BiomeType defaultBiomeType) {
}
};
int changed = shape.generate(this, biomeType, hollow);
if (timedOut[0] > 0) {
if (timedOut.get() > 0) {
throw new ExpressionTimeoutException(
String.format("%d blocks changed. %d blocks took too long to evaluate (increase time with //timeout)",
changed, timedOut[0]));
String.format("%d biomes changed. %d biomes took too long to evaluate (increase time with //timeout)",
changed, timedOut.get()));
}
return changed;
}

View File

@ -206,7 +206,7 @@ private void loadTranslations(Locale locale) throws IOException {
// In dev, reading lang/strings.json from either i18n.zip or the config folder
// WILL NOT OCCUR!
URL devStrings;
if (locale == defaultLocale
if (defaultLocale.equals(locale)
&& (devStrings = resourceLoader.getRootResource("lang/strings.json")) != null) {
try (InputStream in = devStrings.openStream()) {
putTranslationData(entries, in);

View File

@ -231,7 +231,7 @@
"worldedit.pumpkins.created": "{0} pumpkin patches created.",
"worldedit.pyramid.created": "{0} blocks have been created.",
"worldedit.generate.created": "{0} blocks have been created.",
"worldedit.generate.changed": "{0} columns affected.",
"worldedit.generatebiome.changed": "{0} biomes affected.",
"worldedit.reload.config": "Configuration reloaded!",
"worldedit.report.written": "WorldEdit report written to {0}",