diff --git a/common/src/main/java/org/valkyrienskies/mod/mixin/mod_compat/create/client/MixinTrackBlockOutline.java b/common/src/main/java/org/valkyrienskies/mod/mixin/mod_compat/create/client/MixinTrackBlockOutline.java deleted file mode 100644 index 1a49c57ca..000000000 --- a/common/src/main/java/org/valkyrienskies/mod/mixin/mod_compat/create/client/MixinTrackBlockOutline.java +++ /dev/null @@ -1,95 +0,0 @@ -package org.valkyrienskies.mod.mixin.mod_compat.create.client; - -import com.simibubi.create.content.trains.track.TrackBlockOutline; -import com.simibubi.create.content.trains.track.TrackBlockOutline.BezierPointSelection; -import com.simibubi.create.foundation.utility.RaycastHelper; -import net.minecraft.client.Minecraft; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.core.BlockPos; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.Vec3; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; -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; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; -import org.valkyrienskies.core.api.ships.Ship; -import org.valkyrienskies.mod.common.VSGameUtilsKt; -import org.valkyrienskies.mod.common.util.VectorConversionsMCKt; - -@Mixin(TrackBlockOutline.class) -public class MixinTrackBlockOutline { - - @Shadow - public static BezierPointSelection result; - @Unique - private static boolean valkyrienskies$toShip = false; - @Unique - private static Ship valkyrienskies$ship; - @Unique - private static Vec3 valkyrienskies$originalOrigin; - - @Inject( - method = "pickCurves", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/player/LocalPlayer;getEyePosition(F)Lnet/minecraft/world/phys/Vec3;" - ), locals = LocalCapture.CAPTURE_FAILHARD - ) - private static void stuff(final CallbackInfo ci, final Minecraft mc) { - if (mc.hitResult != null && mc.level != null && mc.player != null) { - valkyrienskies$toShip = false; - final boolean playerOnShip = VSGameUtilsKt.isBlockInShipyard(mc.level, mc.player.getOnPos()); - final boolean hitResultOnShip = - VSGameUtilsKt.isBlockInShipyard(mc.level, ((BlockHitResult) mc.hitResult).getBlockPos()); - if (playerOnShip && !hitResultOnShip) { - valkyrienskies$ship = VSGameUtilsKt.getShipManagingPos(mc.level, mc.player.getOnPos()); - //if blockstate is air then transform to ship - valkyrienskies$toShip = mc.level.getBlockState(new BlockPos(mc.hitResult.location)).isAir(); - } else if (hitResultOnShip) { - valkyrienskies$toShip = true; - valkyrienskies$ship = - VSGameUtilsKt.getShipManagingPos(mc.level, ((BlockHitResult) mc.hitResult).getBlockPos()); - } - } - } - - @Redirect( - method = "pickCurves", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/player/LocalPlayer;getEyePosition(F)Lnet/minecraft/world/phys/Vec3;" - ) - ) - private static Vec3 redirectedOrigin(final LocalPlayer instance, final float v) { - final Vec3 eyePos = instance.getEyePosition(v); - if (valkyrienskies$toShip) { - valkyrienskies$originalOrigin = eyePos; - return VectorConversionsMCKt.toMinecraft( - valkyrienskies$ship.getWorldToShip().transformPosition(VectorConversionsMCKt.toJOML(eyePos))); - } else { - return eyePos; - } - } - - @Redirect( - method = "pickCurves", - at = @At( - value = "INVOKE", - target = "Lcom/simibubi/create/foundation/utility/RaycastHelper;getTraceTarget(Lnet/minecraft/world/entity/player/Player;DLnet/minecraft/world/phys/Vec3;)Lnet/minecraft/world/phys/Vec3;" - ) - ) - private static Vec3 redirectedTarget(final Player playerIn, final double range, final Vec3 origin) { - if (valkyrienskies$toShip) { - return VectorConversionsMCKt.toMinecraft( - valkyrienskies$ship.getWorldToShip().transformPosition(VectorConversionsMCKt.toJOML( - RaycastHelper.getTraceTarget(playerIn, range, valkyrienskies$originalOrigin)))); - } else { - return RaycastHelper.getTraceTarget(playerIn, range, origin); - } - } -} diff --git a/common/src/main/java/org/valkyrienskies/mod/mixin/mod_compat/create/client/trackOutlines/MixinBigOutlines.java b/common/src/main/java/org/valkyrienskies/mod/mixin/mod_compat/create/client/trackOutlines/MixinBigOutlines.java index 8ca181ed5..cc559d91b 100644 --- a/common/src/main/java/org/valkyrienskies/mod/mixin/mod_compat/create/client/trackOutlines/MixinBigOutlines.java +++ b/common/src/main/java/org/valkyrienskies/mod/mixin/mod_compat/create/client/trackOutlines/MixinBigOutlines.java @@ -37,7 +37,7 @@ public class MixinBigOutlines { target = "Lnet/minecraft/client/player/LocalPlayer;getEyePosition(F)Lnet/minecraft/world/phys/Vec3;" ), locals = LocalCapture.CAPTURE_FAILHARD ) - private static void stuff(final CallbackInfo ci, final Minecraft mc) { + private static void injectPick(final CallbackInfo ci, final Minecraft mc) { if (mc.hitResult != null && mc.level != null && mc.player != null && mc.hitResult.getType() == Type.BLOCK) { valkyrienskies$toShip = false; final boolean playerOnShip = VSGameUtilsKt.isBlockInShipyard(mc.level, mc.player.getOnPos()); diff --git a/common/src/main/resources/valkyrienskies-common.mixins.json b/common/src/main/resources/valkyrienskies-common.mixins.json index 815fcbf1e..328fe8370 100644 --- a/common/src/main/resources/valkyrienskies-common.mixins.json +++ b/common/src/main/resources/valkyrienskies-common.mixins.json @@ -162,7 +162,6 @@ "mod_compat.create.client.MixinPlacementHelpers", "mod_compat.create.client.MixinSoundScapes", "mod_compat.create.client.MixinTileEntityRenderHelper", - "mod_compat.create.client.MixinTrackBlockOutline", "mod_compat.create.client.MixinTrainRelocator", "mod_compat.create.client.trackOutlines.MixinBigOutlines", "mod_compat.create.client.trackOutlines.MixinTrackBlockOutline",