islandNames = new HashMap<>();
-
- static {
- islandNames.put("temperate_1", "Verdant Woods");
- islandNames.put("temperate_2", "Floral Forest");
- islandNames.put("temperate_3", "Dark Grove");
- islandNames.put("temperate_grotto", "Sunken Swamp");
-
- islandNames.put("tropical_1", "Tropical Overgrowth");
- islandNames.put("tropical_2", "Coral Shores");
- islandNames.put("tropical_3", "Twisted Swamp");
- islandNames.put("tropical_grotto", "Mirrored Oasis");
-
- islandNames.put("barren_1", "Ancient Sands");
- islandNames.put("barren_2", "Blazing Canyon");
- islandNames.put("barren_3", "Ashen Wastes");
- islandNames.put("barren_grotto", "Volcanic Springs");
- }
-
- public static void init() {
- }
-
- public static void updateFishingPlace() {
- if (activity == null) return;
-
- String place = islandNames.get(MccIslandState.getSubType());
- if (place != null) {
- activity.setDetails("In the " + place);
- activity.assets().setLargeImage(MccIslandState.getSubType().toLowerCase());
- activity.assets().setLargeText(place);
-
- activity.assets().setSmallImage("fishing");
- activity.assets().setSmallText("Fishing");
- } else {
- activity.assets().setLargeImage("fishing");
- activity.assets().setLargeText("Fishing");
- }
- }
-}
diff --git a/src/main/java/net/asodev/islandutils/discord/NativeLibrary.java b/src/main/java/net/asodev/islandutils/discord/NativeLibrary.java
deleted file mode 100644
index cefbcde2..00000000
--- a/src/main/java/net/asodev/islandutils/discord/NativeLibrary.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package net.asodev.islandutils.discord;
-
-import net.asodev.islandutils.util.resourcepack.ResourcePackOptions;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.Files;
-import java.nio.file.StandardCopyOption;
-
-import static net.asodev.islandutils.util.Utils.assertIslandFolder;
-
-public class NativeLibrary {
-
- public static String os = System.getProperty("os.name").toLowerCase();
- public static String architecture = System.getProperty("os.arch").toLowerCase();
-
- public static File grabDiscordNative() throws Exception {
- String name = "discord_game_sdk";
- String extention;
-
- if (os.contains("windows")) extention = ".dll";
- else if (os.contains("linux")) extention = ".so";
- else if (os.contains("mac os")) extention = ".dylib";
- else { throw new RuntimeException("Can't get OS type: " + os + ". Discord Presence Disabled."); }
-
- if (architecture.equals("amd64")) architecture = "x86_64";
-
- String libIndex = "native/lib/" + architecture + "/" + name+extention;
-
- assertIslandFolder();
- File outFile = ResourcePackOptions.islandFolder.resolve(libIndex).toFile();
- if (!outFile.exists()) {
- System.out.println("Extracting Discord Natives.");
- InputStream stream = NativeLibrary.class.getResourceAsStream("/" + libIndex);
- if (stream == null) throw new IOException("Natives couldn't be found in the resources. (" + libIndex + ")");
-
- outFile.mkdirs();
- Files.copy(stream, outFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
- }
-
- return outFile;
- }
-
- public static File grabDiscordJNI() throws IOException {
- String name = "discord_game_sdk_jni";
- String osName = os;
-
- String fileName;
-
- if(osName.contains("windows")) {
- osName = "windows";
- fileName = name + ".dll";
- }
- else if(osName.contains("linux")) {
- osName = "linux";
- fileName = "lib" + name + ".so";
- }
- else if(osName.contains("mac os")) {
- osName = "macos";
- fileName = "lib" + name + ".dylib";
- }
- else {
- throw new RuntimeException("cannot determine OS type: "+osName);
- }
-
- if(architecture.equals("x86_64"))
- architecture = "amd64";
-
- String libIndex = "native/"+osName+"/"+architecture+"/"+fileName;
-
- File outFile = ResourcePackOptions.islandFolder.resolve(libIndex).toFile();
- if (!outFile.exists()) {
- InputStream stream = NativeLibrary.class.getResourceAsStream("/" + libIndex);
- if (stream == null) throw new IOException("JNI couldn't be found in the resources. (" + libIndex + ")");
-
- outFile.mkdirs();
- Files.copy(stream, outFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
- }
- return outFile;
- }
-
-}
diff --git a/src/main/java/net/asodev/islandutils/mixins/BossUIMixin.java b/src/main/java/net/asodev/islandutils/mixins/BossUIMixin.java
deleted file mode 100644
index 119164b9..00000000
--- a/src/main/java/net/asodev/islandutils/mixins/BossUIMixin.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package net.asodev.islandutils.mixins;
-
-import net.asodev.islandutils.modules.splits.ui.SplitUI;
-import net.asodev.islandutils.state.MccIslandState;
-import net.minecraft.client.gui.GuiGraphics;
-import net.minecraft.client.gui.components.BossHealthOverlay;
-import net.minecraft.client.gui.components.LerpingBossEvent;
-import org.spongepowered.asm.mixin.Final;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-/**
- * We're using a mixin rather than HudRenderCallback because
- * it has some weird issues with transparency.
- *
- * Also SplitUI needs BossBar events list
- */
-@Mixin(BossHealthOverlay.class)
-public class BossUIMixin {
-
- @Shadow @Final
- Map events;
-
- @Inject(method = "render", at = @At("HEAD"))
- private void render(GuiGraphics guiGraphics, CallbackInfo ci) {
- if (!MccIslandState.isOnline()) return;
-
- List list = new ArrayList<>(events.values());
- Collections.reverse(list);
- int size = list.size();
- for (LerpingBossEvent event : list) {
- if (!event.getName().getString().equals("")) break;
- size--;
- }
- SplitUI.renderInstance(guiGraphics, size);
- }
-
-}
diff --git a/src/main/java/net/asodev/islandutils/mixins/ItemIDMixin.java b/src/main/java/net/asodev/islandutils/mixins/ItemIDMixin.java
deleted file mode 100644
index 7dc9daef..00000000
--- a/src/main/java/net/asodev/islandutils/mixins/ItemIDMixin.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package net.asodev.islandutils.mixins;
-
-import com.llamalad7.mixinextras.sugar.Local;
-import com.mojang.blaze3d.platform.InputConstants;
-import net.asodev.islandutils.mixins.accessors.ContainerScreenAccessor;
-import net.asodev.islandutils.options.IslandOptions;
-import net.asodev.islandutils.state.MccIslandState;
-import net.asodev.islandutils.util.Utils;
-import net.minecraft.ChatFormatting;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.screens.Screen;
-import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
-import net.minecraft.core.component.DataComponentHolder;
-import net.minecraft.core.component.DataComponents;
-import net.minecraft.nbt.CompoundTag;
-import net.minecraft.network.chat.Component;
-import net.minecraft.network.chat.MutableComponent;
-import net.minecraft.resources.ResourceLocation;
-import net.minecraft.world.entity.player.Player;
-import net.minecraft.world.inventory.Slot;
-import net.minecraft.world.item.Item;
-import net.minecraft.world.item.ItemStack;
-import net.minecraft.world.item.TooltipFlag;
-import net.minecraft.world.item.component.CustomData;
-import net.minecraft.world.item.component.TooltipDisplay;
-import org.jetbrains.annotations.Nullable;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Unique;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
-import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
-
-import java.util.List;
-
-@Mixin(ItemStack.class)
-public abstract class ItemIDMixin implements DataComponentHolder {
-
- @Inject(
- method = "getTooltipLines",
- at = @At(
- value = "INVOKE",
- target = "Lnet/minecraft/world/item/ItemStack;addDetailsToTooltip(Lnet/minecraft/world/item/Item$TooltipContext;Lnet/minecraft/world/item/component/TooltipDisplay;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/item/TooltipFlag;Ljava/util/function/Consumer;)V",
- shift = At.Shift.AFTER
- )
- )
- private void addTooltipLines(Item.TooltipContext tooltipContext, @Nullable Player player, TooltipFlag tooltipFlag, CallbackInfoReturnable> cir, @Local List list) {
- if (!MccIslandState.isOnline() || !IslandOptions.getMisc().isDebugMode()) return;
- if (!InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), InputConstants.KEY_LCONTROL)) return;
-
- MutableComponent toAppend = Component.empty();
- if (this.has(DataComponents.CUSTOM_DATA)) tryAddCustomItemID(toAppend); // Append MCCI Custom Item ID
- if (Minecraft.getInstance().screen != null) tryAddSlotNumber(toAppend); // Append Slot Number
-
- if (!toAppend.getSiblings().isEmpty()) { // Add to tooltip lines if not empty
- list.add(toAppend);
- }
- }
-
- @Unique
- private void tryAddCustomItemID(MutableComponent toAppend) {
- ResourceLocation customItemID = Utils.getCustomItemID((ItemStack) (Object) this);
- if (customItemID == null) return;
- toAppend.append(Component.literal(customItemID.toString()).withStyle(ChatFormatting.AQUA));
- }
-
- @Unique
- private void tryAddSlotNumber(MutableComponent toAppend) {
- ItemStack me = (ItemStack)(Object)this;
- Screen screen = Minecraft.getInstance().screen;
- if (!(screen instanceof AbstractContainerScreen> containerScreen)) return;
- Slot hoveredSlot = ((ContainerScreenAccessor) containerScreen).getHoveredSlot();
-
- if (!hoveredSlot.hasItem()) return;
- if (hoveredSlot.getItem() != me) return;
- Component component = Component.literal(" (" + hoveredSlot.getContainerSlot() + ")").withStyle(ChatFormatting.GRAY);
- toAppend.append(component);
- }
-
-}
diff --git a/src/main/java/net/asodev/islandutils/mixins/accessors/ContainerScreenAccessor.java b/src/main/java/net/asodev/islandutils/mixins/accessors/ContainerScreenAccessor.java
deleted file mode 100644
index 6964e8bf..00000000
--- a/src/main/java/net/asodev/islandutils/mixins/accessors/ContainerScreenAccessor.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package net.asodev.islandutils.mixins.accessors;
-
-import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
-import net.minecraft.world.inventory.Slot;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-@Mixin(AbstractContainerScreen.class)
-public interface ContainerScreenAccessor {
-
- @Accessor("hoveredSlot")
- Slot getHoveredSlot();
-
-}
diff --git a/src/main/java/net/asodev/islandutils/mixins/accessors/SoundEngineAccessor.java b/src/main/java/net/asodev/islandutils/mixins/accessors/SoundEngineAccessor.java
deleted file mode 100644
index 8562fb12..00000000
--- a/src/main/java/net/asodev/islandutils/mixins/accessors/SoundEngineAccessor.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package net.asodev.islandutils.mixins.accessors;
-
-import com.mojang.blaze3d.audio.Listener;
-import net.minecraft.client.resources.sounds.SoundInstance;
-import net.minecraft.client.sounds.ChannelAccess;
-import net.minecraft.client.sounds.SoundEngine;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-import java.util.Map;
-
-@Mixin(SoundEngine.class)
-public interface SoundEngineAccessor {
-
- @Accessor("listener")
- Listener getListener();
-
- @Accessor("instanceToChannel")
- Map getInstanceToChannel();
-
-}
diff --git a/src/main/java/net/asodev/islandutils/mixins/accessors/SoundManagerAccessor.java b/src/main/java/net/asodev/islandutils/mixins/accessors/SoundManagerAccessor.java
deleted file mode 100644
index 4a329e58..00000000
--- a/src/main/java/net/asodev/islandutils/mixins/accessors/SoundManagerAccessor.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package net.asodev.islandutils.mixins.accessors;
-
-import net.minecraft.client.sounds.SoundEngine;
-import net.minecraft.client.sounds.SoundManager;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-@Mixin(SoundManager.class)
-public interface SoundManagerAccessor {
-
- @Accessor("soundEngine")
- SoundEngine getSoundEngine();
-
-}
diff --git a/src/main/java/net/asodev/islandutils/mixins/accessors/WalkAnimStateAccessor.java b/src/main/java/net/asodev/islandutils/mixins/accessors/WalkAnimStateAccessor.java
deleted file mode 100644
index a2a0ac10..00000000
--- a/src/main/java/net/asodev/islandutils/mixins/accessors/WalkAnimStateAccessor.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package net.asodev.islandutils.mixins.accessors;
-
-import net.minecraft.world.entity.WalkAnimationState;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-@Mixin(WalkAnimationState.class)
-public interface WalkAnimStateAccessor {
-
- @Accessor("position")
- public float getPosition();
- @Accessor("position")
- public void setPosition(float position);
-
- @Accessor("speed")
- public void setSpeed(float speed);
- @Accessor("speed")
- public float getSpeed();
-
- @Accessor("speedOld")
- public void setSpeedOld(float speedOld);
- @Accessor("speedOld")
- public float getSpeedOld();
-
-}
diff --git a/src/main/java/net/asodev/islandutils/mixins/cosmetics/ChestScreenMixin.java b/src/main/java/net/asodev/islandutils/mixins/cosmetics/ChestScreenMixin.java
deleted file mode 100644
index 79708cfc..00000000
--- a/src/main/java/net/asodev/islandutils/mixins/cosmetics/ChestScreenMixin.java
+++ /dev/null
@@ -1,190 +0,0 @@
-package net.asodev.islandutils.mixins.cosmetics;
-
-import com.mojang.blaze3d.platform.InputConstants;
-import net.asodev.islandutils.modules.cosmetics.Cosmetic;
-import net.asodev.islandutils.modules.cosmetics.CosmeticSlot;
-import net.asodev.islandutils.modules.cosmetics.CosmeticState;
-import net.asodev.islandutils.modules.cosmetics.CosmeticType;
-import net.asodev.islandutils.options.IslandOptions;
-import net.asodev.islandutils.state.MccIslandState;
-import net.asodev.islandutils.util.IslandSoundEvents;
-import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.GuiGraphics;
-import net.minecraft.client.gui.screens.Screen;
-import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
-import net.minecraft.client.player.LocalPlayer;
-import net.minecraft.client.renderer.RenderType;
-import net.minecraft.client.resources.sounds.SimpleSoundInstance;
-import net.minecraft.network.chat.Component;
-import net.minecraft.resources.ResourceLocation;
-import net.minecraft.world.entity.EquipmentSlot;
-import net.minecraft.world.entity.player.Inventory;
-import net.minecraft.world.inventory.AbstractContainerMenu;
-import net.minecraft.world.inventory.ClickType;
-import net.minecraft.world.inventory.Slot;
-import net.minecraft.world.item.ItemStack;
-import net.minecraft.world.item.Items;
-import org.spongepowered.asm.mixin.Final;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-import org.spongepowered.asm.mixin.Unique;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
-
-import java.util.List;
-
-import static net.asodev.islandutils.util.Utils.customModelData;
-
-
-@Mixin(AbstractContainerScreen.class)
-public abstract class ChestScreenMixin extends Screen {
- @Unique private static final ResourceLocation PREVIEW = ResourceLocation.fromNamespaceAndPath("island", "preview");
-
- @Shadow protected Slot hoveredSlot;
-
- @Shadow @Final protected AbstractContainerMenu menu;
-
- protected ChestScreenMixin(Component component) {
- super(component);
- }
-
- @Inject(method = "", at = @At("TAIL"))
- private void onInit(AbstractContainerMenu abstractContainerMenu, Inventory inventory, Component component, CallbackInfo ci) {
- LocalPlayer player = Minecraft.getInstance().player;
- CosmeticState.hatSlot.setOriginal(new CosmeticSlot(player.getInventory().getItem(EquipmentSlot.HEAD.getIndex(36))));
- CosmeticState.accessorySlot.setOriginal(new CosmeticSlot(player.getInventory().getItem(40)));
- }
-
- @Inject(method = "renderSlot", at = @At("TAIL"))
- private void renderSlot(GuiGraphics guiGraphics, Slot slot, CallbackInfo ci) {
- if (!MccIslandState.isOnline()) return;
- if (!slot.hasItem()) return;
-
- boolean shouldRender = false;
-
- if (CosmeticState.hatSlot.preview != null && CosmeticState.hatSlot.preview.matchesSlot(slot)) shouldRender = true;
- else if (CosmeticState.accessorySlot.preview != null && CosmeticState.accessorySlot.preview.matchesSlot(slot)) shouldRender = true;
- else if (CosmeticState.mainHandSlot.preview != null && CosmeticState.mainHandSlot.preview.matchesSlot(slot)) shouldRender = true;
-
- guiGraphics.pose().pushPose();
- if (shouldRender) {
- guiGraphics.pose().translate(0.0f, 0.0f, 105f);
- guiGraphics.blitSprite(RenderType::guiTextured, PREVIEW, slot.x-3, slot.y-4, 22, 24);
- }
- guiGraphics.pose().popPose();
- }
-
- @Inject(method = "render", at = @At("TAIL"))
- private void render(GuiGraphics guiGraphics, int i, int j, float f, CallbackInfo ci) {
- if (hoveredSlot != null && hoveredSlot.hasItem()) {
- ItemStack hoveredItem = hoveredSlot.getItem();
- if (IslandOptions.getCosmetics().isShowOnHover()) {
- CosmeticType newType = setHovered(hoveredItem);
- if (newType != CosmeticType.HAT) CosmeticState.hatSlot.hover = null;
- if (newType != CosmeticType.ACCESSORY) CosmeticState.accessorySlot.hover = null;
- if (newType != CosmeticType.MAIN_HAND) CosmeticState.mainHandSlot.hover = null;
- }
-
- if (CosmeticState.isColoredItem(hoveredItem)) {
- Integer color = CosmeticState.getColor(hoveredSlot.getItem());
- if (color != null) {
- CosmeticState.hoveredColor = color;
- return;
- }
- }
- } else {
- CosmeticState.hatSlot.hover = null;
- CosmeticState.accessorySlot.hover = null;
- CosmeticState.mainHandSlot.hover = null;
- }
- CosmeticState.hoveredColor = null;
- }
-
- private CosmeticType setHovered(ItemStack item) {
- CosmeticType type = CosmeticState.getType(item);
- if (type == null) return null;
- Cosmetic cosmeticByType = CosmeticState.getCosmeticByType(type);
- if (cosmeticByType == null) return null;
- cosmeticByType.hover = new CosmeticSlot(item, hoveredSlot);
- return type;
- }
-
- @Inject(method = "mouseDragged", at = @At("HEAD"))
- private void mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY, CallbackInfoReturnable cir) {
- if (!MccIslandState.isOnline()) return;
-
- CosmeticState.yRot = CosmeticState.yRot - Double.valueOf(deltaX).floatValue();
- CosmeticState.xRot = CosmeticState.xRot - Double.valueOf(deltaY).floatValue();
- }
-
- @Inject(method = "keyPressed", at = @At("HEAD"))
- private void keyPressed(int keyCode, int scanCode, int modifiers, CallbackInfoReturnable cir) {
- triggerPreviewClicked(keyCode);
- }
- @Inject(method = "mouseReleased", at = @At("HEAD"))
- private void mouseReleased(double d, double e, int keyCode, CallbackInfoReturnable cir) {
- triggerPreviewClicked(keyCode);
- }
-
- @Inject(method = "slotClicked", at = @At("HEAD"))
- private void slotClicked(Slot slot, int i, int j, ClickType clickType, CallbackInfo ci) {
- if (!MccIslandState.isOnline()) return;
- if (slot == null || !slot.hasItem()) return;
- ItemStack stack = slot.getItem();
- if (CosmeticState.canBeEquipped(stack)) {
- CosmeticType type = CosmeticState.getType(stack);
- if (type == null) return;
- Cosmetic cosmeticByType = CosmeticState.getCosmeticByType(type);
- if (cosmeticByType == null) return;
-
- cosmeticByType.setOriginal(new CosmeticSlot(stack.copy()));
- }
- }
-
- private void triggerPreviewClicked(int keyCode) {
- if (!MccIslandState.isOnline()) return;
- if (!IslandOptions.getCosmetics().isShowPlayerPreview()) return;
- if (hoveredSlot == null || !hoveredSlot.hasItem()) return;
- InputConstants.Key previewBind = KeyBindingHelper.getBoundKeyOf(minecraft.options.keyPickItem);
- if (keyCode == previewBind.getValue()) {
- ItemStack item = hoveredSlot.getItem();
- if (item.is(Items.GHAST_TEAR) || item.is(Items.AIR)) return;
- setPreview(item);
- }
- }
-
-
- @Unique
- private void setPreview(ItemStack item) {
- CosmeticType type = CosmeticState.getType(item);
- float hoverCMD = customModelData(item);
- if (type == CosmeticType.HAT) setOrNotSet(CosmeticState.hatSlot, hoverCMD);
- else if (type == CosmeticType.ACCESSORY) setOrNotSet(CosmeticState.accessorySlot, hoverCMD);
- else if (type == CosmeticType.MAIN_HAND) setOrNotSet(CosmeticState.mainHandSlot, hoverCMD);
- }
-
- @Unique
- private void setOrNotSet(Cosmetic cosmetic, float itemCMD) {
- if (cosmetic.preview == null || itemCMD != customModelData(cosmetic.preview.item))
- cosmetic.preview = new CosmeticSlot(hoveredSlot);
- else
- cosmetic.preview = null;
- this.minecraft.getSoundManager().play(SimpleSoundInstance.forUI(IslandSoundEvents.UI_CLICK_NORMAL, 1f, 1f));
- }
-
- @Inject(method = "onClose", at = @At("TAIL"))
- private void onClose(CallbackInfo ci) {
- CosmeticState.hatSlot = new Cosmetic(CosmeticType.HAT);
- CosmeticState.accessorySlot = new Cosmetic(CosmeticType.ACCESSORY);
- CosmeticState.mainHandSlot = new Cosmetic(CosmeticType.MAIN_HAND);
-
- CosmeticState.inspectingPlayer = null;
-
- CosmeticState.yRot = 155;
- CosmeticState.xRot = -5;
- }
-
-}
diff --git a/src/main/java/net/asodev/islandutils/mixins/cosmetics/FontLoaderMixin.java b/src/main/java/net/asodev/islandutils/mixins/cosmetics/FontLoaderMixin.java
deleted file mode 100644
index c80e8440..00000000
--- a/src/main/java/net/asodev/islandutils/mixins/cosmetics/FontLoaderMixin.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package net.asodev.islandutils.mixins.cosmetics;
-
-import net.asodev.islandutils.modules.cosmetics.CosmeticState;
-import net.asodev.islandutils.modules.crafting.CraftingUI;
-import net.asodev.islandutils.modules.scavenging.Scavenging;
-import net.asodev.islandutils.modules.splits.LevelTimer;
-import net.minecraft.client.gui.font.providers.BitmapProvider;
-import net.minecraft.network.chat.Component;
-import net.minecraft.network.chat.Style;
-import net.minecraft.resources.ResourceLocation;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-import static net.asodev.islandutils.modules.cosmetics.CosmeticState.MCC_ICONS;
-
-@Mixin(BitmapProvider.Definition.class)
-public class FontLoaderMixin {
-
- @Inject(method = "", at = @At("TAIL"))
- private void init(ResourceLocation file, int i, int j, int[][] chars, CallbackInfo ci) {
- if (chars.length == 1) {
- int[] c = chars[0];
-
- StringBuilder builder = new StringBuilder();
- for (int point : c) { builder.appendCodePoint(point); }
-
- String character = builder.toString();
- Component comp = Component.literal(character).setStyle(Style.EMPTY.withFont(MCC_ICONS));
- switch (file.getPath()) {
- case "_fonts/body/blueprint_assembly.png" -> CraftingUI.setAssemblerCharacter(character);
- case "_fonts/body/fusion_forge.png" -> CraftingUI.setForgeCharacter(character);
- case "_fonts/body/scavenging.png" -> Scavenging.setTitleCharacter(character);
- case "_fonts/material_dust.png" -> Scavenging.setDustCharacter(character);
- case "_fonts/silver.png" -> Scavenging.setSilverCharacter(character);
- case "_fonts/coin_small.png" -> Scavenging.setCoinCharacter(character);
-
- case "_fonts/tooltips/hat.png" -> CosmeticState.HAT_COMP = comp;
- case "_fonts/tooltips/accessory.png" -> CosmeticState.ACCESSORY_COMP = comp;
- case "_fonts/tooltips/hair.png" -> CosmeticState.HAIR_COMP = comp;
- case "_fonts/medals.png" -> LevelTimer.medalCharacter = character;
- case "_fonts/split_up.png" -> LevelTimer.splitUpComponent = comp;
- case "_fonts/split_down.png" -> LevelTimer.splitDownComponent = comp;
- }
- }
- }
-
-}
diff --git a/src/main/java/net/asodev/islandutils/mixins/cosmetics/PreviewTutorialMixin.java b/src/main/java/net/asodev/islandutils/mixins/cosmetics/PreviewTutorialMixin.java
deleted file mode 100644
index 78977ccb..00000000
--- a/src/main/java/net/asodev/islandutils/mixins/cosmetics/PreviewTutorialMixin.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package net.asodev.islandutils.mixins.cosmetics;
-
-import com.llamalad7.mixinextras.sugar.Local;
-import net.asodev.islandutils.modules.cosmetics.CosmeticState;
-import net.asodev.islandutils.options.IslandOptions;
-import net.asodev.islandutils.util.ChatUtils;
-import net.minecraft.ChatFormatting;
-import net.minecraft.network.chat.Component;
-import net.minecraft.network.chat.Style;
-import net.minecraft.world.entity.player.Player;
-import net.minecraft.world.item.Item;
-import net.minecraft.world.item.ItemStack;
-import net.minecraft.world.item.TooltipFlag;
-import net.minecraft.world.item.component.TooltipDisplay;
-import org.jetbrains.annotations.Nullable;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Unique;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
-import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
-
-import java.util.List;
-import java.util.function.Consumer;
-
-import static net.asodev.islandutils.util.ChatUtils.iconsFontStyle;
-
-@Mixin(ItemStack.class)
-public class PreviewTutorialMixin {
- @Unique
- private static final Style style0 = Style.EMPTY.withColor(ChatFormatting.DARK_GRAY).withFont(Style.DEFAULT_FONT);
- @Unique
- private static final Style style1 = Style.EMPTY.withColor(ChatUtils.parseColor("#e9d282")).withFont(Style.DEFAULT_FONT);
- @Unique
- private static final Style style2 = Style.EMPTY.withColor(ChatUtils.parseColor("#fbe460")).withFont(Style.DEFAULT_FONT);
-
- @Unique
- private static final Component previewComponent = Component.empty()
- .append(Component.literal("\ue005").setStyle(iconsFontStyle))
- .append(Component.literal(" > ").setStyle(style0))
- .append(Component.keybind("key.pickItem").append(" to ").setStyle(style1))
- .append(Component.literal("Preview on player").setStyle(style2));
-
- @Inject(
- method = "addDetailsToTooltip",
- at = @At(
- value = "INVOKE",
- target = "Lnet/minecraft/world/item/ItemStack;addAttributeTooltips(Ljava/util/function/Consumer;Lnet/minecraft/world/item/component/TooltipDisplay;Lnet/minecraft/world/entity/player/Player;)V",
- shift = At.Shift.BEFORE
- )
- )
- private void injectedTooltipLines(Item.TooltipContext tooltipContext, TooltipDisplay tooltipDisplay, @Nullable Player player, TooltipFlag tooltipFlag, Consumer consumer, CallbackInfo ci) {
- if (CosmeticState.getType((ItemStack) (Object) this) == null) return;
- if (!IslandOptions.getCosmetics().isShowPlayerPreview()) return;
- consumer.accept(previewComponent);
- }
-
-}
diff --git a/src/main/java/net/asodev/islandutils/mixins/cosmetics/UIMixin.java b/src/main/java/net/asodev/islandutils/mixins/cosmetics/UIMixin.java
deleted file mode 100644
index 04114efb..00000000
--- a/src/main/java/net/asodev/islandutils/mixins/cosmetics/UIMixin.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package net.asodev.islandutils.mixins.cosmetics;
-
-import net.asodev.islandutils.mixins.accessors.WalkAnimStateAccessor;
-import net.asodev.islandutils.modules.cosmetics.CosmeticState;
-import net.asodev.islandutils.modules.cosmetics.CosmeticType;
-import net.asodev.islandutils.modules.cosmetics.CosmeticUI;
-import net.asodev.islandutils.options.IslandOptions;
-import net.asodev.islandutils.options.categories.CosmeticsOptions;
-import net.asodev.islandutils.state.MccIslandState;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.GuiGraphics;
-import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
-import net.minecraft.client.gui.screens.inventory.ContainerScreen;
-import net.minecraft.network.chat.Component;
-import net.minecraft.world.entity.EquipmentSlot;
-import net.minecraft.world.entity.player.Inventory;
-import net.minecraft.world.entity.player.Player;
-import net.minecraft.world.inventory.ChestMenu;
-import net.minecraft.world.item.ItemStack;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-import static net.asodev.islandutils.modules.cosmetics.CosmeticState.applyColor;
-
-@Mixin(ContainerScreen.class)
-public abstract class UIMixin extends AbstractContainerScreen {
- public UIMixin(ChestMenu abstractContainerMenu, Inventory inventory, Component component) {
- super(abstractContainerMenu, inventory, component);
- }
-
- @Inject(method = "renderBg", at = @At("TAIL"))
- public void renderBg(GuiGraphics guiGraphics, float f, int i, int j, CallbackInfo ci) {
- if (!MccIslandState.isOnline()) return;
-
- CosmeticsOptions options = IslandOptions.getCosmetics();
- if (!options.isShowPlayerPreview()) return;
- boolean isCosmeticMenu = false;
- if (options.isShowOnOnlyCosmeticMenus() && !(isCosmeticMenu = CosmeticState.isCosmeticMenu(this))) return;
-
- checkInspect();
-
- Player player = CosmeticState.getInspectingPlayer();
- Player localPlayer = Minecraft.getInstance().player;
- if (player == null) return;
- if (localPlayer == null) return;
-
- ItemStack defaultMainSlot = null;
- ItemStack defaultHatSlot = null;
- ItemStack defaultAccSlot = null;
-
- ItemStack hatSlot;
- ItemStack accSlot;
-
- Inventory playerInventory = player.getInventory();
- if (CosmeticState.inspectingPlayer == null || CosmeticState.inspectingPlayer.getUUID() == Minecraft.getInstance().player.getUUID()) {
- hatSlot = CosmeticState.hatSlot.getContents().getItem(this.menu);
- accSlot = CosmeticState.accessorySlot.getContents().getItem(this.menu);
- ItemStack mainSlot = CosmeticState.mainHandSlot.getContents().getItem(this.menu);
- if (isCosmeticMenu) {
- applyColor(hatSlot);
- applyColor(accSlot);
-
- defaultHatSlot = CosmeticType.HAT.getItem(playerInventory);
- playerInventory.setItem(CosmeticType.HAT.getIndex(), hatSlot);
-
- defaultAccSlot = CosmeticType.ACCESSORY.getItem(playerInventory);
- playerInventory.setItem(CosmeticType.ACCESSORY.getIndex(), accSlot);
-
- defaultMainSlot = player.getMainHandItem();
- player.setItemSlot(EquipmentSlot.MAINHAND, mainSlot);
- }
- } else {
- hatSlot = CosmeticType.HAT.getItem(playerInventory);
- accSlot = CosmeticType.ACCESSORY.getItem(playerInventory);
- }
-
- WalkAnimStateAccessor walkAnim = (WalkAnimStateAccessor) player.walkAnimation;
- float animPos = walkAnim.getPosition();
- float animSpeed = walkAnim.getSpeed();
- float animSpeedOld = walkAnim.getSpeedOld();
- float attackAnim = player.attackAnim;
-
- walkAnim.setPosition(0f);
- walkAnim.setSpeed(0f);
- walkAnim.setSpeedOld(0f);
- player.attackAnim = 0;
-
- int size = Double.valueOf(Math.ceil(this.imageHeight / 2.5)).intValue();
- int x = (this.width - this.imageWidth) / 4;
- int y = (this.height / 2) + size;
-
- CosmeticUI.renderPlayerInInventory(
- guiGraphics,
- x, // x
- y, // y
- size , // size
- player); // Entity
-
- walkAnim.setPosition(animPos);
- walkAnim.setSpeed(animSpeed);
- walkAnim.setSpeedOld(animSpeedOld);
- player.attackAnim = attackAnim;
- if (defaultHatSlot != null) playerInventory.setItem(CosmeticType.HAT.getIndex(), defaultHatSlot);
- if (defaultAccSlot != null) playerInventory.setItem(CosmeticType.ACCESSORY.getIndex(), defaultAccSlot);
- if (defaultMainSlot != null) player.setItemSlot(EquipmentSlot.MAINHAND, defaultMainSlot);
-
- // this code is so ugly omfg
- int itemPos = x+(size / 2) - 18;
-
- y += 8;
- int backgroundColor = 0x60000000;
- guiGraphics.fill(x-(size / 2) - 2, y, x+(size / 2)+2, y + 19, backgroundColor);
- guiGraphics.drawString(this.font, CosmeticState.HAT_COMP, x-(size / 2) + 4, y + 6, 16777215 | 255 << 24);
- guiGraphics.renderItem(this.minecraft.player, hatSlot, itemPos, y+2, x + y * this.imageWidth);
-
- y += 19 + 4;
- guiGraphics.fill(x-(size / 2) - 2, y, x+(size / 2)+2, y + 19, backgroundColor);
- guiGraphics.drawString(this.font, CosmeticState.ACCESSORY_COMP, x-(size / 2) + 4, y + 6, 16777215 | 255 << 24);
- guiGraphics.renderItem(this.minecraft.player, accSlot, itemPos, y+2, x + y * this.imageWidth);
- }
-
- private void checkInspect() {
- // TODO: Readd inspect menu support
- }
-}
diff --git a/src/main/java/net/asodev/islandutils/mixins/crafting/CraftingPacketMixin.java b/src/main/java/net/asodev/islandutils/mixins/crafting/CraftingPacketMixin.java
deleted file mode 100644
index 9fdb3d0e..00000000
--- a/src/main/java/net/asodev/islandutils/mixins/crafting/CraftingPacketMixin.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package net.asodev.islandutils.mixins.crafting;
-
-import net.asodev.islandutils.modules.crafting.CraftingMenuType;
-import net.asodev.islandutils.modules.crafting.CraftingUI;
-import net.asodev.islandutils.state.MccIslandState;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.screens.inventory.ContainerScreen;
-import net.minecraft.network.chat.Component;
-import net.minecraft.world.inventory.AbstractContainerMenu;
-import net.minecraft.world.item.ItemStack;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-import java.util.List;
-
-@Mixin(AbstractContainerMenu.class)
-public abstract class CraftingPacketMixin {
-
- public CraftingPacketMixin() {
-
- }
-
- @Inject(method = "initializeContents", at = @At("TAIL"))
- private void contents(int i, List list, ItemStack itemStack, CallbackInfo ci) {
- int index = 0;
- for (ItemStack stack : list) {
- injectedSetItem(index, i, stack, ci);
- index++;
- }
- }
-
- @Inject(method = "setItem", at = @At("TAIL"))
- private void injectedSetItem(int slot, int j, ItemStack item, CallbackInfo ci) {
- if (!MccIslandState.isOnline()) return;
- Minecraft minecraft = Minecraft.getInstance();
- if (minecraft.screen instanceof ContainerScreen container) {
- Component uiTitle = container.getTitle();
- CraftingMenuType type = CraftingUI.craftingMenuType(uiTitle);
- if (type == null) return;
-
- CraftingUI.analyseCraftingItem(type, item, slot);
- }
- }
-
-}
diff --git a/src/main/java/net/asodev/islandutils/mixins/crafting/RemnantHighlightMixin.java b/src/main/java/net/asodev/islandutils/mixins/crafting/RemnantHighlightMixin.java
deleted file mode 100644
index 6c6dbe1d..00000000
--- a/src/main/java/net/asodev/islandutils/mixins/crafting/RemnantHighlightMixin.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package net.asodev.islandutils.mixins.crafting;
-
-import net.asodev.islandutils.state.MccIslandState;
-import net.asodev.islandutils.util.Utils;
-import net.minecraft.client.gui.GuiGraphics;
-import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
-import net.minecraft.client.renderer.RenderType;
-import net.minecraft.network.chat.Component;
-import net.minecraft.world.inventory.Slot;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-import java.util.List;
-
-@Mixin(AbstractContainerScreen.class)
-public class RemnantHighlightMixin {
-
- @Inject(method = "renderSlot", at = @At("HEAD"))
- private void renderSlot(GuiGraphics guiGraphics, Slot slot, CallbackInfo ci) {
- if (!MccIslandState.isOnline()) return;
- if (!slot.hasItem()) return;
-
- List lore = Utils.getLores(slot.getItem());
- if (lore == null) return;
- boolean isRemnant = lore.stream().anyMatch(c -> c.getString().contains("This item is the remnant of an item"));
- if (!isRemnant) return;
-
- int x = slot.x;
- int y = slot.y;
- guiGraphics.pose().pushPose();
- guiGraphics.pose().translate(0.0f, 0.0f, 105.0f);
- guiGraphics.fill(RenderType.gui(), x, y, x + 16, y + 16, 0, 9257316);
- guiGraphics.pose().popPose();
- }
-
-}
diff --git a/src/main/java/net/asodev/islandutils/mixins/crafting/ScavengingScreenMixin.java b/src/main/java/net/asodev/islandutils/mixins/crafting/ScavengingScreenMixin.java
deleted file mode 100644
index 46ba0941..00000000
--- a/src/main/java/net/asodev/islandutils/mixins/crafting/ScavengingScreenMixin.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package net.asodev.islandutils.mixins.crafting;
-
-import net.asodev.islandutils.modules.scavenging.Scavenging;
-import net.asodev.islandutils.modules.scavenging.ScavengingTotalList;
-import net.asodev.islandutils.state.MccIslandState;
-import net.minecraft.client.gui.GuiGraphics;
-import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
-import net.minecraft.client.gui.screens.inventory.ContainerScreen;
-import net.minecraft.network.chat.Component;
-import net.minecraft.world.entity.player.Inventory;
-import net.minecraft.world.inventory.ChestMenu;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(ContainerScreen.class)
-public abstract class ScavengingScreenMixin extends AbstractContainerScreen {
- public ScavengingScreenMixin(ChestMenu abstractContainerMenu, Inventory inventory, Component component) {
- super(abstractContainerMenu, inventory, component);
- }
-
- @Inject(method = "renderBg", at = @At("TAIL"))
- public void renderBg(GuiGraphics guiGraphics, float f, int i, int j, CallbackInfo ci) {
- if (!MccIslandState.isOnline() || !Scavenging.isScavengingMenuOrDisabled(this)) return;
-
- ScavengingTotalList silverTotal = Scavenging.getSilverTotal(this.menu);
- Scavenging.renderSilverTotal(silverTotal, guiGraphics);
- }
-}
diff --git a/src/main/java/net/asodev/islandutils/mixins/discord/ConnectionMixin.java b/src/main/java/net/asodev/islandutils/mixins/discord/ConnectionMixin.java
deleted file mode 100644
index 7b5da951..00000000
--- a/src/main/java/net/asodev/islandutils/mixins/discord/ConnectionMixin.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package net.asodev.islandutils.mixins.discord;
-
-import net.asodev.islandutils.IslandUtilsEvents;
-import net.asodev.islandutils.discord.DiscordPresenceUpdator;
-import net.asodev.islandutils.state.Game;
-import net.asodev.islandutils.state.MccIslandState;
-import net.asodev.islandutils.util.ChatUtils;
-import net.minecraft.client.Minecraft;
-import net.minecraft.network.Connection;
-import net.minecraft.network.PacketListener;
-import net.minecraft.network.chat.Component;
-import org.jetbrains.annotations.Nullable;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-
-@Mixin(Connection.class)
-public abstract class ConnectionMixin {
-
- @Shadow public abstract SocketAddress getRemoteAddress();
-
- @Shadow @Nullable private volatile PacketListener packetListener;
-
- @Inject(method = "disconnect(Lnet/minecraft/network/chat/Component;)V", at = @At("HEAD"))
- private void disconnect(Component component, CallbackInfo ci) {
- SocketAddress remoteAddress = getRemoteAddress();
- if (remoteAddress == null) return;
- if (remoteAddress instanceof InetSocketAddress socketAddress) {
- String hostName = socketAddress.getHostName();
- if (hostName == null) return;
- Minecraft minecraft = Minecraft.getInstance();
- if (hostName.contains("mccisland.net") && packetListener == minecraft.getConnection()) {
- ChatUtils.debug("Disconnected from MCC Island.");
- DiscordPresenceUpdator.started = null;
- DiscordPresenceUpdator.clear();
- IslandUtilsEvents.QUIT_MCCI.invoker().onEvent();
- MccIslandState.setGame(Game.HUB);
- }
- }
- }
-
-}
diff --git a/src/main/java/net/asodev/islandutils/mixins/discord/JoinMCCIMixin.java b/src/main/java/net/asodev/islandutils/mixins/discord/JoinMCCIMixin.java
deleted file mode 100644
index d647817e..00000000
--- a/src/main/java/net/asodev/islandutils/mixins/discord/JoinMCCIMixin.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package net.asodev.islandutils.mixins.discord;
-
-import net.minecraft.client.multiplayer.ClientHandshakePacketListenerImpl;
-import net.minecraft.client.multiplayer.ServerData;
-import net.minecraft.network.protocol.login.ClientboundLoginFinishedPacket;
-import org.jetbrains.annotations.Nullable;
-import org.spongepowered.asm.mixin.Final;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-import static net.asodev.islandutils.IslandUtilsClient.onJoinMCCI;
-import static net.asodev.islandutils.util.Utils.isProdMCCI;
-
-@Mixin(ClientHandshakePacketListenerImpl.class)
-public class JoinMCCIMixin {
- @Shadow @Final private @Nullable ServerData serverData;
-
- @Inject(method = "handleLoginFinished", at = @At("HEAD"))
- private void handleGameProfile(ClientboundLoginFinishedPacket clientboundLoginFinishedPacket, CallbackInfo ci) {
- if (this.serverData == null) return;
- if (!this.serverData.ip.toLowerCase().contains("mccisland")) return;
-
- onJoinMCCI(isProdMCCI(this.serverData.ip.toLowerCase()));
- }
-
-}
diff --git a/src/main/java/net/asodev/islandutils/mixins/discord/ScoreDisplayMixin.java b/src/main/java/net/asodev/islandutils/mixins/discord/ScoreDisplayMixin.java
deleted file mode 100644
index 4c8552de..00000000
--- a/src/main/java/net/asodev/islandutils/mixins/discord/ScoreDisplayMixin.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package net.asodev.islandutils.mixins.discord;
-
-import net.asodev.islandutils.discord.DiscordPresenceUpdator;
-import net.asodev.islandutils.state.MccIslandState;
-import net.minecraft.network.chat.Component;
-import net.minecraft.world.scores.Score;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-@Mixin(Score.class)
-public class ScoreDisplayMixin {
-
- @Inject(method = "display(Lnet/minecraft/network/chat/Component;)V", at = @At("TAIL"))
- public void setScoreDisplay(Component component, CallbackInfo ci) {
- String playerPrefix = component.getString();
-
- final Map scoreboardPatterns = Map.of(
- "REMAIN", Pattern.compile("PLAYERS REMAINING: (?([0-9]*/[0-9]*))"),
- "ROUND", Pattern.compile("ROUNDS \\[(?([1-9]*/[1-9]*))]"),
- "MAP", Pattern.compile("MAP: (?