refactor BufferedBlock

This commit is contained in:
dfsek
2021-10-15 22:04:01 -07:00
parent cc660e820d
commit 7c5b7e5b45
2 changed files with 2 additions and 2 deletions

View File

@@ -0,0 +1,39 @@
package com.dfsek.terra.api.structure.buffer.items;
import com.dfsek.terra.api.Platform;
import com.dfsek.terra.api.block.state.BlockState;
import com.dfsek.terra.api.block.state.properties.base.Properties;
import com.dfsek.terra.api.structure.buffer.BufferedItem;
import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.World;
public class BufferedBlock implements BufferedItem {
private final BlockState data;
private final boolean overwrite;
private final Platform platform;
private final boolean waterlog;
public BufferedBlock(BlockState data, boolean overwrite, Platform platform, boolean waterlog) {
this.data = data;
this.overwrite = overwrite;
this.platform = platform;
this.waterlog = waterlog;
}
@Override
public void paste(Vector3 origin, World world) {
try {
BlockState current = world.getBlockData(origin);
if(overwrite || current.isAir()) {
if(waterlog && current.has(Properties.WATERLOGGED) && current.getBlockType().isWater()) {
current.set(Properties.WATERLOGGED, true);
}
world.setBlockData(origin, data);
}
} catch(RuntimeException e) {
platform.logger().severe("Failed to place block at location " + origin + ": " + e.getMessage());
platform.getDebugLogger().stack(e);
}
}
}