コード例 #1
0
    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
コード例 #2
0
    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
コード例 #3
0
    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
コード例 #4
0
    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
コード例 #5
0
 def flipNorthSouthBlocks(self):
     blockrotation.FlipNorthSouth(self.Blocks, self.Data)
コード例 #6
0
    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