0

Fix fence connection

- use ingame data
This commit is contained in:
Bernd Buschinski
2021-07-08 18:29:03 +02:00
parent f16aa05ed0
commit 327b4711db
5 changed files with 36 additions and 68 deletions

View File

@@ -143,29 +143,6 @@ const mc_block_t block_class_door[] = {
block_warped_door};
const size_t block_class_door_len = COUNT_OF(block_class_door);
const mc_block_t block_class_fence[] = {
block_fence,
block_nether_brick_fence,
block_spruce_fence,
block_birch_fence,
block_jungle_fence,
block_dark_oak_fence,
block_crimson_fence,
block_warped_fence,
block_acacia_fence};
const size_t block_class_fence_len = COUNT_OF(block_class_fence);
const mc_block_t block_class_fence_gate[] = {
block_fence_gate,
block_spruce_fence_gate,
block_birch_fence_gate,
block_jungle_fence_gate,
block_dark_oak_fence_gate,
block_acacia_fence_gate,
block_crimson_fence_gate,
block_warped_fence_gate};
const size_t block_class_fence_gate_len = COUNT_OF(block_class_fence_gate);
const mc_block_t block_class_ancil[] = {
block_wooden_door,
block_iron_door,
@@ -229,10 +206,8 @@ const mc_block_t block_class_ancil[] = {
block_glass,
block_redstone_wire,
block_ice,
block_fence,
block_portal,
block_waterlily,
block_nether_brick_fence,
block_andesite_wall,
block_brick_wall,
block_cobblestone_wall,
@@ -252,13 +227,6 @@ const mc_block_t block_class_ancil[] = {
block_polished_blackstone_brick_wall,
block_double_plant,
block_stained_glass,
block_spruce_fence,
block_birch_fence,
block_jungle_fence,
block_dark_oak_fence,
block_crimson_fence,
block_warped_fence,
block_acacia_fence,
block_cobbled_deepslate_wall,
block_polished_deepslate_wall,
block_deepslate_brick_wall,

View File

@@ -36,12 +36,6 @@ extern const size_t block_class_stair_len;
extern const mc_block_t block_class_door[];
extern const size_t block_class_door_len;
extern const mc_block_t block_class_fence[];
extern const size_t block_class_fence_len;
extern const mc_block_t block_class_fence_gate[];
extern const size_t block_class_fence_gate_len;
extern const mc_block_t block_class_ancil[];
extern const size_t block_class_ancil_len;

View File

@@ -276,12 +276,6 @@ generate_pseudo_data(RenderState* state, uint16_t ancilData) {
}
data = (check_adjacent_blocks(state, x, y, z, state->block) ^ 0x0f) | data;
return (data << 4) | (ancilData & 0x0f);
} else if (block_class_is_subset(state->block, block_class_fence, block_class_fence_len)) { /* fences */
/* check for fences AND fence gates */
return check_adjacent_blocks(state, x, y, z, state->block) | check_adjacent_blocks(state, x, y, z, block_fence_gate) |
check_adjacent_blocks(state, x, y, z, block_fence_gate) | check_adjacent_blocks(state, x, y, z, block_birch_fence_gate) | check_adjacent_blocks(state, x, y, z, block_jungle_fence_gate) |
check_adjacent_blocks(state, x, y, z, block_dark_oak_fence_gate) | check_adjacent_blocks(state, x, y, z, block_acacia_fence_gate)
| check_adjacent_blocks(state, x, y, z, block_crimson_fence_gate) | check_adjacent_blocks(state, x, y, z, block_warped_fence_gate);
} else if (state->block == block_redstone_wire) { /* redstone */
/* three addiotional bit are added, one for on/off state, and
@@ -317,8 +311,8 @@ generate_pseudo_data(RenderState* state, uint16_t ancilData) {
}
return final_data;
} else if (block_class_is_subset(state->block, (mc_block_t[]){block_portal, block_nether_brick_fence}, 2)) {
/* portal and nether brick fences */
} else if (state->block == block_portal) {
/* portal */
return check_adjacent_blocks(state, x, y, z, state->block);
} else if (block_class_is_subset(state->block, block_class_door, block_class_door_len)) {
@@ -620,7 +614,7 @@ chunk_render(PyObject* self, PyObject* args) {
state.block_data = ancilData;
/* block that need pseudo ancildata:
* grass, water, glass, chest, restone wire,
* ice, fence, portal, iron bars, glass panes,
* ice, portal, iron bars,
* trapped chests, stairs */
if (block_class_is_subset(state.block, block_class_ancil, block_class_ancil_len)) {
ancilData = generate_pseudo_data(&state, ancilData);