I'm trying to make a mod where it uses a key binding to crawl and hold onto monkey bars and stuff like that, but I'm getting stuck on changing Steves "pose". I found a setPose() function but i cant figure out how to implement it in my code
package com.naxehr.parkourmod.events;
import com.naxehr.parkourmod.ParkourMod;
import com.naxehr.parkourmod.init.iteminit;
import com.naxehr.parkourmod.util.helpers.KeyBindings;
import net.minecraft.entity.Pose;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraftforge.client.event.InputEvent.KeyInputEvent;
import net.minecraftforge.client.event.RenderPlayerEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus;
@Mod.EventBusSubscriber(modid = ParkourMod.MOD_ID, bus = Bus.FORGE)
public class KeyInputHandler {
PlayerEntity player;
public void OnRenderPlayerPre(RenderPlayerEvent.Pre event) {
player = (PlayerEntity) event.getEntity();
}
@SubscribeEvent
public void onKeyInput(KeyInputEvent event) {
if (KeyBindings.crawl.isPressed()) {
if (player.getItemStackFromSlot(EquipmentSlotType.LEGS).getItem() == iteminit.parkour_knee_guard) {
player.setPose(Pose.SWIMMING);
}
}
if (KeyBindings.hold.isPressed()) {
if (player.getItemStackFromSlot(EquipmentSlotType.CHEST).getItem() == iteminit.parkour_gloves) {
player.setPose(Pose.SWIMMING);
}
}
}
}//end of my code
//Setpose command i found in Minecrafts Entity.class
protected void setPose(Pose p_213301_1_) {
this.dataManager.set(POSE, p_213301_1_);
}
public Pose getPose() {
return this.dataManager.get(POSE);
}
//seperate code in Enity.class that initializes datamanager
public Entity(EntityType<?> entityTypeIn, World worldIn) {
super(Entity.class);
this.type = entityTypeIn;
this.world = worldIn;
this.size = entityTypeIn.getSize();
this.setPosition(0.0D, 0.0D, 0.0D);
if (worldIn != null) {
this.dimension = worldIn.dimension.getType();
}
this.dataManager = new EntityDataManager(this);
this.dataManager.register(FLAGS, (byte)0);
this.dataManager.register(AIR, this.getMaxAir());
this.dataManager.register(CUSTOM_NAME_VISIBLE, false);
this.dataManager.register(CUSTOM_NAME, Optional.empty());
this.dataManager.register(SILENT, false);
this.dataManager.register(NO_GRAVITY, false);
this.dataManager.register(POSE, Pose.STANDING);
this.registerData();
this.eyeHeight = getEyeHeightForge(Pose.STANDING, this.size);
net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.EntityEvent.EntityConstructing(this));
this.gatherCapabilities();
}
//setpose command i found in Minecrafts PlayerEntity.class
@OnlyIn(Dist.CLIENT)
public void preparePlayerToSpawn() {
this.setPose(Pose.STANDING);
super.preparePlayerToSpawn();
this.setHealth(this.getMaxHealth());
this.deathTime = 0;
}