Skip to content

Commit d655684

Browse files
committed
feat: missingno texture
1 parent 0038337 commit d655684

File tree

5 files changed

+21
-3
lines changed

5 files changed

+21
-3
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"parent": "minecraft:item/generated",
3+
"textures": {
4+
"layer0": "tyththt:fdfjfd"
5+
}
6+
}

examples/main/beet.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ meta:
1212
model_resolver:
1313
# load vanilla item models
1414
minecraft_version: "1.21.4"
15+
transparent_missingno: false

model_resolver/missingno.png

82 Bytes
Loading

model_resolver/tasks/generic_render.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from pathlib import Path
12
from OpenGL.GL import * # type: ignore
23
from OpenGL.GLUT import * # type: ignore
34
from OpenGL.GLU import * # type: ignore
@@ -133,6 +134,15 @@ def get_real_key(
133134
return value
134135
else:
135136
raise RenderError(f"Unknown texture type {type(value)} for key {key}")
137+
138+
def get_missingno(self) -> Image.Image:
139+
"""Returns a missingno image for debugging purposes."""
140+
if self.getter.opts.transparent_missingno:
141+
return Image.new("RGBA", (16, 16), (0, 0, 0, 0))
142+
path = Path(__file__).parent.parent / "missingno.png"
143+
if not path.exists():
144+
raise RenderError(f"Missingno image not found at {path}")
145+
return Image.open(path).convert("RGBA")
136146

137147
def load_textures(
138148
self, model: MinecraftModel
@@ -141,7 +151,7 @@ def load_textures(
141151
for key in model.textures.keys():
142152
value = self.get_real_key(key, model.textures)
143153
if value is None:
144-
res[key] = (Image.new("RGBA", (16, 16), (0, 0, 0, 0)), "empty")
154+
res[key] = (self.get_missingno(), "empty")
145155
log.warning(f"Texture {key} not found in model")
146156
elif isinstance(value, Image.Image):
147157
res[key] = (value, "dynamic")
@@ -157,7 +167,7 @@ def load_textures(
157167
texture = Texture(self.dynamic_textures[path])
158168
img = texture.image
159169
else:
160-
img = Image.new("RGBA", (16, 16), (0, 0, 0, 0))
170+
img = self.get_missingno()
161171
log.warning(f"Texture {key} not found at {path}")
162172

163173
img = img.convert("RGBA")
@@ -172,7 +182,7 @@ def load_textures(
172182
texture = Texture(self.dynamic_textures[path])
173183
img = texture.image
174184
else:
175-
img = Image.new("RGBA", (16, 16), (0, 0, 0, 0))
185+
img = self.get_missingno()
176186
log.warning(f"Texture {key} not found at {path}")
177187
img = img.convert("RGBA")
178188
res[key] = (img, path)

model_resolver/utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ class ModelResolverOptions(BaseModel):
5252
special_rendering: bool = False
5353
colorize_blocks: bool = True
5454
preferred_minecraft_generated: Literal["misode/mcmeta", "java"] = "misode/mcmeta"
55+
transparent_missingno: bool = True
5556

5657

5758
@dataclass

0 commit comments

Comments
 (0)