minecraft-python / block_type.py
Minecraft3193092's picture
Upload 15 files
f92c150
import collider
import models.cube # default model
class Block_type:
# new optional model argument (cube model by default)
def __init__(self, texture_manager, name = "unknown", block_face_textures = {"all": "cobblestone"}, model = models.cube):
self.name = name
self.block_face_textures = block_face_textures
self.model = model
# create members based on model attributes
self.transparent = model.transparent
self.is_cube = model.is_cube
self.glass = model.glass
# create colliders
self.colliders = []
for _collider in model.colliders:
self.colliders.append(collider.Collider(*_collider))
# replace data contained in numbers.py with model specific data
self.vertex_positions = model.vertex_positions
self.tex_coords = model.tex_coords.copy()
self.shading_values = model.shading_values
def set_block_face(face, texture):
# make sure we don't add inexistent faces
if face > len(self.tex_coords) - 1:
return
self.tex_coords[face] = self.tex_coords[face].copy()
for vertex in range(4):
self.tex_coords[face][vertex * 3 + 2] = texture
for face in block_face_textures:
texture = block_face_textures[face]
texture_manager.add_texture(texture)
texture_index = texture_manager.textures.index(texture)
if face == "all":
for i in range(len(self.tex_coords)):
set_block_face(i, texture_index)
elif face == "sides":
set_block_face(0, texture_index)
set_block_face(1, texture_index)
set_block_face(4, texture_index)
set_block_face(5, texture_index)
elif face == "x":
set_block_face(0, texture_index)
set_block_face(1, texture_index)
elif face == "y":
set_block_face(2, texture_index)
set_block_face(3, texture_index)
elif face == "z":
set_block_face(4, texture_index)
set_block_face(5, texture_index)
else:
set_block_face(["right", "left", "top", "bottom", "front", "back"].index(face), texture_index)