From 0609f7c704c742edcc34cc06ad674b384a7f4294 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Thu, 27 Feb 2025 01:00:59 +0100 Subject: [PATCH] chore: structure --- .../org/auraclient/auraclient/AuraClient.java | 107 +--------------- .../auraclient/auraclient/cloaks/Cloaks.java | 118 ++++++++++++++++++ .../{ => cloaks}/utils/AnimatedCapeData.java | 2 +- .../{ => cloaks}/utils/IdentifierUtils.java | 2 +- .../{ => cloaks}/utils/RandomUtils.java | 2 +- .../auraclient/menus/CloakSelector.java | 8 +- .../AbstractClientPlayerEntityMixin.java | 7 +- 7 files changed, 132 insertions(+), 114 deletions(-) create mode 100644 src/main/java/org/auraclient/auraclient/cloaks/Cloaks.java rename src/main/java/org/auraclient/auraclient/{ => cloaks}/utils/AnimatedCapeData.java (88%) rename src/main/java/org/auraclient/auraclient/{ => cloaks}/utils/IdentifierUtils.java (95%) rename src/main/java/org/auraclient/auraclient/{ => cloaks}/utils/RandomUtils.java (95%) diff --git a/src/main/java/org/auraclient/auraclient/AuraClient.java b/src/main/java/org/auraclient/auraclient/AuraClient.java index b7c4ceb..3e2df23 100644 --- a/src/main/java/org/auraclient/auraclient/AuraClient.java +++ b/src/main/java/org/auraclient/auraclient/AuraClient.java @@ -1,26 +1,10 @@ package org.auraclient.auraclient; -import at.dhyan.open_imaging.GifDecoder; -import org.auraclient.auraclient.event.KeyInputHandler; -import org.auraclient.auraclient.utils.AnimatedCapeData; -import org.auraclient.auraclient.utils.IdentifierUtils; -import org.auraclient.auraclient.utils.RandomUtils; +import org.auraclient.auraclient.cloaks.Cloaks; import net.fabricmc.api.ModInitializer; -import net.minecraft.client.MinecraftClient; -import net.minecraft.util.Identifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.imageio.ImageIO; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; -import java.util.Objects; - /* * Massive thank you to IIpho3nix for making this mod, i (leo) have modified it to fit Aura Client */ @@ -28,98 +12,13 @@ import java.util.Objects; public class AuraClient implements ModInitializer { public static final String MOD_ID = "auraclient"; public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); - private static final File capesFolder = new File(MinecraftClient.getInstance().runDirectory, "Capes"); - public static final List list = new ArrayList<>(); - private static final List anicape = new ArrayList<>(); - private static int capeindex = 0; - private static long mili = System.currentTimeMillis(); - private static String lastCache = "NotCached"; - public static Identifier capeCacheIdentifier = null; - public static String cape = ""; @Override public void onInitialize() { - list.clear(); - list.add(""); - if (capesFolder.mkdir()) { - LOGGER.info("New Cape Folder Created"); - downloadCloakTextures(); - } else { - LOGGER.info("Cape Folder Already Exists"); - } - loadCloakTextures(); - - KeyInputHandler.register(); - } - - public void downloadCloakTextures() { - // Todo: Download the cloak textures and put them in the Capes folder - } - - private static void loadCloakTextures() { - if (capesFolder.isDirectory()) { - for (final File fileEntry : Objects.requireNonNull(capesFolder.listFiles())) { - if ( - fileEntry.getName().endsWith(".png") || fileEntry.getName().endsWith(".gif") - ) { - list.add(fileEntry.getName()); - } - } - } + Cloaks.initialize(); } public static void tick() { - if (!lastCache.equals(cape)) { - if (!cape.isEmpty()) { - if (cape.endsWith(".gif")) { - try { - anicape.clear(); - Identifier frameIdentifier; - File file = new File(capesFolder, cape); - final FileInputStream data = new FileInputStream(file); - final GifDecoder.GifImage gif = GifDecoder.read(data); - final int frameCount = gif.getFrameCount(); - for (int i = 0; i < frameCount; i++) { - final BufferedImage img = gif.getFrame(i); - final int delay = gif.getDelay(i); - frameIdentifier = Identifier.of(MOD_ID, "capes_" + RandomUtils.randomStringLowercase(10)); - IdentifierUtils.registerBufferedImageTexture(frameIdentifier, img); - anicape.add(new AnimatedCapeData(frameIdentifier, delay)); - } - capeindex = 0; - capeCacheIdentifier = anicape.get(0).getId(); - lastCache = cape; - } catch (IOException e) { - throw new RuntimeException(e); - } - } else { - BufferedImage img = null; - File file = new File(capesFolder, cape); - try { - img = ImageIO.read(file); - } catch (IOException e) { - e.printStackTrace(); - } - - capeCacheIdentifier = Identifier.of(MOD_ID, "capes_" + cape.toLowerCase(Locale.ROOT).replace(' ', '_').replaceAll("[^a-z0-9/._-]", "")); - IdentifierUtils.registerBufferedImageTexture(capeCacheIdentifier, img); - lastCache = cape; - } - } else { - capeCacheIdentifier = null; - lastCache = cape; - } - } else { - if (cape.endsWith(".gif")) { - if (capeindex > (anicape.size() - 1)) { - capeindex = 0; - } - if (System.currentTimeMillis() > mili + anicape.get(capeindex).getDelay()) { - mili = System.currentTimeMillis(); - capeCacheIdentifier = anicape.get(capeindex).getId(); - capeindex++; - } - } - } + Cloaks.tick(); } } diff --git a/src/main/java/org/auraclient/auraclient/cloaks/Cloaks.java b/src/main/java/org/auraclient/auraclient/cloaks/Cloaks.java new file mode 100644 index 0000000..935ba85 --- /dev/null +++ b/src/main/java/org/auraclient/auraclient/cloaks/Cloaks.java @@ -0,0 +1,118 @@ +package org.auraclient.auraclient.cloaks; + +import at.dhyan.open_imaging.GifDecoder; + +import org.auraclient.auraclient.AuraClient; +import org.auraclient.auraclient.cloaks.utils.AnimatedCapeData; +import org.auraclient.auraclient.cloaks.utils.IdentifierUtils; +import org.auraclient.auraclient.cloaks.utils.RandomUtils; +import org.auraclient.auraclient.event.KeyInputHandler; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.util.Identifier; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Objects; + +public class Cloaks { + private static final File capesFolder = new File(MinecraftClient.getInstance().runDirectory, "Capes"); + public static final List list = new ArrayList<>(); + private static final List anicape = new ArrayList<>(); + private static int capeindex = 0; + private static long mili = System.currentTimeMillis(); + private static String lastCache = "NotCached"; + public static Identifier capeCacheIdentifier = null; + public static String cape = ""; + + public static void initialize() { + list.clear(); + list.add(""); + if (capesFolder.mkdir()) { + AuraClient.LOGGER.info("New Cape Folder Created"); + downloadCloakTextures(); + } else { + AuraClient.LOGGER.info("Cape Folder Already Exists"); + } + loadCloakTextures(); + + KeyInputHandler.register(); + } + + public static void downloadCloakTextures() { + // Todo: Download the cloak textures and put them in the Capes folder + } + + private static void loadCloakTextures() { + if (capesFolder.isDirectory()) { + for (final File fileEntry : Objects.requireNonNull(capesFolder.listFiles())) { + if ( + fileEntry.getName().endsWith(".png") || fileEntry.getName().endsWith(".gif") + ) { + list.add(fileEntry.getName()); + } + } + } + } + + public static void tick() { + if (!lastCache.equals(cape)) { + if (!cape.isEmpty()) { + if (cape.endsWith(".gif")) { + try { + anicape.clear(); + Identifier frameIdentifier; + File file = new File(capesFolder, cape); + final FileInputStream data = new FileInputStream(file); + final GifDecoder.GifImage gif = GifDecoder.read(data); + final int frameCount = gif.getFrameCount(); + for (int i = 0; i < frameCount; i++) { + final BufferedImage img = gif.getFrame(i); + final int delay = gif.getDelay(i); + frameIdentifier = Identifier.of(AuraClient.MOD_ID, "capes_" + RandomUtils.randomStringLowercase(10)); + IdentifierUtils.registerBufferedImageTexture(frameIdentifier, img); + anicape.add(new AnimatedCapeData(frameIdentifier, delay)); + } + capeindex = 0; + capeCacheIdentifier = anicape.get(0).getId(); + lastCache = cape; + } catch (IOException e) { + throw new RuntimeException(e); + } + } else { + BufferedImage img = null; + File file = new File(capesFolder, cape); + try { + img = ImageIO.read(file); + } catch (IOException e) { + e.printStackTrace(); + } + + capeCacheIdentifier = Identifier.of(AuraClient.MOD_ID, "capes_" + cape.toLowerCase(Locale.ROOT).replace(' ', '_').replaceAll("[^a-z0-9/._-]", "")); + IdentifierUtils.registerBufferedImageTexture(capeCacheIdentifier, img); + lastCache = cape; + } + } else { + capeCacheIdentifier = null; + lastCache = cape; + } + } else { + if (cape.endsWith(".gif")) { + if (capeindex > (anicape.size() - 1)) { + capeindex = 0; + } + if (System.currentTimeMillis() > mili + anicape.get(capeindex).getDelay()) { + mili = System.currentTimeMillis(); + capeCacheIdentifier = anicape.get(capeindex).getId(); + capeindex++; + } + } + } + } +} diff --git a/src/main/java/org/auraclient/auraclient/utils/AnimatedCapeData.java b/src/main/java/org/auraclient/auraclient/cloaks/utils/AnimatedCapeData.java similarity index 88% rename from src/main/java/org/auraclient/auraclient/utils/AnimatedCapeData.java rename to src/main/java/org/auraclient/auraclient/cloaks/utils/AnimatedCapeData.java index 69b954e..778032c 100644 --- a/src/main/java/org/auraclient/auraclient/utils/AnimatedCapeData.java +++ b/src/main/java/org/auraclient/auraclient/cloaks/utils/AnimatedCapeData.java @@ -1,4 +1,4 @@ -package org.auraclient.auraclient.utils; +package org.auraclient.auraclient.cloaks.utils; import net.minecraft.util.Identifier; diff --git a/src/main/java/org/auraclient/auraclient/utils/IdentifierUtils.java b/src/main/java/org/auraclient/auraclient/cloaks/utils/IdentifierUtils.java similarity index 95% rename from src/main/java/org/auraclient/auraclient/utils/IdentifierUtils.java rename to src/main/java/org/auraclient/auraclient/cloaks/utils/IdentifierUtils.java index 325ab3b..d722ab4 100644 --- a/src/main/java/org/auraclient/auraclient/utils/IdentifierUtils.java +++ b/src/main/java/org/auraclient/auraclient/cloaks/utils/IdentifierUtils.java @@ -1,4 +1,4 @@ -package org.auraclient.auraclient.utils; +package org.auraclient.auraclient.cloaks.utils; import net.minecraft.client.MinecraftClient; import net.minecraft.client.texture.NativeImage; diff --git a/src/main/java/org/auraclient/auraclient/utils/RandomUtils.java b/src/main/java/org/auraclient/auraclient/cloaks/utils/RandomUtils.java similarity index 95% rename from src/main/java/org/auraclient/auraclient/utils/RandomUtils.java rename to src/main/java/org/auraclient/auraclient/cloaks/utils/RandomUtils.java index 219d3df..c5d0997 100644 --- a/src/main/java/org/auraclient/auraclient/utils/RandomUtils.java +++ b/src/main/java/org/auraclient/auraclient/cloaks/utils/RandomUtils.java @@ -1,4 +1,4 @@ -package org.auraclient.auraclient.utils; +package org.auraclient.auraclient.cloaks.utils; import java.util.Random; diff --git a/src/main/java/org/auraclient/auraclient/menus/CloakSelector.java b/src/main/java/org/auraclient/auraclient/menus/CloakSelector.java index ddca89c..0d35d76 100644 --- a/src/main/java/org/auraclient/auraclient/menus/CloakSelector.java +++ b/src/main/java/org/auraclient/auraclient/menus/CloakSelector.java @@ -1,6 +1,6 @@ package org.auraclient.auraclient.menus; -import org.auraclient.auraclient.AuraClient; +import org.auraclient.auraclient.cloaks.Cloaks; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.widget.ButtonWidget; @@ -13,11 +13,11 @@ public class CloakSelector extends Screen { @Override protected void init() { - int y = ((this.height - (35 * (AuraClient.list.size()))) / 2); + int y = ((this.height - (35 * (Cloaks.list.size()))) / 2); - for (String cloak : AuraClient.list) { + for (String cloak : Cloaks.list) { addDrawableChild(ButtonWidget.builder(Text.literal(cloak), (__) -> { - AuraClient.cape = cloak; + Cloaks.cape = cloak; }).dimensions((this.width - 50) / 2, y, 50, 30).build()); y += 35; diff --git a/src/main/java/org/auraclient/auraclient/mixin/AbstractClientPlayerEntityMixin.java b/src/main/java/org/auraclient/auraclient/mixin/AbstractClientPlayerEntityMixin.java index 502c7da..85e7525 100644 --- a/src/main/java/org/auraclient/auraclient/mixin/AbstractClientPlayerEntityMixin.java +++ b/src/main/java/org/auraclient/auraclient/mixin/AbstractClientPlayerEntityMixin.java @@ -1,6 +1,7 @@ package org.auraclient.auraclient.mixin; -import org.auraclient.auraclient.AuraClient; +import org.auraclient.auraclient.cloaks.Cloaks; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.network.AbstractClientPlayerEntity; @@ -16,12 +17,12 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; public class AbstractClientPlayerEntityMixin { @Inject(at = @At("RETURN"), method = "getSkinTextures", cancellable = true) private void getSkinTextures(CallbackInfoReturnable cir) { - if (((AbstractClientPlayerEntity) (Object) this) instanceof ClientPlayerEntity && AuraClient.capeCacheIdentifier != null) { + if (((AbstractClientPlayerEntity) (Object) this) instanceof ClientPlayerEntity && Cloaks.capeCacheIdentifier != null) { SkinTextures textures = cir.getReturnValue(); cir.setReturnValue(new SkinTextures( textures.texture(), textures.textureUrl(), - AuraClient.capeCacheIdentifier, + Cloaks.capeCacheIdentifier, textures.elytraTexture(), textures.model(), textures.secure()