aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-04-26 23:14:28 -0400
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-04-26 23:14:28 -0400
commitc61ffbe25dea8f57e91ce3fb7892aa8540224b0e (patch)
tree71566cf071203b4208054f6f196f1c0d586401bf /src/main/java/de
parentd24bac4d728d8ea9264e08934fb863771bcca5e2 (diff)
downloadSkyblocker-c61ffbe25dea8f57e91ce3fb7892aa8540224b0e.tar.gz
Skyblocker-c61ffbe25dea8f57e91ce3fb7892aa8540224b0e.tar.bz2
Skyblocker-c61ffbe25dea8f57e91ce3fb7892aa8540224b0e.zip
Refactor updated code
Diffstat (limited to 'src/main/java/de')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/entity/MobBoundingBoxes.java18
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java31
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/MuseumItemCache.java17
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/BackpackPreview.java9
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java25
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemStackBuilder.java18
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/ItemUtils.java20
7 files changed, 59 insertions, 79 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/entity/MobBoundingBoxes.java b/src/main/java/de/hysky/skyblocker/skyblock/entity/MobBoundingBoxes.java
index 6ab4e3f2..5522ceca 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/entity/MobBoundingBoxes.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/entity/MobBoundingBoxes.java
@@ -1,7 +1,5 @@
package de.hysky.skyblocker.skyblock.entity;
-import java.util.List;
-
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.utils.render.FrustumUtils;
@@ -32,19 +30,11 @@ public class MobBoundingBoxes {
String name = entity.getName().getString();
return switch (entity) {
- case PlayerEntity p when name.equals("Lost Adventurer") || name.equals("Shadow Assassin") || name.equals("Diamond Guy") -> SkyblockerConfigManager.get().locations.dungeons.starredMobBoundingBoxes;
-
- default -> {
- // Regular Mobs
- if (!(entity instanceof ArmorStandEntity)) {
- List<ArmorStandEntity> armorStands = MobGlow.getArmorStands(entity);
-
- if (!armorStands.isEmpty() && armorStands.get(0).getName().getString().contains("✯"))
- yield SkyblockerConfigManager.get().locations.dungeons.starredMobBoundingBoxes;
- }
+ case PlayerEntity _p when name.equals("Lost Adventurer") || name.equals("Shadow Assassin") || name.equals("Diamond Guy") -> SkyblockerConfigManager.get().locations.dungeons.starredMobBoundingBoxes;
+ case ArmorStandEntity _armorStand -> false;
- yield false;
- }
+ // Regular Mobs
+ default -> SkyblockerConfigManager.get().locations.dungeons.starredMobBoundingBoxes && MobGlow.isStarred(entity);
};
}
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 d21ad881..8343c6a5 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java
@@ -1,8 +1,9 @@
package de.hysky.skyblocker.skyblock.entity;
+import com.mojang.authlib.properties.Property;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
-import de.hysky.skyblocker.skyblock.end.TheEnd;
import de.hysky.skyblocker.skyblock.dungeon.LividColor;
+import de.hysky.skyblocker.skyblock.end.TheEnd;
import de.hysky.skyblocker.utils.SlayerUtils;
import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.utils.render.culling.OcclusionCulling;
@@ -22,8 +23,6 @@ import net.minecraft.world.World;
import java.util.List;
-import com.mojang.authlib.properties.Property;
-
public class MobGlow {
public static boolean shouldMobGlow(Entity entity) {
@@ -39,20 +38,14 @@ public class MobGlow {
case PlayerEntity p when name.equals("Lost Adventurer") || name.equals("Shadow Assassin") || name.equals("Diamond Guy") -> SkyblockerConfigManager.get().locations.dungeons.starredMobGlow;
case PlayerEntity p when LividColor.LIVID_NAMES.contains(name) -> LividColor.shouldGlow(name);
- //Bats
+ // Bats
case BatEntity b -> SkyblockerConfigManager.get().locations.dungeons.starredMobGlow || SkyblockerConfigManager.get().locations.dungeons.starredMobBoundingBoxes;
- default -> {
- // Regular Mobs
- if (!(entity instanceof ArmorStandEntity)) {
- List<ArmorStandEntity> armorStands = getArmorStands(entity);
-
- if (!armorStands.isEmpty() && armorStands.get(0).getName().getString().contains("✯"))
- yield SkyblockerConfigManager.get().locations.dungeons.starredMobGlow;
- }
+ // Armor Stands
+ case ArmorStandEntity _armorStand -> false;
- yield false;
- }
+ // Regular Mobs
+ default -> SkyblockerConfigManager.get().locations.dungeons.starredMobGlow && isStarred(entity);
};
}
@@ -74,6 +67,16 @@ public class MobGlow {
return false;
}
+ /**
+ * Checks if an entity is starred by checking if its armor stand contains a star in its name.
+ * @param entity the entity to check.
+ * @return true if the entity is starred, false otherwise
+ */
+ public static boolean isStarred(Entity entity) {
+ List<ArmorStandEntity> armorStands = getArmorStands(entity);
+ return !armorStands.isEmpty() && armorStands.getFirst().getName().getString().contains("✯");
+ }
+
public static List<ArmorStandEntity> getArmorStands(Entity entity) {
return getArmorStands(entity.getWorld(), entity.getBoundingBox());
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/MuseumItemCache.java b/src/main/java/de/hysky/skyblocker/skyblock/item/MuseumItemCache.java
index 9b4ffbef..c78724ca 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/MuseumItemCache.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/MuseumItemCache.java
@@ -34,7 +34,7 @@ import java.util.concurrent.CompletableFuture;
public class MuseumItemCache {
private static final Logger LOGGER = LoggerFactory.getLogger(MuseumItemCache.class);
private static final Path CACHE_FILE = SkyblockerMod.CONFIG_DIR.resolve("museum_item_cache.json");
- private static final Map<String, Map<String, ProfileMuseumData>> MUSEUM_ITEM_CACHE = new Object2ObjectOpenHashMap<>();
+ private static final Map<String, Object2ObjectOpenHashMap<String, ProfileMuseumData>> MUSEUM_ITEM_CACHE = new Object2ObjectOpenHashMap<>();
private static final String ERROR_LOG_TEMPLATE = "[Skyblocker] Failed to refresh museum item data for profile {}";
private static CompletableFuture<Void> loaded;
@@ -46,7 +46,7 @@ public class MuseumItemCache {
private static void load(MinecraftClient client) {
loaded = CompletableFuture.runAsync(() -> {
try (BufferedReader reader = Files.newBufferedReader(CACHE_FILE)) {
- Map<String, Map<String, ProfileMuseumData>> cachedData = ProfileMuseumData.SERIALIZATION_CODEC.parse(JsonOps.INSTANCE, JsonParser.parseReader(reader)).getOrThrow();
+ Map<String, Object2ObjectOpenHashMap<String, ProfileMuseumData>> cachedData = ProfileMuseumData.SERIALIZATION_CODEC.parse(JsonOps.INSTANCE, JsonParser.parseReader(reader)).getOrThrow();
MUSEUM_ITEM_CACHE.putAll(cachedData);
LOGGER.info("[Skyblocker] Loaded museum items cache");
@@ -69,7 +69,7 @@ public class MuseumItemCache {
private static void updateData4ProfileMember(String uuid, String profileId) {
CompletableFuture.runAsync(() -> {
- try (ApiResponse response = Http.sendHypixelRequest("skyblock/museum", "?profile=" + profileId)) {
+ try (ApiResponse response = Http.sendHypixelRequest("skyblock/museum", "?profile=" + profileId)) {
//The request was successful
if (response.ok()) {
JsonObject profileData = JsonParser.parseString(response.content()).getAsJsonObject();
@@ -158,13 +158,12 @@ public class MuseumItemCache {
Codec.STRING.listOf()
.xmap(ObjectOpenHashSet::new, ObjectArrayList::new)
.fieldOf("collectedItemIds")
- .forGetter(i -> new ObjectOpenHashSet<String>(i.collectedItemIds())))
- .apply(instance, ProfileMuseumData::new));
+ .forGetter(i -> new ObjectOpenHashSet<>(i.collectedItemIds()))
+ ).apply(instance, ProfileMuseumData::new));
//Mojang's internal Codec implementation uses ImmutableMaps so we'll just xmap those away and type safety while we're at it :')
- @SuppressWarnings({ "unchecked", "rawtypes" })
- private static final Codec<Map<String, Map<String, ProfileMuseumData>>> SERIALIZATION_CODEC = Codec.unboundedMap(Codec.STRING, Codec.unboundedMap(Codec.STRING, CODEC)
- .xmap(Object2ObjectOpenHashMap::new, Object2ObjectOpenHashMap::new))
- .xmap(Object2ObjectOpenHashMap::new, m -> (Map) new Object2ObjectOpenHashMap(m));
+ private static final Codec<Map<String, Object2ObjectOpenHashMap<String, ProfileMuseumData>>> SERIALIZATION_CODEC = Codec.unboundedMap(Codec.STRING, Codec.unboundedMap(Codec.STRING, CODEC)
+ .xmap(Object2ObjectOpenHashMap::new, Object2ObjectOpenHashMap::new)
+ ).xmap(Object2ObjectOpenHashMap::new, Object2ObjectOpenHashMap::new);
private boolean stale() {
return System.currentTimeMillis() > lastUpdated + MAX_AGE;
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/BackpackPreview.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/BackpackPreview.java
index 18a5a9bf..50772789 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/BackpackPreview.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/BackpackPreview.java
@@ -3,7 +3,6 @@ package de.hysky.skyblocker.skyblock.item.tooltip;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
-
import de.hysky.skyblocker.SkyblockerMod;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.item.ItemProtection;
@@ -119,7 +118,7 @@ public class BackpackPreview {
String title = handledScreen.getTitle().getString();
int index = getStorageIndexFromTitle(title);
if (index != -1) {
- storages[index] = new Storage(handledScreen.getScreenHandler().slots.get(0).inventory, title, true);
+ storages[index] = new Storage(handledScreen.getScreenHandler().slots.getFirst().inventory, title, true);
}
}
@@ -181,8 +180,8 @@ public class BackpackPreview {
static class Storage {
private static final Codec<Storage> CODEC = RecordCodecBuilder.create(instance -> instance.group(
Codec.STRING.fieldOf("name").forGetter(Storage::name),
- ItemUtils.EMPTY_ALLOWING_ITEMSTACK_CODEC.listOf().fieldOf("items").forGetter(Storage::getItemList))
- .apply(instance, (name, items) -> Storage.create(name, items)));
+ ItemUtils.EMPTY_ALLOWING_ITEMSTACK_CODEC.listOf().fieldOf("items").forGetter(Storage::getItemList)
+ ).apply(instance, Storage::create));
private final Inventory inventory;
private final String name;
private boolean dirty;
@@ -192,7 +191,7 @@ public class BackpackPreview {
this.name = name;
this.dirty = dirty;
}
-
+
private String name() {
return name;
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java
index d5f2d035..265d276a 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java
@@ -22,7 +22,6 @@ import net.minecraft.nbt.NbtElement;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
-import net.minecraft.util.Util;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
@@ -127,18 +126,18 @@ public class ItemTooltip {
}
}
- final Map<Integer, String> itemTierFloors = Util.make(new HashMap<>(), map -> {
- map.put(1, "F1");
- map.put(2, "F2");
- map.put(3, "F3");
- map.put(4, "F4/M1");
- map.put(5, "F5/M2");
- map.put(6, "F6/M3");
- map.put(7, "F7/M4");
- map.put(8, "M5");
- map.put(9, "M6");
- map.put(10, "M7");
- });
+ final Map<Integer, String> itemTierFloors = Map.of(
+ 1, "F1",
+ 2, "F2",
+ 3, "F3",
+ 4, "F4/M1",
+ 5, "F5/M2",
+ 6, "F6/M3",
+ 7, "F7/M4",
+ 8, "M5",
+ 9, "M6",
+ 10, "M7"
+ );
if (SkyblockerConfigManager.get().general.dungeonQuality) {
NbtCompound customData = ItemUtils.getCustomData(stack);
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemStackBuilder.java b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemStackBuilder.java
index faad2001..9ee2ecd3 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemStackBuilder.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemStackBuilder.java
@@ -7,14 +7,10 @@ import io.github.moulberry.repo.data.NEUItem;
import io.github.moulberry.repo.data.Rarity;
import it.unimi.dsi.fastutil.ints.IntArrayList;
import net.minecraft.component.DataComponentTypes;
-import net.minecraft.component.type.AttributeModifiersComponent;
-import net.minecraft.component.type.DyedColorComponent;
-import net.minecraft.component.type.FireworkExplosionComponent;
-import net.minecraft.component.type.LoreComponent;
-import net.minecraft.component.type.NbtComponent;
-import net.minecraft.component.type.ProfileComponent;
+import net.minecraft.component.type.*;
import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.*;
+import net.minecraft.nbt.NbtCompound;
+import net.minecraft.nbt.NbtString;
import net.minecraft.registry.Registries;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
@@ -43,7 +39,7 @@ public class ItemStackBuilder {
String legacyId = item.getMinecraftItemId();
Identifier itemId = new Identifier(ItemFixerUpper.convertItemId(legacyId, item.getDamage()));
-
+
ItemStack stack = new ItemStack(Registries.ITEM.get(itemId));
// Custom Data
@@ -57,7 +53,7 @@ public class ItemStackBuilder {
stack.set(DataComponentTypes.CUSTOM_NAME, Text.of(name));
// Lore
- stack.set(DataComponentTypes.LORE, new LoreComponent(item.getLore().stream().map(line -> Text.of(injectData(line, injectors))).collect(Collectors.toCollection(() -> new ArrayList<>()))));
+ stack.set(DataComponentTypes.LORE, new LoreComponent(item.getLore().stream().map(line -> Text.of(injectData(line, injectors))).collect(Collectors.toCollection(ArrayList::new))));
String nbttag = item.getNbttag();
// add skull texture
@@ -80,7 +76,7 @@ public class ItemStackBuilder {
if (nbttag.contains("ench:")) {
stack.set(DataComponentTypes.ENCHANTMENT_GLINT_OVERRIDE, true);
}
-
+
//Hide weapon damage and other useless info
stack.set(DataComponentTypes.ATTRIBUTE_MODIFIERS, new AttributeModifiersComponent(List.of(), false));
@@ -90,7 +86,7 @@ public class ItemStackBuilder {
//Forget about the actual ball type because it probably doesn't matter
stack.set(DataComponentTypes.FIREWORK_EXPLOSION, new FireworkExplosionComponent(FireworkExplosionComponent.Type.SMALL_BALL, new IntArrayList(Integer.parseInt(explosionColorMatcher.group("color"))), new IntArrayList(), false, false));
}
-
+
// Attach custom nbt data
stack.set(DataComponentTypes.CUSTOM_DATA, NbtComponent.of(customData));
diff --git a/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java b/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java
index f7556e4f..453c8b04 100644
--- a/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java
+++ b/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java
@@ -55,10 +55,10 @@ public class ItemUtils {
private static final Gson GSON = new Gson(); //GSON Instance with no config
private static final Codec<RegistryEntry<Item>> EMPTY_ALLOWING_ITEM_CODEC = Registries.ITEM.getEntryCodec();
public static final Codec<ItemStack> EMPTY_ALLOWING_ITEMSTACK_CODEC = Codec.lazyInitialized(() -> RecordCodecBuilder.create(instance -> instance.group(
- EMPTY_ALLOWING_ITEM_CODEC.fieldOf("id").forGetter(ItemStack::getRegistryEntry),
- Codec.INT.orElse(1).fieldOf("count").forGetter(ItemStack::getCount),
- ComponentChanges.CODEC.optionalFieldOf("components", ComponentChanges.EMPTY).forGetter(ItemStack::getComponentChanges)
- ).apply(instance, ItemStack::new)));
+ EMPTY_ALLOWING_ITEM_CODEC.fieldOf("id").forGetter(ItemStack::getRegistryEntry),
+ Codec.INT.orElse(1).fieldOf("count").forGetter(ItemStack::getCount),
+ ComponentChanges.CODEC.optionalFieldOf("components", ComponentChanges.EMPTY).forGetter(ItemStack::getComponentChanges)
+ ).apply(instance, ItemStack::new)));
public static LiteralArgumentBuilder<FabricClientCommandSource> dumpHeldItemCommand() {
return literal("dumpHeldItem").executes(context -> {
@@ -90,8 +90,7 @@ public class ItemUtils {
* @return the internal name of the item stack, or an empty string if the item stack is null or does not have an internal name
*/
public static String getItemId(@NotNull ItemStack stack) {
- NbtCompound customData = getCustomData(stack);
- return customData.contains(ID) ? customData.getString(ID) : "";
+ return getCustomData(stack).getString(ID);
}
/**
@@ -112,8 +111,7 @@ public class ItemUtils {
* @return the UUID of the item stack, or an empty string if the item stack is null or does not have a UUID
*/
public static String getItemUuid(@NotNull ItemStack stack) {
- NbtCompound customData = getCustomData(stack);
- return customData.contains(UUID) ? customData.getString(UUID) : "";
+ return getCustomData(stack).getString(UUID);
}
/**
@@ -207,9 +205,7 @@ public class ItemUtils {
}
public static List<Text> getLore(ItemStack item) {
- LoreComponent lore = item.getOrDefault(DataComponentTypes.LORE, LoreComponent.DEFAULT);
-
- return lore.styledLines();
+ return item.getOrDefault(DataComponentTypes.LORE, LoreComponent.DEFAULT).styledLines();
}
public static PropertyMap propertyMapWithTexture(String textureValue) {
@@ -220,9 +216,7 @@ public class ItemUtils {
try {
ItemStack stack = new ItemStack(Items.PLAYER_HEAD);
stack.set(DataComponentTypes.PROFILE, new ProfileComponent(Optional.of("SkyblockerStack"), Optional.of(java.util.UUID.randomUUID()), propertyMapWithTexture("e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdjYzY2ODc0MjNkMDU3MGQ1NTZhYzUzZTA2NzZjYjU2M2JiZGQ5NzE3Y2Q4MjY5YmRlYmVkNmY2ZDRlN2JmOCJ9fX0=")));
-
return stack;
- //return ItemStack.parseOptional(MinecraftClient.getInstance().player.getRegistryManager(), StringNbtReader.parse("{id:\"minecraft:player_head\",Count:1,tag:{SkullOwner:{Id:[I;-300151517,-631415889,-1193921967,-1821784279],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdjYzY2ODc0MjNkMDU3MGQ1NTZhYzUzZTA2NzZjYjU2M2JiZGQ5NzE3Y2Q4MjY5YmRlYmVkNmY2ZDRlN2JmOCJ9fX0=\"}]}}}}"));
} catch (Exception e) {
throw new RuntimeException(e);
}