diff --git a/viafabric-mc114/src/main/java/com/viaversion/fabric/mc114/platform/VFLoader.java b/viafabric-mc114/src/main/java/com/viaversion/fabric/mc114/platform/VFLoader.java index 2de8e61..5a32364 100644 --- a/viafabric-mc114/src/main/java/com/viaversion/fabric/mc114/platform/VFLoader.java +++ b/viafabric-mc114/src/main/java/com/viaversion/fabric/mc114/platform/VFLoader.java @@ -2,6 +2,8 @@ package com.viaversion.fabric.mc114.platform; import com.viaversion.fabric.mc114.providers.VRHandItemProvider; import com.viaversion.fabric.mc114.providers.FabricVersionProvider; +import com.viaversion.fabric.mc114.providers.VRPlayerLookTargetProvider; +import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.PlayerLookTargetProvider; import net.fabricmc.api.EnvType; import net.fabricmc.loader.api.FabricLoader; import com.viaversion.viaversion.api.Via; @@ -24,6 +26,9 @@ public class VFLoader implements ViaPlatformLoader { } Via.getManager().getProviders().use(HandItemProvider.class, handProvider); } + if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) { + Via.getManager().getProviders().use(PlayerLookTargetProvider.class, new VRPlayerLookTargetProvider()); + } } @Override diff --git a/viafabric-mc114/src/main/java/com/viaversion/fabric/mc114/providers/VRPlayerLookTargetProvider.java b/viafabric-mc114/src/main/java/com/viaversion/fabric/mc114/providers/VRPlayerLookTargetProvider.java new file mode 100644 index 0000000..38784ab --- /dev/null +++ b/viafabric-mc114/src/main/java/com/viaversion/fabric/mc114/providers/VRPlayerLookTargetProvider.java @@ -0,0 +1,24 @@ +package com.viaversion.fabric.mc114.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.PlayerLookTargetProvider; +import net.minecraft.client.MinecraftClient; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.hit.HitResult; +import net.minecraft.util.math.BlockPos; + +public class VRPlayerLookTargetProvider extends PlayerLookTargetProvider { + + @Override + public Position getPlayerLookTarget(UserConnection info) { + if (!info.isClientSide()) return null; + + final HitResult crosshairTarget = MinecraftClient.getInstance().crosshairTarget; + if (crosshairTarget instanceof BlockHitResult) { + final BlockPos pos = ((BlockHitResult) crosshairTarget).getBlockPos(); + return new Position(pos.getX(), pos.getY(), pos.getZ()); + } + return null; + } +} diff --git a/viafabric-mc115/src/main/java/com/viaversion/fabric/mc115/platform/VFLoader.java b/viafabric-mc115/src/main/java/com/viaversion/fabric/mc115/platform/VFLoader.java index c1d196d..72a93e5 100644 --- a/viafabric-mc115/src/main/java/com/viaversion/fabric/mc115/platform/VFLoader.java +++ b/viafabric-mc115/src/main/java/com/viaversion/fabric/mc115/platform/VFLoader.java @@ -2,6 +2,8 @@ package com.viaversion.fabric.mc115.platform; import com.viaversion.fabric.mc115.providers.VRHandItemProvider; import com.viaversion.fabric.mc115.providers.FabricVersionProvider; +import com.viaversion.fabric.mc115.providers.VRPlayerLookTargetProvider; +import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.PlayerLookTargetProvider; import net.fabricmc.api.EnvType; import net.fabricmc.loader.api.FabricLoader; import com.viaversion.viaversion.api.Via; @@ -24,6 +26,9 @@ public class VFLoader implements ViaPlatformLoader { } Via.getManager().getProviders().use(HandItemProvider.class, handProvider); } + if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) { + Via.getManager().getProviders().use(PlayerLookTargetProvider.class, new VRPlayerLookTargetProvider()); + } } @Override diff --git a/viafabric-mc115/src/main/java/com/viaversion/fabric/mc115/providers/VRPlayerLookTargetProvider.java b/viafabric-mc115/src/main/java/com/viaversion/fabric/mc115/providers/VRPlayerLookTargetProvider.java new file mode 100644 index 0000000..5d112ec --- /dev/null +++ b/viafabric-mc115/src/main/java/com/viaversion/fabric/mc115/providers/VRPlayerLookTargetProvider.java @@ -0,0 +1,24 @@ +package com.viaversion.fabric.mc115.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.PlayerLookTargetProvider; +import net.minecraft.client.MinecraftClient; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.hit.HitResult; +import net.minecraft.util.math.BlockPos; + +public class VRPlayerLookTargetProvider extends PlayerLookTargetProvider { + + @Override + public Position getPlayerLookTarget(UserConnection info) { + if (!info.isClientSide()) return null; + + final HitResult crosshairTarget = MinecraftClient.getInstance().crosshairTarget; + if (crosshairTarget instanceof BlockHitResult) { + final BlockPos pos = ((BlockHitResult) crosshairTarget).getBlockPos(); + return new Position(pos.getX(), pos.getY(), pos.getZ()); + } + return null; + } +} diff --git a/viafabric-mc116/src/main/java/com/viaversion/fabric/mc116/platform/VFLoader.java b/viafabric-mc116/src/main/java/com/viaversion/fabric/mc116/platform/VFLoader.java index 4279374..0b79357 100644 --- a/viafabric-mc116/src/main/java/com/viaversion/fabric/mc116/platform/VFLoader.java +++ b/viafabric-mc116/src/main/java/com/viaversion/fabric/mc116/platform/VFLoader.java @@ -2,6 +2,10 @@ package com.viaversion.fabric.mc116.platform; import com.viaversion.fabric.mc116.providers.VRHandItemProvider; import com.viaversion.fabric.mc116.providers.FabricVersionProvider; +import com.viaversion.fabric.mc116.providers.VRPlayerAbilitiesProvider; +import com.viaversion.fabric.mc116.providers.VRPlayerLookTargetProvider; +import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.PlayerLookTargetProvider; +import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.provider.PlayerAbilitiesProvider; import net.fabricmc.api.EnvType; import net.fabricmc.loader.api.FabricLoader; import com.viaversion.viaversion.api.Via; @@ -24,6 +28,10 @@ public class VFLoader implements ViaPlatformLoader { } Via.getManager().getProviders().use(HandItemProvider.class, handProvider); } + if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) { + Via.getManager().getProviders().use(PlayerAbilitiesProvider.class, new VRPlayerAbilitiesProvider()); + Via.getManager().getProviders().use(PlayerLookTargetProvider.class, new VRPlayerLookTargetProvider()); + } } @Override diff --git a/viafabric-mc116/src/main/java/com/viaversion/fabric/mc116/providers/VRPlayerAbilitiesProvider.java b/viafabric-mc116/src/main/java/com/viaversion/fabric/mc116/providers/VRPlayerAbilitiesProvider.java new file mode 100644 index 0000000..b496db7 --- /dev/null +++ b/viafabric-mc116/src/main/java/com/viaversion/fabric/mc116/providers/VRPlayerAbilitiesProvider.java @@ -0,0 +1,22 @@ +package com.viaversion.fabric.mc116.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.provider.PlayerAbilitiesProvider; +import net.minecraft.client.MinecraftClient; + +public class VRPlayerAbilitiesProvider extends PlayerAbilitiesProvider { + + @Override + public float getFlyingSpeed(UserConnection connection) { + if (!connection.isClientSide()) return super.getFlyingSpeed(connection); + + return MinecraftClient.getInstance().player.abilities.getFlySpeed(); + } + + @Override + public float getWalkingSpeed(UserConnection connection) { + if (!connection.isClientSide()) return super.getWalkingSpeed(connection); + + return MinecraftClient.getInstance().player.abilities.getWalkSpeed(); + } +} diff --git a/viafabric-mc116/src/main/java/com/viaversion/fabric/mc116/providers/VRPlayerLookTargetProvider.java b/viafabric-mc116/src/main/java/com/viaversion/fabric/mc116/providers/VRPlayerLookTargetProvider.java new file mode 100644 index 0000000..8120adc --- /dev/null +++ b/viafabric-mc116/src/main/java/com/viaversion/fabric/mc116/providers/VRPlayerLookTargetProvider.java @@ -0,0 +1,24 @@ +package com.viaversion.fabric.mc116.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.PlayerLookTargetProvider; +import net.minecraft.client.MinecraftClient; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.hit.HitResult; +import net.minecraft.util.math.BlockPos; + +public class VRPlayerLookTargetProvider extends PlayerLookTargetProvider { + + @Override + public Position getPlayerLookTarget(UserConnection info) { + if (!info.isClientSide()) return null; + + final HitResult crosshairTarget = MinecraftClient.getInstance().crosshairTarget; + if (crosshairTarget instanceof BlockHitResult) { + final BlockPos pos = ((BlockHitResult) crosshairTarget).getBlockPos(); + return new Position(pos.getX(), pos.getY(), pos.getZ()); + } + return null; + } +} diff --git a/viafabric-mc117/src/main/java/com/viaversion/fabric/mc117/platform/VFLoader.java b/viafabric-mc117/src/main/java/com/viaversion/fabric/mc117/platform/VFLoader.java index ab55fb9..e272118 100644 --- a/viafabric-mc117/src/main/java/com/viaversion/fabric/mc117/platform/VFLoader.java +++ b/viafabric-mc117/src/main/java/com/viaversion/fabric/mc117/platform/VFLoader.java @@ -2,6 +2,10 @@ package com.viaversion.fabric.mc117.platform; import com.viaversion.fabric.mc117.providers.VRHandItemProvider; import com.viaversion.fabric.mc117.providers.FabricVersionProvider; +import com.viaversion.fabric.mc117.providers.VRPlayerAbilitiesProvider; +import com.viaversion.fabric.mc117.providers.VRPlayerLookTargetProvider; +import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.PlayerLookTargetProvider; +import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.provider.PlayerAbilitiesProvider; import net.fabricmc.api.EnvType; import net.fabricmc.loader.api.FabricLoader; import com.viaversion.viaversion.api.Via; @@ -24,6 +28,10 @@ public class VFLoader implements ViaPlatformLoader { } Via.getManager().getProviders().use(HandItemProvider.class, handProvider); } + if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) { + Via.getManager().getProviders().use(PlayerAbilitiesProvider.class, new VRPlayerAbilitiesProvider()); + Via.getManager().getProviders().use(PlayerLookTargetProvider.class, new VRPlayerLookTargetProvider()); + } } @Override diff --git a/viafabric-mc117/src/main/java/com/viaversion/fabric/mc117/providers/VRPlayerAbilitiesProvider.java b/viafabric-mc117/src/main/java/com/viaversion/fabric/mc117/providers/VRPlayerAbilitiesProvider.java new file mode 100644 index 0000000..2e9e935 --- /dev/null +++ b/viafabric-mc117/src/main/java/com/viaversion/fabric/mc117/providers/VRPlayerAbilitiesProvider.java @@ -0,0 +1,22 @@ +package com.viaversion.fabric.mc117.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.provider.PlayerAbilitiesProvider; +import net.minecraft.client.MinecraftClient; + +public class VRPlayerAbilitiesProvider extends PlayerAbilitiesProvider { + + @Override + public float getFlyingSpeed(UserConnection connection) { + if (!connection.isClientSide()) return super.getFlyingSpeed(connection); + + return MinecraftClient.getInstance().player.getAbilities().getFlySpeed(); + } + + @Override + public float getWalkingSpeed(UserConnection connection) { + if (!connection.isClientSide()) return super.getWalkingSpeed(connection); + + return MinecraftClient.getInstance().player.getAbilities().getWalkSpeed(); + } +} diff --git a/viafabric-mc117/src/main/java/com/viaversion/fabric/mc117/providers/VRPlayerLookTargetProvider.java b/viafabric-mc117/src/main/java/com/viaversion/fabric/mc117/providers/VRPlayerLookTargetProvider.java new file mode 100644 index 0000000..c7a044e --- /dev/null +++ b/viafabric-mc117/src/main/java/com/viaversion/fabric/mc117/providers/VRPlayerLookTargetProvider.java @@ -0,0 +1,24 @@ +package com.viaversion.fabric.mc117.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.PlayerLookTargetProvider; +import net.minecraft.client.MinecraftClient; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.hit.HitResult; +import net.minecraft.util.math.BlockPos; + +public class VRPlayerLookTargetProvider extends PlayerLookTargetProvider { + + @Override + public Position getPlayerLookTarget(UserConnection info) { + if (!info.isClientSide()) return null; + + final HitResult crosshairTarget = MinecraftClient.getInstance().crosshairTarget; + if (crosshairTarget instanceof BlockHitResult) { + final BlockPos pos = ((BlockHitResult) crosshairTarget).getBlockPos(); + return new Position(pos.getX(), pos.getY(), pos.getZ()); + } + return null; + } +} diff --git a/viafabric-mc118/src/main/java/com/viaversion/fabric/mc118/platform/VFLoader.java b/viafabric-mc118/src/main/java/com/viaversion/fabric/mc118/platform/VFLoader.java index 5522eeb..cd14ae7 100644 --- a/viafabric-mc118/src/main/java/com/viaversion/fabric/mc118/platform/VFLoader.java +++ b/viafabric-mc118/src/main/java/com/viaversion/fabric/mc118/platform/VFLoader.java @@ -2,6 +2,10 @@ package com.viaversion.fabric.mc118.platform; import com.viaversion.fabric.mc118.providers.VRHandItemProvider; import com.viaversion.fabric.mc118.providers.FabricVersionProvider; +import com.viaversion.fabric.mc118.providers.VRPlayerAbilitiesProvider; +import com.viaversion.fabric.mc118.providers.VRPlayerLookTargetProvider; +import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.PlayerLookTargetProvider; +import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.provider.PlayerAbilitiesProvider; import net.fabricmc.api.EnvType; import net.fabricmc.loader.api.FabricLoader; import com.viaversion.viaversion.api.Via; @@ -24,6 +28,10 @@ public class VFLoader implements ViaPlatformLoader { } Via.getManager().getProviders().use(HandItemProvider.class, handProvider); } + if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) { + Via.getManager().getProviders().use(PlayerAbilitiesProvider.class, new VRPlayerAbilitiesProvider()); + Via.getManager().getProviders().use(PlayerLookTargetProvider.class, new VRPlayerLookTargetProvider()); + } } @Override diff --git a/viafabric-mc118/src/main/java/com/viaversion/fabric/mc118/providers/VRPlayerAbilitiesProvider.java b/viafabric-mc118/src/main/java/com/viaversion/fabric/mc118/providers/VRPlayerAbilitiesProvider.java new file mode 100644 index 0000000..04272cc --- /dev/null +++ b/viafabric-mc118/src/main/java/com/viaversion/fabric/mc118/providers/VRPlayerAbilitiesProvider.java @@ -0,0 +1,22 @@ +package com.viaversion.fabric.mc118.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.provider.PlayerAbilitiesProvider; +import net.minecraft.client.MinecraftClient; + +public class VRPlayerAbilitiesProvider extends PlayerAbilitiesProvider { + + @Override + public float getFlyingSpeed(UserConnection connection) { + if (!connection.isClientSide()) return super.getFlyingSpeed(connection); + + return MinecraftClient.getInstance().player.getAbilities().getFlySpeed(); + } + + @Override + public float getWalkingSpeed(UserConnection connection) { + if (!connection.isClientSide()) return super.getWalkingSpeed(connection); + + return MinecraftClient.getInstance().player.getAbilities().getWalkSpeed(); + } +} diff --git a/viafabric-mc118/src/main/java/com/viaversion/fabric/mc118/providers/VRPlayerLookTargetProvider.java b/viafabric-mc118/src/main/java/com/viaversion/fabric/mc118/providers/VRPlayerLookTargetProvider.java new file mode 100644 index 0000000..29622a6 --- /dev/null +++ b/viafabric-mc118/src/main/java/com/viaversion/fabric/mc118/providers/VRPlayerLookTargetProvider.java @@ -0,0 +1,24 @@ +package com.viaversion.fabric.mc118.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.PlayerLookTargetProvider; +import net.minecraft.client.MinecraftClient; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.hit.HitResult; +import net.minecraft.util.math.BlockPos; + +public class VRPlayerLookTargetProvider extends PlayerLookTargetProvider { + + @Override + public Position getPlayerLookTarget(UserConnection info) { + if (!info.isClientSide()) return null; + + final HitResult crosshairTarget = MinecraftClient.getInstance().crosshairTarget; + if (crosshairTarget instanceof BlockHitResult) { + final BlockPos pos = ((BlockHitResult) crosshairTarget).getBlockPos(); + return new Position(pos.getX(), pos.getY(), pos.getZ()); + } + return null; + } +} diff --git a/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/platform/VFLoader.java b/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/platform/VFLoader.java index 14a2e10..9e6a322 100644 --- a/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/platform/VFLoader.java +++ b/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/platform/VFLoader.java @@ -2,6 +2,10 @@ package com.viaversion.fabric.mc119.platform; import com.viaversion.fabric.mc119.providers.VRHandItemProvider; import com.viaversion.fabric.mc119.providers.FabricVersionProvider; +import com.viaversion.fabric.mc119.providers.VRPlayerAbilitiesProvider; +import com.viaversion.fabric.mc119.providers.VRPlayerLookTargetProvider; +import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.PlayerLookTargetProvider; +import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.provider.PlayerAbilitiesProvider; import net.fabricmc.api.EnvType; import net.fabricmc.loader.api.FabricLoader; import com.viaversion.viaversion.api.Via; @@ -24,6 +28,10 @@ public class VFLoader implements ViaPlatformLoader { } Via.getManager().getProviders().use(HandItemProvider.class, handProvider); } + if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) { + Via.getManager().getProviders().use(PlayerAbilitiesProvider.class, new VRPlayerAbilitiesProvider()); + Via.getManager().getProviders().use(PlayerLookTargetProvider.class, new VRPlayerLookTargetProvider()); + } } @Override diff --git a/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/providers/VRPlayerAbilitiesProvider.java b/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/providers/VRPlayerAbilitiesProvider.java new file mode 100644 index 0000000..b11a47c --- /dev/null +++ b/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/providers/VRPlayerAbilitiesProvider.java @@ -0,0 +1,22 @@ +package com.viaversion.fabric.mc119.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.provider.PlayerAbilitiesProvider; +import net.minecraft.client.MinecraftClient; + +public class VRPlayerAbilitiesProvider extends PlayerAbilitiesProvider { + + @Override + public float getFlyingSpeed(UserConnection connection) { + if (!connection.isClientSide()) return super.getFlyingSpeed(connection); + + return MinecraftClient.getInstance().player.getAbilities().getFlySpeed(); + } + + @Override + public float getWalkingSpeed(UserConnection connection) { + if (!connection.isClientSide()) return super.getWalkingSpeed(connection); + + return MinecraftClient.getInstance().player.getAbilities().getWalkSpeed(); + } +} diff --git a/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/providers/VRPlayerLookTargetProvider.java b/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/providers/VRPlayerLookTargetProvider.java new file mode 100644 index 0000000..07c954b --- /dev/null +++ b/viafabric-mc119/src/main/java/com/viaversion/fabric/mc119/providers/VRPlayerLookTargetProvider.java @@ -0,0 +1,22 @@ +package com.viaversion.fabric.mc119.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.PlayerLookTargetProvider; +import net.minecraft.client.MinecraftClient; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; + +public class VRPlayerLookTargetProvider extends PlayerLookTargetProvider { + + @Override + public Position getPlayerLookTarget(UserConnection info) { + if (!info.isClientSide()) return null; + + if (MinecraftClient.getInstance().crosshairTarget instanceof BlockHitResult blockHitResult) { + final BlockPos pos = blockHitResult.getBlockPos(); + return new Position(pos.getX(), pos.getY(), pos.getZ()); + } + return null; + } +} diff --git a/viafabric-mc120/src/main/java/com/viaversion/fabric/mc120/platform/VFLoader.java b/viafabric-mc120/src/main/java/com/viaversion/fabric/mc120/platform/VFLoader.java index 24eadce..97f8e8d 100644 --- a/viafabric-mc120/src/main/java/com/viaversion/fabric/mc120/platform/VFLoader.java +++ b/viafabric-mc120/src/main/java/com/viaversion/fabric/mc120/platform/VFLoader.java @@ -2,6 +2,10 @@ package com.viaversion.fabric.mc120.platform; import com.viaversion.fabric.mc120.providers.VRHandItemProvider; import com.viaversion.fabric.mc120.providers.FabricVersionProvider; +import com.viaversion.fabric.mc120.providers.VRPlayerAbilitiesProvider; +import com.viaversion.fabric.mc120.providers.VRPlayerLookTargetProvider; +import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.PlayerLookTargetProvider; +import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.provider.PlayerAbilitiesProvider; import net.fabricmc.api.EnvType; import net.fabricmc.loader.api.FabricLoader; import com.viaversion.viaversion.api.Via; @@ -24,6 +28,10 @@ public class VFLoader implements ViaPlatformLoader { } Via.getManager().getProviders().use(HandItemProvider.class, handProvider); } + if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) { + Via.getManager().getProviders().use(PlayerAbilitiesProvider.class, new VRPlayerAbilitiesProvider()); + Via.getManager().getProviders().use(PlayerLookTargetProvider.class, new VRPlayerLookTargetProvider()); + } } @Override diff --git a/viafabric-mc120/src/main/java/com/viaversion/fabric/mc120/providers/VRPlayerAbilitiesProvider.java b/viafabric-mc120/src/main/java/com/viaversion/fabric/mc120/providers/VRPlayerAbilitiesProvider.java new file mode 100644 index 0000000..5b10236 --- /dev/null +++ b/viafabric-mc120/src/main/java/com/viaversion/fabric/mc120/providers/VRPlayerAbilitiesProvider.java @@ -0,0 +1,22 @@ +package com.viaversion.fabric.mc120.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.provider.PlayerAbilitiesProvider; +import net.minecraft.client.MinecraftClient; + +public class VRPlayerAbilitiesProvider extends PlayerAbilitiesProvider { + + @Override + public float getFlyingSpeed(UserConnection connection) { + if (!connection.isClientSide()) return super.getFlyingSpeed(connection); + + return MinecraftClient.getInstance().player.getAbilities().getFlySpeed(); + } + + @Override + public float getWalkingSpeed(UserConnection connection) { + if (!connection.isClientSide()) return super.getWalkingSpeed(connection); + + return MinecraftClient.getInstance().player.getAbilities().getWalkSpeed(); + } +} diff --git a/viafabric-mc120/src/main/java/com/viaversion/fabric/mc120/providers/VRPlayerLookTargetProvider.java b/viafabric-mc120/src/main/java/com/viaversion/fabric/mc120/providers/VRPlayerLookTargetProvider.java new file mode 100644 index 0000000..dcae364 --- /dev/null +++ b/viafabric-mc120/src/main/java/com/viaversion/fabric/mc120/providers/VRPlayerLookTargetProvider.java @@ -0,0 +1,22 @@ +package com.viaversion.fabric.mc120.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.PlayerLookTargetProvider; +import net.minecraft.client.MinecraftClient; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; + +public class VRPlayerLookTargetProvider extends PlayerLookTargetProvider { + + @Override + public Position getPlayerLookTarget(UserConnection info) { + if (!info.isClientSide()) return null; + + if (MinecraftClient.getInstance().crosshairTarget instanceof BlockHitResult blockHitResult) { + final BlockPos pos = blockHitResult.getBlockPos(); + return new Position(pos.getX(), pos.getY(), pos.getZ()); + } + return null; + } +}