def flipNorthSouth(self): if "Biomes" in self.root_tag: self.root_tag["Biomes"].value = self.root_tag["Biomes"].value[::-1, :] self._fakeEntities = None blockrotation.FlipNorthSouth(self.Blocks, self.Data) self._Blocks = self._Blocks[:, :, ::-1] # x=-x self.root_tag["Data"].value = self.root_tag["Data"].value[:, :, ::-1] northSouthPaintingMap = [0, 3, 2, 1] log.info(u"N/S Flip: Relocating entities...") for entity in self.Entities: entity["Pos"][0].value = self.Width - entity["Pos"][0].value entity["Motion"][0].value = -entity["Motion"][0].value entity["Rotation"][0].value -= 180.0 if entity["id"].value in ("Painting", "ItemFrame"): entity["TileX"].value = self.Width - entity["TileX"].value entity["Direction"].value = northSouthPaintingMap[entity["Direction"].value] for tileEntity in self.TileEntities: if not 'x' in tileEntity: continue tileEntity["x"].value = self.Width - tileEntity["x"].value - 1
def flipNorthSouth(self): blockrotation.FlipNorthSouth(self.Blocks, self.Data) self.Blocks = self.Blocks[::-1, :, :] # x=-x self.Data = self.Data[::-1, :, :] northSouthPaintingMap = [0, 3, 2, 1] info(u"N/S Flip: Relocating entities...") for entity in self.Entities: entity["Pos"][0].value = self.Width - entity["Pos"][0].value entity["Motion"][0].value = -entity["Motion"][0].value entity["Rotation"][0].value -= 180.0 if entity["id"].value == "Painting": entity["TileX"].value = self.Width - entity["TileX"].value entity["Dir"].value = northSouthPaintingMap[ entity["Dir"].value] for tileEntity in self.TileEntities: if not 'x' in tileEntity: continue tileEntity["x"].value = self.Width - tileEntity["x"].value - 1
def flipNorthSouth(self): if "Biomes" in self.root_tag: self.root_tag["Biomes"].value = self.root_tag["Biomes"].value[::-1, :] self._fakeEntities = None blockrotation.FlipNorthSouth(self.Blocks, self.Data) self._Blocks = self._Blocks[:, :, ::-1] # x=-x self.root_tag["Data"].value = self.root_tag["Data"].value[:, :, ::-1] northSouthPaintingMap = [0, 3, 2, 1] log.info(u"N/S Flip: Relocating entities...") for entity in self.Entities: entity["Pos"][0].value = self.Width - entity["Pos"][0].value entity["Motion"][0].value = -entity["Motion"][0].value entity["Rotation"][0].value -= 180.0 # Special logic for old width painting as TileX/TileZ favours -x/-z if entity["id"].value in ("Painting", "ItemFrame"): facing = entity.get("Facing", entity.get("Direction")) if facing is None: dirFacing = entity.get("Dir") if dirFacing is not None: if dirFacing.value == 0: dirFacing.value = 2 elif dirFacing.value == 2: dirFacing.value = 0 facing = dirFacing else: raise Exception("None of tags Facing/Direction/Dir found in entity %s during flipping - %r" % (entity["id"].value, entity)) if entity["id"].value == "Painting": if facing.value == 2: entity["TileX"].value = self.Width - entity["TileX"].value - self.paintingMap[entity["Motive"].value] % 2 elif facing.value == 0: entity["TileX"].value = self.Width - entity["TileX"].value - 2 + self.paintingMap[entity["Motive"].value] % 2 else: entity["TileX"].value = self.Width - entity["TileX"].value - 1 if facing.value == 3: entity["TileZ"].value = entity["TileZ"].value - 1 + self.paintingMap[entity["Motive"].value] % 2 elif facing.value == 1: entity["TileZ"].value = entity["TileZ"].value + 1 - self.paintingMap[entity["Motive"].value] % 2 facing.value = northSouthPaintingMap[facing.value] elif entity["id"].value == "ItemFrame": entity["TileX"].value = self.Width - entity["TileX"].value - 1 facing.value = northSouthPaintingMap[facing.value] for tileEntity in self.TileEntities: if not 'x' in tileEntity: continue tileEntity["x"].value = self.Width - tileEntity["x"].value - 1 if "TileTicks" in self.root_tag: for tileTick in self.TileTicks: tileTick["x"].value = self.Width - tileTick["x"].value - 1
def flipNorthSouth(self): if "Biomes" in self.root_tag: self.root_tag["Biomes"].value = self.root_tag[ "Biomes"].value[::-1, :] self._fakeEntities = None blockrotation.FlipNorthSouth(self.Blocks, self.Data) self._Blocks = self._Blocks[:, :, ::-1] # x=-x self.root_tag["Data"].value = self.root_tag["Data"].value[:, :, ::-1] northSouthPaintingMap = [0, 3, 2, 1] log.info(u"N/S Flip: Relocating entities...") for entity in self.Entities: entity["Pos"][0].value = self.Width - entity["Pos"][0].value entity["Motion"][0].value = -entity["Motion"][0].value entity["Rotation"][0].value -= 180.0 # Special logic for old width painting as TileX/TileZ favours -x/-z if entity["id"].value == "Painting": if entity["Facing"].value == 2: entity["TileX"].value = self.Width - entity[ "TileX"].value - self.paintingMap[ entity["Motive"].value] % 2 elif entity["Facing"].value == 0: entity["TileX"].value = self.Width - entity[ "TileX"].value - 2 + self.paintingMap[ entity["Motive"].value] % 2 else: entity[ "TileX"].value = self.Width - entity["TileX"].value - 1 if entity["Facing"].value == 3: entity["TileZ"].value = entity[ "TileZ"].value - 1 + self.paintingMap[ entity["Motive"].value] % 2 elif entity["Facing"].value == 1: entity["TileZ"].value = entity[ "TileZ"].value + 1 - self.paintingMap[ entity["Motive"].value] % 2 entity["Facing"].value = northSouthPaintingMap[ entity["Facing"].value] elif entity["id"].value == "ItemFrame": entity["TileX"].value = self.Width - entity["TileX"].value - 1 entity["Facing"].value = northSouthPaintingMap[ entity["Facing"].value] for tileEntity in self.TileEntities: if not 'x' in tileEntity: continue tileEntity["x"].value = self.Width - tileEntity["x"].value - 1 if "TileTicks" in self.root_tag: for tileTick in self.TileTicks: tileTick["x"].value = self.Width - tileTick["x"].value - 1
def flipNorthSouthBlocks(self): blockrotation.FlipNorthSouth(self.Blocks, self.Data)
def flipNorthSouth(self): if "Biomes" in self.root_tag: self.root_tag["Biomes"].value = self.root_tag[ "Biomes"].value[::-1, :] self._fakeEntities = None blockrotation.FlipNorthSouth(self.Blocks, self.Data) self._Blocks = self._Blocks[:, :, ::-1] # x=-x self.root_tag["Data"].value = self.root_tag["Data"].value[:, :, ::-1] northSouthPaintingMap = [0, 3, 2, 1] log.info(u"N/S Flip: Relocating entities...") mcedit_ids_get = self.defsIds.mcedit_ids.get for entity in self.Entities: try: entity["Pos"][0].value = self.Width - entity["Pos"][0].value except: pass try: entity["Motion"][0].value = -entity["Motion"][0].value except: pass try: entity["Rotation"][0].value *= -1.0 except: pass # Special logic for old width painting as TileX/TileZ favours -x/-z try: ent_id_val = entity["id"].value mce_ent_id_val = mcedit_ids_get(ent_id_val) if ent_id_val in ("Painting", "ItemFrame") or mce_ent_id_val in ( 'DEFS_ENTITIES_PAINTING', 'DEFS_ENTITIES_ITEM_FRAME'): facing = entity.get("Facing", entity.get("Direction")) if facing is None: dirFacing = entity.get("Dir") if dirFacing is not None: if dirFacing.value == 0: dirFacing.value = 2 elif dirFacing.value == 2: dirFacing.value = 0 facing = dirFacing else: raise Exception( "None of tags Facing/Direction/Dir found in entity %s during flipping - %r" % (ent_id_val, entity)) if ent_id_val == "Painting" or mce_ent_id_val == 'DEFS_ENTITIES_PAINTING': if facing.value == 2: entity["TileX"].value = self.Width - entity[ "TileX"].value - self.paintingMap[ entity["Motive"].value] % 2 elif facing.value == 0: entity["TileX"].value = self.Width - entity[ "TileX"].value - 2 + self.paintingMap[ entity["Motive"].value] % 2 else: entity["TileX"].value = self.Width - entity[ "TileX"].value - 1 if facing.value == 3: entity["TileZ"].value = entity[ "TileZ"].value - 1 + self.paintingMap[ entity["Motive"].value] % 2 elif facing.value == 1: entity["TileZ"].value = entity[ "TileZ"].value + 1 - self.paintingMap[ entity["Motive"].value] % 2 facing.value = northSouthPaintingMap[facing.value] elif ent_id_val == "ItemFrame" or mce_ent_id_val == 'DEFS_ENTITIES_ITEM_FRAME': entity[ "TileX"].value = self.Width - entity["TileX"].value - 1 facing.value = northSouthPaintingMap[facing.value] except: pass for tileEntity in self.TileEntities: if 'x' not in tileEntity: continue tileEntity["x"].value = self.Width - tileEntity["x"].value - 1 if "TileTicks" in self.root_tag: for tileTick in self.TileTicks: tileTick["x"].value = self.Width - tileTick["x"].value - 1