added createChest command and supporting function chestWithItemID
This commit is contained in:
parent
3eed2fe689
commit
25ad51c8cb
20
mce.py
20
mce.py
@ -24,6 +24,7 @@ class mce(object):
|
|||||||
{commandPrefix}export <filename> <sourcePoint> <sourceSize>
|
{commandPrefix}export <filename> <sourcePoint> <sourceSize>
|
||||||
{commandPrefix}import <filename> <destPoint> [noair] [nowater]
|
{commandPrefix}import <filename> <destPoint> [noair] [nowater]
|
||||||
|
|
||||||
|
{commandPrefix}createChest <point> <item> [ <count> ]
|
||||||
{commandPrefix}analyze
|
{commandPrefix}analyze
|
||||||
|
|
||||||
Player commands:
|
Player commands:
|
||||||
@ -82,6 +83,8 @@ class mce(object):
|
|||||||
"export",
|
"export",
|
||||||
"import",
|
"import",
|
||||||
|
|
||||||
|
"createchest",
|
||||||
|
|
||||||
"player",
|
"player",
|
||||||
"spawn",
|
"spawn",
|
||||||
|
|
||||||
@ -340,6 +343,23 @@ class mce(object):
|
|||||||
self.needsSave = True;
|
self.needsSave = True;
|
||||||
print "Replaced {0} blocks.".format("all" if box is None else box.volume)
|
print "Replaced {0} blocks.".format("all" if box is None else box.volume)
|
||||||
|
|
||||||
|
def _createchest(self, command):
|
||||||
|
"""
|
||||||
|
createChest <point> <item> [ <count> ]
|
||||||
|
|
||||||
|
Create a chest filled with the specified item.
|
||||||
|
Stacks are 64 if count is not given.
|
||||||
|
"""
|
||||||
|
point = self.readPoint(command)
|
||||||
|
itemID = self.readInt(command)
|
||||||
|
count = 64;
|
||||||
|
if len(command):
|
||||||
|
count = self.readInt(command)
|
||||||
|
|
||||||
|
chest = mclevel.MCSchematic.chestWithItemID(itemID, count);
|
||||||
|
self.level.copyBlocksFrom(chest, chest.getWorldBounds(), point);
|
||||||
|
self.needsSave = True;
|
||||||
|
|
||||||
def _analyze(self, command):
|
def _analyze(self, command):
|
||||||
"""
|
"""
|
||||||
analyze
|
analyze
|
||||||
|
23
mclevel.py
23
mclevel.py
@ -1225,6 +1225,26 @@ class MCSchematic (MCLevel):
|
|||||||
assert isinstance(entityTag, TAG_Compound)
|
assert isinstance(entityTag, TAG_Compound)
|
||||||
self.TileEntities.append(entityTag);
|
self.TileEntities.append(entityTag);
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def chestWithItemID(self, itemID, count=64, damage=0):
|
||||||
|
""" Creates a chest with a stack of 'itemID' in each slot.
|
||||||
|
Optionally specify the count of items in each stack. Pass a negative
|
||||||
|
value for damage to create unnaturally sturdy tools. """
|
||||||
|
root_tag = TAG_Compound();
|
||||||
|
invTag = TAG_List();
|
||||||
|
root_tag["Inventory"] = invTag
|
||||||
|
for slot in range(9, 36):
|
||||||
|
itemTag = TAG_Compound();
|
||||||
|
itemTag["Slot"] = TAG_Byte(slot)
|
||||||
|
itemTag["Count"] = TAG_Byte(count)
|
||||||
|
itemTag["id"] = TAG_Short(itemID)
|
||||||
|
itemTag["Damage"] = TAG_Short(damage)
|
||||||
|
invTag.append(itemTag);
|
||||||
|
|
||||||
|
chest = INVEditChest(root_tag, "");
|
||||||
|
|
||||||
|
return chest;
|
||||||
|
|
||||||
class INVEditChest(MCSchematic):
|
class INVEditChest(MCSchematic):
|
||||||
Width = 1
|
Width = 1
|
||||||
Height = 1
|
Height = 1
|
||||||
@ -1233,6 +1253,7 @@ class INVEditChest(MCSchematic):
|
|||||||
Data = array([[[0]]], 'uint8');
|
Data = array([[[0]]], 'uint8');
|
||||||
Entities = TAG_List();
|
Entities = TAG_List();
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, root_tag, filename):
|
def __init__(self, root_tag, filename):
|
||||||
|
|
||||||
if filename:
|
if filename:
|
||||||
@ -1249,7 +1270,7 @@ class INVEditChest(MCSchematic):
|
|||||||
|
|
||||||
for item in list(root_tag["Inventory"]):
|
for item in list(root_tag["Inventory"]):
|
||||||
slot = item["Slot"].value
|
slot = item["Slot"].value
|
||||||
if slot < 9 or slot > 36:
|
if slot < 9 or slot >= 36:
|
||||||
root_tag["Inventory"].remove(item)
|
root_tag["Inventory"].remove(item)
|
||||||
else:
|
else:
|
||||||
item["Slot"].value -= 9 # adjust for different chest slot indexes
|
item["Slot"].value -= 9 # adjust for different chest slot indexes
|
||||||
|
Reference in New Issue
Block a user