def createPlayer(self, playerUUID=""): """ Create a new player with the given name and return the PlayerRef. Raises some kind of IOError if the player could not be created. :param playerUUID: :type playerUUID: str :return: :rtype: PCPlayer """ if self.readonly: raise IOError("World is opened read only.") playerFilePath = "playerdata/%s.dat" % playerUUID if playerUUID == "": if "Player" in self.metadata.rootTag["Data"]: raise IOError("Single-player player already exists.") playerTag = nbt.TAG_Compound() self.metadata.rootTag["Data"]["Player"] = playerTag else: if self.selectedRevision.containsFile(playerFilePath): raise ValueError("Cannot create player %s: already exists.") playerTag = nbt.TAG_Compound() player = AnvilPlayerRef(playerTag, self) nbtattr.SetNBTDefaults(player) if playerUUID != "Player": self.checkSessionLock() self.selectedRevision.writeFile(playerFilePath, playerTag.save()) return self.getPlayer(playerUUID)
def __init__(self, rootTag=None, parent=None): if rootTag is None: rootTag = nbt.TAG_Compound() nbtattr.SetNBTDefaults(self) super(DrawerItemStackRef, self).__init__(rootTag, parent)
def create(cls): rootTag = nbt.TAG_Compound() ref = cls(rootTag) nbtattr.SetNBTDefaults(ref) return ref