diff --git a/src/mcedit2/widgets/blockpicker.py b/src/mcedit2/widgets/blockpicker.py
index aeae0bd..c05ca98 100644
--- a/src/mcedit2/widgets/blockpicker.py
+++ b/src/mcedit2/widgets/blockpicker.py
@@ -164,9 +164,12 @@ class BlockTypesItemWidget(QtGui.QWidget):
parentTypeLabel = QtGui.QLabel("")
if block.meta != 0:
- parentBlock = block.blocktypeSet[block.internalName]
- if parentBlock.displayName != block.displayName:
- parentTypeLabel.setText("%s" % parentBlock.displayName)
+ try:
+ parentBlock = block.blocktypeSet[block.internalName]
+ if parentBlock.displayName != block.displayName:
+ parentTypeLabel.setText("%s" % parentBlock.displayName)
+ except KeyError: # no parent block; parent block is not meta=0; block was ID:meta typed in
+ pass
labelsColumn = Column(Row(nameLabel, None, parentTypeLabel),
internalNameLabel)
@@ -213,6 +216,7 @@ class BlockTypeListWidget(QtGui.QListWidget):
def __init__(self, *args, **kwargs):
super(BlockTypeListWidget, self).__init__(*args, **kwargs)
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
+ self.specifiedItem = None
_textureAtlas = None
@@ -246,6 +250,32 @@ class BlockTypeListWidget(QtGui.QListWidget):
self._searchValue = val
for item in self.findItems("", Qt.MatchContains):
item.setHidden(val.lower() not in item.block.displayName.lower())
+ try:
+ if ":" in val:
+ ID, meta = val.split(":")
+ else:
+ ID = val
+ meta = 0
+
+ ID = int(ID)
+ meta = int(meta)
+ if self.specifiedItem:
+ self.removeItemWidget(self.specifiedItem)
+ self.takeItem(self.row(self.specifiedItem))
+
+ self.specifiedItem = QtGui.QListWidgetItem()
+ block = self.blocktypes[ID, meta]
+ itemWidget = BlockTypesItemWidget([block], self.textureAtlas)
+ self.specifiedItem.setSizeHint(itemWidget.sizeHint())
+ self.specifiedItem.block = block
+ self.specifiedItem.widget = itemWidget
+
+ self.addItem(self.specifiedItem)
+ self.setItemWidget(self.specifiedItem, itemWidget)
+
+ except ValueError:
+ pass
+
def updateList(self):
if self.textureAtlas is None:
@@ -254,6 +284,7 @@ class BlockTypeListWidget(QtGui.QListWidget):
return
self.clear()
+ self.specifiedItem = None
for block in self.blocktypes:
if self._searchValue:
@@ -331,6 +362,7 @@ class BlockTypePicker(QtGui.QDialog):
if self.editorSession:
self.listWidget.textureAtlas = self.editorSession.textureAtlas
self.listWidget.blocktypes = self.editorSession.worldEditor.blocktypes
+ self.searchField.clearEditText()
@property
def selectedBlocks(self):