aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-03-17 14:19:58 -0400
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-03-17 14:19:58 -0400
commit404d7541853cbd840cf11f9dda9beb4aebe4d733 (patch)
tree535575427dc498f98615388e3aed96fac271d770 /src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java
parente132d040bb9c068a956603863fbb88258e1a41cc (diff)
downloadSkyblocker-404d7541853cbd840cf11f9dda9beb4aebe4d733.tar.gz
Skyblocker-404d7541853cbd840cf11f9dda9beb4aebe4d733.tar.bz2
Skyblocker-404d7541853cbd840cf11f9dda9beb4aebe4d733.zip
Fix item pick up detection
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java')
-rw-r--r--src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java b/src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java
index df2fcd4f..8397292b 100644
--- a/src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java
+++ b/src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java
@@ -5,6 +5,7 @@ import com.llamalad7.mixinextras.injector.WrapWithCondition;
import com.llamalad7.mixinextras.sugar.Local;
import de.hysky.skyblocker.skyblock.FishingHelper;
import de.hysky.skyblocker.skyblock.dungeon.DungeonScore;
+import de.hysky.skyblocker.skyblock.dungeon.secrets.DungeonManager;
import de.hysky.skyblocker.skyblock.end.BeaconHighlighter;
import de.hysky.skyblocker.skyblock.end.TheEnd;
import de.hysky.skyblocker.skyblock.waypoint.MythologicalRitual;
@@ -12,8 +13,10 @@ import de.hysky.skyblocker.utils.SlayerUtils;
import de.hysky.skyblocker.utils.Utils;
import net.minecraft.block.Blocks;
import net.minecraft.client.network.ClientPlayNetworkHandler;
+import net.minecraft.client.world.ClientWorld;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityStatuses;
+import net.minecraft.entity.ItemEntity;
import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket;
import net.minecraft.network.packet.s2c.play.EntityStatusS2CPacket;
import net.minecraft.network.packet.s2c.play.ParticleS2CPacket;
@@ -21,12 +24,17 @@ import net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket;
import net.minecraft.util.Identifier;
import org.slf4j.Logger;
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.ModifyVariable;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(ClientPlayNetworkHandler.class)
public abstract class ClientPlayNetworkHandlerMixin {
+ @Shadow
+ private ClientWorld world;
+
@Inject(method = "onBlockUpdate", at = @At("RETURN"))
private void skyblocker$onBlockUpdate(BlockUpdateS2CPacket packet, CallbackInfo ci) {
if (Utils.isInTheEnd() && SlayerUtils.isInSlayer()) {
@@ -37,6 +45,19 @@ public abstract class ClientPlayNetworkHandlerMixin {
}
}
+ @Inject(method = "method_37472", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/world/ClientWorld;removeEntity(ILnet/minecraft/entity/Entity$RemovalReason;)V"))
+ private void skyblocker$onItemDestroy(int entityId, CallbackInfo ci) {
+ if (world.getEntityById(entityId) instanceof ItemEntity itemEntity) {
+ DungeonManager.onItemPickup(itemEntity);
+ }
+ }
+
+ @ModifyVariable(method = "onItemPickupAnimation", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/world/ClientWorld;removeEntity(ILnet/minecraft/entity/Entity$RemovalReason;)V", ordinal = 0))
+ private ItemEntity skyblocker$onItemPickup(ItemEntity itemEntity) {
+ DungeonManager.onItemPickup(itemEntity);
+ return itemEntity;
+ }
+
@WrapWithCondition(method = "onEntityPassengersSet", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;warn(Ljava/lang/String;)V", remap = false))
private boolean skyblocker$cancelEntityPassengersWarning(Logger instance, String msg) {
return !Utils.isOnHypixel();