aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-09-10 12:25:08 -0400
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-09-10 12:25:08 -0400
commitfd8770f38da9cafbdacaa17d1b9f7a071a2b3c4e (patch)
tree414bfe493adccd5838c76f47fedaf8b9370a50d1
parenta54bbeb125ae9461f505bf6d01565c693da43c04 (diff)
downloadSkyblocker-fd8770f38da9cafbdacaa17d1b9f7a071a2b3c4e.tar.gz
Skyblocker-fd8770f38da9cafbdacaa17d1b9f7a071a2b3c4e.tar.bz2
Skyblocker-fd8770f38da9cafbdacaa17d1b9f7a071a2b3c4e.zip
Refactor SpecialEffects
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/special/SpecialEffects.java74
1 files changed, 35 insertions, 39 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/special/SpecialEffects.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/special/SpecialEffects.java
index d2d26ae2..a3d7e5c5 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/special/SpecialEffects.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/special/SpecialEffects.java
@@ -1,13 +1,6 @@
package me.xmrvizzy.skyblocker.skyblock.special;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import com.mojang.blaze3d.systems.RenderSystem;
-
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.utils.Utils;
import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents;
@@ -18,15 +11,37 @@ import net.minecraft.item.Items;
import net.minecraft.nbt.StringNbtReader;
import net.minecraft.particle.ParticleTypes;
import net.minecraft.text.Text;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
public class SpecialEffects {
private static final Logger LOGGER = LoggerFactory.getLogger(SpecialEffects.class);
- private static final Pattern DROP_PATTERN = Pattern.compile("(?:\\[[A-Z+]+\\] )?(?<player>[A-Za-z0-9_]+) unlocked (?<item>.+)!");
+ private static final Pattern DROP_PATTERN = Pattern.compile("(?:\\[[A-Z+]+] )?(?<player>[A-Za-z0-9_]+) unlocked (?<item>.+)!");
+ private static final ItemStack NECRON_HANDLE = new ItemStack(Items.STICK);
+ private static final ItemStack SCROLL = new ItemStack(Items.WRITABLE_BOOK);
+ private static ItemStack TIER_5_SKULL;
+ private static ItemStack FIFTH_STAR;
+
+ static {
+ NECRON_HANDLE.addEnchantment(Enchantments.PROTECTION, 1);
+ SCROLL.addEnchantment(Enchantments.PROTECTION, 1);
+ try {
+ TIER_5_SKULL = ItemStack.fromNbt(StringNbtReader.parse("{id:\"minecraft:player_head\",Count:1,tag:{SkullOwner:{Id:[I;-1613868903,-527154034,-1445577520,748807544],Properties:{textures:[{Value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTEwZjlmMTA4NWQ0MDcxNDFlYjc3NjE3YTRhYmRhYWEwOGQ4YWYzM2I5NjAyMDBmZThjMTI2YzFkMTQ0NTY4MiJ9fX0=\"}]}}}}"));
+ FIFTH_STAR = ItemStack.fromNbt(StringNbtReader.parse("{id:\"minecraft:player_head\",Count:1,tag:{SkullOwner:{Id:[I;1904417095,756174249,-1302927470,1407004198],Properties:{textures:[{Value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzFjODA0MjUyN2Y4MWM4ZTI5M2UyODEwMTEzNDg5ZjQzOTRjYzZlZmUxNWQxYWZhYzQzMTU3MWM3M2I2MmRjNCJ9fX0=\"}]}}}}"));
+ } catch (Exception e) {
+ TIER_5_SKULL = ItemStack.EMPTY;
+ FIFTH_STAR = ItemStack.EMPTY;
+ LOGGER.error("[Skyblocker Special Effects] Failed to parse NBT for a player head!", e);
+ }
+ }
public static void init() {
ClientReceiveMessageEvents.GAME.register(SpecialEffects::displayRareDropEffect);
}
-
+
private static void displayRareDropEffect(Text message, boolean overlay) {
//We don't check if we're in dungeons because that check doesn't work in m7 which defeats the point of this
//It might also allow it to work with Croesus
@@ -34,14 +49,14 @@ public class SpecialEffects {
try {
String stringForm = message.getString();
Matcher matcher = DROP_PATTERN.matcher(stringForm);
-
+
if (matcher.matches()) {
MinecraftClient client = MinecraftClient.getInstance();
String player = matcher.group("player");
-
+
if (player.equals(client.getSession().getUsername())) {
ItemStack stack = getStackFromName(matcher.group("item"));
-
+
if (!stack.isEmpty()) {
if (RenderSystem.isOnRenderThread()) {
client.particleManager.addEmitter(client.player, ParticleTypes.PORTAL, 30);
@@ -55,45 +70,26 @@ public class SpecialEffects {
}
}
}
- } catch (Exception e) { //Incase there's a regex failure or something else bad happens
+ } catch (Exception e) { //In case there's a regex failure or something else bad happens
LOGGER.error("[Skyblocker Special Effects] An unexpected exception was encountered: ", e);
}
}
}
-
+
private static ItemStack getStackFromName(String itemName) {
- ItemStack necronHandle = new ItemStack(Items.STICK);
- necronHandle.addEnchantment(Enchantments.PROTECTION, 1);
-
- ItemStack scroll = new ItemStack(Items.WRITABLE_BOOK);
- scroll.addEnchantment(Enchantments.PROTECTION, 1);
-
- ItemStack tier5Skull = ItemStack.EMPTY;
- ItemStack fifthStar = ItemStack.EMPTY;
-
- try {
- tier5Skull = ItemStack.fromNbt(StringNbtReader.parse("{id:\"minecraft:player_head\",Count:1,tag:{SkullOwner:{Id:[I;-1613868903,-527154034,-1445577520,748807544],Properties:{textures:[{Value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTEwZjlmMTA4NWQ0MDcxNDFlYjc3NjE3YTRhYmRhYWEwOGQ4YWYzM2I5NjAyMDBmZThjMTI2YzFkMTQ0NTY4MiJ9fX0=\"}]}}}}"));
- fifthStar = ItemStack.fromNbt(StringNbtReader.parse("{id:\"minecraft:player_head\",Count:1,tag:{SkullOwner:{Id:[I;1904417095,756174249,-1302927470,1407004198],Properties:{textures:[{Value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzFjODA0MjUyN2Y4MWM4ZTI5M2UyODEwMTEzNDg5ZjQzOTRjYzZlZmUxNWQxYWZhYzQzMTU3MWM3M2I2MmRjNCJ9fX0=\"}]}}}}"));
- } catch (Exception e) {
- LOGGER.error("[Skyblocker Special Effects] Failed to parse NBT for a player head!");
- }
-
return switch (itemName) {
//M7
case "Necron Dye" -> new ItemStack(Items.ORANGE_DYE);
case "Dark Claymore" -> new ItemStack(Items.STONE_SWORD);
- case "Necron's Handle" -> necronHandle;
- case "Shiny Necron's Handle" -> necronHandle;
+ case "Necron's Handle", "Shiny Necron's Handle" -> NECRON_HANDLE;
case "Enchanted Book (Thunderlord VII)" -> new ItemStack(Items.ENCHANTED_BOOK);
- case "Master Skull - Tier 5" -> tier5Skull;
- case "Shadow Warp" -> scroll;
- case "Wither Shield" -> scroll;
- case "Implosion" -> scroll;
- case "Fifth Master Star" -> fifthStar;
-
+ case "Master Skull - Tier 5" -> TIER_5_SKULL;
+ case "Shadow Warp", "Wither Shield", "Implosion" -> SCROLL;
+ case "Fifth Master Star" -> FIFTH_STAR;
+
//M6
case "Giant's Sword" -> new ItemStack(Items.IRON_SWORD);
-
+
default -> ItemStack.EMPTY;
};
}