From 8005dd9afe963a461619ee3da603d8202292840b Mon Sep 17 00:00:00 2001 From: Kevin <92656833+kevinthegreat1@users.noreply.github.com> Date: Mon, 1 Jan 2024 14:49:31 +0800 Subject: Migrate to Fabric Api ClientPlayerBlockBreakEvents (#466) * Migrate to fabric api ClientPlayerBlockBreakEvents * Update fapi requirement --- .../events/ClientPlayerBlockBreakEvent.java | 23 ------------------ .../mixin/ClientPlayerInteractionManagerMixin.java | 27 ---------------------- .../skyblocker/skyblock/item/ItemCooldowns.java | 4 ++-- 3 files changed, 2 insertions(+), 52 deletions(-) delete mode 100644 src/main/java/de/hysky/skyblocker/events/ClientPlayerBlockBreakEvent.java delete mode 100644 src/main/java/de/hysky/skyblocker/mixin/ClientPlayerInteractionManagerMixin.java (limited to 'src/main/java/de/hysky') diff --git a/src/main/java/de/hysky/skyblocker/events/ClientPlayerBlockBreakEvent.java b/src/main/java/de/hysky/skyblocker/events/ClientPlayerBlockBreakEvent.java deleted file mode 100644 index 83ac716f..00000000 --- a/src/main/java/de/hysky/skyblocker/events/ClientPlayerBlockBreakEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package de.hysky.skyblocker.events; - -import net.fabricmc.fabric.api.event.Event; -import net.fabricmc.fabric.api.event.EventFactory; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -// Fabric API currently doesn't have an event for this -public class ClientPlayerBlockBreakEvent { - public static final Event AFTER = EventFactory.createArrayBacked(AfterBlockBreak.class, - (listeners) -> (world, player, pos, state) -> { - for (AfterBlockBreak listener : listeners) { - listener.afterBlockBreak(world, player, pos, state); - } - }); - - @FunctionalInterface - public interface AfterBlockBreak { - void afterBlockBreak(World world, PlayerEntity player, BlockPos pos, BlockState state); - } -} diff --git a/src/main/java/de/hysky/skyblocker/mixin/ClientPlayerInteractionManagerMixin.java b/src/main/java/de/hysky/skyblocker/mixin/ClientPlayerInteractionManagerMixin.java deleted file mode 100644 index fab9a1ea..00000000 --- a/src/main/java/de/hysky/skyblocker/mixin/ClientPlayerInteractionManagerMixin.java +++ /dev/null @@ -1,27 +0,0 @@ -package de.hysky.skyblocker.mixin; - -import de.hysky.skyblocker.events.ClientPlayerBlockBreakEvent; -import net.minecraft.block.BlockState; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.network.ClientPlayerInteractionManager; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import org.spongepowered.asm.mixin.Final; -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.callback.CallbackInfoReturnable; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; - -@Mixin(ClientPlayerInteractionManager.class) -public class ClientPlayerInteractionManagerMixin { - @Shadow - @Final - private MinecraftClient client; - - @Inject(method = "breakBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/Block;onBroken(Lnet/minecraft/world/WorldAccess;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/BlockState;)V"), locals = LocalCapture.CAPTURE_FAILHARD) - private void skyblocker$onBlockBroken(BlockPos pos, CallbackInfoReturnable cir, World world, BlockState blockState) { - ClientPlayerBlockBreakEvent.AFTER.invoker().afterBlockBreak(world, this.client.player, pos, blockState); - } -} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/ItemCooldowns.java b/src/main/java/de/hysky/skyblocker/skyblock/item/ItemCooldowns.java index f1c9239c..b28e5da1 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/ItemCooldowns.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/ItemCooldowns.java @@ -2,8 +2,8 @@ package de.hysky.skyblocker.skyblock.item; import com.google.common.collect.ImmutableList; import de.hysky.skyblocker.config.SkyblockerConfigManager; -import de.hysky.skyblocker.events.ClientPlayerBlockBreakEvent; import de.hysky.skyblocker.utils.ItemUtils; +import net.fabricmc.fabric.api.event.client.player.ClientPlayerBlockBreakEvents; import net.fabricmc.fabric.api.event.player.UseItemCallback; import net.minecraft.block.BlockState; import net.minecraft.entity.player.PlayerEntity; @@ -26,7 +26,7 @@ public class ItemCooldowns { private static final Map ITEM_COOLDOWNS = new HashMap<>(); public static void init() { - ClientPlayerBlockBreakEvent.AFTER.register(ItemCooldowns::afterBlockBreak); + ClientPlayerBlockBreakEvents.AFTER.register(ItemCooldowns::afterBlockBreak); UseItemCallback.EVENT.register(ItemCooldowns::onItemInteract); } -- cgit