From 2d33e90f931770c218cf833b28d93a236e213389 Mon Sep 17 00:00:00 2001 From: abel1502 Date: Mon, 2 Jun 2025 00:59:22 +0300 Subject: [PATCH] Allow climbing freestanding chains and vines using spacebar --- .../com/hbm/main/ModEventHandlerClient.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index a2ee8b962..fc9d0041f 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -68,6 +68,7 @@ import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent; +import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.gameevent.TickEvent.ClientTickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent; @@ -86,6 +87,7 @@ import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderPlayer; +import net.minecraft.client.settings.GameSettings; import net.minecraft.client.settings.KeyBinding; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -1098,6 +1100,28 @@ public class ModEventHandlerClient { } } + @SideOnly(Side.CLIENT) + @SubscribeEvent + public void onPlayerTick(TickEvent.PlayerTickEvent event) { + EntityPlayer player = event.player; + + int x = MathHelper.floor_double(player.posX); + int y = MathHelper.floor_double(player.posY); + int z = MathHelper.floor_double(player.posZ); + Block b = player.worldObj.getBlock(x, y, z); + + // Support climbing freestanding vines and chains using spacebar + if ( + b.isLadder(player.worldObj, x, y, z, player) && + b.getCollisionBoundingBoxFromPool(player.worldObj, x, y, z) == null && + !player.capabilities.isFlying && + GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindJump) && + player.motionY < 0.15 + ) { + player.motionY = 0.15; + } + } + @SideOnly(Side.CLIENT) @SubscribeEvent(priority = EventPriority.LOW) public void onMouseClicked(InputEvent.MouseInputEvent event) {