Not sure if this classifies as a bug, but it felt like the most fitting option.
Current behavior:
I really like your mod, so I wanted to use it with Macaw's Paths and Pavings mod. Sadly there's no increased speed when moving over the paths or pavings from Macaw's mod after adding the path and paving blocks to the configuration file. The tooltip for the increased speed does show up on the paths and pavings blocks in REI so I'm pretty sure the issue isn't with the configuration.
I also tried this on the outdated 1.18.2 version and the same behavior occurs with the only difference being that in 1.18.2 the increased speed applies when jumping, probably because the character enters the air block above during the jump. In 1.19.2 the increased speed doesn't apply under any circumstances including jumping.
Steps to reproduce:
Add the path and pavings blocks from Macaw's mod to the config, for example the oak planks path block:
Currently Soul Sand, Slime, and other blocks that naturally slow you down don't have tooltips and adding them to the config just increases the slow effect that you get, would love to see the mod add support for showing the speed modifier for these blocks as well
And possibly add a "With Soul Speed" enchantment tooltip for Soul Sand and Soul Soil as well
When playing with high latency it becomes very apparent that the speed effect from blocks is handled as a server-side stat, as the speedy effect can appear to occur much later on the player's screen than when they touched the blocks.
Understandably this might not be an easy one to solve, just thought I'd put the suggestion out there!
It's becoming increasingly noticeable that the current configuration design just isn't expansible - several mods add path blocks that need to be manually defined in the file, each needing to also include a speed value and to be loaded for it to all work.
With that said, I'd like to suggest a somewhat radical design change; have the configuration file define a default speed value for blocks included in a new block tag associated with the mod.
This will make support much easier for modpack developers (and fellow mod developers) as a simple tag could be included via datapacks. Fine-control over block types could still be added if so desired by making use of subcategories (e.g. block_runner:quick_blocks/path), allowing the config to adjust the speed based on these categories, though I suspect a global setting may be good enough in most use cases!
Running on path blocks, different types of stone blocks (for example the patterned stone floors in dungeon crawl dungeons) etc. causes the fov to rapidly shudder forward and back regardless of whether FOV effects are switched off in the config.
Unless minecraft:dirt_path/#minecraft_stone_bricks is specified in the config files, the blocks use the predefined values (1.35/1.1) even if it's tagged with datapacks or with an empty config file.
There are logs related to BlockRunner but I think it's an old internal issue and not related:
```
[23:12:47] [Render thread/INFO]: Constructing common components for blockrunner:main
[23:12:47] [Render thread/INFO]: Loading client config for blockrunner
[23:12:48] [Render thread/INFO]: [STDERR]: org.objectweb.asm.tree.analysis.AnalyzerException: Error at instruction 49: Insufficient maximum stack size.
[23:12:48] [Render thread/INFO]: [STDERR]: at org.objectweb.asm.tree.analysis.Analyzer.analyze(Analyzer.java:279)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.util.Locals.generateLocalVariableTable(Locals.java:859)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.util.Locals.getGeneratedLocalVariableTable(Locals.java:828)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.util.Locals.getLocalVariableAt(Locals.java:782)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.util.Locals.getLocalVariableAt(Locals.java:752)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.util.Locals.getLocalsAt_0_9_2(Locals.java:696)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.util.Locals.getLocalsAt(Locals.java:338)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.mixin.injection.modify.LocalVariableDiscriminator$Context.initLocals(LocalVariableDiscriminator.java:154)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.mixin.injection.modify.LocalVariableDiscriminator$Context.(LocalVariableDiscriminator.java:148)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.mixin.injection.modify.ModifyVariableInjector$Context.(ModifyVariableInjector.java:71)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.mixin.injection.modify.ModifyVariableInjector.preInject(ModifyVariableInjector.java:159)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.mixin.injection.code.Injector.preInject(Injector.java:258)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.preInject(InjectionInfo.java:436)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.mixin.transformer.MixinTargetContext.applyInjections(MixinTargetContext.java:1370)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyInjections(MixinApplicatorStandard.java:1062)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMixin(MixinApplicatorStandard.java:402)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:327)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.mixin.transformer.TargetClassContext.apply(TargetClassContext.java:421)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:403)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:234)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:202)
[23:12:48] [Render thread/INFO]: [STDERR]: at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:422)
[23:12:48] [Render thread/INFO]: [STDERR]: at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:323)
[23:12:48] [Render thread/INFO]: [STDERR]: at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:218)
[23:12:48] [Render thread/INFO]: [STDERR]: at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:119)
[23:12:48] [Render thread/INFO]: [STDERR]: at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
[23:12:48] [Render thread/INFO]: [STDERR]: at java.base/java.lang.Class.forName0(Native Method)
[23:12:48] [Render thread/INFO]: [STDERR]: at java.base/java.lang.Class.forName(Class.java:375)
[23:12:48] [Render thread/INFO]: [STDERR]: at jdk.proxy2/jdk.proxy2.$Proxy134.(Unknown Source)
[23:12:48] [Render thread/INFO]: [STDERR]: at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[23:12:48] [Render thread/INFO]: [STDERR]: at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
[23:12:48] [Render thread/INFO]: [STDERR]: at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[23:12:48] [Render thread/INFO]: [STDERR]: at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
[23:12:48] [Render thread/INFO]: [STDERR]: at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
[23:12:48] [Render thread/INFO]: [STDERR]: at java.base/java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1053)
[23:12:48] [Render thread/INFO]: [STDERR]: at java.base/java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1039)
[23:12:48] [Render thread/INFO]: [STDERR]: at fuzs.puzzleslib.api.event.v1.core.FabricEventFactory.lambda$createResult$1(FabricEventFactory.java:50)
[23:12:48] [Render thread/INFO]: [STDERR]: at net.fabricmc.fabric.impl.base.event.ArrayBackedEvent.update(ArrayBackedEvent.java:54)
[23:12:48] [Render thread/INFO]: [STDERR]: at net.fabricmc.fabric.impl.base.event.ArrayBackedEvent.(ArrayBackedEvent.java:50)
[23:12:48] [Render thread/INFO]: [STDERR]: at net.fabricmc.fabric.impl.base.event.EventFactoryImpl.createArrayBacked(EventFactoryImpl.java:47)
[23:12:48] [Render thread/INFO]: [STDERR]: at net.fabricmc.fabric.api.event.EventFactory.createArrayBacked(EventFactory.java:44)
[23:12:48] [Render thread/INFO]: [STDERR]: at fuzs.puzzleslib.api.event.v1.core.FabricEventFactory.createResult(FabricEventFactory.java:50)
[23:12:48] [Render thread/INFO]: [STDERR]: at fuzs.puzzleslib.api.client.event.v1.FabricClientEvents.(FabricClientEvents.java:77)
[23:12:48] [Render thread/INFO]: [STDERR]: at fuzs.puzzleslib.impl.client.event.FabricClientEventInvokers.register(FabricClientEventInvokers.java:101)
[23:12:48] [Render thread/INFO]: [STDERR]: at fuzs.puzzleslib.impl.event.FabricEventInvokerRegistryImpl.register(FabricEventInvokerRegistryImpl.java:364)
[23:12:48] [Render thread/INFO]: [STDERR]: at fuzs.puzzleslib.impl.core.FabricFactories.registerEventInvokers(FabricFactories.java:51)
[23:12:48] [Render thread/INFO]: [STDERR]: at fuzs.puzzleslib.impl.event.core.EventInvokerImpl.(EventInvokerImpl.java:17)
[23:12:48] [Render thread/INFO]: [STDERR]: at fuzs.puzzleslib.api.event.v1.core.EventInvoker.lambda$lookup$0(EventInvoker.java:41)
[23:12:48] [Render thread/INFO]: [STDERR]: at com.google.common.base.Suppliers$NonSerializableMemoizingSupplier.get(Suppliers.java:183)
[23:12:48] [Render thread/INFO]: [STDERR]: at fuzs.puzzleslib.api.event.v1.core.EventInvoker.lambda$lookup$1(EventInvoker.java:42)
[23:12:48] [Render thread/INFO]: [STDERR]: at fuzs.puzzleslib.api.event.v1.core.EventInvoker.register(EventInvoker.java:53)
[23:12:48] [Render thread/INFO]: [STDERR]: at fuzs.blockrunner.BlockRunner.registerHandlers(BlockRunner.java:36)
[23:12:48] [Render thread/INFO]: [STDERR]: at fuzs.blockrunner.BlockRunner.onConstructMod(BlockRunner.java:28)
[23:12:48] [Render thread/INFO]: [STDERR]: at fuzs.puzzleslib.impl.core.FabricModConstructor.registerHandlers(FabricModConstructor.java:38)
[23:12:48] [Render thread/INFO]: [STDERR]: at fuzs.puzzleslib.impl.core.FabricModConstructor.construct(FabricModConstructor.java:23)
[23:12:48] [Render thread/INFO]: [STDERR]: at fuzs.puzzleslib.impl.core.FabricFactories.constructMod(FabricFactories.java:21)
[23:12:48] [Render thread/INFO]: [STDERR]: at fuzs.puzzleslib.api.core.v1.ModConstructor.construct(ModConstructor.java:48)
[23:12:48] [Render thread/INFO]: [STDERR]: at fuzs.blockrunner.BlockRunnerFabric.onInitialize(BlockRunnerFabric.java:10)
[23:12:48] [Render thread/INFO]: [STDERR]: at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(FabricLoaderImpl.java:383)
[23:12:48] [Render thread/INFO]: [STDERR]: at net.fabricmc.loader.impl.game.minecraft.Hooks.startClient(Hooks.java:52)
[23:12:48] [Render thread/INFO]: [STDERR]: at net.minecraft.class_310.(class_310.java:458)
[23:12:48] [Render thread/INFO]: [STDERR]: at net.minecraft.client.main.Main.main(Main.java:211)
[23:12:48] [Render thread/INFO]: [STDERR]: at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:470)
[23:12:48] [Render thread/INFO]: [STDERR]: at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
[23:12:48] [Render thread/INFO]: [STDERR]: at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
[23:12:48] [Render thread/INFO]: [STDERR]: Caused by: java.lang.IndexOutOfBoundsException: Insufficient maximum stack size.
[23:12:48] [Render thread/INFO]: [STDERR]: at org.objectweb.asm.tree.analysis.Frame.push(Frame.java:273)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.objectweb.asm.tree.analysis.Frame.execute(Frame.java:326)
[23:12:48] [Render thread/INFO]: [STDERR]: at org.objectweb.asm.tree.analysis.Analyzer.analyze(Analyzer.java:171)
[23:12:48] [Render thread/INFO]: [STDERR]: ... 65 more
```
Block Runner apparently overrides the FOV Effect option, causing it to not work.
If using Block Runner, no matter what position the FOV effect slider is set to, the FOV effect will always be displayed in full effect, except when running over a path.
Changing the option in the mod to change the fov while running on a path does not change this behavior.
Setting the Dirt Path Slab block (extendedslabs:dirt_path_slab) from Extended Slabs + as a speedy block does not function when walking on the slab - stepping onto it, the view changes very briefly then returns to regular walking speed.
Double slabs of the same block work, and other regular slabs function just fine (it's exclusive to the dirt path slab).
Currently, I am able to add path blocks from Macaw's Paths and Pavings mod, and the speed bonus is visibly reflected in JEI but doesn't actually apply the speed bonus when walking on the paths.
I read up on the closed issues and found this exact issue was fixed in later versions, but those later versions aren't available on 1.18.2. Is it possible to backport that fix to 1.18.2 so we can have partial blocks affected by this mod?
Would love to see the path blocks from Macaws Paths and Pavings added officially with support for increased speed, cause having to add them all manually can be annoying