Cartloader/src/main/java/moe/lava/cartloader/impl/MixinPlayerEntityImpl.kt

42 lines
1.3 KiB
Kotlin
Raw Normal View History

2025-03-08 15:13:29 +11:00
package moe.lava.cartloader.impl
2025-03-08 15:13:29 +11:00
import moe.lava.cartloader.accessor.AccessorAbstractMinecartEntity
import net.minecraft.entity.Entity
import net.minecraft.entity.ItemEntity
import net.minecraft.entity.player.PlayerEntity
import net.minecraft.entity.vehicle.AbstractMinecartEntity
import net.minecraft.item.Items
import net.minecraft.util.ActionResult
import net.minecraft.util.Hand
2025-03-08 15:13:29 +11:00
class MixinPlayerEntityImpl {
2025-03-08 15:13:29 +11:00
private var linking: AbstractMinecartEntity? = null
fun interact(minecart: Entity, player: PlayerEntity, hand: Hand): ActionResult? {
if (minecart !is AbstractMinecartEntity)
return null
if (minecart !is AccessorAbstractMinecartEntity)
return null;
if (!player.getStackInHand(hand).isOf(Items.CHAIN))
return null
val target = linking
if (target == null) {
linking = minecart
return ActionResult.SUCCESS
}
if (target !is AccessorAbstractMinecartEntity)
return null
linking = null
if (!target.isAlive)
return ActionResult.FAIL
if (!minecart.boundingBox.expand(0.1).intersects(target.boundingBox))
return ActionResult.FAIL
target.`cartloader$getImpl`().linkTo(minecart)
return ActionResult.SUCCESS
}
2025-03-08 15:13:29 +11:00
}