package com.thebrokenrail.twine.mixin; import com.thebrokenrail.twine.util.boat.BoatChestModes; import com.thebrokenrail.twine.util.boat.BoatUtil; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayerInteractionManager; import net.minecraft.entity.vehicle.BoatEntity; 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; @Environment(EnvType.CLIENT) @Mixin(ClientPlayerInteractionManager.class) public class MixinClientPlayerInteractionManager { @Shadow @Final private MinecraftClient client; @Inject(at = @At("HEAD"), method = "hasRidingInventory", cancellable = true) public void hasRidingInventory(CallbackInfoReturnable info) { assert client.player != null; if (client.player.hasVehicle() && client.player.getVehicle() instanceof BoatEntity && ((BoatUtil) client.player.getVehicle()).getChestMode() != BoatChestModes.NONE) { info.setReturnValue(true); } } }