diff --git a/build.gradle b/build.gradle index 9131a15..37c1e96 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,10 @@ plugins { - id 'fabric-loom' version '0.10.64' + id 'fabric-loom' version '0.12-SNAPSHOT' id 'maven-publish' id 'eclipse' id 'idea' id 'java' - id 'org.jetbrains.kotlin.jvm' version '1.6.10' + id 'org.jetbrains.kotlin.jvm' version '1.7.10' } sourceCompatibility = JavaVersion.VERSION_16 @@ -32,13 +32,17 @@ dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - modCompileOnly files("lib/iris-and-sodium-mc1.17-1.1.2+build.9.jar") + modCompileOnly files("lib/iris-mc1.19.2-1.5.2.jar") modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" modImplementation "net.fabricmc:fabric-language-kotlin:${project.fabric_kotlin_version}" modImplementation "dev.emi:trinkets:${project.trinkets_version}" - modImplementation "io.github.onyxstudios.Cardinal-Components-API:cardinal-components-entity:${project.cardinal_components_version}" - include "io.github.onyxstudios.Cardinal-Components-API:cardinal-components-entity:${project.cardinal_components_version}" + +// modImplementation "io.github.onyxstudios.Cardinal-Components-API:cardinal-components-entity:${project.cardinal_components_version}" +// include "io.github.onyxstudios.Cardinal-Components-API:cardinal-components-entity:${project.cardinal_components_version}" + + modImplementation "dev.onyxstudios.cardinal-components-api:cardinal-components-entity:${project.cardinal_components_version}" + include "dev.onyxstudios.cardinal-components-api:cardinal-components-entity:${project.cardinal_components_version}" [ "com.teamwizardry.librarianlib:mosaic:${liblib_version}", diff --git a/gradle.properties b/gradle.properties index f2fb31a..23251be 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,24 +1,27 @@ org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false -minecraft_version=1.17.1 -yarn_mappings=1.17.1+build.65 -loader_version=0.12.11 +minecraft_version=1.19.2 +yarn_mappings=1.19.2+build.28 +loader_version=0.14.17 -mod_version=2.0.0-alpha.3 + +mod_version=2.0.0-alpha.3-1.19.2 archivesBaseName=hooked release.curseforge.type=alpha release.modrinth.type=ALPHA -fabric_version=0.45.0+1.17 -fabric_kotlin_version=1.7.1+kotlin.1.6.10 -liblib_version=5.0.0-alpha.11 -trinkets_version=3.0.4 -cardinal_components_version=3.0.1 + +#Fabric api +fabric_version=0.75.1+1.19.2 +fabric_kotlin_version=1.9.1+kotlin.1.8.10 +liblib_version=1.17-quilt-SNAPSHOT +trinkets_version=3.4.0 +cardinal_components_version=5.0.2 mod.dependencies.fabricloader=>=0.11.6 -mod.dependencies.minecraft=1.17.x -mod.dependencies.flk=>=1.7.1+kotlin.1.6.10 -mod.dependencies.trinkets=>=3.0.4 +mod.dependencies.minecraft=1.19.2 +mod.dependencies.flk=>=1.9.1+kotlin.1.8.10 +mod.dependencies.trinkets=>=3.4.0 mod.modmenu.hooked_name=Hooked \ No newline at end of file diff --git a/src/main/java/dev/thecodewarrior/hooked/mixin/IrisShadowRendererMixin.java b/src/main/java/dev/thecodewarrior/hooked/mixin/IrisShadowRendererMixin.java index dd769c4..e99b7d7 100644 --- a/src/main/java/dev/thecodewarrior/hooked/mixin/IrisShadowRendererMixin.java +++ b/src/main/java/dev/thecodewarrior/hooked/mixin/IrisShadowRendererMixin.java @@ -1,41 +1,36 @@ package dev.thecodewarrior.hooked.mixin; -import com.teamwizardry.librarianlib.core.util.Client; import dev.thecodewarrior.hooked.client.HookRenderManager; -import net.coderbot.iris.mixin.WorldRendererAccessor; -import net.minecraft.client.MinecraftClient; +import net.coderbot.iris.pipeline.ShadowRenderer; import net.minecraft.client.render.BufferBuilderStorage; -import net.minecraft.client.render.Camera; +import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.util.math.MatrixStack; 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.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.callback.LocalCapture; -@Mixin(targets = "net.coderbot.iris.pipeline.ShadowRenderer") +@Mixin(ShadowRenderer.class) public class IrisShadowRendererMixin { @Shadow @Final private BufferBuilderStorage buffers; @Inject( - method = "renderShadows", + method = "renderBlockEntities", at = @At( value = "INVOKE_STRING", - target = "Lnet/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V", + target = "Lnet/minecraft/util/profiler/Profiler;push(Ljava/lang/String;)V", args = {"ldc=build blockentities"} ), locals = LocalCapture.CAPTURE_FAILSOFT ) private void hooked$renderEntities( - WorldRendererAccessor worldRenderer, Camera playerCamera, - CallbackInfo ci, - MinecraftClient client, MatrixStack modelView + VertexConsumerProvider.Immediate par1, MatrixStack modelView, double cameraX, double cameraY, double cameraZ, float tickDelta, boolean hasEntityFrustum, CallbackInfoReturnable cir ) { - var cameraPos = client.gameRenderer.getCamera().getPos(); - modelView.translate(-cameraPos.getX(), -cameraPos.getY(), -cameraPos.getZ()); - HookRenderManager.INSTANCE.renderHooks(modelView, Client.getMinecraft().getTickDelta(), buffers.getEntityVertexConsumers()); - modelView.translate(cameraPos.getX(), cameraPos.getY(), cameraPos.getZ()); + modelView.translate(-cameraX, -cameraY, -cameraZ); + HookRenderManager.INSTANCE.renderHooks(modelView, tickDelta, buffers.getEntityVertexConsumers()); + modelView.translate(cameraX, cameraY, cameraZ); } } diff --git a/src/main/kotlin/dev/thecodewarrior/hooked/Hooked.kt b/src/main/kotlin/dev/thecodewarrior/hooked/Hooked.kt index 4dead33..d3f2c29 100644 --- a/src/main/kotlin/dev/thecodewarrior/hooked/Hooked.kt +++ b/src/main/kotlin/dev/thecodewarrior/hooked/Hooked.kt @@ -21,6 +21,7 @@ import net.fabricmc.api.ModInitializer import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking +import net.fabricmc.fabric.api.entity.event.v1.ServerEntityWorldChangeEvents import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder import net.fabricmc.fabric.api.event.registry.RegistryAttribute import net.fabricmc.fabric.api.gamerule.v1.GameRuleFactory @@ -28,7 +29,6 @@ import net.fabricmc.fabric.api.gamerule.v1.GameRuleRegistry import net.fabricmc.fabric.api.networking.v1.PacketByteBufs import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking import net.fabricmc.fabric.api.resource.ResourceManagerHelper -import net.fabricmc.fabric.api.tag.TagFactory import net.minecraft.client.gui.screen.Screen import net.minecraft.entity.player.PlayerEntity import net.minecraft.network.PacketByteBuf @@ -37,6 +37,7 @@ import net.minecraft.server.network.ServerPlayerEntity import net.minecraft.sound.SoundEvent import net.minecraft.stat.StatFormatter import net.minecraft.stat.Stats +import net.minecraft.tag.TagKey import net.minecraft.util.Identifier import net.minecraft.util.registry.DefaultedRegistry import net.minecraft.util.registry.Registry @@ -59,7 +60,9 @@ object Hooked { registerStats() registerSounds() registerNetworking() - ServerHookProcessor.registerEvents() + ServerEntityWorldChangeEvents.AFTER_PLAYER_CHANGE_WORLD.register { player, _, _ -> + player.hookData().syncStatus.forceFullSyncToClient = true + } Rules // static initializer registers the gamerule Tags // static initializer registers tags } @@ -189,8 +192,8 @@ object Hooked { } object Tags { - val SOLID_BLOCKS = TagFactory.BLOCK.create(Identifier("hooked:solid_blocks")) - val IGNORE_BLOCKS = TagFactory.BLOCK.create(Identifier("hooked:ignore_blocks")) + val SOLID_BLOCKS = TagKey.of(Registry.BLOCK_KEY, Identifier("hooked:solid_blocks")) + val IGNORE_BLOCKS = TagKey.of(Registry.BLOCK_KEY, Identifier("hooked:ignore_blocks")) } object Components : EntityComponentInitializer { diff --git a/src/main/kotlin/dev/thecodewarrior/hooked/client/Keybinds.kt b/src/main/kotlin/dev/thecodewarrior/hooked/client/Keybinds.kt index e5a00c4..b6fee64 100644 --- a/src/main/kotlin/dev/thecodewarrior/hooked/client/Keybinds.kt +++ b/src/main/kotlin/dev/thecodewarrior/hooked/client/Keybinds.kt @@ -20,7 +20,7 @@ object Keybinds { var doubleJumpTimer = 0 fun tick(client: MinecraftClient) { - val jumpDown = Client.minecraft.options.keyJump.isPressed + val jumpDown = Client.minecraft.options.jumpKey.isPressed val jumpPressed = jumpDown && !jumpWasDown jumpWasDown = jumpDown @@ -28,7 +28,7 @@ object Keybinds { val data = player.hookData() if(data.type != HookType.NONE) { - val sneakPressed = Client.minecraft.options.keySneak.isPressed + val sneakPressed = Client.minecraft.options.sneakKey.isPressed if (FIRE.wasPressed()) { ClientHookProcessor.fireHook(player, data, player.eyePos, player.pitch, player.yaw, sneakPressed) while(FIRE.wasPressed()) { /* consume excess keypresses */ } diff --git a/src/main/kotlin/dev/thecodewarrior/hooked/client/renderer/SimpleHookRenderer.kt b/src/main/kotlin/dev/thecodewarrior/hooked/client/renderer/SimpleHookRenderer.kt index 20849ac..595c14e 100644 --- a/src/main/kotlin/dev/thecodewarrior/hooked/client/renderer/SimpleHookRenderer.kt +++ b/src/main/kotlin/dev/thecodewarrior/hooked/client/renderer/SimpleHookRenderer.kt @@ -219,8 +219,8 @@ abstract class SimpleHookRenderer(val type: HookType): private fun loadModel(manager: ResourceManager): ReloadData { var model = try { - manager.getResource(modelLocation).use { - ObjReader.read(it.inputStream) + manager.getResource(modelLocation).get().inputStream.use { + ObjReader.read(it) } } catch (e: IOException) { Objs.create() diff --git a/src/main/kotlin/dev/thecodewarrior/hooked/hook/HookPlayerController.kt b/src/main/kotlin/dev/thecodewarrior/hooked/hook/HookPlayerController.kt index 96acde0..a84921d 100644 --- a/src/main/kotlin/dev/thecodewarrior/hooked/hook/HookPlayerController.kt +++ b/src/main/kotlin/dev/thecodewarrior/hooked/hook/HookPlayerController.kt @@ -56,8 +56,8 @@ abstract class HookPlayerController { request.withBlockMode(Raycaster.BlockMode.COLLISION) .withBlockOverride { state, _, _ -> when { - Hooked.Tags.SOLID_BLOCKS.contains(state.block) -> VoxelShapes.fullCube() - Hooked.Tags.IGNORE_BLOCKS.contains(state.block) -> VoxelShapes.empty() + state.isIn(Hooked.Tags.SOLID_BLOCKS) -> VoxelShapes.fullCube() + state.isIn(Hooked.Tags.IGNORE_BLOCKS) -> VoxelShapes.empty() else -> null } } diff --git a/src/main/kotlin/dev/thecodewarrior/hooked/hook/ServerHookProcessor.kt b/src/main/kotlin/dev/thecodewarrior/hooked/hook/ServerHookProcessor.kt index bd96404..4037043 100644 --- a/src/main/kotlin/dev/thecodewarrior/hooked/hook/ServerHookProcessor.kt +++ b/src/main/kotlin/dev/thecodewarrior/hooked/hook/ServerHookProcessor.kt @@ -63,11 +63,11 @@ object ServerHookProcessor: CommonHookProcessor() { } } - fun registerEvents() { - ServerEntityWorldChangeEvents.AFTER_PLAYER_CHANGE_WORLD.register { player, _, _ -> - player.hookData().syncStatus.forceFullSyncToClient = true - } - } +// fun registerEvents() { +// ServerEntityWorldChangeEvents.AFTER_PLAYER_CHANGE_WORLD.register { player, _, _ -> +// player.hookData().syncStatus.forceFullSyncToClient = true +// } +// } fun fireHook( player: ServerPlayerEntity, diff --git a/src/main/kotlin/dev/thecodewarrior/hooked/item/HookItem.kt b/src/main/kotlin/dev/thecodewarrior/hooked/item/HookItem.kt index 615afbc..7c49ffe 100644 --- a/src/main/kotlin/dev/thecodewarrior/hooked/item/HookItem.kt +++ b/src/main/kotlin/dev/thecodewarrior/hooked/item/HookItem.kt @@ -5,9 +5,8 @@ import dev.thecodewarrior.hooked.capability.IHookItem import dev.thecodewarrior.hooked.hook.HookType import net.minecraft.client.item.TooltipContext import net.minecraft.item.ItemStack -import net.minecraft.text.KeybindText import net.minecraft.text.Text -import net.minecraft.text.TranslatableText +import net.minecraft.text.TranslatableTextContent import net.minecraft.util.Formatting import net.minecraft.world.World @@ -18,15 +17,15 @@ class HookItem(settings: Settings, override val hookType: HookType): TrinketItem tooltip: MutableList, context: TooltipContext ) { - tooltip.add(TranslatableText("$translationKey.tip")) + tooltip.add(Text.translatable("$translationKey.tip")) if (hasShiftDown()) { - val fireKeyName = KeybindText("key.hooked.fire").formatted(Formatting.BOLD) + val fireKeyName = Text.keybind("key.hooked.fire").formatted(Formatting.BOLD) tooltip.addAll(hookType.controlLangKeys.map { key -> - TranslatableText(key, fireKeyName).formatted(Formatting.GRAY) + Text.translatable(key, fireKeyName).formatted(Formatting.GRAY) }) } else { tooltip.add( - TranslatableText("hooked.controller.universal.controls.collapsed").formatted(Formatting.GRAY) + Text.translatable("hooked.controller.universal.controls.collapsed").formatted(Formatting.GRAY) ) } super.appendTooltip(stack, world, tooltip, context) diff --git a/src/main/kotlin/dev/thecodewarrior/hooked/util/ClientUtils.kt b/src/main/kotlin/dev/thecodewarrior/hooked/util/ClientUtils.kt index dc3042d..1fd717e 100644 --- a/src/main/kotlin/dev/thecodewarrior/hooked/util/ClientUtils.kt +++ b/src/main/kotlin/dev/thecodewarrior/hooked/util/ClientUtils.kt @@ -25,7 +25,7 @@ inline fun VertexConsumer.vertex(stack: MatrixStack, x: Number, y: Number, z: Nu val xf = x.toFloat() val yf = y.toFloat() val zf = z.toFloat() - val matrix = mixinCast(stack.peek().model) + val matrix = mixinCast(stack.peek().positionMatrix) return this.vertex( matrix.transformX(xf, yf, zf).toDouble(), matrix.transformY(xf, yf, zf).toDouble(), @@ -37,7 +37,7 @@ fun VertexConsumer.vertex(stack: MatrixStack, v: Vec3d): VertexConsumer { val xf = v.x.toFloat() val yf = v.y.toFloat() val zf = v.z.toFloat() - val matrix = mixinCast(stack.peek().model) + val matrix = mixinCast(stack.peek().positionMatrix) return this.vertex( matrix.transformX(xf, yf, zf).toDouble(), matrix.transformY(xf, yf, zf).toDouble(), @@ -50,7 +50,7 @@ inline fun VertexConsumer.normal(stack: MatrixStack, x: Number, y: Number, z: Nu val xf = x.toFloat() val yf = y.toFloat() val zf = z.toFloat() - val matrix = mixinCast(stack.peek().normal) + val matrix = mixinCast(stack.peek().normalMatrix) return this.normal( matrix.transformX(xf, yf, zf), matrix.transformY(xf, yf, zf), @@ -63,7 +63,7 @@ fun VertexConsumer.normal(stack: MatrixStack, v: Vec3d): VertexConsumer { val xf = v.x.toFloat() val yf = v.y.toFloat() val zf = v.z.toFloat() - val matrix = mixinCast(stack.peek().normal) + val matrix = mixinCast(stack.peek().normalMatrix) return this.normal( matrix.transformX(xf, yf, zf), matrix.transformY(xf, yf, zf), diff --git a/src/main/kotlin/dev/thecodewarrior/hooked/util/JumpHeightUtil.kt b/src/main/kotlin/dev/thecodewarrior/hooked/util/JumpHeightUtil.kt index 5e315a8..280f6e0 100644 --- a/src/main/kotlin/dev/thecodewarrior/hooked/util/JumpHeightUtil.kt +++ b/src/main/kotlin/dev/thecodewarrior/hooked/util/JumpHeightUtil.kt @@ -4,7 +4,6 @@ import com.teamwizardry.librarianlib.core.util.vec import net.minecraft.block.ShapeContext import net.minecraft.entity.Entity import net.minecraft.entity.player.PlayerEntity -import net.minecraft.util.collection.ReusableStream import net.minecraft.util.function.BooleanBiFunction import net.minecraft.util.math.Box import net.minecraft.util.math.Vec3d @@ -28,23 +27,21 @@ object JumpHeightUtil { movement: Vec3d, maxHeight: Double ): Vec3d { - val shapeContext = ShapeContext.of(player) val voxelShape: VoxelShape = player.world.worldBorder.asVoxelShape() - val stream = if (VoxelShapes.matchesAnywhere( + val list: List = if (VoxelShapes.matchesAnywhere( voxelShape, VoxelShapes.cuboid(box.contract(1.0E-7)), BooleanBiFunction.AND ) - ) Stream.empty() else Stream.of(voxelShape) - val stream2: Stream = player.world.getEntityCollisions(player, box.stretch(movement), { true }) - val reusableStream: ReusableStream = ReusableStream(Stream.concat(stream2, stream)) + ) emptyList() else listOf(voxelShape) + val list2: List = player.world.getEntityCollisions(player, box.stretch(movement)) + val finalList: List = list + list2 val horizontal = if (movement.lengthSquared() == 0.0) movement else Entity.adjustMovementForCollisions( player, movement, box, player.world, - shapeContext, - reusableStream + finalList ) val collidedX = movement.x != horizontal.x val collidedZ = movement.z != horizontal.z @@ -54,16 +51,14 @@ object JumpHeightUtil { Vec3d(movement.x, maxHeight, movement.z), box, player.world, - shapeContext, - reusableStream + finalList ) val ceiling = Entity.adjustMovementForCollisions( player, Vec3d(0.0, maxHeight, 0.0), box.stretch(movement.x, 0.0, movement.z), player.world, - shapeContext, - reusableStream + finalList ) if (ceiling.y < maxHeight) { val ceilingHorizontal = Entity.adjustMovementForCollisions( @@ -71,8 +66,7 @@ object JumpHeightUtil { Vec3d(movement.x, 0.0, movement.z), box.offset(ceiling), player.world, - shapeContext, - reusableStream + finalList ).add(ceiling) if (ceilingHorizontal.horizontalLengthSquared() > rising.horizontalLengthSquared()) { rising = ceilingHorizontal @@ -85,8 +79,7 @@ object JumpHeightUtil { Vec3d(0.0, -rising.y + movement.y, 0.0), box.offset(rising), player.world, - shapeContext, - reusableStream + finalList ) ) } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 467009d..bf2652c 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -23,19 +23,19 @@ "main": [ { "adapter": "kotlin", - "value": "dev.thecodewarrior.hooked.Hooked\$CommonInitializer" + "value": "dev.thecodewarrior.hooked.Hooked\u0024CommonInitializer" } ], "client": [ { "adapter": "kotlin", - "value": "dev.thecodewarrior.hooked.Hooked\$ClientInitializer" + "value": "dev.thecodewarrior.hooked.Hooked\u0024ClientInitializer" } ], "cardinal-components": [ { "adapter": "kotlin", - "value": "dev.thecodewarrior.hooked.Hooked\$Components" + "value": "dev.thecodewarrior.hooked.Hooked\u0024Components" } ] }, @@ -45,11 +45,14 @@ "depends": { "fabric": "*", - "fabric-language-kotlin": ">=1.6.4+kotlin.1.5.30", - "minecraft": "1.17.x", + "fabric-language-kotlin": ">=1.9.1+kotlin.1.8.10", + "minecraft": "1.19.2", "java": ">=16", "liblib-core": ">=5.0.0-alpha.10", - "trinkets": "3.0.4", + "liblib-glitter": ">=5.0.0-alpha.10", + "liblib-etcetera": ">=5.0.0-alpha.10", + "liblib-mosaic": ">=5.0.0-alpha.10", + "trinkets": ">=3.4.0", "fabric-key-binding-api-v1": "*" }, "custom": {