Welcome on MasterOf13FPS! MasterOf13FPS

Register today or sign up if you are already a member and never miss any cool content again :)

Tutorial trying to improve my speed for NCP 3.16.2

felix_root

New member
Joined
Jan 13, 2025
Messages
2
Reaction score
0
Points
1
hello, im playing on a server with via version which has choosable 1.8.9 or 1.9 pvp delay. is on NoCheatPlus 3.16.2 and u cant damage yourself, if you are going above base speed then it flags you every 30 ticks outside combat, inside combat as long as you have a working bypass that lets you go normally outside combat only flagging every 30 ticks, then u wont flag in combat.
ive tried testing different types of yport (Virtue 5.5's "Latest", Atom B7's or Winter 4.0's "Atom",Exhibition's"YPort") but i found out the virtue 5.5's latest is fastest without any timer modifications.
here are the modifications i made to latest:
Java:
/*velocity based move speed if u take velocity. (only alters arround 0.001 best case scenario in my tests)*/
1-
velX = packet.getX() / 8000; // cause the packet itself scales it by 8k we have to divide it by 8k
velZ = packet.getZ() / 8000;
moveSpeed + Math.sqrt(x * x + z * z)
/*if the rate we moved (means we could move at that rate) is greater then the current speed we are going at, set the speed to our prediction*/
2-
/*(for context x = mc.thePlayer.motionX, z = mc.thePlayer.motionZ)*/
if(Math.sqrt(x * x + z * z) > moveSpeed) {
this.moveSpeed =Math.sqrt(x * x + z * z);
}
 
3- /*at the start of the speed, i boost move speed by 0.7 so we kinda just dash whenever we first open it.*/
4- i replaced the
moveSpeed = baseSpeed * 2.149;
with
moveSpeed = lastDist * 2.149;

/*again for context, unedited version of Virtue 5.5's Latest:*/

public class Speed extends Module
{

        private double moveSpeed;
        private double lastDist;
        public static double stage;
       
    public Speed() {
        if(mc.thePlayer != null) {
            this.moveSpeed = getBaseMoveSpeed();
        }
           this.lastDist = 0.0;
           this.stage = 2.0;
    }
 
    @EventTarget
    public void onUpdate(PlayerUpdateEvent event) {
     
            if(event.getState() == Event.State.PRE) {
              if(stage == 3.0) {            
                         event.setY(event.getY() + 0.4);
                }
                final double xDist = ClientUtils.x() - ClientUtils.player().prevPosX;
                final double zDist = ClientUtils.z() - ClientUtils.player().prevPosZ;
                this.lastDist = Math.sqrt(xDist * xDist + zDist * zDist);
            }      
             
}
       

    @EventTarget
    public void onMove(MoveEvent event) {
       if ((ClientUtils.player().onGround || this.stage == 3.0)) {
                    if ((!ClientUtils.player().isCollidedHorizontally && ClientUtils.player().moveForward != 0.0f) || ClientUtils.player().moveStrafing != 0.0f) {
                        if (this.stage == 2.0) {
                            this.moveSpeed *= 2.149;
                            this.stage = 3.0;
                        }
                        else if (this.stage == 3.0) {
                            this.stage = 2.0;
                            final double difference = 0.66 * (this.lastDist - Speed.getBaseMoveSpeed());
                            this.moveSpeed = this.lastDist - difference;            
                        }
                        else {
                            final java.util.List collidingList = ClientUtils.world().getCollidingBlockBoundingBoxes(ClientUtils.player(), ClientUtils.player().boundingBox.offset(0.0, ClientUtils.player().motionY, 0.0));
                            if (collidingList.size() > 0 || ClientUtils.player().isCollidedVertically) {
                                this.stage = 1.0;
                            }    
                        }  
                    }
                 
                    ClientUtils.setMoveSpeed(event,this.moveSpeed = Math.max(this.moveSpeed, Speed.getBaseMoveSpeed()));
                }  
 }
 
    public static double getBaseMoveSpeed() {
        Minecraft.getMinecraft().timer.timerSpeed = 1.0f;
        double baseSpeed = 0.2873;
        if (mc.thePlayer.isPotionActive(Potion.moveSpeed)) {
            final int amplifier = mc.thePlayer.getActivePotionEffect(Potion.moveSpeed).getAmplifier();
            baseSpeed *= 1.0 + 0.2 * (amplifier + 1);
        }
        return baseSpeed;
    }


    @Override
    public void onEnable() {
         stage = 2;
         moveSpeed = getBaseMoveSpeed();
        super.onEnable();
    }
    @Override
    public void onDisable() {
        mc.timer.timerSpeed = 1.0f;
        super.onDisable();
    }
}

i would just paste my speed here for closer inspection of my code but we all know theres some people without any dignity just pasting code without trying to learn a bit. i am not happy with someone pasting my code and calling it a day even though my code isnt the best im not comfortable sharing it to all of the forum if you really want to help and need to see the code i will add you on discord (please leave your discord id with every response on the forum).

how can i further improve my speed, i can take examples from another method if there is any please let me know. but these are the only methods i found,ill be very grateful even at the slightest tip. im just trying to learn and improve myself and i would take a detailed explanation over just a block of code. please leave your discord @ if you are willing to help. thanks!!
 
Last edited:
i remember when i was testing sum stuff for bmc a pulse 1.5 timer works. so like every 0.5 of a second (or 10 ticks) can be used as a burst of a timer. i think after a while tho u start silenting but a way i fixed it was with an old tenacity 5.0 hypixel timer disabler which didnt completely disable the timer checks but it removed the point where it would flag after 30 secs of using a 10 tick timer burst with a 7 tick 1.0 timer to keep the packets from sending too fast (which flags uncp and regular ncp).

i made an old tenacity fork testing video on a concept of what it would be like.
 
so basically i need to do:
if(mc.thePlayer.ticksExisted % 10 == 0){
mc.timer.timerSpeed = 1.5f;
}
if(mc.thePlayer.ticksExisted % 7 == 0){
mc.timer.timerSpeed = 1.0f;
}
together with the hypixel timer disabler from old tenacity 5.0?
and im interested in seeing how does it limit the C03PacketPlayer and C00KeepAlive packets without getting desynced out of movement so ill check it out
 
so basically i need to do:
if(mc.thePlayer.ticksExisted % 10 == 0){
mc.timer.timerSpeed = 1.5f;
}
if(mc.thePlayer.ticksExisted % 7 == 0){
mc.timer.timerSpeed = 1.0f;
}
together with the hypixel timer disabler from old tenacity 5.0?
and im interested in seeing how does it limit the C03PacketPlayer and C00KeepAlive packets without getting desynced out of movement so ill check it out
I have no clue tbh. I just know without the timer disabler it would flag pretty consistently after a while tho
 
shape1
shape2
shape3
shape4
shape5
shape6
Back
Top