set_biome

This commit is contained in:
gnembon committed 2019-07-15 12:31:36 -03:00
1 parent bd7106d480
commit 45b13f31e4
1 file changed
+5 -4
@@ -352,6 +352,8 @@ public class CarpetExpression
* place_item('piston,x,y,z,'down') // places a piston facing down * place_item('piston,x,y,z,'down') // places a piston facing down
* place_item('carrot',x,y,z) // attempts to plant a carrot plant. Returns true if could place carrots at that position. * place_item('carrot',x,y,z) // attempts to plant a carrot plant. Returns true if could place carrots at that position.
* </pre> * </pre>
* <h3><code>set_biome(pos, biome_name)</code></h3>
* <p>changes biome at that block position.</p>
* <h3><code>update(pos)</code></h3> * <h3><code>update(pos)</code></h3>
* <p>Causes a block update at position.</p> * <p>Causes a block update at position.</p>
* <h3><code>block_tick(pos)</code></h3> * <h3><code>block_tick(pos)</code></h3>
@@ -942,7 +944,7 @@ public class CarpetExpression
return (_c, _t) -> retval; return (_c, _t) -> retval;
}); });
this.expr.addLazyFunction("trace_block", -1, (c, t, lv) -> { /*this.expr.addLazyFunction("trace_block", -1, (c, t, lv) -> {
Value entityValue = lv.get(0).evalValue(c); Value entityValue = lv.get(0).evalValue(c);
if (!(entityValue instanceof EntityValue)) if (!(entityValue instanceof EntityValue))
throw new InternalExpressionException("First argument of trace_block should be an entity"); throw new InternalExpressionException("First argument of trace_block should be an entity");
@@ -958,7 +960,7 @@ public class CarpetExpression
return (_c, _t) -> new EntityValue(((EntityHitResult)hitres).getEntity()); return (_c, _t) -> new EntityValue(((EntityHitResult)hitres).getEntity());
} }
return LazyValue.NULL; return LazyValue.NULL;
}); });*/
this.expr.addLazyFunction("set_biome", -1, (c, t, lv) -> { this.expr.addLazyFunction("set_biome", -1, (c, t, lv) -> {
CarpetContext cc = (CarpetContext)c; CarpetContext cc = (CarpetContext)c;
@@ -969,15 +971,14 @@ public class CarpetExpression
Biome biome = Registry.BIOME.get(new Identifier(biomeName)); Biome biome = Registry.BIOME.get(new Identifier(biomeName));
if (biome == null) if (biome == null)
throw new InternalExpressionException("Unknown biome: "+biomeName); throw new InternalExpressionException("Unknown biome: "+biomeName);
byte biomeId = (byte) (Registry.BIOME.getRawId(biome) & 255);
ServerWorld world = cc.s.getWorld(); ServerWorld world = cc.s.getWorld();
BlockPos pos = locator.block.getPos(); BlockPos pos = locator.block.getPos();
Chunk chunk = world.getChunk(pos); Chunk chunk = world.getChunk(pos);
chunk.getBiomeArray()[(pos.getX() & 15) | (pos.getZ() & 15) << 4] = biome; chunk.getBiomeArray()[(pos.getX() & 15) | (pos.getZ() & 15) << 4] = biome;
this.forceChunkUpdate(pos, world); this.forceChunkUpdate(pos, world);
return LazyValue.NULL; return LazyValue.NULL;
}); });
// need get_biome
} }