From 069001d6b1df8c965b074e5798db3c5681caa0a4 Mon Sep 17 00:00:00 2001 From: David Vierra Date: Tue, 6 Jan 2015 15:09:10 -1000 Subject: [PATCH] BlockTypePixmap shows textures again. BlockTypeSet[] prepends namePrefix again. --- src/mcedit2/rendering/blockmodels.pyx | 10 +++++----- src/mcedit2/widgets/blocktype_list.py | 1 + src/mceditlib/blocktypes/__init__.py | 4 +++- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/mcedit2/rendering/blockmodels.pyx b/src/mcedit2/rendering/blockmodels.pyx index 87e4134..c7fc11d 100644 --- a/src/mcedit2/rendering/blockmodels.pyx +++ b/src/mcedit2/rendering/blockmodels.pyx @@ -74,7 +74,7 @@ cdef class BlockModels(object): if block.renderType != 3: # only rendertype 3 uses block models continue - name = block.internalName.replace(blocktypes.namePrefix, "") + nameAndState = block.internalName + block.blockState try: statesJson = self._getBlockState(block.resourcePath) except KeyError: @@ -183,7 +183,7 @@ cdef class BlockModels(object): blockColor = r, g, b for element in allElements: - quads = self.buildBoxQuads(element, name, textureVars, variantXrot, variantYrot, variantZrot, blockColor) + quads = self.buildBoxQuads(element, nameAndState, textureVars, variantXrot, variantYrot, variantZrot, blockColor) allQuads.extend(quads) @@ -191,11 +191,11 @@ cdef class BlockModels(object): self.modelQuads[block.internalName + block.blockState] = allQuads except Exception as e: - log.error("Failed to parse variant of block %s\nelements:\n%s\ntextures:\n%s", name, + log.error("Failed to parse variant of block %s\nelements:\n%s\ntextures:\n%s", nameAndState, allElements, textureVars) raise - def buildBoxQuads(self, element, name, textureVars, variantXrot, variantYrot, variantZrot, blockColor): + def buildBoxQuads(self, element, nameAndState, textureVars, variantXrot, variantYrot, variantZrot, blockColor): quads = [] shade = element.get("shade", True) fromPoint = Vector(*element["from"]) @@ -230,7 +230,7 @@ cdef class BlockModels(object): else: raise ValueError("Texture variable loop detected!") - self.firstTextures.setdefault(name, texture) + self.firstTextures.setdefault(nameAndState, texture) self._textureNames.add(texture) quads.append((box, face, diff --git a/src/mcedit2/widgets/blocktype_list.py b/src/mcedit2/widgets/blocktype_list.py index 5ba454a..d766927 100644 --- a/src/mcedit2/widgets/blocktype_list.py +++ b/src/mcedit2/widgets/blocktype_list.py @@ -61,6 +61,7 @@ def BlockTypePixmap(block, textureAtlas): image = reader.read() pixmap = QtGui.QPixmap.fromImage(image) else: + log.info("No texture for %s!", block.internalName + block.blockState) return QtGui.QPixmap(32, 32) w = pixmap.width() diff --git a/src/mceditlib/blocktypes/__init__.py b/src/mceditlib/blocktypes/__init__.py index fafc6ba..9919b38 100644 --- a/src/mceditlib/blocktypes/__init__.py +++ b/src/mceditlib/blocktypes/__init__.py @@ -198,7 +198,9 @@ class BlockTypeSet(object): if isinstance(nameAndState, tuple): internalName, blockState = nameAndState if isinstance(internalName, basestring): - ID, meta = self.IDsByState[nameAndState] + if not internalName.startswith(self.namePrefix): + internalName = self.namePrefix + internalName + ID, meta = self.IDsByState[internalName + blockState] else: # (ID, meta) ID, meta = nameAndState