From c37e8bb98d04801a31b1f0dd1c74f5117c534aeb Mon Sep 17 00:00:00 2001 From: syeyoung Date: Fri, 22 Jan 2021 13:06:37 +0900 Subject: categorize feature impls --- .../dungeonsguide/dungeon/DungeonContext.java | 5 +- .../dungeonsguide/features/FeatureRegistry.java | 8 +- .../features/impl/FeatureAutoReparty.java | 30 -- .../features/impl/FeatureBoxSkelemaster.java | 51 ---- .../features/impl/FeatureBoxStarMobs.java | 50 ---- .../features/impl/FeatureChestPrice.java | 101 ------- .../features/impl/FeatureCooldownCounter.java | 47 --- .../features/impl/FeatureDisableMessage.java | 68 ----- .../features/impl/FeatureDungeonDeaths.java | 94 ------ .../features/impl/FeatureDungeonMap.java | 322 --------------------- .../features/impl/FeatureDungeonMilestone.java | 74 ----- .../features/impl/FeatureDungeonRealTime.java | 58 ---- .../features/impl/FeatureDungeonSBTime.java | 82 ------ .../features/impl/FeatureDungeonScore.java | 211 -------------- .../features/impl/FeatureDungeonSecrets.java | 72 ----- .../features/impl/FeatureDungeonTombs.java | 51 ---- .../features/impl/FeatureInstaCloseChest.java | 124 -------- .../features/impl/FeatureTooltipDungeonStat.java | 35 --- .../features/impl/FeatureTooltipPrice.java | 93 ------ .../features/impl/FeatureWarnLowHealth.java | 74 ----- .../features/impl/boss/FeatureAutoReparty.java | 30 ++ .../features/impl/boss/FeatureChestPrice.java | 93 ++++++ .../impl/dungeon/FeatureBoxSkelemaster.java | 51 ++++ .../features/impl/dungeon/FeatureBoxStarMobs.java | 50 ++++ .../impl/dungeon/FeatureDungeonDeaths.java | 94 ++++++ .../features/impl/dungeon/FeatureDungeonMap.java | 322 +++++++++++++++++++++ .../impl/dungeon/FeatureDungeonMilestone.java | 74 +++++ .../impl/dungeon/FeatureDungeonRealTime.java | 58 ++++ .../impl/dungeon/FeatureDungeonSBTime.java | 82 ++++++ .../features/impl/dungeon/FeatureDungeonScore.java | 211 ++++++++++++++ .../impl/dungeon/FeatureDungeonSecrets.java | 72 +++++ .../features/impl/dungeon/FeatureDungeonTombs.java | 51 ++++ .../impl/dungeon/FeatureInstaCloseChest.java | 124 ++++++++ .../impl/dungeon/FeatureWarnLowHealth.java | 74 +++++ .../features/impl/etc/FeatureCooldownCounter.java | 47 +++ .../features/impl/etc/FeatureDisableMessage.java | 60 ++++ .../impl/etc/FeatureTooltipDungeonStat.java | 34 +++ .../features/impl/etc/FeatureTooltipPrice.java | 92 ++++++ .../bossfight/BossfightProcessorLivid.java | 4 + 39 files changed, 1631 insertions(+), 1642 deletions(-) delete mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureAutoReparty.java delete mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureBoxSkelemaster.java delete mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureBoxStarMobs.java delete mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureChestPrice.java delete mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureCooldownCounter.java delete mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDisableMessage.java delete mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonDeaths.java delete mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonMap.java delete mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonMilestone.java delete mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonRealTime.java delete mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonSBTime.java delete mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonScore.java delete mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonSecrets.java delete mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonTombs.java delete mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureInstaCloseChest.java delete mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureTooltipDungeonStat.java delete mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureTooltipPrice.java delete mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureWarnLowHealth.java create mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureAutoReparty.java create mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureChestPrice.java create mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxSkelemaster.java create mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxStarMobs.java create mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonDeaths.java create mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonMap.java create mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonMilestone.java create mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonRealTime.java create mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonSBTime.java create mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonScore.java create mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonSecrets.java create mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonTombs.java create mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureInstaCloseChest.java create mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureWarnLowHealth.java create mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureCooldownCounter.java create mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureDisableMessage.java create mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureTooltipDungeonStat.java create mode 100644 src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureTooltipPrice.java (limited to 'src/main/java/kr') diff --git a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/DungeonContext.java b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/DungeonContext.java index 6d1874c0..e9f8e713 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/dungeon/DungeonContext.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/dungeon/DungeonContext.java @@ -7,7 +7,7 @@ import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom; import kr.syeyoung.dungeonsguide.e; import kr.syeyoung.dungeonsguide.events.BossroomEnterEvent; import kr.syeyoung.dungeonsguide.features.FeatureRegistry; -import kr.syeyoung.dungeonsguide.features.impl.FeatureDungeonMap; +import kr.syeyoung.dungeonsguide.features.impl.dungeon.FeatureDungeonMap; import kr.syeyoung.dungeonsguide.roomprocessor.RoomProcessor; import kr.syeyoung.dungeonsguide.roomprocessor.bossfight.BossfightProcessor; import kr.syeyoung.dungeonsguide.utils.TextUtils; @@ -15,12 +15,10 @@ import lombok.Getter; import lombok.Setter; import net.minecraft.client.Minecraft; import net.minecraft.client.network.NetworkPlayerInfo; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.scoreboard.ScorePlayerTeam; import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.util.IChatComponent; -import net.minecraft.util.IntegerCache; import net.minecraft.world.World; import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.common.MinecraftForge; @@ -28,7 +26,6 @@ import net.minecraftforge.common.MinecraftForge; import java.awt.*; import java.util.*; import java.util.List; -import java.util.concurrent.CopyOnWriteArrayList; public class DungeonContext { @Getter diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java index 5de307cc..ac42cb2e 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java @@ -1,6 +1,12 @@ package kr.syeyoung.dungeonsguide.features; -import kr.syeyoung.dungeonsguide.features.impl.*; +import kr.syeyoung.dungeonsguide.features.impl.boss.FeatureAutoReparty; +import kr.syeyoung.dungeonsguide.features.impl.boss.FeatureChestPrice; +import kr.syeyoung.dungeonsguide.features.impl.dungeon.*; +import kr.syeyoung.dungeonsguide.features.impl.etc.FeatureCooldownCounter; +import kr.syeyoung.dungeonsguide.features.impl.etc.FeatureDisableMessage; +import kr.syeyoung.dungeonsguide.features.impl.etc.FeatureTooltipDungeonStat; +import kr.syeyoung.dungeonsguide.features.impl.etc.FeatureTooltipPrice; import lombok.Getter; import java.util.ArrayList; diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureAutoReparty.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureAutoReparty.java deleted file mode 100644 index 2ff4ff2d..00000000 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureAutoReparty.java +++ /dev/null @@ -1,30 +0,0 @@ -package kr.syeyoung.dungeonsguide.features.impl; - -import kr.syeyoung.dungeonsguide.e; -import kr.syeyoung.dungeonsguide.features.SimpleFeature; -import kr.syeyoung.dungeonsguide.features.listener.DungeonEndListener; -import kr.syeyoung.dungeonsguide.features.listener.GuiBackgroundRenderListener; -import kr.syeyoung.dungeonsguide.utils.TextUtils; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.Gui; -import net.minecraft.client.gui.inventory.GuiChest; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.inventory.ContainerChest; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraftforge.client.event.GuiScreenEvent; -import org.lwjgl.opengl.GL11; - -public class FeatureAutoReparty extends SimpleFeature implements DungeonEndListener { - public FeatureAutoReparty() { - super("Bossfight", "Auto reparty when dungeon finishes","Auto reparty on dungeon finish\n\nThis automates player chatting action, (disbanding, repartying) Thus it might be against hypixel's rules.\nBut mods like auto-gg exist so I'm leaving this feature.\nThis option is use-at-your-risk and you'll be responsible for ban if you somehow get banned because of this feature\n(Although it is not likely to happen)\nDefaults to off", "bossfight.autoreparty", false); - } - - @Override - public void onDungeonEnd() { - if (isEnabled()) e.getDungeonsGuide().getCommandReparty().requestReparty(); - } -} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureBoxSkelemaster.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureBoxSkelemaster.java deleted file mode 100644 index e8eddf85..00000000 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureBoxSkelemaster.java +++ /dev/null @@ -1,51 +0,0 @@ -package kr.syeyoung.dungeonsguide.features.impl; - -import com.google.common.base.Predicate; -import kr.syeyoung.dungeonsguide.SkyblockStatus; -import kr.syeyoung.dungeonsguide.config.types.AColor; -import kr.syeyoung.dungeonsguide.e; -import kr.syeyoung.dungeonsguide.features.FeatureParameter; -import kr.syeyoung.dungeonsguide.features.SimpleFeature; -import kr.syeyoung.dungeonsguide.features.listener.WorldRenderListener; -import kr.syeyoung.dungeonsguide.utils.RenderUtils; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.item.EntityArmorStand; -import net.minecraft.entity.monster.EntitySkeleton; -import net.minecraft.util.BlockPos; -import org.jetbrains.annotations.Nullable; - -import java.awt.*; -import java.util.List; - - -public class FeatureBoxSkelemaster extends SimpleFeature implements WorldRenderListener { - public FeatureBoxSkelemaster() { - super("Dungeon", "Box Skeleton Masters", "Box skeleton masters in dungeons", "dungeon.skeletonmasterbox", true); - parameters.put("radius", new FeatureParameter("radius", "Highlight Radius", "The maximum distance between player and skeletonmaster to be boxed", 20, "integer")); - parameters.put("color", new FeatureParameter("color", "Highlight Color", "Highlight Color of Skeleton master", new AColor(255,0,0,50), "acolor")); - } - - - private SkyblockStatus skyblockStatus = e.getDungeonsGuide().getSkyblockStatus(); - @Override - public void drawWorld(float partialTicks) { - if (!isEnabled()) return; - if (!skyblockStatus.isOnDungeon()) return; - - final BlockPos player = Minecraft.getMinecraft().thePlayer.getPosition(); - int val = this.getParameter("radius").getValue(); - final int sq = val * val; - - List skeletonList = Minecraft.getMinecraft().theWorld.getEntities(EntityArmorStand.class, new Predicate() { - @Override - public boolean apply(@Nullable EntityArmorStand input) { - if (player.distanceSq(input.getPosition()) > sq) return false; - return input.getName().contains("Skeleton Master"); - } - }); - Color c = this.getParameter("color").getValue(); - for (EntityArmorStand entitySkeleton : skeletonList) { - RenderUtils.highlightBox(entitySkeleton, c, partialTicks, true); - } - } -} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureBoxStarMobs.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureBoxStarMobs.java deleted file mode 100644 index dd61ce15..00000000 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureBoxStarMobs.java +++ /dev/null @@ -1,50 +0,0 @@ -package kr.syeyoung.dungeonsguide.features.impl; - -import com.google.common.base.Predicate; -import kr.syeyoung.dungeonsguide.SkyblockStatus; -import kr.syeyoung.dungeonsguide.config.types.AColor; -import kr.syeyoung.dungeonsguide.e; -import kr.syeyoung.dungeonsguide.features.FeatureParameter; -import kr.syeyoung.dungeonsguide.features.SimpleFeature; -import kr.syeyoung.dungeonsguide.features.listener.WorldRenderListener; -import kr.syeyoung.dungeonsguide.utils.RenderUtils; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.item.EntityArmorStand; -import net.minecraft.util.BlockPos; -import org.jetbrains.annotations.Nullable; - -import java.awt.*; -import java.util.List; - - -public class FeatureBoxStarMobs extends SimpleFeature implements WorldRenderListener { - public FeatureBoxStarMobs() { - super("Dungeon", "Box Starred mobs", "Box Starred mobs in dungeons", "dungeon.starmobbox", false); - parameters.put("radius", new FeatureParameter("radius", "Highlight Radius", "The maximum distance between player and skeletonmaster to be boxed", 20, "integer")); - parameters.put("color", new FeatureParameter("color", "Highlight Color", "Highlight Color of Skeleton master", new AColor(0,255,255,50), "acolor")); - } - - - private SkyblockStatus skyblockStatus = e.getDungeonsGuide().getSkyblockStatus(); - @Override - public void drawWorld(float partialTicks) { - if (!isEnabled()) return; - if (!skyblockStatus.isOnDungeon()) return; - - final BlockPos player = Minecraft.getMinecraft().thePlayer.getPosition(); - int val = this.getParameter("radius").getValue(); - final int sq = val * val; - - List skeletonList = Minecraft.getMinecraft().theWorld.getEntities(EntityArmorStand.class, new Predicate() { - @Override - public boolean apply(@Nullable EntityArmorStand input) { - if (player.distanceSq(input.getPosition()) > sq) return false; - return input.getName().contains("✯"); - } - }); - Color c = this.getParameter("color").getValue(); - for (EntityArmorStand entitySkeleton : skeletonList) { - RenderUtils.highlightBox(entitySkeleton, c, partialTicks, true); - } - } -} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureChestPrice.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureChestPrice.java deleted file mode 100644 index d98a3bbc..00000000 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureChestPrice.java +++ /dev/null @@ -1,101 +0,0 @@ -package kr.syeyoung.dungeonsguide.features.impl; - -import kr.syeyoung.dungeonsguide.e; -import kr.syeyoung.dungeonsguide.features.SimpleFeature; -import kr.syeyoung.dungeonsguide.features.listener.GuiBackgroundRenderListener; -import kr.syeyoung.dungeonsguide.features.listener.GuiPostRenderListener; -import kr.syeyoung.dungeonsguide.features.listener.GuiPreRenderListener; -import kr.syeyoung.dungeonsguide.utils.TextUtils; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.Gui; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.client.gui.inventory.GuiChest; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.inventory.ContainerChest; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.StatCollector; -import net.minecraftforge.client.event.GuiScreenEvent; -import org.lwjgl.opengl.GL11; - -import java.util.HashMap; -import java.util.TreeMap; - -public class FeatureChestPrice extends SimpleFeature implements GuiBackgroundRenderListener { - public FeatureChestPrice() { - super("Bossfight", "Show Profit of Dungeon Chests","Show Profit of Dungeon Chests", "bossfight.profitchest", true); - } - - @Override - public void onGuiBGRender(GuiScreenEvent.BackgroundDrawnEvent rendered) { - if (!isEnabled()) return; - if (!(rendered.gui instanceof GuiChest)) return; - if (!e.getDungeonsGuide().getSkyblockStatus().isOnDungeon()) return; - - GlStateManager.disableLighting(); - - ContainerChest chest = (ContainerChest) ((GuiChest) rendered.gui).inventorySlots; - if (!chest.getLowerChestInventory().getName().endsWith("Chest")) return; - IInventory actualChest = chest.getLowerChestInventory(); - - int chestPrice = 0; - int itemPrice = 0; - for (int i = 0; i 0) { - for (int j1 = 0; j1 < nbttaglist1.tagCount(); ++j1) { - String str = nbttaglist1.getStringTagAt(j1); - if (str.endsWith("Coins")) { - String coins = TextUtils.stripColor(str).replace(" Coins", "").replace(",",""); - try { - chestPrice = Integer.parseInt(coins); - } catch (Exception e) { - - } - } - } - } - } - } - } - itemPrice += FeatureInstaCloseChest.getPrice(item) * item.stackSize; - } - } - - int i = 222; - int j = i - 108; - int ySize = j + (actualChest.getSizeInventory() / 9) * 18; - int left = (rendered.gui.width + 176) / 2; - int top = (rendered.gui.height - ySize ) / 2; - - int width = 120; - - GlStateManager.pushMatrix(); - GlStateManager.translate(left, top, 0); - Gui.drawRect( 0,0,width, 30, 0xFFDDDDDD); - - FontRenderer fr = Minecraft.getMinecraft().fontRendererObj; - fr.drawString("BIN/AH Price: ", 5,5, 0xFF000000); - String str = TextUtils.format(itemPrice); - fr.drawString(str, width - fr.getStringWidth(str) - 5, 5, 0xFF000000); - - fr.drawString("Profit: ", 5,15, 0xFF000000); - str = (itemPrice > chestPrice ? "+" : "") +TextUtils.format(itemPrice - chestPrice); - fr.drawString(str, width - fr.getStringWidth(str) - 5, 15, itemPrice > chestPrice ? 0xFF00CC00 : 0xFFCC0000); - - GlStateManager.popMatrix(); - } -} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureCooldownCounter.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureCooldownCounter.java deleted file mode 100644 index 28fc7d0e..00000000 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureCooldownCounter.java +++ /dev/null @@ -1,47 +0,0 @@ -package kr.syeyoung.dungeonsguide.features.impl; - -import kr.syeyoung.dungeonsguide.SkyblockStatus; -import kr.syeyoung.dungeonsguide.e; -import kr.syeyoung.dungeonsguide.features.FeatureParameter; -import kr.syeyoung.dungeonsguide.features.GuiFeature; -import kr.syeyoung.dungeonsguide.features.listener.DungeonQuitListener; -import kr.syeyoung.dungeonsguide.features.listener.TickListener; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.renderer.GlStateManager; -import org.lwjgl.opengl.GL11; - -import java.awt.*; - -public class FeatureCooldownCounter extends GuiFeature implements DungeonQuitListener { - public FeatureCooldownCounter() { - super("ETC", "Dungeon Cooldown Counter", "Counts 10 seconds after leaving dungeon", "qol.cooldown", true, getFontRenderer().getStringWidth("Cooldown: 10s "), getFontRenderer().FONT_HEIGHT); - parameters.put("color", new FeatureParameter("color", "Color", "Color of text", Color.white, "color")); - } - - private long leftDungeonTime = 0L; - private boolean wasInDungeon = false; - @Override - public void drawHUD(float partialTicks) { - if (System.currentTimeMillis() - leftDungeonTime > 20000) return; - FontRenderer fr = Minecraft.getMinecraft().fontRendererObj; - double scale = getFeatureRect().getHeight() / fr.FONT_HEIGHT; - GlStateManager.scale(scale, scale, 0); - fr.drawString("Cooldown: "+(20 - (System.currentTimeMillis() - leftDungeonTime) / 1000)+"s", 0,0,this.getParameter("color").getValue().getRGB()); - } - - @Override - public void drawDemo(float partialTicks) { - FontRenderer fr = Minecraft.getMinecraft().fontRendererObj; - double scale = getFeatureRect().getHeight() / fr.FONT_HEIGHT; - GlStateManager.scale(scale, scale, 0); - fr.drawString("Cooldown: 20s", 0,0,this.getParameter("color").getValue().getRGB()); - } - - SkyblockStatus skyblockStatus = e.getDungeonsGuide().getSkyblockStatus(); - - @Override - public void onDungeonQuit() { - leftDungeonTime = System.currentTimeMillis(); - } -} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDisableMessage.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDisableMessage.java deleted file mode 100644 index 50bb0211..00000000 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDisableMessage.java +++ /dev/null @@ -1,68 +0,0 @@ -package kr.syeyoung.dungeonsguide.features.impl; - -import kr.syeyoung.dungeonsguide.SkyblockStatus; -import kr.syeyoung.dungeonsguide.e; -import kr.syeyoung.dungeonsguide.features.FeatureParameter; -import kr.syeyoung.dungeonsguide.features.GuiFeature; -import kr.syeyoung.dungeonsguide.features.SimpleFeature; -import kr.syeyoung.dungeonsguide.features.listener.ChatListener; -import kr.syeyoung.dungeonsguide.utils.TextUtils; -import lombok.AllArgsConstructor; -import lombok.Data; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.network.NetworkPlayerInfo; -import net.minecraft.scoreboard.ScorePlayerTeam; -import net.minecraftforge.client.event.ClientChatReceivedEvent; -import org.lwjgl.opengl.GL11; - -import java.awt.*; -import java.util.regex.Pattern; - -public class FeatureDisableMessage extends SimpleFeature implements ChatListener { - @Data - @AllArgsConstructor - public static class MessageData { - private Pattern pattern; - private String name; - private String description; - private String key; - } - - private static final MessageData[] PRE_DEFINED = new MessageData[] { - new MessageData(Pattern.compile("§r§cThere are blocks in the way!§r"), "Aote block message", "\"There are blocks in the way!\"", "aote"), - new MessageData(Pattern.compile("§r§cThis ability is currently on cooldown for .+ more seconds?\\.§r"), "Ability cooldown message", "\"This ability is currently on cooldown for 3 more seconds.\"", "cooldown"), - new MessageData(Pattern.compile("§r§cWhow! Slow down there!§r"), "Grappling hook cooldown", "\"Whow! Slow down there!\"", "grappling"), - new MessageData(Pattern.compile("§r§cNo more charges, next one in §r§e.+§r§cs!§r"), "Zombie Sword Charging", "\"No more charges, next one in 3s!\"", "zombie"), - new MessageData(Pattern.compile("§r§7Your .+ hit §r§c.+ §r§7enem(?:y|ies) for §r§c.+ §r§7damage\\.§r"), "Ability Damage", "\"Your blahblah hit 42 enemy for a lots of damage\"", "ability"), - new MessageData(Pattern.compile("§r§cYou do not have enough mana to do this!§r"), "Not enough mana", "\"You do not have enough mana to do this!\"", "mana"), - new MessageData(Pattern.compile("§r§aUsed §r.+§r§a!§r"), "Dungeon Ability Usage", "\"Used Guided Sheep!\" and such", "dungeonability"), - new MessageData(Pattern.compile("§r.+§r§a is ready to use! Press §r.+§r§a to activate it!§r"), "Ready to use message", "\"Blah is ready to use! Press F to activate it!", "readytouse"), - new MessageData(Pattern.compile("§r.+ §r§ais now available!§r"), "Ability Available","\"blah is now available!\"", "available"), - new MessageData(Pattern.compile("§r§cThe Stone doesn't seem to do anything here\\.§r"), "Stone Message", "\"The Stone doesn't seem to do anything here\"", "stone") - }; - - public FeatureDisableMessage() { - super("fixes", "Disable ability messages", "Do not let ability messages show up in chatbox\nclick on Edit for more precise settings", "fixes.messagedisable", true); - for (MessageData messageData : PRE_DEFINED) { - this.parameters.put(messageData.key, new FeatureParameter(messageData.key, messageData.name, messageData.description, true, "boolean")); - } - } - - SkyblockStatus skyblockStatus = e.getDungeonsGuide().getSkyblockStatus(); - - @Override - public void onChat(ClientChatReceivedEvent clientChatReceivedEvent) { - if (clientChatReceivedEvent.type == 2) return; - if (!isEnabled()) return; - if (!skyblockStatus.isOnSkyblock()) return; - String msg = clientChatReceivedEvent.message.getFormattedText(); - System.out.println(msg); - for (MessageData md:PRE_DEFINED) { - if (this.getParameter(md.key).getValue() && md.pattern.matcher(msg).matches()) { - clientChatReceivedEvent.setCanceled(true); - return; - } - } - } -} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonDeaths.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonDeaths.java deleted file mode 100644 index a100496b..00000000 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonDeaths.java +++ /dev/null @@ -1,94 +0,0 @@ -package kr.syeyoung.dungeonsguide.features.impl; - -import kr.syeyoung.dungeonsguide.SkyblockStatus; -import kr.syeyoung.dungeonsguide.dungeon.DungeonContext; -import kr.syeyoung.dungeonsguide.e; -import kr.syeyoung.dungeonsguide.features.FeatureParameter; -import kr.syeyoung.dungeonsguide.features.GuiFeature; -import kr.syeyoung.dungeonsguide.features.listener.ChatListener; -import kr.syeyoung.dungeonsguide.features.listener.TickListener; -import kr.syeyoung.dungeonsguide.utils.TextUtils; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.util.ChatComponentText; -import net.minecraftforge.client.event.ClientChatReceivedEvent; -import org.lwjgl.opengl.GL11; - -import java.awt.*; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class FeatureDungeonDeaths extends GuiFeature implements ChatListener { - public FeatureDungeonDeaths() { - super("Dungeon", "Display Deaths", "Display names of player and death count in dungeon run", "dungeon.stats.deaths", false, getFontRenderer().getStringWidth("longestplayernamepos: 100"), getFontRenderer().FONT_HEIGHT * 6); - this.setEnabled(false); - parameters.put("color", new FeatureParameter("color", "Color", "Color of text", Color.orange, "color")); - } - - SkyblockStatus skyblockStatus = e.getDungeonsGuide().getSkyblockStatus(); - @Override - public void drawHUD(float partialTicks) { - if (!skyblockStatus.isOnDungeon()) return; - DungeonContext context = skyblockStatus.getContext(); - if (context == null) return; - Map deaths = context.getDeaths(); - int i = 0; - int deathsCnt = 0; - FontRenderer fr = getFontRenderer(); - for (Map.Entry death:deaths.entrySet()) { - fr.drawString(death.getKey()+": "+death.getValue(), 0,i, this.getParameter("color").getValue().getRGB()); - i += 8; - deathsCnt += death.getValue(); - } - fr.drawString("Total Deaths: "+deathsCnt, 0,i, this.getParameter("color").getValue().getRGB()); - } - - public int getTotalDeaths() { - if (!skyblockStatus.isOnDungeon()) return 0; - DungeonContext context = skyblockStatus.getContext(); - if (context == null) return 0; - int d = 0; - for (Integer value : context.getDeaths().values()) { - d += value; - } - return d; - } - - @Override - public void drawDemo(float partialTicks) { - FontRenderer fr = getFontRenderer(); - fr.drawString("syeyoung: -130", 0,0, this.getParameter("color").getValue().getRGB()); - fr.drawString("notsyeyoung: -13", 0,8, this.getParameter("color").getValue().getRGB()); - fr.drawString("dungeonsguide: -42", 0,16, this.getParameter("color").getValue().getRGB()); - fr.drawString("--not more--", 0,24, this.getParameter("color").getValue().getRGB()); - fr.drawString("--maybe more--", 0,32, this.getParameter("color").getValue().getRGB()); - fr.drawString("Total Deaths: 0", 0,40, this.getParameter("color").getValue().getRGB()); - } - - Pattern deathPattern = Pattern.compile("§r§c ☠ (.+?)§r§7 .+and became a ghost.+"); - Pattern meDeathPattern = Pattern.compile("§r§c ☠ §r§7You .+and became a ghost.+"); - - @Override - public void onChat(ClientChatReceivedEvent clientChatReceivedEvent) { - if (clientChatReceivedEvent.type == 2) return; - if (!skyblockStatus.isOnDungeon()) return; - DungeonContext context = skyblockStatus.getContext(); - if (context == null) return; - - String txt = clientChatReceivedEvent.message.getFormattedText(); - Matcher m = deathPattern.matcher(txt); - if (m.matches()) { - String nickname = TextUtils.stripColor(m.group(1)); - int deaths = context.getDeaths().containsKey(nickname) ? context.getDeaths().get(nickname) : 0; - context.getDeaths().put(nickname, deaths + 1); - e.sendDebugChat(new ChatComponentText("Death verified :: "+nickname+" / "+(deaths + 1))); - } - Matcher m2 = meDeathPattern.matcher(txt); - if (m2.matches()) { - String nickname = "me"; - int deaths = context.getDeaths().containsKey(nickname) ? context.getDeaths().get(nickname) : 0; - context.getDeaths().put(nickname, deaths + 1); - e.sendDebugChat(new ChatComponentText("Death verified :: me / "+(deaths + 1))); - } - } -} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonMap.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonMap.java deleted file mode 100644 index bab2ec33..00000000 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonMap.java +++ /dev/null @@ -1,322 +0,0 @@ -package kr.syeyoung.dungeonsguide.features.impl; - -import com.google.common.collect.ComparisonChain; -import com.google.common.collect.Ordering; -import com.mojang.authlib.GameProfile; -import kr.syeyoung.dungeonsguide.SkyblockStatus; -import kr.syeyoung.dungeonsguide.config.types.AColor; -import kr.syeyoung.dungeonsguide.dungeon.DungeonContext; -import kr.syeyoung.dungeonsguide.dungeon.MapProcessor; -import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom; -import kr.syeyoung.dungeonsguide.e; -import kr.syeyoung.dungeonsguide.features.FeatureParameter; -import kr.syeyoung.dungeonsguide.features.GuiFeature; -import kr.syeyoung.dungeonsguide.features.listener.BossroomEnterListener; -import kr.syeyoung.dungeonsguide.features.listener.ChatListener; -import kr.syeyoung.dungeonsguide.features.listener.DungeonEndListener; -import kr.syeyoung.dungeonsguide.features.listener.DungeonStartListener; -import kr.syeyoung.dungeonsguide.utils.RenderUtils; -import kr.syeyoung.dungeonsguide.utils.TextUtils; -import net.minecraft.block.material.MapColor; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.Gui; -import net.minecraft.client.gui.GuiPlayerTabOverlay; -import net.minecraft.client.gui.MapItemRenderer; -import net.minecraft.client.network.NetworkPlayerInfo; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.texture.DynamicTexture; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EnumPlayerModelParts; -import net.minecraft.scoreboard.ScorePlayerTeam; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.MathHelper; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.Vec4b; -import net.minecraft.world.WorldSettings; -import net.minecraft.world.storage.MapData; -import net.minecraftforge.client.event.ClientChatReceivedEvent; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -import org.lwjgl.opengl.GL11; - -import java.awt.*; -import java.util.List; -import java.util.Comparator; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class FeatureDungeonMap extends GuiFeature implements DungeonEndListener, DungeonStartListener, BossroomEnterListener { - public FeatureDungeonMap() { - super("Dungeon", "Dungeon Map", "Display dungeon map!", "dungeon.map", true, 128,128); - this.setEnabled(false); - parameters.put("scale", new FeatureParameter("scale", "Scale map", "Whether to scale map to fit screen", true, "boolean")); - parameters.put("playerCenter", new FeatureParameter("playerCenter", "Center map at player", "Render you in the center", false, "boolean")); - parameters.put("rotate", new FeatureParameter("rotate", "Rotate map centered at player", "Only works with Center map at player enabled", false, "boolean")); - parameters.put("postScale", new FeatureParameter("postScale", "Scale factor of map", "Only works with Center map at player enabled", 1.0f, "float")); - parameters.put("showotherplayers", new FeatureParameter("showotherplayers", "Show other players", "Option to show other players in map", true, "boolean")); - parameters.put("showtotalsecrets", new FeatureParameter("showtotalsecrets", "Show Total secrets in the room", "Option to overlay total secrets in the specific room", true, "boolean")); - parameters.put("playerheadscale", new FeatureParameter("playerheadscale", "Player head scale", "Scale factor of player heads, defaults to 1", 1.0f, "float")); - parameters.put("textScale", new FeatureParameter("textScale", "Text scale", "Scale factor of texts on map, defaults to 1", 1.0f, "float")); - parameters.put("border_color", new FeatureParameter("border_color", "Color of the border", "Same as name", new AColor(255,255,255,255), "acolor")); - parameters.put("background_color", new FeatureParameter("background_color", "Color of the background", "Same as name", new AColor(0x22000000, true), "acolor")); - parameters.put("chromaborder", new FeatureParameter("chromaborder", "Chroma border", "Rainbow!!! (Overrides border color option)", false, "boolean")); - parameters.put("player_color", new FeatureParameter("player_color", "Color of the player border", "Same as name", new AColor(255,255,255,0), "acolor")); - parameters.put("player_chroma", new FeatureParameter("player_chroma", "Chroma border for player", "Rainbow!!! (Overrides border color option)", false, "boolean")); - } - - SkyblockStatus skyblockStatus = e.getDungeonsGuide().getSkyblockStatus(); - public static final Ordering field_175252_a = Ordering.from(new PlayerComparator()); - - private boolean on = false; - - @Override - public void onDungeonEnd() { - on = false; - } - - @Override - public void onDungeonStart() { - on = true; - } - - @Override - public void onBossroomEnter() { - on = false; - } - - @SideOnly(Side.CLIENT) - static class PlayerComparator implements Comparator - { - private PlayerComparator() - { - } - - public int compare(NetworkPlayerInfo p_compare_1_, NetworkPlayerInfo p_compare_2_) - { - ScorePlayerTeam scoreplayerteam = p_compare_1_.getPlayerTeam(); - ScorePlayerTeam scoreplayerteam1 = p_compare_2_.getPlayerTeam(); - return ComparisonChain.start().compareTrueFirst(p_compare_1_.getGameType() != WorldSettings.GameType.SPECTATOR, p_compare_2_.getGameType() != WorldSettings.GameType.SPECTATOR).compare(scoreplayerteam != null ? scoreplayerteam.getRegisteredName() : "", scoreplayerteam1 != null ? scoreplayerteam1.getRegisteredName() : "").compare(p_compare_1_.getGameProfile().getName(), p_compare_2_.getGameProfile().getName()).result(); - } - } - @Override - public void drawHUD(float partialTicks) { - if (!skyblockStatus.isOnDungeon()) return; - if (skyblockStatus.getContext() == null | !skyblockStatus.getContext().getMapProcessor().isInitialized()) return; - if (!on) return;; - - DungeonContext context = skyblockStatus.getContext(); - MapProcessor mapProcessor = context.getMapProcessor(); - MapData mapData = mapProcessor.getLastMapData2(); - Gui.drawRect(0,0,getFeatureRect().width, getFeatureRect().height, this.getParameter("background_color").getValue().getRGB()); - GlStateManager.color(1,1,1,1); - GlStateManager.pushMatrix();; - if (mapData == null) { - Gui.drawRect(0,0,getFeatureRect().width, getFeatureRect().height, 0xFFFF0000); - } else { - renderMap(partialTicks,mapProcessor,mapData,context); - } - GlStateManager.popMatrix(); - GL11.glLineWidth(2); - RenderUtils.drawUnfilledBox(0,0,getFeatureRect().width, getFeatureRect().height, this.getParameter("border_color").getValue().getRGB(), this.getParameter("chromaborder").getValue()); - } - - @Override - public void drawDemo(float partialTicks) { - if (skyblockStatus.isOnDungeon() && skyblockStatus.getContext() != null && skyblockStatus.getContext().getMapProcessor().isInitialized() && on) { - drawHUD(partialTicks); - return; - } - Gui.drawRect(0,0,getFeatureRect().width, getFeatureRect().height, this.getParameter("background_color").getValue().getRGB()); - FontRenderer fr = getFontRenderer(); - fr.drawString("Please join a dungeon to see preview", getFeatureRect().width / 2 - fr.getStringWidth("Please join a dungeon to see preview") / 2, getFeatureRect().height / 2 - fr.FONT_HEIGHT / 2, 0xFFFFFFFF); - GL11.glLineWidth(2); - RenderUtils.drawUnfilledBox(0,0,getFeatureRect().width, getFeatureRect().height, this.getParameter("border_color").getValue().getRGB(), this.getParameter("chromaborder").getValue()); - } - - public void renderMap(float partialTicks, MapProcessor mapProcessor, MapData mapData, DungeonContext context){ - float postScale = this.getParameter("playerCenter").getValue() ? this.getParameter("postScale").getValue() : 1; - int width = getFeatureRect().width; - float scale = (this.getParameter("scale").getValue() ? width / 128.0f : 1); - GlStateManager.translate(width / 2, width / 2, 0); - GlStateManager.scale(scale, scale, 0); - GlStateManager.scale(postScale, postScale,0); - EntityPlayer p = Minecraft.getMinecraft().thePlayer; - Point pt = mapProcessor.worldPointToMapPoint(p.getPositionEyes(partialTicks)); - double yaw = p.prevRotationYawHead + (p.rotationYaw - p.prevRotationYawHead) * partialTicks; - if (this.getParameter("playerCenter").getValue()) { - if (this.getParameter("rotate").getValue()) { - GlStateManager.rotate((float) (180.0 - yaw), 0,0,1); - } - GlStateManager.translate( -pt.x, -pt.y, 0); - } else { - GlStateManager.translate( -64, -64, 0); - } - updateMapTexture(mapData.colors, mapProcessor, context.getDungeonRoomList()); - render(mapData, false); - - - GlStateManager.enableBlend(); - GlStateManager.tryBlendFuncSeparate(1, 771, 0, 1); - - - - List list = field_175252_a.sortedCopy(Minecraft.getMinecraft().thePlayer.sendQueue.getPlayerInfoMap()); - if (list.size() < 40) return; - for (int i = 1; i < 20; i++) { - NetworkPlayerInfo networkPlayerInfo = list.get(i); - String name = networkPlayerInfo.getDisplayName() != null ? networkPlayerInfo.getDisplayName().getFormattedText() : ScorePlayerTeam.formatPlayerName(networkPlayerInfo.getPlayerTeam(), networkPlayerInfo.getGameProfile().getName()); - if (name.trim().equals("§r") || name.startsWith("§r ")) continue; - String actual = TextUtils.stripColor(name).trim().split(" ")[0]; - EntityPlayer entityplayer = Minecraft.getMinecraft().theWorld.getPlayerEntityByName(actual); - if (TextUtils.stripColor(name).endsWith("(DEAD)") && entityplayer != Minecraft.getMinecraft().thePlayer) { - continue; - } - Point pt2; - double yaw2; - - if (entityplayer != null) { - pt2 = mapProcessor.worldPointToMapPoint(entityplayer.getPositionEyes(partialTicks)); - yaw2 = entityplayer.prevRotationYawHead + (entityplayer.rotationYawHead - entityplayer.prevRotationYawHead) * partialTicks; - } else { - String iconName = mapProcessor.getMapIconToPlayerMap().get(actual); - if (iconName == null) continue; - Vec4b vec = mapData.mapDecorations.get(iconName); - if (vec == null) { - continue; - } else { - pt2 = new Point(vec.func_176112_b() / 2 + 64, vec.func_176113_c() / 2 + 64); - yaw2 = vec.func_176111_d() * 360 / 16.0f ; - } - } - GlStateManager.pushMatrix(); - if (entityplayer == Minecraft.getMinecraft().thePlayer || this.getParameter("showotherplayers").getValue()) - { - boolean flag1 = entityplayer != null && entityplayer.isWearing(EnumPlayerModelParts.CAPE); - GlStateManager.enableTexture2D(); - Minecraft.getMinecraft().getTextureManager().bindTexture(networkPlayerInfo.getLocationSkin()); - int l2 = 8 + (flag1 ? 8 : 0); - int i3 = 8 * (flag1 ? -1 : 1); - - GlStateManager.translate(pt2.x, pt2.y, 0); - GlStateManager.rotate((float) (yaw2 - 180), 0, 0, 1); - - GlStateManager.scale(1 / scale, 1 / scale, 0); - GlStateManager.scale(1 / postScale, 1 / postScale, 0); - float s = this.getParameter("playerheadscale").getValue(); - GlStateManager.scale(s,s,0); - Gui.drawScaledCustomSizeModalRect(-4, -4, 8.0F, (float) l2, 8, i3, 8, 8, 64.0F, 64.0F); - GL11.glLineWidth(1); - RenderUtils.drawUnfilledBox(-4,-4,4, 4, this.getParameter("player_color").getValue().getRGB(), this.getParameter("player_chroma").getValue()); - } - GlStateManager.popMatrix(); - } - FontRenderer fr = getFontRenderer(); - if (this.getParameter("showtotalsecrets").getValue()) { - for (DungeonRoom dungeonRoom : context.getDungeonRoomList()) { - GlStateManager.pushMatrix(); - GlStateManager.pushAttrib(); - Point mapPt = mapProcessor.roomPointToMapPoint(dungeonRoom.getUnitPoints().get(0)); - GlStateManager.translate(mapPt.x + mapProcessor.getUnitRoomDimension().width / 2, mapPt.y + mapProcessor.getUnitRoomDimension().height / 2, 0); - - if (this.getParameter("playerCenter").getValue() && this.getParameter("rotate").getValue()) { - GlStateManager.rotate((float) (yaw - 180), 0, 0, 1); - } - GlStateManager.scale(1 / scale, 1 / scale, 0); - GlStateManager.scale(1 / postScale, 1 / postScale, 0); - float s = this.getParameter("textScale").getValue(); - GlStateManager.scale(s,s,0); - String str = ""; - str += dungeonRoom.getTotalSecrets() == -1 ? "?" : String.valueOf(dungeonRoom.getTotalSecrets()); - str += " "; - if (dungeonRoom.getCurrentState() == DungeonRoom.RoomState.FINISHED) { - str += "✔"; - } else if (dungeonRoom.getCurrentState() == DungeonRoom.RoomState.COMPLETE_WITHOUT_SECRETS) { - str += "☑"; - } else if (dungeonRoom.getCurrentState() == DungeonRoom.RoomState.DISCOVERED) { - str += "☐"; - } else if (dungeonRoom.getCurrentState() == DungeonRoom.RoomState.FAILED) { - str += "❌"; - } - - fr.drawString(str, -(fr.getStringWidth(str) / 2), -(fr.FONT_HEIGHT / 2), dungeonRoom.getColor() == 74 ? 0xff000000 : 0xFFFFFFFF); - GlStateManager.popAttrib(); - GlStateManager.popMatrix(); - } - } - - } - - - - private DynamicTexture mapTexture = new DynamicTexture(128, 128); - private ResourceLocation location = Minecraft.getMinecraft().getTextureManager().getDynamicTextureLocation("dungeonmap/map", mapTexture); - private int[] mapTextureData = mapTexture.getTextureData(); - - private void updateMapTexture(byte[] colors, MapProcessor mapProcessor, List dungeonRooms) { - for (int i = 0; i < 16384; ++i) { - int j = colors[i] & 255; - - if (j / 4 == 0) { - this.mapTextureData[i] = 0x00000000; - } else { - this.mapTextureData[i] = MapColor.mapColorArray[j / 4].func_151643_b(j & 3); - } - } - - if (this.getParameter("showtotalsecrets").getValue()) { - for (DungeonRoom dungeonRoom : dungeonRooms) { - for (Point pt : dungeonRoom.getUnitPoints()) { - for (int y1 = 0; y1 < mapProcessor.getUnitRoomDimension().height; y1++) { - for (int x1 = 0; x1 < mapProcessor.getUnitRoomDimension().width; x1++) { - int x = MathHelper.clamp_int(pt.x * (mapProcessor.getUnitRoomDimension().width + mapProcessor.getDoorDimension().height) + x1 + mapProcessor.getTopLeftMapPoint().x, 0, 128); - int y = MathHelper.clamp_int(pt.y * (mapProcessor.getUnitRoomDimension().height + mapProcessor.getDoorDimension().height) + y1 + mapProcessor.getTopLeftMapPoint().y, 0, 128); - int i = y * 128 + x; - int j = dungeonRoom.getColor(); - - if (j / 4 == 0) { - this.mapTextureData[i] = 0x00000000; - } else { - this.mapTextureData[i] = MapColor.mapColorArray[j / 4].func_151643_b(j & 3); - } - } - } - } - } - } - - - this.mapTexture.updateDynamicTexture(); - } - - private void render(MapData mapData, boolean noOverlayRendering) { - int i = 0; - int j = 0; - Tessellator tessellator = Tessellator.getInstance(); - WorldRenderer worldrenderer = tessellator.getWorldRenderer(); - float f = 0.0F; - Minecraft.getMinecraft().getTextureManager().bindTexture(this.location); - GlStateManager.enableBlend(); - GlStateManager.tryBlendFuncSeparate(1, 771, 0, 1); - GlStateManager.disableAlpha(); - worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX); - worldrenderer.pos((float)(i) + f, (double)((float)(j + 128) - f), -0.009999999776482582D).tex(0.0D, 1.0D).endVertex(); - worldrenderer.pos((float)(i + 128) - f, (double)((float)(j + 128) - f), -0.009999999776482582D).tex(1.0D, 1.0D).endVertex(); - worldrenderer.pos((float)(i + 128) - f, (double)((float)(j) + f), -0.009999999776482582D).tex(1.0D, 0.0D).endVertex(); - worldrenderer.pos((float)(i) + f, (double)((float)(j) + f), -0.009999999776482582D).tex(0.0D, 0.0D).endVertex(); - tessellator.draw(); - GlStateManager.enableAlpha(); - GlStateManager.disableBlend(); - - GlStateManager.pushMatrix(); - GlStateManager.translate(0.0F, 0.0F, -0.04F); - GlStateManager.scale(1.0F, 1.0F, 1.0F); - GlStateManager.popMatrix(); - } - -} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonMilestone.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonMilestone.java deleted file mode 100644 index 05956c3f..00000000 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonMilestone.java +++ /dev/null @@ -1,74 +0,0 @@ -package kr.syeyoung.dungeonsguide.features.impl; - -import kr.syeyoung.dungeonsguide.SkyblockStatus; -import kr.syeyoung.dungeonsguide.dungeon.DungeonContext; -import kr.syeyoung.dungeonsguide.e; -import kr.syeyoung.dungeonsguide.features.FeatureParameter; -import kr.syeyoung.dungeonsguide.features.FeatureRegistry; -import kr.syeyoung.dungeonsguide.features.GuiFeature; -import kr.syeyoung.dungeonsguide.features.listener.ChatListener; -import kr.syeyoung.dungeonsguide.features.listener.TickListener; -import kr.syeyoung.dungeonsguide.utils.TextUtils; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.network.NetworkPlayerInfo; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.scoreboard.ScorePlayerTeam; -import net.minecraft.util.ChatComponentText; -import net.minecraftforge.client.event.ClientChatReceivedEvent; -import org.lwjgl.opengl.GL11; - -import java.awt.*; -import java.util.regex.Pattern; - -public class FeatureDungeonMilestone extends GuiFeature implements ChatListener { - public FeatureDungeonMilestone() { - super("Dungeon", "Display Current Class Milestone", "Display current class milestone of yourself", "dungeon.stats.milestone", true, getFontRenderer().getStringWidth("Milestone: 12"), getFontRenderer().FONT_HEIGHT); - this.setEnabled(false); - parameters.put("color", new FeatureParameter("color", "Color", "Color of text", Color.orange, "color")); - } - - SkyblockStatus skyblockStatus = e.getDungeonsGuide().getSkyblockStatus(); - @Override - public void drawHUD(float partialTicks) { - if (!skyblockStatus.isOnDungeon()) return; - FontRenderer fr = getFontRenderer(); - double scale = getFeatureRect().getHeight() / fr.FONT_HEIGHT; - GlStateManager.scale(scale, scale, 0); - for (NetworkPlayerInfo networkPlayerInfoIn : Minecraft.getMinecraft().thePlayer.sendQueue.getPlayerInfoMap()) { - String name = networkPlayerInfoIn.getDisplayName() != null ? networkPlayerInfoIn.getDisplayName().getFormattedText() : ScorePlayerTeam.formatPlayerName(networkPlayerInfoIn.getPlayerTeam(), networkPlayerInfoIn.getGameProfile().getName()); - if (name.startsWith("§r Milestone: §r")) { - String milestone = TextUtils.stripColor(name).substring(13); - fr.drawString("Milestone: "+milestone, 0,0, this.getParameter("color").getValue().getRGB()); - return; - } - } - fr.drawString("Milestone: ?", 0,0, this.getParameter("color").getValue().getRGB()); - } - - @Override - public void drawDemo(float partialTicks) { - FontRenderer fr = getFontRenderer(); - double scale = getFeatureRect().getHeight() / fr.FONT_HEIGHT; - GlStateManager.scale(scale, scale, 0); - fr.drawString("Milestone: 9", 0,0, this.getParameter("color").getValue().getRGB()); - } - public static final Pattern milestone_pattern = Pattern.compile("§r§e§l(.+) Milestone §r§e(.)§r§7: .+ §r§a(.+)§r"); - - - @Override - public void onChat(ClientChatReceivedEvent clientChatReceivedEvent) { - if (clientChatReceivedEvent.type == 2) return;; - if (!skyblockStatus.isOnDungeon()) return; - DungeonContext context = skyblockStatus.getContext(); - if (context == null) return; - String txt = clientChatReceivedEvent.message.getFormattedText(); - if (milestone_pattern.matcher(txt).matches()) { - context.getMilestoneReached().add(new String[] { - TextUtils.formatTime(FeatureRegistry.DUNGEON_REALTIME.getTimeElapsed()), - TextUtils.formatTime(FeatureRegistry.DUNGEON_SBTIME.getTimeElapsed()) - }); - e.sendDebugChat(new ChatComponentText("Reached Milestone At " + TextUtils.formatTime(FeatureRegistry.DUNGEON_REALTIME.getTimeElapsed()) + " / "+TextUtils.formatTime(FeatureRegistry.DUNGEON_SBTIME.getTimeElapsed()))); - } - } -} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonRealTime.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonRealTime.java deleted file mode 100644 index 0efcd9b4..00000000 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonRealTime.java +++ /dev/null @@ -1,58 +0,0 @@ -package kr.syeyoung.dungeonsguide.features.impl; - -import kr.syeyoung.dungeonsguide.SkyblockStatus; -import kr.syeyoung.dungeonsguide.e; -import kr.syeyoung.dungeonsguide.features.FeatureParameter; -import kr.syeyoung.dungeonsguide.features.GuiFeature; -import kr.syeyoung.dungeonsguide.features.listener.ChatListener; -import kr.syeyoung.dungeonsguide.features.listener.DungeonEndListener; -import kr.syeyoung.dungeonsguide.features.listener.DungeonStartListener; -import kr.syeyoung.dungeonsguide.features.listener.TickListener; -import kr.syeyoung.dungeonsguide.utils.TextUtils; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraftforge.client.event.ClientChatReceivedEvent; -import org.lwjgl.opengl.GL11; - -import java.awt.*; -import java.text.SimpleDateFormat; - -public class FeatureDungeonRealTime extends GuiFeature implements DungeonStartListener, DungeonEndListener { - public FeatureDungeonRealTime() { - super("Dungeon", "Display Real Time-Dungeon Time", "Display how much real time has passed since dungeon run started", "dungeon.stats.realtime", true, getFontRenderer().getStringWidth("Time(Real): 59m 59s"), getFontRenderer().FONT_HEIGHT); - this.setEnabled(false); - parameters.put("color", new FeatureParameter("color", "Color", "Color of text", Color.orange, "color")); - } - - private long started = -1; - @Override - public void drawHUD(float partialTicks) { - if (started == -1) return; - FontRenderer fr = getFontRenderer(); - double scale = getFeatureRect().getHeight() / fr.FONT_HEIGHT; - GlStateManager.scale(scale, scale, 0); - fr.drawString("Time(Real): "+TextUtils.formatTime(getTimeElapsed()), 0,0, this.getParameter("color").getValue().getRGB()); - } - - public long getTimeElapsed() { - return System.currentTimeMillis() - started; - } - - @Override - public void drawDemo(float partialTicks) { - FontRenderer fr = getFontRenderer(); - double scale = getFeatureRect().getHeight() / fr.FONT_HEIGHT; - GlStateManager.scale(scale, scale, 0); - fr.drawString("Time(Real): -42h", 0,0, this.getParameter("color").getValue().getRGB()); - } - - @Override - public void onDungeonEnd() { - started = -1; - } - - @Override - public void onDungeonStart() { - started= System.currentTimeMillis(); - } -} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonSBTime.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonSBTime.java deleted file mode 100644 index 6cf8aa29..00000000 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonSBTime.java +++ /dev/null @@ -1,82 +0,0 @@ -package kr.syeyoung.dungeonsguide.features.impl; - -import kr.syeyoung.dungeonsguide.SkyblockStatus; -import kr.syeyoung.dungeonsguide.e; -import kr.syeyoung.dungeonsguide.events.DungeonEndedEvent; -import kr.syeyoung.dungeonsguide.features.FeatureParameter; -import kr.syeyoung.dungeonsguide.features.GuiFeature; -import kr.syeyoung.dungeonsguide.features.listener.*; -import kr.syeyoung.dungeonsguide.utils.TextUtils; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.scoreboard.Score; -import net.minecraft.scoreboard.ScoreObjective; -import net.minecraft.scoreboard.ScorePlayerTeam; -import net.minecraft.scoreboard.Scoreboard; -import net.minecraftforge.client.event.ClientChatReceivedEvent; -import org.lwjgl.opengl.GL11; - -import java.awt.*; -import java.util.Collection; - -public class FeatureDungeonSBTime extends GuiFeature { - - private SkyblockStatus skyblockStatus = e.getDungeonsGuide().getSkyblockStatus(); - - public FeatureDungeonSBTime() { - super("Dungeon", "Display Ingame Dungeon Time", "Display how much time skyblock thinks has passed since dungeon run started", "dungeon.stats.igtime", true, getFontRenderer().getStringWidth("Time(IG): 1h 59m 59s"), getFontRenderer().FONT_HEIGHT); - this.setEnabled(false); - parameters.put("color", new FeatureParameter("color", "Color", "Color of text", Color.orange, "color")); - } - @Override - public void drawHUD(float partialTicks) { - if (!skyblockStatus.isOnDungeon()) return; - FontRenderer fr = getFontRenderer(); - double scale = getFeatureRect().getHeight() / fr.FONT_HEIGHT; - GlStateManager.scale(scale, scale, 0); - Scoreboard scoreboard = Minecraft.getMinecraft().theWorld.getScoreboard(); - ScoreObjective objective = scoreboard.getObjectiveInDisplaySlot(1); - Collection scores = scoreboard.getSortedScores(objective); - String time = "unknown"; - for (Score sc:scores) { - ScorePlayerTeam scorePlayerTeam = scoreboard.getPlayersTeam(sc.getPlayerName()); - String strippedLine = TextUtils.keepScoreboardCharacters(TextUtils.stripColor(ScorePlayerTeam.formatPlayerName(scorePlayerTeam, sc.getPlayerName()))).trim(); - if (strippedLine.startsWith("Time Elapsed: ")) { - time = strippedLine.substring(14); - } - } - fr.drawString("Time(Ig): "+time, 0,0, this.getParameter("color").getValue().getRGB()); - } - public int getTimeElapsed() { - Scoreboard scoreboard = Minecraft.getMinecraft().theWorld.getScoreboard(); - ScoreObjective objective = scoreboard.getObjectiveInDisplaySlot(1); - Collection scores = scoreboard.getSortedScores(objective); - String time = "idkyet"; - for (Score sc:scores) { - ScorePlayerTeam scorePlayerTeam = scoreboard.getPlayersTeam(sc.getPlayerName()); - String strippedLine = TextUtils.keepScoreboardCharacters(TextUtils.stripColor(ScorePlayerTeam.formatPlayerName(scorePlayerTeam, sc.getPlayerName()))).trim(); - if (strippedLine.startsWith("Time Elapsed: ")) { - time = strippedLine.substring(14); - } - } - time = time.replace(" ", ""); - int hour = time.indexOf('h') == -1 ? 0 : Integer.parseInt(time.substring(0, time.indexOf('h'))); - if (time.contains("h")) time = time.substring(time.indexOf('h') + 1); - int minute = time.indexOf('m') == -1 ? 0 : Integer.parseInt(time.substring(0, time.indexOf('m'))); - if (time.contains("m")) time = time.substring(time.indexOf('m') + 1); - int second = time.indexOf('s') == -1 ? 0 : Integer.parseInt(time.substring(0, time.indexOf('s'))); - - int time2 = hour * 60 * 60 + minute * 60 + second; - return time2 * 1000; - } - - @Override - public void drawDemo(float partialTicks) { - FontRenderer fr = getFontRenderer(); - double scale = getFeatureRect().getHeight() / fr.FONT_HEIGHT; - GlStateManager.scale(scale, scale, 0); - - fr.drawString("Time(Ig): -42h", 0,0, this.getParameter("color").getValue().getRGB()); - } -} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonScore.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonScore.java deleted file mode 100644 index 7390e649..00000000 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureDungeonScore.java +++ /dev/null @@ -1,211 +0,0 @@ -package kr.syeyoung.dungeonsguide.features.impl; - -import kr.syeyoung.dungeonsguide.SkyblockStatus; -import kr.syeyoung.dungeonsguide.dungeon.DungeonContext; -import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom; -import kr.syeyoung.dungeonsguide.e; -import kr.syeyoung.dungeonsguide.features.FeatureParameter; -import kr.syeyoung.dungeonsguide.features.FeatureRegistry; -import kr.syeyoung.dungeonsguide.features.GuiFeature; -import kr.syeyoung.dungeonsguide.utils.TextUtils; -import lombok.AllArgsConstructor; -import lombok.Data; -im