Merge branch 'snapshot'
This commit is contained in:
@@ -309,7 +309,8 @@ generate_pseudo_data(RenderState *state, unsigned short ancilData) {
|
||||
}
|
||||
data = (check_adjacent_blocks(state, x, y, z, state->block) ^ 0x0f) | data;
|
||||
return (data << 4) | (ancilData & 0x0f);
|
||||
} else if (state->block == 85) { /* fences */
|
||||
} else if ((state->block == 85) || (state->block == 188) || (state->block == 189) ||
|
||||
(state->block == 190) || (state->block == 191) || (state->block == 192)) { /* fences */
|
||||
/* check for fences AND fence gates */
|
||||
return check_adjacent_blocks(state, x, y, z, state->block) | check_adjacent_blocks(state, x, y, z, 107);
|
||||
|
||||
@@ -397,7 +398,9 @@ generate_pseudo_data(RenderState *state, unsigned short ancilData) {
|
||||
/* portal and nether brick fences */
|
||||
return check_adjacent_blocks(state, x, y, z, state->block);
|
||||
|
||||
} else if ((state->block == 64) || (state->block == 71)) {
|
||||
} else if ((state->block == 64) || (state->block == 71) || (state->block == 193) ||
|
||||
(state->block == 194) || (state->block == 195) || (state->block == 196) ||
|
||||
(state->block ==197)) {
|
||||
/* use bottom block data format plus one bit for top/down
|
||||
* block (0x8) and one bit for hinge position (0x10)
|
||||
*/
|
||||
@@ -703,14 +706,21 @@ chunk_render(PyObject *self, PyObject *args) {
|
||||
* trapped chests, stairs */
|
||||
if ((state.block == 2) || (state.block == 9) ||
|
||||
(state.block == 20) || (state.block == 54) ||
|
||||
(state.block == 55) || (state.block == 64) ||
|
||||
(state.block == 71) || (state.block == 79) ||
|
||||
(state.block == 55) ||
|
||||
/* doors */
|
||||
(state.block == 64) || (state.block == 193) ||
|
||||
(state.block == 194) || (state.block == 195) ||
|
||||
(state.block == 196) || (state.block == 197) ||
|
||||
(state.block == 71) || /* end doors */
|
||||
(state.block == 79) ||
|
||||
(state.block == 85) || (state.block == 90) ||
|
||||
(state.block == 101) || (state.block == 102) ||
|
||||
(state.block == 111) || (state.block == 113) ||
|
||||
(state.block == 139) || (state.block == 175) ||
|
||||
(state.block == 160) || (state.block == 95) ||
|
||||
(state.block == 146) ||
|
||||
(state.block == 146) || (state.block == 188) ||
|
||||
(state.block == 189) || (state.block == 190) ||
|
||||
(state.block == 191) || (state.block == 192) ||
|
||||
is_stairs(state.block)) {
|
||||
ancilData = generate_pseudo_data(&state, ancilData);
|
||||
state.block_pdata = ancilData;
|
||||
|
||||
@@ -864,7 +864,23 @@ def billboard(blockid=[], imagename=None, **kwargs):
|
||||
##
|
||||
|
||||
# stone
|
||||
block(blockid=1, top_image="assets/minecraft/textures/blocks/stone.png")
|
||||
@material(blockid=1, data=range(7), solid=True)
|
||||
def stone(self, blockid, data):
|
||||
if data == 0: # regular old-school stone
|
||||
img = self.load_image_texture("assets/minecraft/textures/blocks/stone.png")
|
||||
elif data == 1: # granite
|
||||
img = self.load_image_texture("assets/minecraft/textures/blocks/stone_granite.png")
|
||||
elif data == 2: # polished granite
|
||||
img = self.load_image_texture("assets/minecraft/textures/blocks/stone_granite_smooth.png")
|
||||
elif data == 3: # diorite
|
||||
img = self.load_image_texture("assets/minecraft/textures/blocks/stone_diorite.png")
|
||||
elif data == 4: # polished diorite
|
||||
img = self.load_image_texture("assets/minecraft/textures/blocks/stone_diorite_smooth.png")
|
||||
elif data == 5: # andesite
|
||||
img = self.load_image_texture("assets/minecraft/textures/blocks/stone_andesite.png")
|
||||
elif data == 6: # polished andesite
|
||||
img = self.load_image_texture("assets/minecraft/textures/blocks/stone_andesite_smooth.png")
|
||||
return self.build_block(img, img)
|
||||
|
||||
@material(blockid=2, data=range(11)+[0x10,], solid=True)
|
||||
def grass(self, blockid, data):
|
||||
@@ -2179,7 +2195,7 @@ def signpost(self, blockid, data):
|
||||
|
||||
# wooden and iron door
|
||||
# uses pseudo-ancildata found in iterate.c
|
||||
@material(blockid=[64,71], data=range(32), transparent=True)
|
||||
@material(blockid=[64,71,193,194,195,196,197], data=range(32), transparent=True)
|
||||
def door(self, blockid, data):
|
||||
#Masked to not clobber block top/bottom & swung info
|
||||
if self.rotation == 1:
|
||||
@@ -2199,9 +2215,35 @@ def door(self, blockid, data):
|
||||
elif (data & 0b00011) == 3: data = data & 0b11100 | 2
|
||||
|
||||
if data & 0x8 == 0x8: # top of the door
|
||||
raw_door = self.load_image_texture("assets/minecraft/textures/blocks/%s.png" % ("door_wood_upper" if blockid == 64 else "door_iron_upper"))
|
||||
if blockid == 64: # classic wood door
|
||||
raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_wood_upper.png")
|
||||
elif blockid == 71: # iron door
|
||||
raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_iron_upper.png")
|
||||
elif blockid == 193: # spruce door
|
||||
raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_spruce_upper.png")
|
||||
elif blockid == 194: # birch door
|
||||
raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_birch_upper.png")
|
||||
elif blockid == 195: # jungle door
|
||||
raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_jungle_upper.png")
|
||||
elif blockid == 196: # acacia door
|
||||
raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_acacia_upper.png")
|
||||
elif blockid == 197: # dark_oak door
|
||||
raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_dark_oak_upper.png")
|
||||
else: # bottom of the door
|
||||
raw_door = self.load_image_texture("assets/minecraft/textures/blocks/%s.png" % ("door_wood_lower" if blockid == 64 else "door_iron_lower"))
|
||||
if blockid == 64:
|
||||
raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_wood_lower.png")
|
||||
elif blockid == 71: # iron door
|
||||
raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_iron_lower.png")
|
||||
elif blockid == 193: # spruce door
|
||||
raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_spruce_lower.png")
|
||||
elif blockid == 194: # birch door
|
||||
raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_birch_lower.png")
|
||||
elif blockid == 195: # jungle door
|
||||
raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_jungle_lower.png")
|
||||
elif blockid == 196: # acacia door
|
||||
raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_acacia_lower.png")
|
||||
elif blockid == 197: # dark_oak door
|
||||
raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_dark_oak_lower.png")
|
||||
|
||||
# if you want to render all doors as closed, then force
|
||||
# force closed to be True
|
||||
@@ -2722,7 +2764,7 @@ def jukebox(self, blockid, data):
|
||||
|
||||
# nether and normal fences
|
||||
# uses pseudo-ancildata found in iterate.c
|
||||
@material(blockid=[85, 113], data=range(16), transparent=True, nospawn=True)
|
||||
@material(blockid=[85, 188, 189, 190, 191, 192, 113], data=range(16), transparent=True, nospawn=True)
|
||||
def fence(self, blockid, data):
|
||||
# no need for rotations, it uses pseudo data.
|
||||
# create needed images for Big stick fence
|
||||
@@ -2730,6 +2772,26 @@ def fence(self, blockid, data):
|
||||
fence_top = self.load_image_texture("assets/minecraft/textures/blocks/planks_oak.png").copy()
|
||||
fence_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_oak.png").copy()
|
||||
fence_small_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_oak.png").copy()
|
||||
elif blockid == 188: # spruce fence
|
||||
fence_top = self.load_image_texture("assets/minecraft/textures/blocks/planks_spruce.png").copy()
|
||||
fence_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_spruce.png").copy()
|
||||
fence_small_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_spruce.png").copy()
|
||||
elif blockid == 189: # birch fence
|
||||
fence_top = self.load_image_texture("assets/minecraft/textures/blocks/planks_birch.png").copy()
|
||||
fence_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_birch.png").copy()
|
||||
fence_small_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_birch.png").copy()
|
||||
elif blockid == 190: # jungle fence
|
||||
fence_top = self.load_image_texture("assets/minecraft/textures/blocks/planks_jungle.png").copy()
|
||||
fence_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_jungle.png").copy()
|
||||
fence_small_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_jungle.png").copy()
|
||||
elif blockid == 191: # big/dark oak fence
|
||||
fence_top = self.load_image_texture("assets/minecraft/textures/blocks/planks_big_oak.png").copy()
|
||||
fence_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_big_oak.png").copy()
|
||||
fence_small_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_big_oak.png").copy()
|
||||
elif blockid == 192: # acacia oak fence
|
||||
fence_top = self.load_image_texture("assets/minecraft/textures/blocks/planks_acacia.png").copy()
|
||||
fence_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_acacia.png").copy()
|
||||
fence_small_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_acacia.png").copy()
|
||||
else: # netherbrick fence
|
||||
fence_top = self.load_image_texture("assets/minecraft/textures/blocks/nether_brick.png").copy()
|
||||
fence_side = self.load_image_texture("assets/minecraft/textures/blocks/nether_brick.png").copy()
|
||||
@@ -3216,7 +3278,7 @@ def comparator(self, blockid, data):
|
||||
|
||||
# trapdoor
|
||||
# the trapdoor is looks like a sprite when opened, that's not good
|
||||
@material(blockid=96, data=range(16), transparent=True, nospawn=True)
|
||||
@material(blockid=[96,167], data=range(16), transparent=True, nospawn=True)
|
||||
def trapdoor(self, blockid, data):
|
||||
|
||||
# rotation
|
||||
@@ -3238,7 +3300,10 @@ def trapdoor(self, blockid, data):
|
||||
elif (data & 0b0011) == 3: data = data & 0b1100 | 0
|
||||
|
||||
# texture generation
|
||||
texture = self.load_image_texture("assets/minecraft/textures/blocks/trapdoor.png")
|
||||
if blockid == 96:
|
||||
texture = self.load_image_texture("assets/minecraft/textures/blocks/trapdoor.png")
|
||||
else:
|
||||
texture = self.load_image_texture("assets/minecraft/textures/blocks/iron_trapdoor.png")
|
||||
if data & 0x4 == 0x4: # opened trapdoor
|
||||
if data & 0x3 == 0: # west
|
||||
img = self.build_full_block(None, None, None, None, texture)
|
||||
@@ -4205,6 +4270,27 @@ def hopper(self, blockid, data):
|
||||
|
||||
return img
|
||||
|
||||
# slime block
|
||||
block(blockid=165, top_image="assets/minecraft/textures/blocks/slime.png")
|
||||
|
||||
# prismarine block
|
||||
@material(blockid=168, data=range(3), solid=True)
|
||||
def prismarine_block(self, blockid, data):
|
||||
|
||||
if data == 0: # prismarine
|
||||
t = self.load_image_texture("assets/minecraft/textures/blocks/prismarine_rough.png")
|
||||
elif data == 1: # prismarine bricks
|
||||
t = self.load_image_texture("assets/minecraft/textures/blocks/prismarine_bricks.png")
|
||||
elif data == 2: # dark prismarine
|
||||
t = self.load_image_texture("assets/minecraft/textures/blocks/prismarine_dark.png")
|
||||
|
||||
img = self.build_block(t, t)
|
||||
|
||||
return img
|
||||
|
||||
# sea lantern
|
||||
block(blockid=169, top_image="assets/minecraft/textures/blocks/sea_lantern.png")
|
||||
|
||||
# hay block
|
||||
@material(blockid=170, data=range(9), solid=True)
|
||||
def hayblock(self, blockid, data):
|
||||
|
||||
Reference in New Issue
Block a user