diff --git a/common/build.gradle b/common/build.gradle index 0167058c0..870d53d87 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -41,6 +41,9 @@ dependencies { // CC: Tweaked modCompileOnly("maven.modrinth:cc-tweaked:${cc_tweaked_version}") + // TIS-3D + modCompileOnly("maven.modrinth:tis3d:${tis3d_version}") + //Common create compat, //We just use a version from a platform and hope the classes exist on both versions and mixins apply correctly modCompileOnly("com.simibubi.create:create-fabric-${minecraft_version}:${create_fabric_version}") diff --git a/forge/src/main/java/org/valkyrienskies/mod/forge/compat/tis3d/README.md b/common/src/main/java/org/valkyrienskies/mod/compat/tis3d/README.md similarity index 100% rename from forge/src/main/java/org/valkyrienskies/mod/forge/compat/tis3d/README.md rename to common/src/main/java/org/valkyrienskies/mod/compat/tis3d/README.md diff --git a/forge/src/main/java/org/valkyrienskies/mod/forge/compat/tis3d/Tis3dClipContext.java b/common/src/main/java/org/valkyrienskies/mod/compat/tis3d/Tis3dClipContext.java similarity index 83% rename from forge/src/main/java/org/valkyrienskies/mod/forge/compat/tis3d/Tis3dClipContext.java rename to common/src/main/java/org/valkyrienskies/mod/compat/tis3d/Tis3dClipContext.java index 6ff12deaa..4096e976c 100644 --- a/forge/src/main/java/org/valkyrienskies/mod/forge/compat/tis3d/Tis3dClipContext.java +++ b/common/src/main/java/org/valkyrienskies/mod/compat/tis3d/Tis3dClipContext.java @@ -1,4 +1,4 @@ -package org.valkyrienskies.mod.forge.compat.tis3d; +package org.valkyrienskies.mod.compat.tis3d; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.Entity; @@ -10,6 +10,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class Tis3dClipContext extends ClipContext { @@ -22,7 +23,7 @@ public Tis3dClipContext(final Vec3 arg, final Vec3 arg2, final Block arg3, final } @Override - public VoxelShape getBlockShape(final BlockState bs, final BlockGetter bg, final BlockPos bp) { + public @NotNull VoxelShape getBlockShape(final @NotNull BlockState bs, final @NotNull BlockGetter bg, final @NotNull BlockPos bp) { final VoxelShape collider = Block.COLLIDER.get(bs, bg, bp, this.collisionContext); final VoxelShape visual = Block.VISUAL.get(bs, bg, bp, this.collisionContext); return Shapes.join(collider, visual, BooleanOp.AND); diff --git a/forge/src/main/java/org/valkyrienskies/mod/forge/mixin/compat/tis3d/MixinCasingTileEntityRender.java b/common/src/main/java/org/valkyrienskies/mod/mixin/mod_compat/tis3d/MixinCasingTileEntityRender.java similarity index 53% rename from forge/src/main/java/org/valkyrienskies/mod/forge/mixin/compat/tis3d/MixinCasingTileEntityRender.java rename to common/src/main/java/org/valkyrienskies/mod/mixin/mod_compat/tis3d/MixinCasingTileEntityRender.java index 56518b307..d4f302ef7 100644 --- a/forge/src/main/java/org/valkyrienskies/mod/forge/mixin/compat/tis3d/MixinCasingTileEntityRender.java +++ b/common/src/main/java/org/valkyrienskies/mod/mixin/mod_compat/tis3d/MixinCasingTileEntityRender.java @@ -1,16 +1,15 @@ -package org.valkyrienskies.mod.forge.mixin.compat.tis3d; +package org.valkyrienskies.mod.mixin.mod_compat.tis3d; import li.cil.tis3d.client.renderer.block.entity.CasingBlockEntityRenderer; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.world.phys.Vec3; -import org.joml.Vector3d; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Pseudo; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyVariable; -import org.valkyrienskies.core.api.ships.ClientShip; -import org.valkyrienskies.mod.common.VSGameUtilsKt; +import org.valkyrienskies.core.api.ships.Ship; +import org.valkyrienskies.mod.api.ValkyrienSkies; @Pseudo @Mixin(CasingBlockEntityRenderer.class) @@ -18,14 +17,11 @@ public abstract class MixinCasingTileEntityRender { @ModifyVariable(remap = false, method = "isBackFace", at = @At("STORE"), ordinal = 0) private Vec3 vs$isBackFace(final Vec3 original, final BlockPos position) { - final ClientShip ship = VSGameUtilsKt.getShipObjectManagingPos(Minecraft.getInstance().level, position); + final Ship ship = ValkyrienSkies.getShipManagingBlock(Minecraft.getInstance().level, position); if (ship != null) { - final Vector3d v3 = new Vector3d(original.x, original.y, original.z); - final Vector3d shipyard_camera = ship.getTransform().getWorldToShip().transformPosition(v3); - return new Vec3(shipyard_camera.x, shipyard_camera.y, shipyard_camera.z); - } else { - return original; + return ValkyrienSkies.toMinecraft(ValkyrienSkies.toJOML(ValkyrienSkies.positionToShip(ship, original))); } + return original; } } diff --git a/forge/src/main/java/org/valkyrienskies/mod/forge/mixin/compat/tis3d/MixinInfraredPacketEntity.java b/common/src/main/java/org/valkyrienskies/mod/mixin/mod_compat/tis3d/MixinInfraredPacketEntity.java similarity index 92% rename from forge/src/main/java/org/valkyrienskies/mod/forge/mixin/compat/tis3d/MixinInfraredPacketEntity.java rename to common/src/main/java/org/valkyrienskies/mod/mixin/mod_compat/tis3d/MixinInfraredPacketEntity.java index 2521ef964..f04c22c56 100644 --- a/forge/src/main/java/org/valkyrienskies/mod/forge/mixin/compat/tis3d/MixinInfraredPacketEntity.java +++ b/common/src/main/java/org/valkyrienskies/mod/mixin/mod_compat/tis3d/MixinInfraredPacketEntity.java @@ -1,4 +1,4 @@ -package org.valkyrienskies.mod.forge.mixin.compat.tis3d; +package org.valkyrienskies.mod.mixin.mod_compat.tis3d; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; @@ -14,7 +14,7 @@ import org.spongepowered.asm.mixin.Pseudo; import org.spongepowered.asm.mixin.injection.At; import org.valkyrienskies.mod.common.world.RaycastUtilsKt; -import org.valkyrienskies.mod.forge.compat.tis3d.Tis3dClipContext; +import org.valkyrienskies.mod.compat.tis3d.Tis3dClipContext; @Pseudo @Mixin(InfraredPacketEntity.class) diff --git a/forge/src/main/java/org/valkyrienskies/mod/forge/mixin/compat/tis3d/MixinRenderContextImpl.java b/common/src/main/java/org/valkyrienskies/mod/mixin/mod_compat/tis3d/MixinRenderContextImpl.java similarity index 63% rename from forge/src/main/java/org/valkyrienskies/mod/forge/mixin/compat/tis3d/MixinRenderContextImpl.java rename to common/src/main/java/org/valkyrienskies/mod/mixin/mod_compat/tis3d/MixinRenderContextImpl.java index c00cea355..9bbcf4617 100644 --- a/forge/src/main/java/org/valkyrienskies/mod/forge/mixin/compat/tis3d/MixinRenderContextImpl.java +++ b/common/src/main/java/org/valkyrienskies/mod/mixin/mod_compat/tis3d/MixinRenderContextImpl.java @@ -1,5 +1,4 @@ -package org.valkyrienskies.mod.forge.mixin.compat.tis3d; - +package org.valkyrienskies.mod.mixin.mod_compat.tis3d; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; @@ -7,13 +6,11 @@ import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.Position; -import net.minecraft.world.phys.Vec3; -import org.joml.Vector3d; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Pseudo; import org.spongepowered.asm.mixin.injection.At; -import org.valkyrienskies.core.api.ships.ClientShip; -import org.valkyrienskies.mod.common.VSGameUtilsKt; +import org.valkyrienskies.core.api.ships.Ship; +import org.valkyrienskies.mod.api.ValkyrienSkies; @Pseudo @Mixin(RenderContextImpl.class) @@ -29,15 +26,12 @@ public abstract class MixinRenderContextImpl { private boolean vs$closerToCenterThan(final BlockPos instance, final Position pos, final double dist, final Operation orig) { // this code has been deemed better by those at the forge discord (since it calls the og function) - final ClientShip ship = VSGameUtilsKt.getShipObjectManagingPos(Minecraft.getInstance().level, instance); + final Ship ship = ValkyrienSkies.getShipManagingBlock(Minecraft.getInstance().level, instance); if (ship != null) { - final Vector3d spos = ship.getTransform().getWorldToShip().transformPosition( - new Vector3d(pos.x(), pos.y(), pos.z()) - ); - return orig.call(instance, new Vec3(spos.x, spos.y, spos.z), dist); - } else { - return orig.call(instance, pos, dist); + return orig.call(instance, ValkyrienSkies.toMinecraft(ValkyrienSkies + .positionToShip(ship, ValkyrienSkies.toJOML(pos))), dist); } + return orig.call(instance, pos, dist); } } diff --git a/forge/src/main/java/org/valkyrienskies/mod/forge/mixin/compat/tis3d/README.md b/common/src/main/java/org/valkyrienskies/mod/mixin/mod_compat/tis3d/README.md similarity index 100% rename from forge/src/main/java/org/valkyrienskies/mod/forge/mixin/compat/tis3d/README.md rename to common/src/main/java/org/valkyrienskies/mod/mixin/mod_compat/tis3d/README.md diff --git a/common/src/main/resources/valkyrienskies-common.mixins.json b/common/src/main/resources/valkyrienskies-common.mixins.json index b8686d87f..07b59e291 100644 --- a/common/src/main/resources/valkyrienskies-common.mixins.json +++ b/common/src/main/resources/valkyrienskies-common.mixins.json @@ -103,6 +103,7 @@ "mod_compat.ftb_chunks.MixinClaimedChunkManagerImpl", "mod_compat.immersive_portals.MixinIpNewChunkTrackingGraph", "mod_compat.reachentityattributes.MixinReachEntityAttributes", + "mod_compat.tis3d.MixinInfraredPacketEntity", "server.MinecraftServerAccessor", "server.MixinMinecraftServer", "server.MixinPlayerList", @@ -197,6 +198,8 @@ "mod_compat.sodium.MixinRenderSectionManager", "mod_compat.sodium.MixinSodiumWorldRenderer", "mod_compat.sound_physics_remastered.MixinSoundPhysics", + "mod_compat.tis3d.MixinCasingTileEntityRender", + "mod_compat.tis3d.MixinRenderContextImpl", "mod_compat.vanilla_renderer.MixinLevelRendererVanilla", "mod_compat.vanilla_renderer.MixinViewAreaVanilla", "mod_compat.vanilla_renderer.RenderChunkInfoAccessor", diff --git a/forge/build.gradle b/forge/build.gradle index 9a7099bbd..34dfb9883 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -88,8 +88,6 @@ dependencies { modImplementation("teamreborn:energy:${energy_version}") { transitive = false } - // TIS-3d - modCompileOnly("maven.modrinth:tis3d:${tis3d_version}") // Modular Routers modCompileOnly("curse.maven:mr-250294:4696089") diff --git a/forge/gradle.properties b/forge/gradle.properties index f4ae8d801..be777ed4c 100644 --- a/forge/gradle.properties +++ b/forge/gradle.properties @@ -15,7 +15,5 @@ registrate_version = MC1.20-1.3.3 twilightforest_version = 4.3.2145 #Extra -# https://modrinth.com/mod/tis3d/version/MC1.19.2-forge-1.7.4 -tis3d_version = MC1.20.1-forge-1.7.5 # https://modrinth.com/mod/embeddium/versions embeddium_version = 0.2.9+mc1.20.1 diff --git a/forge/src/main/resources/valkyrienskies-forge.mixins.json b/forge/src/main/resources/valkyrienskies-forge.mixins.json index 7cc6933bd..562421ad6 100644 --- a/forge/src/main/resources/valkyrienskies-forge.mixins.json +++ b/forge/src/main/resources/valkyrienskies-forge.mixins.json @@ -15,7 +15,6 @@ "compat.modular_routers.MixinRouterMenu", "compat.tfc.MixinTFCChunkGenerator", "compat.thermalexpansion.MixinTileCoFH", - "compat.tis3d.MixinInfraredPacketEntity", "compat.twilightforest.ChunkGeneratorTwilightMixin", "feature.forge_interact.MixinIForgePlayer", "feature.shipyard_entities.MixinPersistentEntitySectionManager", @@ -29,9 +28,7 @@ "compat.create.client.MixinFlwContraption", "compat.create.client.MixinSuperGlueSelectionHandler", "compat.create.client.MixinTrackBlockOutline", - "compat.sodium.MixinRenderSectionManager", - "compat.tis3d.MixinCasingTileEntityRender", - "compat.tis3d.MixinRenderContextImpl" + "compat.sodium.MixinRenderSectionManager" ], "injectors": { "defaultRequire": 1 diff --git a/gradle.properties b/gradle.properties index b19536aea..25d8fc336 100644 --- a/gradle.properties +++ b/gradle.properties @@ -31,6 +31,9 @@ energy_version=2.3.0 # https://modrinth.com/mod/cc-tweaked/version/Zoo9N9Dv cc_tweaked_version = 1.113.1-fabric +# https://modrinth.com/mod/tis3d/version/MC1.20.1-fabric-1.7.7 +tis3d_version = MC1.20.1-fabric-1.7.7 + vs_core_version=1.1.0+6dba85260a # Prevent kotlin from autoincluding stdlib as a dependency, which breaks # gradle's composite builds (includeBuild) for some reason. We'll add it manually