aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/kr/syeyoung/dungeonsguide/roomprocessor')
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bossfight/BossfightProcessorThorn.java58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bossfight/BossfightProcessorThorn.java b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bossfight/BossfightProcessorThorn.java
index ec37d65a..f4e9435e 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bossfight/BossfightProcessorThorn.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/bossfight/BossfightProcessorThorn.java
@@ -1,20 +1,53 @@
package kr.syeyoung.dungeonsguide.roomprocessor.bossfight;
+import kr.syeyoung.dungeonsguide.e;
+import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
+import kr.syeyoung.dungeonsguide.utils.RenderUtils;
import kr.syeyoung.dungeonsguide.utils.TextUtils;
+import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
import net.minecraft.entity.boss.BossStatus;
import net.minecraft.entity.item.EntityArmorStand;
+import net.minecraft.init.Blocks;
+import net.minecraft.util.BlockPos;
+import net.minecraft.world.World;
import net.minecraftforge.event.entity.living.LivingEvent;
+import java.awt.*;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
public class BossfightProcessorThorn extends GeneralBossfightProcessor {
+
+
public BossfightProcessorThorn() {
addPhase(GeneralBossfightProcessor.PhaseData.builder()
.phase("fight").build()
);
+
+ w= e.getDungeonsGuide().getSkyblockStatus().getContext().getWorld();
}
+ private final Set<BlockPos> progressBar = new HashSet<BlockPos>();
+ private final World w;
+ private int ticksPassed = 0;
+
+ @Override
+ public void tick() {
+ ticksPassed++;
+ if (ticksPassed == 20) {
+ for (int x = -30; x <= 30; x++) {
+ for (int y = -30; y <= 30; y++) {
+ BlockPos newPos = new BlockPos(205 + x, 77, 205 + y);
+ Block b = w.getBlockState(newPos).getBlock();
+ if (b == Blocks.coal_block || b == Blocks.sea_lantern)
+ progressBar.add(newPos);
+ }
+ }
+ }
+ }
@Override
public List<HealthData> getHealths() {
@@ -22,4 +55,29 @@ public class BossfightProcessorThorn extends GeneralBossfightProcessor {
healths.add(new HealthData("Thorn", (int) Math.round(BossStatus.healthScale * 4),4, true));
return healths;
}
+
+ public double calculatePercentage() {
+ int total = progressBar.size(), lit = 0;
+ if (total == 0) return 0;
+ for (BlockPos pos : progressBar) {
+ if (w.getBlockState(pos).getBlock() == Blocks.prismarine) lit++;
+ }
+ return lit / (double)total;
+ }
+
+ @Override
+ public void drawWorld(float partialTicks) {
+ super.drawWorld(partialTicks);
+ if (!FeatureRegistry.DEBUG.isEnabled()) return;
+ try {
+ BlockPos pos = new BlockPos(205,77, 205);
+ RenderUtils.highlightBlock(pos, new Color(0, 255, 255, 50), partialTicks, false);
+ for (BlockPos pos2 : progressBar) {
+ RenderUtils.highlightBlock(pos2, w.getBlockState(pos2).getBlock() == Blocks.sea_lantern ?
+ new Color(0, 255, 0, 50) : new Color(255,0,0, 50), partialTicks, false);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
}