aura ui
This commit is contained in:
+7
-7
@@ -1,10 +1,10 @@
|
|||||||
package org.auraclient.auracloaks;
|
package org.auraclient.auraclient;
|
||||||
|
|
||||||
import at.dhyan.open_imaging.GifDecoder;
|
import at.dhyan.open_imaging.GifDecoder;
|
||||||
import org.auraclient.auracloaks.event.KeyInputHandler;
|
import org.auraclient.auraclient.event.KeyInputHandler;
|
||||||
import org.auraclient.auracloaks.utils.AnimatedCapeData;
|
import org.auraclient.auraclient.utils.AnimatedCapeData;
|
||||||
import org.auraclient.auracloaks.utils.IdentifierUtils;
|
import org.auraclient.auraclient.utils.IdentifierUtils;
|
||||||
import org.auraclient.auracloaks.utils.RandomUtils;
|
import org.auraclient.auraclient.utils.RandomUtils;
|
||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
@@ -25,8 +25,8 @@ import java.util.Objects;
|
|||||||
* Massive thank you to IIpho3nix for making this mod, i (leo) have modified it to fit Aura Client
|
* Massive thank you to IIpho3nix for making this mod, i (leo) have modified it to fit Aura Client
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class AuraCloaks implements ModInitializer {
|
public class AuraClient implements ModInitializer {
|
||||||
public static final String MOD_ID = "auracloaks";
|
public static final String MOD_ID = "auraclient";
|
||||||
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
|
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
|
||||||
private static final File capesFolder = new File(MinecraftClient.getInstance().runDirectory, "Capes");
|
private static final File capesFolder = new File(MinecraftClient.getInstance().runDirectory, "Capes");
|
||||||
public static final List<String> list = new ArrayList<>();
|
public static final List<String> list = new ArrayList<>();
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package org.auraclient.auraclient.event;
|
||||||
|
|
||||||
|
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
||||||
|
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
|
||||||
|
import net.minecraft.client.option.KeyBinding;
|
||||||
|
import net.minecraft.client.util.InputUtil;
|
||||||
|
import org.auraclient.auraclient.menus.MainMenu;
|
||||||
|
import org.lwjgl.glfw.GLFW;
|
||||||
|
|
||||||
|
public class KeyInputHandler {
|
||||||
|
public static final String KEY_CATEGORY_CAPES = "key.category.auraclient";
|
||||||
|
public static final String KEY_MAIN_MENU = "key.auraclient.main_menu";
|
||||||
|
public static KeyBinding mainMenuKey;
|
||||||
|
|
||||||
|
public static void register() {
|
||||||
|
mainMenuKey = KeyBindingHelper.registerKeyBinding(new KeyBinding(
|
||||||
|
KEY_MAIN_MENU, InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_RIGHT_SHIFT, KEY_CATEGORY_CAPES
|
||||||
|
));
|
||||||
|
|
||||||
|
ClientTickEvents.END_CLIENT_TICK.register(client -> {
|
||||||
|
if (mainMenuKey.wasPressed()) {
|
||||||
|
client.setScreen(new MainMenu());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package org.auraclient.auraclient.menus;
|
||||||
|
|
||||||
|
import net.minecraft.client.gui.DrawContext;
|
||||||
|
import net.minecraft.text.Text;
|
||||||
|
import org.auraclient.auraclient.AuraClient;
|
||||||
|
import org.auraclient.auraclient.ui.AuraUi;
|
||||||
|
import org.auraclient.auraclient.ui.Button;
|
||||||
|
|
||||||
|
public class MainMenu extends AuraUi {
|
||||||
|
public MainMenu() {
|
||||||
|
super(Text.of("Main Menu"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void ui(DrawContext context) {
|
||||||
|
widgets.add(new Button("Cloaks", (context.getScaledWindowWidth() - 50) / 2, (context.getScaledWindowHeight() - 20) / 2, 50, 20, () -> {
|
||||||
|
if (AuraClient.list.indexOf(AuraClient.cape) + 1 == AuraClient.list.size()) {
|
||||||
|
AuraClient.cape = AuraClient.list.get(0);
|
||||||
|
AuraClient.capeCacheIdentifier = null;
|
||||||
|
} else {
|
||||||
|
AuraClient.cape = AuraClient.list.get(AuraClient.list.indexOf(AuraClient.cape) + 1);
|
||||||
|
};
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
+4
-4
@@ -1,6 +1,6 @@
|
|||||||
package org.auraclient.auracloaks.mixin;
|
package org.auraclient.auraclient.mixin;
|
||||||
|
|
||||||
import org.auraclient.auracloaks.AuraCloaks;
|
import org.auraclient.auraclient.AuraClient;
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
import net.minecraft.client.network.AbstractClientPlayerEntity;
|
import net.minecraft.client.network.AbstractClientPlayerEntity;
|
||||||
@@ -16,12 +16,12 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|||||||
public class AbstractClientPlayerEntityMixin {
|
public class AbstractClientPlayerEntityMixin {
|
||||||
@Inject(at = @At("RETURN"), method = "getSkinTextures", cancellable = true)
|
@Inject(at = @At("RETURN"), method = "getSkinTextures", cancellable = true)
|
||||||
private void getSkinTextures(CallbackInfoReturnable<SkinTextures> cir) {
|
private void getSkinTextures(CallbackInfoReturnable<SkinTextures> cir) {
|
||||||
if (((AbstractClientPlayerEntity) (Object) this) instanceof ClientPlayerEntity && AuraCloaks.capeCacheIdentifier != null) {
|
if (((AbstractClientPlayerEntity) (Object) this) instanceof ClientPlayerEntity && AuraClient.capeCacheIdentifier != null) {
|
||||||
SkinTextures textures = cir.getReturnValue();
|
SkinTextures textures = cir.getReturnValue();
|
||||||
cir.setReturnValue(new SkinTextures(
|
cir.setReturnValue(new SkinTextures(
|
||||||
textures.texture(),
|
textures.texture(),
|
||||||
textures.textureUrl(),
|
textures.textureUrl(),
|
||||||
AuraCloaks.capeCacheIdentifier,
|
AuraClient.capeCacheIdentifier,
|
||||||
textures.elytraTexture(),
|
textures.elytraTexture(),
|
||||||
textures.model(),
|
textures.model(),
|
||||||
textures.secure()
|
textures.secure()
|
||||||
+3
-3
@@ -1,6 +1,6 @@
|
|||||||
package org.auraclient.auracloaks.mixin;
|
package org.auraclient.auraclient.mixin;
|
||||||
|
|
||||||
import org.auraclient.auracloaks.AuraCloaks;
|
import org.auraclient.auraclient.AuraClient;
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
@@ -14,6 +14,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|||||||
public class MinecraftClientMixin {
|
public class MinecraftClientMixin {
|
||||||
@Inject(at = @At("HEAD"), method = "tick")
|
@Inject(at = @At("HEAD"), method = "tick")
|
||||||
private void tick(CallbackInfo ci) {
|
private void tick(CallbackInfo ci) {
|
||||||
AuraCloaks.tick();
|
AuraClient.tick();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
package org.auraclient.auraclient.ui;
|
||||||
|
|
||||||
|
import net.minecraft.client.gui.DrawContext;
|
||||||
|
import net.minecraft.client.gui.screen.Screen;
|
||||||
|
import net.minecraft.text.Text;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public abstract class AuraUi extends Screen {
|
||||||
|
public final ArrayList<AuraWidget> widgets = new ArrayList<>();
|
||||||
|
|
||||||
|
protected AuraUi(Text title) {
|
||||||
|
super(title);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void init() {}
|
||||||
|
|
||||||
|
public void ui(DrawContext context) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render(DrawContext context, int mouseX, int mouseY, float delta) {
|
||||||
|
widgets.clear();
|
||||||
|
|
||||||
|
ui(context);
|
||||||
|
|
||||||
|
for (AuraWidget widget : widgets) {
|
||||||
|
widget.client = client;
|
||||||
|
widget.render(context, isInside(mouseX, mouseY, widget.x1, widget.y1, widget.x2, widget.y2));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean mouseClicked(double mouseX, double mouseY, int button) {
|
||||||
|
if (button == 0) {
|
||||||
|
for (AuraWidget widget : widgets) {
|
||||||
|
if (isInside(mouseX, mouseY, widget.x1, widget.y1, widget.x2, widget.y2)) {
|
||||||
|
widget.mouseClicked();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.mouseClicked(mouseX, mouseY, button);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isInside(double mouseX, double mouseY, int x1, int y1, int x2, int y2) {
|
||||||
|
return mouseX >= x1 && mouseX <= x2 && mouseY >= y1 && mouseY <= y2;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package org.auraclient.auraclient.ui;
|
||||||
|
|
||||||
|
import net.minecraft.client.MinecraftClient;
|
||||||
|
import net.minecraft.client.gui.DrawContext;
|
||||||
|
|
||||||
|
public abstract class AuraWidget {
|
||||||
|
public int x1;
|
||||||
|
public int y1;
|
||||||
|
public int x2;
|
||||||
|
public int y2;
|
||||||
|
public MinecraftClient client;
|
||||||
|
|
||||||
|
public static int background = 0x5F000000;
|
||||||
|
public static int foreground = 0xFFFFFFFF;
|
||||||
|
|
||||||
|
void render(DrawContext context, boolean hover) {}
|
||||||
|
|
||||||
|
void mouseClicked() {}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package org.auraclient.auraclient.ui;
|
||||||
|
|
||||||
|
import net.minecraft.client.gui.DrawContext;
|
||||||
|
|
||||||
|
public class Box extends AuraWidget {
|
||||||
|
public Box(int x, int y, int width, int height) {
|
||||||
|
x1 = x;
|
||||||
|
y1 = y;
|
||||||
|
|
||||||
|
x2 = x + width;
|
||||||
|
y2 = y + height;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void render(DrawContext context, boolean hover) {
|
||||||
|
context.fill(x1, y1, x2, y2, background);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package org.auraclient.auraclient.ui;
|
||||||
|
|
||||||
|
import net.minecraft.client.gui.DrawContext;
|
||||||
|
|
||||||
|
public class Button extends AuraWidget {
|
||||||
|
public Runnable onClick;
|
||||||
|
public String text;
|
||||||
|
public static int hoverBorder = 0xFFFFFFFF;
|
||||||
|
|
||||||
|
public Button(String button_text, int x, int y, int width, int height, Runnable on_click) {
|
||||||
|
x1 = x;
|
||||||
|
y1 = y;
|
||||||
|
|
||||||
|
x2 = x + width;
|
||||||
|
y2 = y + height;
|
||||||
|
|
||||||
|
onClick = on_click;
|
||||||
|
text = button_text;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void render(DrawContext context, boolean hover) {
|
||||||
|
|
||||||
|
context.fill(x1, y1, x2, y2, background);
|
||||||
|
|
||||||
|
context.drawText(client.textRenderer, text, (((x2 - x1) - client.textRenderer.getWidth(text)) / 2) + x1, (((y2 - y1) - 6) / 2) + y1, foreground, false);
|
||||||
|
|
||||||
|
if (hover) {
|
||||||
|
context.drawBorder(x1 - 1, y1 - 1, x2 - x1 + 2, y2 - y1 + 2, hoverBorder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void mouseClicked() {
|
||||||
|
onClick.run();
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package org.auraclient.auracloaks.utils;
|
package org.auraclient.auraclient.utils;
|
||||||
|
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package org.auraclient.auracloaks.utils;
|
package org.auraclient.auraclient.utils;
|
||||||
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.texture.NativeImage;
|
import net.minecraft.client.texture.NativeImage;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package org.auraclient.auracloaks.utils;
|
package org.auraclient.auraclient.utils;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
package org.auraclient.auracloaks.event;
|
|
||||||
|
|
||||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
|
||||||
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
|
|
||||||
import net.minecraft.client.option.KeyBinding;
|
|
||||||
import org.auraclient.auracloaks.AuraCloaks;
|
|
||||||
import net.minecraft.client.util.InputUtil;
|
|
||||||
import org.lwjgl.glfw.GLFW;
|
|
||||||
|
|
||||||
public class KeyInputHandler {
|
|
||||||
public static final String KEY_CATEGORY_CAPES = "key.category.auracloaks";
|
|
||||||
public static final String KEY_CHANGE_CAPE = "key.auracloaks.change_cape";
|
|
||||||
|
|
||||||
public static KeyBinding changeCapeKey;
|
|
||||||
|
|
||||||
public static void register() {
|
|
||||||
changeCapeKey = KeyBindingHelper.registerKeyBinding(new KeyBinding(
|
|
||||||
KEY_CHANGE_CAPE, InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_N, KEY_CATEGORY_CAPES
|
|
||||||
));
|
|
||||||
|
|
||||||
ClientTickEvents.END_CLIENT_TICK.register(client -> {
|
|
||||||
if (changeCapeKey.wasPressed()) {
|
|
||||||
if (AuraCloaks.list.indexOf(AuraCloaks.cape) + 1 == AuraCloaks.list.size()) {
|
|
||||||
AuraCloaks.cape = AuraCloaks.list.get(0);
|
|
||||||
AuraCloaks.capeCacheIdentifier = null;
|
|
||||||
}else{
|
|
||||||
AuraCloaks.cape = AuraCloaks.list.get(AuraCloaks.list.indexOf(AuraCloaks.cape) + 1);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"required": true,
|
"required": true,
|
||||||
"minVersion": "0.8",
|
"minVersion": "0.8",
|
||||||
"package": "org.auraclient.auracloaks.mixin",
|
"package": "org.auraclient.auraclient.mixin",
|
||||||
"compatibilityLevel": "JAVA_17",
|
"compatibilityLevel": "JAVA_17",
|
||||||
"client": [
|
"client": [
|
||||||
"AbstractClientPlayerEntityMixin",
|
"AbstractClientPlayerEntityMixin",
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"schemaVersion": 1,
|
"schemaVersion": 1,
|
||||||
"id": "auracloaks",
|
"id": "auraclient",
|
||||||
"version": "${version}",
|
"version": "${version}",
|
||||||
"name": "Auracloaks",
|
"name": "auraclient",
|
||||||
"description": "A local cape mod for fabric with support for animated capes",
|
"description": "A local cape mod for fabric with support for animated capes",
|
||||||
"authors": [
|
"authors": [
|
||||||
"IIpho3nix",
|
"IIpho3nix",
|
||||||
@@ -13,15 +13,15 @@
|
|||||||
"sources": "https://github.com/IIpho3nix/IIpho3nix-s-Capes-Mod"
|
"sources": "https://github.com/IIpho3nix/IIpho3nix-s-Capes-Mod"
|
||||||
},
|
},
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"icon": "assets/auracloaks/icon.png",
|
"icon": "assets/auraclient/icon.png",
|
||||||
"environment": "client",
|
"environment": "client",
|
||||||
"entrypoints": {
|
"entrypoints": {
|
||||||
"main": [
|
"main": [
|
||||||
"org.auraclient.auracloaks.AuraCloaks"
|
"org.auraclient.auraclient.AuraClient"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"mixins": [
|
"mixins": [
|
||||||
"auracloaks.mixins.json"
|
"auraclient.mixins.json"
|
||||||
],
|
],
|
||||||
"depends": {
|
"depends": {
|
||||||
"fabricloader": ">=${loader_version}",
|
"fabricloader": ">=${loader_version}",
|
||||||
|
|||||||
Reference in New Issue
Block a user