add extended blocks (block size property)

This commit is contained in:
MihailRis
2024-06-08 16:58:05 +03:00
parent f181086d2a
commit 8aa6d5ee2d
9 changed files with 146 additions and 30 deletions
+6 -3
View File
@@ -130,11 +130,13 @@ void BlocksController::randomTick(int tickid, int parts) {
for (uint z = padding; z < d-padding; z++){
for (uint x = padding; x < w-padding; x++){
int index = z * w + x;
if ((index + tickid) % parts != 0)
if ((index + tickid) % parts != 0) {
continue;
}
auto& chunk = chunks->chunks[index];
if (chunk == nullptr || !chunk->flags.lighted)
if (chunk == nullptr || !chunk->flags.lighted) {
continue;
}
for (int s = 0; s < segments; s++) {
for (int i = 0; i < 4; i++) {
int bx = random.rand() % CHUNK_W;
@@ -146,7 +148,8 @@ void BlocksController::randomTick(int tickid, int parts) {
scripting::random_update_block(
block,
chunk->x * CHUNK_W + bx, by,
chunk->z * CHUNK_D + bz);
chunk->z * CHUNK_D + bz
);
}
}
}
+10 -5
View File
@@ -364,9 +364,15 @@ void PlayerController::updateInteraction(){
end, norm, iend
);
if (vox != nullptr) {
blockstate selectedState = vox->state;
player->selectedVoxel = *vox;
selectedBlockId = vox->id;
selectedBlockRotation = vox->state.rotation;
if (selectedState.segment) {
iend = chunks->seekOrigin(
iend, indices->getBlockDef(selectedBlockId), selectedState
);
}
player->selectedBlockPosition = iend;
selectedPointPosition = end;
selectedBlockNormal = norm;
@@ -379,8 +385,9 @@ void PlayerController::updateInteraction(){
state.rotation = determine_rotation(def, norm, camera->dir);
if (lclick && !input.shift && item->rt.funcsset.on_block_break_by) {
if (scripting::on_item_break_block(player.get(), item, x, y, z))
if (scripting::on_item_break_block(player.get(), item, x, y, z)) {
return;
}
}
Block* target = indices->getBlockDef(vox->id);
@@ -411,10 +418,8 @@ void PlayerController::updateInteraction(){
x = (iend.x)+(norm.x);
y = (iend.y)+(norm.y);
z = (iend.z)+(norm.z);
} else {
if (def->rotations.name == "pipe") {
state.rotation = BLOCK_DIR_UP;
}
} else if (def->rotations.name == "pipe") {
state.rotation = BLOCK_DIR_UP;
}
vox = chunks->get(x, y, z);
blockid_t chosenBlock = def->rt.id;