Exemplo n.º 1
0
    def flipEastWest(self):
        if "Biomes" in self.root_tag:
            self.root_tag["Biomes"].value = self.root_tag["Biomes"].value[:, ::-1]

        self._fakeEntities = None

        blockrotation.FlipEastWest(self.Blocks, self.Data)
        self._Blocks = self._Blocks[:, ::-1, :]  # z=-z
        self.root_tag["Data"].value = self.root_tag["Data"].value[:, ::-1, :]

        eastWestPaintingMap = [2, 1, 0, 3]

        log.info(u"E/W Flip: Relocating entities...")
        for entity in self.Entities:

            entity["Pos"][2].value = self.Length - entity["Pos"][2].value
            entity["Motion"][2].value = -entity["Motion"][2].value

            entity["Rotation"][0].value -= 180.0

            if entity["id"].value in ("Painting", "ItemFrame"):
                entity["TileZ"].value = self.Length - entity["TileZ"].value
                entity["Direction"].value = eastWestPaintingMap[entity["Direction"].value]

        for tileEntity in self.TileEntities:
            tileEntity["z"].value = self.Length - tileEntity["z"].value - 1
Exemplo n.º 2
0
    def flipEastWest(self):
        if "Biomes" in self.root_tag:
            self.root_tag["Biomes"].value = self.root_tag["Biomes"].value[:, ::-1]

        self._fakeEntities = None

        blockrotation.FlipEastWest(self.Blocks, self.Data)
        self._Blocks = self._Blocks[:, ::-1, :]  # z=-z
        self.root_tag["Data"].value = self.root_tag["Data"].value[:, ::-1, :]

        eastWestPaintingMap = [2, 1, 0, 3]

        log.info(u"E/W Flip: Relocating entities...")
        for entity in self.Entities:

            entity["Pos"][2].value = self.Length - entity["Pos"][2].value
            entity["Motion"][2].value = -entity["Motion"][2].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 == 1:
                    entity["TileZ"].value = self.Length - entity["TileZ"].value - 2 + self.paintingMap[entity["Motive"].value] % 2
                elif facing.value == 3:
                    entity["TileZ"].value = self.Length - entity["TileZ"].value - self.paintingMap[entity["Motive"].value] % 2
                else:
                    entity["TileZ"].value = self.Length - entity["TileZ"].value - 1
                if facing.value == 0:
                    entity["TileX"].value = entity["TileX"].value + 1 - self.paintingMap[entity["Motive"].value] % 2
                elif facing.value == 2:
                    entity["TileX"].value = entity["TileX"].value - 1 + self.paintingMap[entity["Motive"].value] % 2
                facing.value = eastWestPaintingMap[facing.value]
            elif entity["id"].value == "ItemFrame":
                entity["TileZ"].value = self.Length - entity["TileZ"].value - 1
                facing.value = eastWestPaintingMap[facing.value]

        for tileEntity in self.TileEntities:
            tileEntity["z"].value = self.Length - tileEntity["z"].value - 1

        if "TileTicks" in self.root_tag:
            for tileTick in self.TileTicks:
                tileTick["z"].value = self.Length - tileTick["z"].value - 1
    def flipEastWest(self):
        if "Biomes" in self.root_tag:
            self.root_tag["Biomes"].value = self.root_tag[
                "Biomes"].value[:, ::-1]

        self._fakeEntities = None

        blockrotation.FlipEastWest(self.Blocks, self.Data)
        self._Blocks = self._Blocks[:, ::-1, :]  # z=-z
        self.root_tag["Data"].value = self.root_tag["Data"].value[:, ::-1, :]

        eastWestPaintingMap = [2, 1, 0, 3]

        log.info(u"E/W Flip: Relocating entities...")
        for entity in self.Entities:

            entity["Pos"][2].value = self.Length - entity["Pos"][2].value
            entity["Motion"][2].value = -entity["Motion"][2].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 == 1:
                    entity["TileZ"].value = self.Length - entity[
                        "TileZ"].value - 2 + self.paintingMap[
                            entity["Motive"].value] % 2
                elif entity["Facing"].value == 3:
                    entity["TileZ"].value = self.Length - entity[
                        "TileZ"].value - self.paintingMap[
                            entity["Motive"].value] % 2
                else:
                    entity["TileZ"].value = self.Length - entity[
                        "TileZ"].value - 1
                if entity["Facing"].value == 0:
                    entity["TileX"].value = entity[
                        "TileX"].value + 1 - self.paintingMap[
                            entity["Motive"].value] % 2
                elif entity["Facing"].value == 2:
                    entity["TileX"].value = entity[
                        "TileX"].value - 1 + self.paintingMap[
                            entity["Motive"].value] % 2
                entity["Facing"].value = eastWestPaintingMap[
                    entity["Facing"].value]
            elif entity["id"].value == "ItemFrame":
                entity["TileZ"].value = self.Length - entity["TileZ"].value - 1
                entity["Facing"].value = eastWestPaintingMap[
                    entity["Facing"].value]

        for tileEntity in self.TileEntities:
            tileEntity["z"].value = self.Length - tileEntity["z"].value - 1

        if "TileTicks" in self.root_tag:
            for tileTick in self.TileTicks:
                tileTick["z"].value = self.Length - tileTick["z"].value - 1
Exemplo n.º 4
0
    def flipEastWest(self):
        " xxx flip entities "
        blockrotation.FlipEastWest(self.Blocks, self.Data)
        self.Blocks = self.Blocks[:, ::-1, :]  # z=-z
        self.Data = self.Data[:, ::-1, :]

        eastWestPaintingMap = [2, 1, 0, 3]

        info(u"E/W Flip: Relocating entities...")
        for entity in self.Entities:

            entity["Pos"][2].value = self.Length - entity["Pos"][2].value
            entity["Motion"][2].value = -entity["Motion"][2].value

            entity["Rotation"][0].value -= 180.0

            if entity["id"].value == "Painting":
                entity["TileZ"].value = self.Length - entity["TileZ"].value
                entity["Dir"].value = eastWestPaintingMap[entity["Dir"].value]

        for tileEntity in self.TileEntities:
            tileEntity["z"].value = self.Length - tileEntity["z"].value - 1
Exemplo n.º 5
0
 def flipEastWestBlocks(self):
     blockrotation.FlipEastWest(self.Blocks, self.Data)
Exemplo n.º 6
0
    def flipEastWest(self):
        if "Biomes" in self.root_tag:
            self.root_tag["Biomes"].value = self.root_tag[
                "Biomes"].value[:, ::-1]

        self._fakeEntities = None

        blockrotation.FlipEastWest(self.Blocks, self.Data)
        self._Blocks = self._Blocks[:, ::-1, :]  # z=-z
        self.root_tag["Data"].value = self.root_tag["Data"].value[:, ::-1, :]

        eastWestPaintingMap = [2, 1, 0, 3]

        log.info(u"E/W Flip: Relocating entities...")
        mcedit_ids_get = self.defsIds.mcedit_ids.get
        for entity in self.Entities:

            try:
                entity["Pos"][2].value = self.Length - entity["Pos"][2].value
            except:
                pass
            try:
                entity["Motion"][2].value = -entity["Motion"][2].value
            except:
                pass

            try:
                entity["Rotation"][
                    0].value = entity["Rotation"][0].value * -1.0 + 180
            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"
                                % (entity["id"].value, entity))

                if ent_id_val == "Painting" or mce_ent_id_val == 'DEFS_ENTITIES_PAINTING':
                    if facing.value == 1:
                        entity["TileZ"].value = self.Length - entity[
                            "TileZ"].value - 2 + self.paintingMap[
                                entity["Motive"].value] % 2
                    elif facing.value == 3:
                        entity["TileZ"].value = self.Length - entity[
                            "TileZ"].value - self.paintingMap[
                                entity["Motive"].value] % 2
                    else:
                        entity["TileZ"].value = self.Length - entity[
                            "TileZ"].value - 1
                    if facing.value == 0:
                        entity["TileX"].value = entity[
                            "TileX"].value + 1 - self.paintingMap[
                                entity["Motive"].value] % 2
                    elif facing.value == 2:
                        entity["TileX"].value = entity[
                            "TileX"].value - 1 + self.paintingMap[
                                entity["Motive"].value] % 2
                    facing.value = eastWestPaintingMap[facing.value]
                elif ent_id_val == "ItemFrame" or mce_ent_id_val == 'DEFS_ENTITIES_ITEM_FRAME':
                    entity["TileZ"].value = self.Length - entity[
                        "TileZ"].value - 1
                    facing.value = eastWestPaintingMap[facing.value]
            except:
                pass

        for tileEntity in self.TileEntities:
            tileEntity["z"].value = self.Length - tileEntity["z"].value - 1

        if "TileTicks" in self.root_tag:
            for tileTick in self.TileTicks:
                tileTick["z"].value = self.Length - tileTick["z"].value - 1