Skip to content
This repository was archived by the owner on Nov 28, 2025. It is now read-only.
Merged

3.1.6 #184

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
fe1ff32
start next release cycle
moehreag Aug 30, 2025
6d1f107
implement #173
moehreag Aug 30, 2025
49e9798
fix a few bugs
moehreag Aug 30, 2025
8904450
fix MouseMovementHud
moehreag Sep 5, 2025
47ec9a9
(1.16, 1.21.1) fix HotbarHUD
moehreag Sep 5, 2025
d7ee6e1
fix 1.8.9 text formatting again
moehreag Sep 6, 2025
8c253ac
add skin-related API methods
moehreag Aug 28, 2025
1fe0704
slight improvements
moehreag Aug 29, 2025
dfbd446
improve loading, add default skin option
moehreag Aug 29, 2025
b169c4d
add more functionality, clean up a few things
moehreag Aug 29, 2025
815a1a7
add download action button
moehreag Aug 31, 2025
2054978
port to 1.21.1
moehreag Aug 31, 2025
77cdec7
port to 1.20.1
moehreag Aug 31, 2025
3837af4
port to 1.16
moehreag Aug 31, 2025
1fa06a7
fix account refreshing
moehreag Sep 5, 2025
6c01809
fix json construction
moehreag Sep 5, 2025
358f063
1.8.9 port
moehreag Sep 5, 2025
cdebd30
Add import skin button
moehreag Sep 6, 2025
b39458e
fix some bugs
moehreag Sep 6, 2025
5658749
filter out malformed skin images
moehreag Sep 6, 2025
273f51f
(1.8.9) Add skin file drag'n'drop support
moehreag Aug 3, 2025
a1c561c
process legacy (64x32) skins
moehreag Sep 7, 2025
6288e5d
fix a bug
moehreag Sep 7, 2025
3c518f4
add buttons to switch skin variants
moehreag Sep 7, 2025
ea2d30a
add local metadata file
moehreag Sep 7, 2025
dad4c91
implement Skin downloads
moehreag Sep 8, 2025
e184a13
clean up a bit
moehreag Sep 8, 2025
5d4fd0f
[skip] update changelog
moehreag Sep 8, 2025
dd4207c
tiny change
moehreag Sep 16, 2025
b7e6eb3
Add Skin & Cape Manager (#176)
moehreag Sep 16, 2025
a5133e5
add profile import/export buttons
moehreag Sep 16, 2025
871ca4d
fix sigsev from freeing glfw standard cursors
moehreag Sep 19, 2025
6ac3529
port to 1.21.9-pre2
moehreag Sep 20, 2025
76cd4e6
mark mixin classes abstract
moehreag Sep 20, 2025
8167723
format
moehreag Sep 20, 2025
80bf96b
rename latest module, fix a few bugs
moehreag Sep 20, 2025
dfef0be
update headers
moehreag Sep 20, 2025
fbbaf57
fix another few alignment issues
moehreag Sep 21, 2025
990fa8a
add additional options to IconHud
moehreag Sep 21, 2025
628ea5f
refactor skin loading
moehreag Sep 21, 2025
67aad89
improve skin management ux
moehreag Sep 22, 2025
2800a61
fix compilation
moehreag Sep 23, 2025
abe05ba
update to 1.21.9-pre4
moehreag Sep 23, 2025
cc5481a
bump to 1.21.9
moehreag Oct 2, 2025
f23b4f0
(1.21.9) fix key category translation
moehreag Oct 4, 2025
268738f
fix a few bugs
moehreag Oct 4, 2025
b86d624
clean up a few warnings
moehreag Oct 4, 2025
c4ee4eb
Fix ToggleSprint disregarding its own restrictions
moehreag Oct 5, 2025
3ab53cb
bump to 1.21.10
moehreag Oct 9, 2025
c455409
Preserve the current screen on style change
TheKodeToad Oct 9, 2025
33d000a
Preserve the current screen on style change (#179)
moehreag Oct 11, 2025
8c26f0e
update changelog
moehreag Oct 11, 2025
ef6b078
only add hide hud option to vanilla huds
moehreag Oct 11, 2025
13e29c0
fix some bugs
moehreag Oct 18, 2025
d21287f
bump version to beta
moehreag Oct 18, 2025
899c2f7
fix a few more bugs
moehreag Oct 18, 2025
10fb601
fix concurrency issue when loading skins
moehreag Oct 20, 2025
cbd3c98
fix crash for blank input sequence
moehreag Oct 27, 2025
13ded78
try to fix CI
moehreag Nov 3, 2025
4ba0f5d
update legacy-lwjgl3, remove linux-arm64 natives
moehreag Nov 3, 2025
549678c
fix dependency declaration
moehreag Nov 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions 1.16_combat-6/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ tasks.processResources {

tasks.runClient {
classpath(sourceSets.getByName("test").runtimeClasspath)
jvmArgs("-XX:+AllowEnhancedClassRedefinition", "-XX:+IgnoreUnrecognizedVMOptions")
}

tasks.withType(JavaCompile::class).configureEach {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import io.github.axolotlclient.api.types.Channel;
import io.github.axolotlclient.api.types.User;
import io.github.axolotlclient.api.util.AlphabeticalComparator;
import lombok.Getter;
import net.minecraft.client.gui.AbstractParentElement;
import net.minecraft.client.gui.Drawable;
import net.minecraft.client.gui.Element;
Expand All @@ -50,6 +51,7 @@
import net.minecraft.util.math.MathHelper;
import org.lwjgl.glfw.GLFW;

@SuppressWarnings("deprecation")
public class ChatsSidebar extends Screen implements ContextMenuScreen {

private static final int ANIM_STEP = 8;
Expand Down Expand Up @@ -182,6 +184,7 @@ public List<AbstractButtonWidget> getButtons() {
}

private void close() {
//noinspection DataFlowIssue
client.openScreen(parent);
if (chatWidget != null) {
chatWidget.remove();
Expand Down Expand Up @@ -219,9 +222,11 @@ private void addChat(Channel channel) {
int w;
if (channel.isDM()) {
User chatUser = ((Channel.DM) channel).getReceiver();
//noinspection DataFlowIssue
w = Math.max(client.textRenderer.getWidth(chatUser.getStatus().getTitle() + ": " + chatUser.getStatus().getDescription()) + 5,
client.textRenderer.getWidth(channel.getName()));
} else {
//noinspection DataFlowIssue
w = client.textRenderer.getWidth(channel.getName());
}
sidebarWidth = Math.min(Math.max(width * 5 / 12, w + 5), width / 2);
Expand Down Expand Up @@ -271,6 +276,7 @@ private class ListWidget extends AbstractParentElement implements Drawable, Elem
private final int height;
private final int entryHeight = 25;
protected boolean hovered;
@Getter
private int x;
private int scrollAmount;
private boolean visible;
Expand Down Expand Up @@ -330,10 +336,6 @@ public boolean isMouseOver(double mouseX, double mouseY) {
return hovered = visible && mouseX >= (double) this.x && mouseY >= (double) this.y && mouseX < (double) (this.x + this.width) && mouseY < (double) (this.y + this.height);
}

public int getX() {
return x;
}

public void setX(int x) {
this.x = x;
elements.forEach(e -> e.x = x);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,17 @@ public void init() {

addButton(new ButtonWidget(width / 2 - 155, height - 50, 150, 20,
ScreenTexts.CANCEL, button -> client.openScreen(parent)));
addButton(new ButtonWidget(width / 2 + 5, height - 50, 150, 20,
var done = addButton(new ButtonWidget(width / 2 + 5, height - 50, 150, 20,
ScreenTexts.DONE, button -> {
if (!input.getText().isEmpty()) {
if (!input.getText().isBlank()) {
consumer.accept(input.getText());
client.openScreen(parent);
}
client.openScreen(parent);
}));
input.setChangedListener(s -> {
done.active = !s.isBlank();
});
done.active = false;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.gui.widget.TextFieldWidget;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.LiteralText;
import net.minecraft.text.TranslatableText;
import org.lwjgl.glfw.GLFW;

Expand All @@ -47,7 +48,7 @@ public class ChatScreen extends Screen implements ContextMenuScreen {
private TextFieldWidget input;

public ChatScreen(Screen parent, Channel channel) {
super(new TranslatableText("api.screen.chat"));
super(new LiteralText(channel.getName()));
this.channel = channel;
this.parent = parent;
}
Expand Down Expand Up @@ -82,6 +83,7 @@ protected void init() {
users.setUsers(channel.getAllUsers(), channel);
addChild(users);

//noinspection DataFlowIssue
addButton(input = new TextFieldWidget(client.textRenderer, width / 2 - 150, height - 50,
300, 20, new TranslatableText("api.chat.enterMessage")) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public Identifier getFabricId() {
return new Identifier("axolotlclient", "bridge/resource_listener");
}
});
ClientPlayConnectionEvents.INIT.register((clientPlayNetworkHandler, minecraftClient) -> Events.CONNECTION_PLAY_READY.invoker().run());
ClientPlayConnectionEvents.JOIN.register((clientPlayNetworkHandler, sender, minecraftClient) -> Events.CONNECTION_PLAY_READY.invoker().run());
ClientPlayConnectionEvents.DISCONNECT.register((clientPlayNetworkHandler, minecraftClient) -> Events.DISCONNECT.invoker().run());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,4 +156,9 @@ public MinecraftClientMixin(String string) {
public AxoResourceManager br$getResourceManager() {
return getResourceManager();
}

@Override
public Object br$getScreen() {
return currentScreen;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
import org.spongepowered.asm.mixin.Unique;

@Mixin(value = PlatformDispatch.class, remap = false)
public class PlatformDispatchMixin {
public abstract class PlatformDispatchMixin {
@Unique
private static void getRealTimeServerPing(ServerInfo server, MutableInt currentServerPing) {
ThreadExecuter.scheduleTask(() -> {
Expand Down Expand Up @@ -124,7 +124,7 @@ public ClientConnection getConnection() {
final var minecraft = MinecraftClient.getInstance();
final var serverEntry = minecraft.getCurrentServerEntry();

final var img = NativeImage.read(Objects.requireNonNull(serverEntry == null ? minecraft.getServer().getServerMetadata().getFavicon() : serverEntry.getIcon()));
final var img = NativeImage.read(Objects.requireNonNull(serverEntry == null ? minecraft.getServer().getServerMetadata().getFavicon().substring("data:image/png;base64,".length()) : serverEntry.getIcon()));
final var icon = new NativeImageBackedTexture(img);
final var iconId = new Identifier("axolotlclient",
serverEntry == null ? "worlds/" + Hashing.sha1().hashUnencodedChars(((MinecraftServerAccessor) minecraft.getServer()).getStorageSource().getDirectoryName()) + "/icon" :
Expand All @@ -137,7 +137,7 @@ class Impl implements AxoSprite.Dynamic, AxoSpriteImpl {
@Override
public void draw(MinecraftClient client, MatrixStack stack, int sX, int sY, int sW, int sH) {
client.getTextureManager().bindTexture(iconId);
DrawUtil.drawTexture(stack, sX, sY, 0, 0, sW, sH, sW, sH);
DrawUtil.drawTexture(stack, sX, sY, 0, 0, sW, sH, sW, sH);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
import org.spongepowered.asm.mixin.Shadow;

@Mixin(PlayerListEntry.class)
public class PlayerListEntryMixin implements AxoPlayerListEntry {
public abstract class PlayerListEntryMixin implements AxoPlayerListEntry {
@Shadow
@Final
private GameProfile profile;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
import org.spongepowered.asm.mixin.Shadow;

@Mixin(LivingEntity.class)
public class LivingEntityMixin implements AxoLivingEntity {
public abstract class LivingEntityMixin implements AxoLivingEntity {
@Shadow
@Final
private Map<StatusEffect, StatusEffectInstance> activeStatusEffects;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(value = AxoStatusEffects.class, remap = false)
public class AxoStatusEffectsMixin {
public abstract class AxoStatusEffectsMixin {
@Mutable
@Shadow
@Final
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@

@SuppressWarnings("OverwriteModifiers")
@Mixin(value = PlatformImplInternal.class, remap = false)
public class PlatformImplInternalMixin {
public abstract class PlatformImplInternalMixin {
/**
* @author Flowey
* @reason Implement bridge platform.
Expand Down Expand Up @@ -147,9 +147,9 @@ public static int getCurrentFps() {
* @reason Implement bridge platform.
*/
@Overwrite
public static AxoKeybinding createKeyBinding(AxoKey defaultKey, String name, String category) {
public static AxoKeybinding createKeyBinding(AxoKey defaultKey, String name) {
int code = ((InputUtil.Key) Objects.requireNonNullElse(defaultKey, AxoKeys.KEY_UNKNOWN)).getCode();
final var binding = new KeyBinding(name, code, category);
final var binding = new KeyBinding(name, code, "category.axolotlclient");
KeyBindingHelper.registerKeyBinding(binding);
return binding;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(value = AxoEnchants.class, remap = false)
public class AxoEnchantsMixin {
public abstract class AxoEnchantsMixin {
@Mutable
@Shadow
@Final
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(value = AxoItems.class, remap = false)
public class AxoItemsMixin {
public abstract class AxoItemsMixin {
@Mutable
@Shadow
@Final
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,5 @@
import org.spongepowered.asm.mixin.Mixin;

@Mixin(Enchantment.class)
public class EnchantmentMixin implements AxoEnchant {
public abstract class EnchantmentMixin implements AxoEnchant {
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
import org.spongepowered.asm.mixin.Mixin;

@Mixin(Item.class)
public class ItemMixin implements AxoItem {
public abstract class ItemMixin implements AxoItem {
@Override
public boolean br$is(AxoItemClass itemClass) {
return switch (itemClass) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(value = AxoKeys.class, remap = false)
public class AxoKeysMixin {
public abstract class AxoKeysMixin {

@Mutable
@Shadow
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
import org.spongepowered.asm.mixin.Shadow;

@Mixin(GameOptions.class)
public class GameOptionsMixin implements AxoClientKeybinds{
public abstract class GameOptionsMixin implements AxoClientKeybinds {
@Shadow
@Final
public KeyBinding keyAttack;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,5 @@
import org.spongepowered.asm.mixin.Mixin;

@Mixin(InputUtil.Key.class)
public class KeyMixin implements AxoKey {
public abstract class KeyMixin implements AxoKey {
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(value = AxoSprites.class, remap = false)
public class AxoSpritesMixin {
public abstract class AxoSpritesMixin {
@Mutable
@Shadow
@Final
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
import org.spongepowered.asm.mixin.Shadow;

@Mixin(Identifier.class)
public abstract class IdentifierMixin implements AxoIdentifier{
public abstract class IdentifierMixin implements AxoIdentifier {
@Shadow
public abstract String getPath();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import io.github.axolotlclient.AxolotlClientConfig.api.ui.ConfigUI;
import io.github.axolotlclient.AxolotlClientConfig.api.util.Color;
import io.github.axolotlclient.AxolotlClientConfig.impl.options.*;
import io.github.axolotlclient.AxolotlClientConfig.impl.ui.RecreatableScreen;
import io.github.axolotlclient.AxolotlClientConfigCommon;
import io.github.axolotlclient.config.screen.CreditsScreen;
import io.github.axolotlclient.config.screen.ProfilesScreen;
Expand All @@ -43,6 +44,7 @@
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.options.KeyBinding;
import net.minecraft.client.texture.NativeImage;
import net.minecraft.client.texture.NativeImageBackedTexture;
Expand Down Expand Up @@ -155,7 +157,9 @@ public AxolotlClientConfig() {
general.add(configStyle = new StringArrayOption("configStyle", themes,
"configStyle." + ConfigUI.getInstance().getCurrentStyle().getName(), s -> {
ConfigUI.getInstance().setStyle(s.split("\\.")[1]);
MinecraftClient.getInstance().openScreen(null);

Screen newScreen = RecreatableScreen.tryRecreate(MinecraftClient.getInstance().currentScreen);
MinecraftClient.getInstance().openScreen(newScreen);
}));
AxolotlClient.getInstance().getConfigManager().load();
ConfigUI.getInstance().setStyle(configStyle.get().split("\\.")[1]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) {
renderBackground(matrices);
creditsList.render(matrices, mouseX, mouseY, delta);
super.render(matrices, mouseX, mouseY, delta);
drawCenteredText(matrices, textRenderer, getTitle(), width / 2, 33/2 - textRenderer.fontHeight / 2, -1);
drawCenteredText(matrices, textRenderer, getTitle(), width / 2, 33 / 2 - textRenderer.fontHeight / 2, -1);
}

@Override
Expand Down
Loading