diff options
Diffstat (limited to 'src/main/java/kr/syeyoung/dungeonsguide/dungeon')
4 files changed, 103 insertions, 1 deletions
| diff --git a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/DungeonContext.java b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/DungeonContext.java index 2966f67b..32bda60a 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/DungeonContext.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/DungeonContext.java @@ -90,7 +90,9 @@ public class DungeonContext {          createEvent(new DungeonNodataEvent("DUNGEON_CONTEXT_CREATION"));          mapProcessor = new MapProcessor(this);          DungeonSpecificDataProvider doorFinder = DungeonSpecificDataProviderRegistry.getDoorFinder(((SkyblockStatus) e.getDungeonsGuide().getSkyblockStatus()).getDungeonName()); -        trapRoomGen = doorFinder.isTrapSpawn(e.getDungeonsGuide().getSkyblockStatus().getDungeonName()); +        if (doorFinder != null) +            trapRoomGen = doorFinder.isTrapSpawn(e.getDungeonsGuide().getSkyblockStatus().getDungeonName()); +        else mapProcessor.setBugged(true);          init = System.currentTimeMillis();      } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/MapProcessor.java b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/MapProcessor.java index dcc9e7fa..e3ec00c6 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/MapProcessor.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/MapProcessor.java @@ -15,6 +15,7 @@ import kr.syeyoung.dungeonsguide.dungeon.doorfinder.DungeonSpecificDataProvider;  import kr.syeyoung.dungeonsguide.events.DungeonContextInitializationEvent;  import kr.syeyoung.dungeonsguide.utils.MapUtils;  import lombok.Getter; +import lombok.Setter;  import net.minecraft.client.Minecraft;  import net.minecraft.entity.player.EntityPlayer;  import net.minecraft.item.ItemMap; @@ -50,6 +51,7 @@ public class MapProcessor {      @Getter      private Point topLeftMapPoint; +    @Setter      private boolean bugged = false;      private List<Point> roomsFound = new ArrayList<Point>(); diff --git a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/doorfinder/CatacombMasterDataProvider.java b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/doorfinder/CatacombMasterDataProvider.java new file mode 100755 index 00000000..f41bcf03 --- /dev/null +++ b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/doorfinder/CatacombMasterDataProvider.java @@ -0,0 +1,97 @@ +package kr.syeyoung.dungeonsguide.dungeon.doorfinder; + +import com.google.common.base.Predicate; +import com.google.common.collect.Sets; +import kr.syeyoung.dungeonsguide.e; +import kr.syeyoung.dungeonsguide.roomprocessor.bossfight.*; +import net.minecraft.entity.item.EntityArmorStand; +import net.minecraft.init.Blocks; +import net.minecraft.util.BlockPos; +import net.minecraft.util.ChatComponentText; +import net.minecraft.world.World; + +import javax.vecmath.Vector2d; +import java.util.Collection; +import java.util.Set; + +public class CatacombMasterDataProvider implements DungeonSpecificDataProvider { + +    private static final Set<Vector2d> directions = Sets.newHashSet(new Vector2d(0,1), new Vector2d(0, -1), new Vector2d(1, 0), new Vector2d(-1 , 0)); + +    @Override +    public BlockPos findDoor(World w, String dungeonName) { +        Collection<EntityArmorStand> armorStand = w.getEntities(EntityArmorStand.class, new Predicate<EntityArmorStand>() { +            @Override +            public boolean apply(EntityArmorStand input) { +                return input.getName().equals("§bMort"); +            } +        }); + +        if (armorStand.size() != 0) { +            EntityArmorStand mort = armorStand.iterator().next(); +            BlockPos pos = mort.getPosition(); +            pos = pos.add(0, 3, 0); +            for (int i = 0; i < 5; i++) { +                for (Vector2d vector2d:directions) { +                    BlockPos test = pos.add(vector2d.x * i, 0, vector2d.y * i); +                    if (w.getChunkFromBlockCoords(test).getBlock(test) == Blocks.iron_bars) { +                        return pos.add(vector2d.x * (i + 2), -2, vector2d.y * (i+2)); +                    } +                } +            } +        } +        return null; +    } + +    @Override +    public Vector2d findDoorOffset(World w, String dungeonName) { +        Collection<EntityArmorStand> armorStand = w.getEntities(EntityArmorStand.class, new Predicate<EntityArmorStand>() { +            @Override +            public boolean apply(EntityArmorStand input) { +                return input.getName().equals("§bMort"); +            } +        }); + +        if (armorStand.size() != 0) { +            EntityArmorStand mort = armorStand.iterator().next(); +            BlockPos pos = mort.getPosition(); +            pos = pos.add(0, 3, 0); +            for (int i = 0; i < 5; i++) { +                for (Vector2d vector2d:directions) { +                    BlockPos test = pos.add(vector2d.x * i, 0, vector2d.y * i); +                    if (w.getChunkFromBlockCoords(test).getBlock(test) == Blocks.iron_bars) { +                        return vector2d; +                    } +                } +            } +        } +        return null; +    } +    /* +     * +    * */ + +    @Override +    public BossfightProcessor createBossfightProcessor(World w, String dungeonName) { +        String floor = dungeonName.substring(14).trim(); +        e.sendDebugChat(new ChatComponentText("Floor: Master mode "+floor+ " Building bossfight processor")); +        return null; +    } + +    @Override +    public boolean isTrapSpawn(String dungeonName) { +        String floor = dungeonName.substring(14).trim(); +        if (floor.equals("M3")) { +            return true; +        } else if (floor.equals("M4")) { +            return true; +        } else if (floor.equals("M5")) { +            return true; +        } else if (floor.equals("M6")) { +            return true; +        } else if (floor.equals("M7")) { +            return true; +        } +        return false; +    } +} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/doorfinder/DungeonSpecificDataProviderRegistry.java b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/doorfinder/DungeonSpecificDataProviderRegistry.java index 41048bd2..9695c06e 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/doorfinder/DungeonSpecificDataProviderRegistry.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/doorfinder/DungeonSpecificDataProviderRegistry.java @@ -9,6 +9,7 @@ public class DungeonSpecificDataProviderRegistry {      static {          doorFinders.put(Pattern.compile("The Catacombs (?:F[0-9]|E)"), new CatacombDataProvider()); +        doorFinders.put(Pattern.compile("The Catacombs (?:M[0-9]|E)"), new CatacombMasterDataProvider());      }      public static DungeonSpecificDataProvider getDoorFinder(String dungeonName) { | 
