Skip to content
This repository was archived by the owner on Jan 5, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
4af52fc
refactor(General): rename onHideGUIPost method
ench233 Apr 3, 2025
8a8cfc1
feat(AwesomeMap): init
ench233 Apr 5, 2025
e9fbcf3
fix: forgotten debug message
ench233 Apr 6, 2025
abbf71d
feat: HypixelModAPI dev env
ench233 Apr 7, 2025
4202cb5
fix: MinecraftEvent.Load.Post not be trigger
ench233 Apr 7, 2025
cf16462
feat: AwesomeMap just running but not render optimized
ench233 Apr 7, 2025
7dd7546
feat: finish basic map render rewritting in NanoVG
Yqloss Apr 13, 2025
68a2fa5
refactor: return T -> = T
ench233 Apr 25, 2025
39da6a5
refactor: no logger need here
ench233 Apr 25, 2025
6088d1f
feat(AwesomeMap): Notification
ench233 Apr 25, 2025
f4c65a9
feat(NanoVG): fallback Chinese font
ench233 Apr 25, 2025
d41228e
feat(AwesomeMap): event notification
ench233 Apr 25, 2025
49179a3
feat(AwesomeMap): customized room radius
ench233 Apr 25, 2025
cca3a16
feat(AwesomeMap): chinese run info?
ench233 Apr 25, 2025
f3c0877
refactor(AwesomeMap): remove useless fields and methods
ench233 Apr 25, 2025
60256e0
refactor(InvincibilityTimer): no logger needed
ench233 Apr 25, 2025
94ca3de
feat(GUIBackground): support shadow toggle
ench233 Apr 25, 2025
2b805ce
feat(OneConfigFontFix): fix OneConfig Chinese font
ench233 Apr 25, 2025
e2c5ea6
refactor(AwesomeMap): port scanned info to buildComponent
ench233 Apr 25, 2025
65c2c18
refactor(AwesomeMap): port mimic room info to buildComponent
ench233 Apr 25, 2025
39e930c
refactor(AwesomeMap): remove useless config
ench233 Apr 25, 2025
181314f
feat(AwesomeMap): alpha, scale and rotate
ench233 Apr 25, 2025
7bf18ec
feat(AwesomeMap): maybe can work?
ench233 May 5, 2025
a82cb37
feat(AwesomeMap): config category incorrect
ench233 May 5, 2025
1dc7b31
release: v0.4.0
ench233 May 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ dependencies {
}

implementation("net.hypixel:mod-api:1.0.1")
modImplementation("net.hypixel:mod-api-forge:1.0.1.2")
implementation("org.antlr:ST4:4.3.4")

shade("com.squareup.okhttp3:okhttp:4.12.0")
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ mod_name=EnchAddons
# Sets the id of your mod that mod loaders use to recognize it.
mod_id=enchaddons
# Sets the version of your mod. Make sure to update this when you make changes according to semver.
mod_version=0.3.0
mod_version=0.4.0
# Sets the name of the jar file that you put in your 'mods' folder.
mod_archives_name=EnchAddons

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package net.skymoe.enchaddons.impl.mixin;

import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.DamageSource;
import net.skymoe.enchaddons.impl.mixincallback.EntityLivingBaseMixinCallbackKt;
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(EntityLivingBase.class)
public class EntityLivingBaseMixin {
@Inject(method = "onDeath", at = @At("HEAD"))
private void onDeathPre(DamageSource cause, CallbackInfo ci) {
EntityLivingBaseMixinCallbackKt.onLivingEntityDeathPre((EntityLivingBase) (Object) this, cause);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package net.skymoe.enchaddons.impl.mixin;

import net.minecraft.client.renderer.RenderGlobal;
import net.minecraftforge.client.ForgeHooksClient;
import net.skymoe.enchaddons.impl.mixincallback.ForgeHooksClientMixinCallback;
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(ForgeHooksClient.class)
public class ForgeHooksClientMixin {
@Inject(method = "dispatchRenderLast", at = @At("HEAD"), remap = false)
private static void onRenderWorldLast(RenderGlobal context, float partialTicks, CallbackInfo ci) {
ForgeHooksClientMixinCallback.INSTANCE.onRenderWorldLast(context, partialTicks);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,12 @@
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.WorldClient;
import net.minecraft.client.settings.GameSettings;
import net.skymoe.enchaddons.impl.EnchAddonsImpl;
import net.skymoe.enchaddons.impl.EnchAddonsImplKt;
import net.skymoe.enchaddons.impl.config.EnchAddonsConfig;
import net.skymoe.enchaddons.impl.config.EnchAddonsConfigKt;
import net.skymoe.enchaddons.impl.mixincallback.MinecraftMixinCallbackKt;
import org.spongepowered.asm.lib.Opcodes;
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.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(Minecraft.class)
Expand All @@ -38,7 +33,7 @@ private void onUnloadWorldPre(CallbackInfo ci) {
}

@Inject(method = "runTick", at = @At(value = "FIELD", target = "Lnet/minecraft/client/settings/GameSettings;hideGUI:Z", opcode = Opcodes.PUTFIELD, shift = At.Shift.AFTER))
private void runTickRedirect(CallbackInfo ci) {
private void onHideGUIPost(CallbackInfo ci) {
MinecraftMixinCallbackKt.onHideGUIKeyDetect(gameSettings);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

import net.minecraft.client.Minecraft;
import net.minecraft.client.network.NetHandlerPlayClient;
import net.minecraft.network.play.server.S02PacketChat;
import net.minecraft.network.play.server.S32PacketConfirmTransaction;
import net.minecraft.network.play.server.*;
import net.skymoe.enchaddons.impl.mixincallback.NetHandlerPlayClientCallback;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
Expand All @@ -26,4 +25,22 @@ public void processPacket(S32PacketConfirmTransaction packetIn, CallbackInfo ci)
// if (!gameController.isCallingFromMinecraftThread()) return;
NetHandlerPlayClientCallback.INSTANCE.onS32PacketConfirmTransactionPre(packetIn);
}

@Inject(method = "handlePlayerListItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/PacketThreadUtil;checkThreadAndEnqueue(Lnet/minecraft/network/Packet;Lnet/minecraft/network/INetHandler;Lnet/minecraft/util/IThreadListener;)V", shift = At.Shift.AFTER))
public void processPacket(S38PacketPlayerListItem packetIn, CallbackInfo ci) {
// if (!gameController.isCallingFromMinecraftThread()) return;
NetHandlerPlayClientCallback.INSTANCE.onS38PacketPlayerListItemPre(packetIn);
}

@Inject(method = "handleTeams", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/PacketThreadUtil;checkThreadAndEnqueue(Lnet/minecraft/network/Packet;Lnet/minecraft/network/INetHandler;Lnet/minecraft/util/IThreadListener;)V", shift = At.Shift.AFTER))
public void processPacket(S3EPacketTeams packetIn, CallbackInfo ci) {
// if (!gameController.isCallingFromMinecraftThread()) return;
NetHandlerPlayClientCallback.INSTANCE.onS3EPacketTeamsPre(packetIn);
}

@Inject(method = "handleMaps", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/PacketThreadUtil;checkThreadAndEnqueue(Lnet/minecraft/network/Packet;Lnet/minecraft/network/INetHandler;Lnet/minecraft/util/IThreadListener;)V", shift = At.Shift.AFTER))
public void processPacket(S34PacketMaps packetIn, CallbackInfo ci) {
// if (!gameController.isCallingFromMinecraftThread()) return;
NetHandlerPlayClientCallback.INSTANCE.onS34PacketMapsPre(packetIn);
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
package net.skymoe.enchaddons.event.minecraft

import net.minecraft.util.IChatComponent
import net.skymoe.enchaddons.event.Event

sealed interface ChatEvent : Event {
sealed interface Normal : ChatEvent {
val message: String
val messageRaw: String
val message: String
val messageRaw: String
val component: IChatComponent

sealed interface Normal : ChatEvent {
data class Pre(
override val message: String,
override val messageRaw: String,
override val component: IChatComponent,
) : Normal
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package net.skymoe.enchaddons.event.minecraft

import net.minecraft.entity.EntityLivingBase
import net.minecraft.util.DamageSource
import net.skymoe.enchaddons.event.Event

sealed interface LivingEntityEvent : Event {
val entity: EntityLivingBase

data class Death(
override val entity: EntityLivingBase,
val cause: DamageSource,
) : LivingEntityEvent
}
10 changes: 10 additions & 0 deletions src/main/kotlin/net/skymoe/enchaddons/event/minecraft/MapEvent.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package net.skymoe.enchaddons.event.minecraft

import net.minecraft.network.play.server.S34PacketMaps
import net.skymoe.enchaddons.event.Event

interface MapEvent : Event {
data class Pre(
val packet: S34PacketMaps,
) : MapEvent
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,21 @@ package net.skymoe.enchaddons.event.minecraft

import net.minecraft.block.state.IBlockState
import net.minecraft.client.gui.GuiScreen
import net.minecraft.client.renderer.RenderGlobal
import net.minecraft.tileentity.TileEntity
import net.minecraft.world.IBlockAccess
import net.skymoe.enchaddons.event.Event
import net.skymoe.enchaddons.util.asBlockPos
import net.skymoe.enchaddons.util.math.Vec3I

sealed interface RenderEvent : Event {
sealed interface World : RenderEvent {
data class Last(
val context: RenderGlobal,
val partialTicks: Float,
) : World
}

sealed interface Render : RenderEvent {
data object Pre : Render
}
Expand Down Expand Up @@ -43,4 +51,4 @@ sealed interface RenderEvent : Event {
var mutableTileEntity: TileEntity? = tileEntity,
) : Block
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package net.skymoe.enchaddons.event.minecraft

import net.minecraft.network.play.server.S38PacketPlayerListItem
import net.skymoe.enchaddons.event.Event

sealed interface TabListEvent : Event {
val packet: S38PacketPlayerListItem

data class Pre(
override val packet: S38PacketPlayerListItem,
) : TabListEvent
}
28 changes: 28 additions & 0 deletions src/main/kotlin/net/skymoe/enchaddons/event/minecraft/TeamEvent.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package net.skymoe.enchaddons.event.minecraft

import net.minecraft.network.play.server.S3EPacketTeams
import net.skymoe.enchaddons.event.Event

sealed interface TeamEvent : Event {
sealed interface Pre : TeamEvent {
data class Create(
val packet: S3EPacketTeams,
) : Pre

data class Remove(
val packet: S3EPacketTeams,
) : Pre

data class Update(
val packet: S3EPacketTeams,
) : Pre

data class AddPlayer(
val packet: S3EPacketTeams,
) : Pre

data class RemovePlayer(
val packet: S3EPacketTeams,
) : Pre
}
}
Loading