mc-beta-server/server/blocks/BlockBehaviorSugarcane.ts

46 lines
No EOL
1.2 KiB
TypeScript

import AABB from "../AABB";
import Block from "./Block";
import BlockBehaviour from "./BlockBehaviour";
import World from "../World";
export default class BlockBehaviourSugarcane extends BlockBehaviour {
public neighborBlockChange(world:World, x:number, y:number, z:number, blockId:number) {
const block = world.getBlockId(x, y - 1, z);
if (block === 0 || block !== Block.sugarcane.blockId) {
world.setBlockWithNotify(x, y, z, 0);
}
}
public canPlaceBlockAt(world: World, x: number, y: number, z: number) {
const blockBelow = world.getBlockId(x, y - 1, z);
if (blockBelow === this.block.blockId) {
return true;
}
// Check if right ground block
if (blockBelow !== Block.grass.blockId && blockBelow !== Block.dirt.blockId) {
return false;
}
// Check if water is around
if (world.getBlockId(x - 1, y - 1, z) === Block.waterStill.blockId) {
return true;
}
if (world.getBlockId(x + 1, y - 1, z) === Block.waterStill.blockId) {
return true;
}
if (world.getBlockId(x, y - 1, z - 1) === Block.waterStill.blockId) {
return true;
}
if (world.getBlockId(x, y - 1, z + 1) === Block.waterStill.blockId) {
return true;
}
return false;
}
public getBoundingBox() {
return AABB.getAABB(0, 0, 0, 0, 0, 0);
}
}