Skip to content

Commit

Permalink
merge 1.20 support into main
Browse files Browse the repository at this point in the history
github didn't want to rebase and since im lazy ill just merge it like this
  • Loading branch information
RoootTheFox authored Jan 27, 2024
2 parents e9bd5ea + 05faa55 commit e8d81f3
Show file tree
Hide file tree
Showing 48 changed files with 948 additions and 428 deletions.
22 changes: 11 additions & 11 deletions buildscript/src/main/java/Buildscript.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@

public class Buildscript extends SimpleFabricProject {

static final String MC_VERSION = "1.19.4";
static final String FOXCLIENT_VERSION = "0.2.0-dev";
static final String YARN_MAPPINGS = "1.19.4+build.2";
static final String FABRIC_LOADER = "0.14.19";
static final String FABRIC_API_VERSION = "0.78.0+1.19.4";
static final String MODMENU_VERSION = "6.2.0";
static final String MC_VERSION = "1.20.2";
static final String FOXCLIENT_VERSION = "0.2.1-dev";
static final String YARN_MAPPINGS = "1.20.2+build.4";
static final String FABRIC_LOADER = "0.14.24";
static final String FABRIC_API_VERSION = "0.90.4+1.20.2";
static final String MODMENU_VERSION = "8.0.0";
static final String KONFIG_VERSION = "1.5.0";
static final String JAVA_WS_VERSION = "1.5.3";

Expand Down Expand Up @@ -101,11 +101,11 @@ public ProcessorChain resourcesProcessingChain() {
@Override
public void getModDependencies(ModDependencyCollector d) {
String[][] fapiModules = new String[][] {
{"fabric-api-base", "0.4.23+9ff28bcef4"},
{"fabric-key-binding-api-v1", "1.0.32+c477957ef4"},
{"fabric-lifecycle-events-v1", "2.2.14+5da15ca1f4"},
{"fabric-resource-loader-v0", "0.11.1+1e1fb126f4"},
{"fabric-screen-api-v1", "1.0.44+8c25edb4f4"},
{"fabric-api-base", "0.4.33+fce67b32a0"},
{"fabric-key-binding-api-v1", "1.0.38+f4b7e424a0"},
{"fabric-lifecycle-events-v1", "2.2.27+b1792f7da0"},
{"fabric-resource-loader-v0", "0.11.12+b1792f7da0"},
{"fabric-screen-api-v1", "2.0.12+b1792f7da0"},
};

for (String[] module : fapiModules) {
Expand Down
13 changes: 8 additions & 5 deletions src/main/java/net/foxes4life/foxclient/MainClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,30 @@
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
import net.foxes4life.foxclient.configuration.FoxClientSetting;
import net.foxes4life.foxclient.networking.Networking;
import net.foxes4life.foxclient.rpc.DiscordInstance;
import net.foxes4life.foxclient.rpc.DiscordMinecraftClient;
import net.foxes4life.foxclient.rpc.PresenceUpdater;
import net.foxes4life.foxclient.screen.settings.FoxClientSettingsScreen;
import net.foxes4life.foxclient.util.ZoomUtils;
import net.foxes4life.foxclient.util.freelook.FreelookUtils;
import net.foxes4life.foxclient.util.transforms.TransformManager;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.option.KeyBinding;
import org.lwjgl.glfw.GLFW;


public class MainClient implements ClientModInitializer {
private static final KeyBinding toggleHud = new KeyBinding("key.foxclient.toggle_hud", GLFW.GLFW_KEY_F6, "category.foxclient.main");
private static final KeyBinding toggleInfoHud = new KeyBinding("key.foxclient.toggle-info-hud", GLFW.GLFW_KEY_F6, "category.foxclient.main");
private static final KeyBinding clientConfig = new KeyBinding("key.foxclient.configKey", GLFW.GLFW_KEY_RIGHT_CONTROL, "category.foxclient.main");

public static long deltaTime = 0;
public static TransformManager transformManager = new TransformManager();

@Override
public void onInitializeClient() {
ZoomUtils.initZoom();
FreelookUtils.init();
KeyBindingHelper.registerKeyBinding(toggleHud);
KeyBindingHelper.registerKeyBinding(toggleInfoHud);
KeyBindingHelper.registerKeyBinding(clientConfig);

ClientLifecycleEvents.CLIENT_STARTED.register(client -> {
Expand All @@ -36,15 +39,15 @@ public void onInitializeClient() {
});

ClientTickEvents.END_CLIENT_TICK.register(client -> {
while (toggleHud.wasPressed()) {
while (toggleInfoHud.wasPressed()) {
Main.config.set(FoxClientSetting.HudEnabled, !Main.config.get(FoxClientSetting.HudEnabled, Boolean.class));
Main.config.save();
}
});

ClientTickEvents.START_CLIENT_TICK.register(client -> {
while (clientConfig.wasPressed()) {
MinecraftClient.getInstance().setScreen(new FoxClientSettingsScreen());
MinecraftClient.getInstance().setScreen(new FoxClientSettingsScreen(false));
}
});

Expand Down
13 changes: 13 additions & 0 deletions src/main/java/net/foxes4life/foxclient/capes/CapeTexture.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package net.foxes4life.foxclient.capes;

import net.minecraft.util.Identifier;

public class CapeTexture {
public Identifier capeTexture;
public Identifier elytraTexture;

public CapeTexture(Identifier capeTexture, Identifier elytraTexture) {
this.capeTexture = capeTexture;
this.elytraTexture = elytraTexture;
}
}
53 changes: 24 additions & 29 deletions src/main/java/net/foxes4life/foxclient/capes/Provider.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
*/
package net.foxes4life.foxclient.capes;

import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.mojang.authlib.GameProfile;
import net.foxes4life.foxclient.Main;
import net.foxes4life.foxclient.util.Http;
Expand All @@ -16,11 +14,10 @@
import net.minecraft.util.Util;
import org.apache.http.HttpResponse;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

public final class Provider {

Expand All @@ -29,10 +26,10 @@ public final class Provider {
public static void loadCape(GameProfile player, CapeTextureAvailableCallback callback) {
Runnable runnable = () -> {
// Check if the player doesn't already have a cape.
Identifier existingCape = capes.get(player.getName());
CapeTexture existingCape = capes.get(player.getId());
if (existingCape != null) {
//callback.onTexAvail(existingCape);
//return;
callback.onTexAvail(existingCape);
return;
}

if (!Provider.tryUrl(player, callback, "https://client.foxes4life.net/api/v0/capes/get/" + player.getId().toString().replace("-", ""))) {
Expand All @@ -43,11 +40,11 @@ public static void loadCape(GameProfile player, CapeTextureAvailableCallback cal
}

public interface CapeTextureAvailableCallback {
void onTexAvail(Identifier id);
void onTexAvail(CapeTexture id);
}

// This is where capes will be stored
private static final Map<String, Identifier> capes = new HashMap<>();
private static final Map<UUID, CapeTexture> capes = new HashMap<>();

// Try to load a cape from an URL.
// If this fails, it'll return false, and let us try another url.
Expand All @@ -56,28 +53,26 @@ private static boolean tryUrl(GameProfile player, CapeTextureAvailableCallback c
//Main.LOGGER.debug("[FoxClient/Cape/Provider] trying url: " + urlFrom);
HttpResponse response = Http.get(urlFrom);
if (response != null && response.getStatusLine().getStatusCode() == 200) {
String responseBody = Http.getResponseBody(response);
JsonObject capeJson = JsonParser.parseString(responseBody).getAsJsonObject();
if (capeJson.has("textures") && capeJson.get("textures").getAsJsonObject().get("cape") != null) {
// set the cape
String capeBase64 = capeJson.get("textures").getAsJsonObject().get("cape").getAsString();
byte[] img = Base64.getDecoder().decode(capeBase64);
NativeImage cape = NativeImage.read(new ByteArrayInputStream(img));
Identifier id = MinecraftClient
.getInstance()
.getTextureManager()
.registerDynamicTexture("foxclient_" + player.getId().toString().replace("-", ""),
new NativeImageBackedTexture(cape));
capes.put(player.getName(), id);
Main.LOGGER.debug("put " + id.toString() + " for player " + player.getName());
callback.onTexAvail(id);
}
NativeImage cape = NativeImage.read(response.getEntity().getContent());
Identifier id = MinecraftClient
.getInstance()
.getTextureManager()
.registerDynamicTexture("foxclient_" + player.getId().toString().replace("-", ""),
new NativeImageBackedTexture(cape));

// todo: elytra?
CapeTexture texture = new CapeTexture(id, id);

capes.put(player.getId(), texture);
Main.LOGGER.debug("put " + id.toString() + " for player " + player.getName());
callback.onTexAvail(texture);
} else {
if (response != null && response.getStatusLine().getStatusCode() == 404) {
// player has no cape
return true;
if (response == null || response.getStatusLine().getStatusCode() != 404) {
Main.LOGGER.debug("[FoxClient/Cape/Provider] request failed: " + player.getId().toString());
}
Main.LOGGER.debug("[FoxClient/Cape/Provider] request failed: " + player.getId().toString());

// player has no cape
return true;
}
} catch (IOException e) {
e.printStackTrace();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,8 @@ public void initializeDefaults() {

setDefault(FoxClientSetting.ArmorHudEnabled, false);
setDefault(FoxClientSetting.ArmorHudDisplayPercentage, false);

setDefault(FoxClientSetting.BlockHudEnabled, true);
setDefault(FoxClientSetting.BlockHudAnimations, true);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,8 @@ public enum FoxClientSetting {
HudBiome,

ArmorHudEnabled,
ArmorHudDisplayPercentage
ArmorHudDisplayPercentage,

BlockHudEnabled,
BlockHudAnimations
}
30 changes: 15 additions & 15 deletions src/main/java/net/foxes4life/foxclient/gui/ArmorHud.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,18 @@
import net.foxes4life.foxclient.util.draw.Anchor;
import net.foxes4life.foxclient.util.draw.AnchoredBounds;
import net.foxes4life.foxclient.util.draw.Bounds;
import net.foxes4life.foxclient.util.rendering.ItemRender;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawableHelper;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.client.render.item.ItemRenderer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier;

public class ArmorHud extends DrawableHelper {
public class ArmorHud {
private final MinecraftClient client;

private final TextRenderer fontRenderer;
Expand All @@ -27,7 +29,7 @@ public ArmorHud(MinecraftClient client) {
Main.LOGGER.info(client.getWindow().getScaledWidth() + " " + client.getWindow().getScaledHeight());
}

public void render(MatrixStack matrices) {
public void render(DrawContext context, ItemRender itemRender) {
int width = client.getWindow().getScaledWidth();
int height = client.getWindow().getScaledHeight();

Expand All @@ -36,17 +38,15 @@ public void render(MatrixStack matrices) {
ClientPlayerEntity player = client.player;
if (player == null) return;

ItemRenderer itemRenderer = client.getItemRenderer();

renderItem(matrices, player, itemRenderer, EquipmentSlot.MAINHAND, bounds);
renderItem(matrices, player, itemRenderer, EquipmentSlot.OFFHAND, bounds);
renderItem(matrices, player, itemRenderer, EquipmentSlot.HEAD, bounds);
renderItem(matrices, player, itemRenderer, EquipmentSlot.CHEST, bounds);
renderItem(matrices, player, itemRenderer, EquipmentSlot.LEGS, bounds);
renderItem(matrices, player, itemRenderer, EquipmentSlot.FEET, bounds);
renderItem(context, itemRender, player, EquipmentSlot.MAINHAND, bounds);
renderItem(context, itemRender, player, EquipmentSlot.OFFHAND, bounds);
renderItem(context, itemRender, player, EquipmentSlot.HEAD, bounds);
renderItem(context, itemRender, player, EquipmentSlot.CHEST, bounds);
renderItem(context, itemRender, player, EquipmentSlot.LEGS, bounds);
renderItem(context, itemRender, player, EquipmentSlot.FEET, bounds);
}

private void renderItem(MatrixStack matrices, ClientPlayerEntity player, ItemRenderer itemRenderer, EquipmentSlot slot, Bounds bounds) {
private void renderItem(DrawContext context, ItemRender itemRender, ClientPlayerEntity player, EquipmentSlot slot, Bounds bounds) {
int x = bounds.x;
int y = bounds.y;
boolean right = slot == EquipmentSlot.OFFHAND || slot == EquipmentSlot.LEGS || slot == EquipmentSlot.FEET;
Expand Down Expand Up @@ -75,7 +75,7 @@ private void renderItem(MatrixStack matrices, ClientPlayerEntity player, ItemRen

ItemStack stack = player.getEquippedStack(slot);
if (!stack.isEmpty()) {
itemRenderer.renderGuiItemIcon(matrices, stack, x, y);
itemRender.render(x, y, stack);

String text = "";
int color = 0xFFFFFF;
Expand Down Expand Up @@ -116,7 +116,7 @@ private void renderItem(MatrixStack matrices, ClientPlayerEntity player, ItemRen
int countWidth = fontRenderer.getWidth(text);

int x2 = x + (right ? 20 : -4 - countWidth);
fontRenderer.draw(matrices, text, x2, y + 3, color);
context.drawText(fontRenderer, text, x2, y + 3, color, true);
}
}
}
Loading

0 comments on commit e8d81f3

Please sign in to comment.