aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorakarahdev <endisticbutitsforgit@gmail.com>2024-01-18 08:29:01 -0500
committerakarahdev <endisticbutitsforgit@gmail.com>2024-01-22 20:18:14 -0500
commit65dd269c266650724c392b121855f87cdf4dbe2b (patch)
tree95c0dc755b26afb84913cf4446dbb56f1044185d /src/main
parent2812c97e3741121dbf89ec14dd76a3ff5532cd06 (diff)
downloadSkyblocker-65dd269c266650724c392b121855f87cdf4dbe2b.tar.gz
Skyblocker-65dd269c266650724c392b121855f87cdf4dbe2b.tar.bz2
Skyblocker-65dd269c266650724c392b121855f87cdf4dbe2b.zip
test
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java11
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/SlayersCategory.java18
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/endermanslayer/BeaconHighlighter.java51
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java40
-rw-r--r--src/main/resources/assets/skyblocker/lang/en_us.json3
5 files changed, 123 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
index 9477fbed..b8606b87 100644
--- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
@@ -918,6 +918,17 @@ public class SkyblockerConfig {
public static class Slayer {
@SerialEntry
public VampireSlayer vampireSlayer = new VampireSlayer();
+
+ @SerialEntry
+ public EndermanSlayer endermanSlayer = new EndermanSlayer();
+ }
+
+ public static class EndermanSlayer {
+ @SerialEntry
+ public boolean highlightNukekubiHeads = true;
+
+ @SerialEntry
+ public boolean highlightBeacons = true;
}
public static class VampireSlayer {
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/SlayersCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/SlayersCategory.java
index 7df95172..15e6f4a6 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/SlayersCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/SlayersCategory.java
@@ -16,6 +16,24 @@ public class SlayersCategory {
public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
return ConfigCategory.createBuilder()
.name(Text.translatable("text.autoconfig.skyblocker.category.slayer"))
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.endermanSlayer"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.endermanSlayer.highlightNukekubiHeads"))
+ .binding(defaults.slayer.endermanSlayer.highlightNukekubiHeads,
+ () -> config.slayer.endermanSlayer.highlightNukekubiHeads,
+ newValue -> config.slayer.endermanSlayer.highlightNukekubiHeads = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.endermanSlayer.highlightBeacons"))
+ .binding(defaults.slayer.endermanSlayer.highlightBeacons,
+ () -> config.slayer.endermanSlayer.highlightBeacons,
+ newValue -> config.slayer.endermanSlayer.highlightBeacons = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
//Vampire Slayer
.group(OptionGroup.createBuilder()
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/endermanslayer/BeaconHighlighter.java b/src/main/java/de/hysky/skyblocker/skyblock/endermanslayer/BeaconHighlighter.java
new file mode 100644
index 00000000..2dc64aff
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/endermanslayer/BeaconHighlighter.java
@@ -0,0 +1,51 @@
+package de.hysky.skyblocker.skyblock.endermanslayer;
+
+import de.hysky.skyblocker.utils.Tickable;
+import de.hysky.skyblocker.utils.render.RenderHelper;
+import de.hysky.skyblocker.utils.render.Renderable;
+import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
+import net.minecraft.block.Block;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NbtCompound;
+import net.minecraft.nbt.NbtString;
+import net.minecraft.util.math.BlockPos;
+
+public class BeaconHighlighter implements Tickable, Renderable {
+ BlockPos pos = null;
+ @Override
+ public void tick(MinecraftClient client) {
+ var player = MinecraftClient.getInstance().player;
+ var world = MinecraftClient.getInstance().world;
+ pos = null;
+ if(player != null && world != null) {
+ for(int x = (int) (player.getX()-20); x<player.getX()+20; x++) {
+ for(int z = (int) (player.getX()-20); z<player.getX()+20; z++) {
+ for(int y = (int) (player.getY()-10); y<player.getY()+10; y++) {
+ var state = world.getBlockState(new BlockPos(x, y, z));
+ var item = ItemStack.fromNbt((NbtCompound) new NbtCompound()
+ .put("id", NbtString.of("minecraft:beacon")));
+ if(state.isOf(Block.getBlockFromItem(item.getItem()))) {
+ pos = new BlockPos(x, y, z);
+
+ }
+ }
+ }
+ }
+ }
+
+ }
+
+ @Override
+ public void render(WorldRenderContext context) {
+ if(pos != null) {
+ RenderHelper.renderFilled(
+ context,
+ pos,
+ new float[]{1.0f, 0.0f, 0.0f},
+ 0.5f,
+ true
+ );
+ }
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java b/src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java
index fa9f6e4f..fdaa0d6c 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java
@@ -2,18 +2,25 @@ package de.hysky.skyblocker.skyblock.entity;
import java.util.List;
+import de.hysky.skyblocker.config.SkyblockerConfig;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.dungeon.LividColor;
+import de.hysky.skyblocker.skyblock.itemlist.SkyblockCraftingRecipe;
+import de.hysky.skyblocker.utils.Constants;
import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.utils.render.culling.OcclusionCulling;
import net.minecraft.entity.Entity;
import net.minecraft.entity.decoration.ArmorStandEntity;
import net.minecraft.entity.passive.BatEntity;
import net.minecraft.entity.player.PlayerEntity;
+import net.minecraft.nbt.NbtElement;
import net.minecraft.predicate.entity.EntityPredicates;
import net.minecraft.util.Formatting;
import net.minecraft.util.math.Box;
import net.minecraft.world.World;
+import org.apache.logging.log4j.LogManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class MobGlow {
public static boolean shouldMobGlow(Entity entity) {
@@ -54,6 +61,39 @@ public class MobGlow {
}
}
}
+
+
+
+ }
+
+ // Enderman Slayer
+ // Nukekubi Heads
+ Logger logger = LoggerFactory.getLogger(MobGlow.class);
+ if(entity instanceof ArmorStandEntity) {
+ for (net.minecraft.item.ItemStack it : entity.getArmorItems()) {
+ if(!it.toString().startsWith("1 player_head"))
+ continue;
+
+
+ if (it.hasNbt()) {
+ assert it.getNbt() != null;
+ // eb07594e2df273921a77c101d0bfdfa1115abed5b9b2029eb496ceba9bdbb4b3 is texture id
+ // for the nukekubi head, compare against it to exclusively find
+ // armorstands that are nukekubi heads
+ if (it.getNbt().contains("SkullOwner")) {
+ var texture = it
+ .getNbt()
+ .getCompound("SkullOwner")
+ .getCompound("Properties")
+ .getList("textures", NbtElement.COMPOUND_TYPE)
+ .getCompound(0)
+ .getString("Value");
+ return SkyblockerConfigManager.get().slayer.endermanSlayer.highlightNukekubiHeads
+ && texture.contains("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWIwNzU5NGUyZGYyNzM5MjFhNzdjMTAxZDBiZmRmYTExMTVhYmVkNWI5YjIwMjllYjQ5NmNlYmE5YmRiYjRiMyJ9fX0=");
+
+ }
+ }
+ }
}
return false;
diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json
index 1360f5f1..b59a7835 100644
--- a/src/main/resources/assets/skyblocker/lang/en_us.json
+++ b/src/main/resources/assets/skyblocker/lang/en_us.json
@@ -308,6 +308,9 @@
"text.autoconfig.skyblocker.option.messages.hideDeath": "Hide Player Death Messages",
"text.autoconfig.skyblocker.option.messages.hideDeath.@Tooltip": "Filters the player death messages from chat.",
"text.autoconfig.skyblocker.category.slayer": "Slayers",
+ "text.autoconfig.skyblocker.option.slayer.endermanSlayer": "Enderman Slayer",
+ "text.autoconfig.skyblocker.option.slayer.endermanSlayer.highlightNukekubiHeads": "Nukekubi Head Highlighting",
+ "text.autoconfig.skyblocker.option.slayer.endermanSlayer.highlightBeacons": "Beacon Highlighting",
"text.autoconfig.skyblocker.option.slayer.vampireSlayer": "Vampire Slayer",
"text.autoconfig.skyblocker.option.slayer.vampireSlayer.enableEffigyWaypoints": "Enable Effigy Waypoints",
"text.autoconfig.skyblocker.option.slayer.vampireSlayer.compactEffigyWaypoints": "Compact Effigy Waypoints",