Geyser icon indicating copy to clipboard operation
Geyser copied to clipboard

Inaccurate Y-Axis motion when falling/jumping flagging anticheats.

Open ForgedSengoku opened this issue 2 months ago • 30 comments

What feature do you want to see added?

While i find out that completely all other features such as playing and hitting entites and other things of walking on ground does not flag while what even if i did multiple entity to hit it didn't flag me, So the request is that it's almost perfect and can be playable if u could fix false flag of fly check, I use viaproxy geysermc i don't use 1.8.9 version as it false flags for timer so latest version of java edition for verus is almost perfect expect the fly check of when you fall or take knockback please refine movement for that fixement, since BlocksMC uses verus + ncp, well ncp is already playable on some server so it's perfect but the problem comes with verus anticheat is when I jump or fall of ground it flags as fly 4I.

Are there any alternatives?

Refine movement of fly check to finally i can play BlocksMC on bedrofk WITHOUT being kickked by anticheat. You can test this by going to server anticheat-test.com then type /ac Verus and then jump or fall down you can see it happens.

This works with any version of geyseemc no matter what

I tested.

ForgedSengoku avatar Sep 29 '25 13:09 ForgedSengoku

So please fix fly check false so that i can finally join BlocksMC on bedrock edition and play TNT tag.

ForgedSengoku avatar Sep 29 '25 13:09 ForgedSengoku

Just update geysermc so that it has refined movement for fixing false fly check only and that's it.

It's almost playable like i can walk around and hit entites even i didn't look and didn't get kicked just please fix this one problem

ForgedSengoku avatar Sep 29 '25 13:09 ForgedSengoku

damn verus in 2025? it's worth looking into I guess.

oryxel1 avatar Sep 29 '25 13:09 oryxel1

Nah it's because BlocksMC i found out i can play in it so i wonder if they're able to fix this one issue of false fly flag and then so that i can play on bedrock edition I can't just join TNT tag if i jump and I'm banned instnalty or sometimes kicked

BlocksMC is one server that uses verus + ncp on 2025

ForgedSengoku avatar Sep 29 '25 13:09 ForgedSengoku

https://streamable.com/s98fyr - from BlocksMC

ForgedSengoku avatar Sep 29 '25 13:09 ForgedSengoku

https://streamable.com/s98fyr - from BlocksMC

It's possible for you to also add an video showing how it look on the anticheat test server you mentioned?

oryxel1 avatar Sep 29 '25 14:09 oryxel1

https://streamable.com/snbose here it is It's logs of anticheat of how it flags me.

While it's flagging and super annoying i wanna just play BlocksMC TNT tag but it kicks me, so I'm able to play only BlocksMC creative because it's only ncp 1.16.5 so it doesn't have verus which is way it doesn't get me banned, but one gamemode is boring.

To reproduce: Join anticheat-test.com type /ac verus then jump around and you'll see fly checks of flag this has been since months

It's proccessing too long the video so it finally uploaded

ForgedSengoku avatar Sep 29 '25 14:09 ForgedSengoku

interesting

oryxel1 avatar Sep 29 '25 14:09 oryxel1

@ForgedSengoku if you're using ViaProxy, what server version you're using? you're sure it's latest?

oryxel1 avatar Sep 29 '25 14:09 oryxel1

@oryxel1, I use viaproxy-3.4.4 the latest Seveer version is 1.20.2 because BlocksMC on newer versions is buggy to connect for sometimes I'm stuck on lobby And yes it's latest version of viaproxy and latest version of geysermc-viaproxy but this doesn't matter because I'm actually experiencing this from 1 year old GeyserMC version aswell and this problem was before

ForgedSengoku avatar Sep 29 '25 14:09 ForgedSengoku

Can confirm this is happening (tested on Standalone) and seems to be happening on other anticheats as well.

Edit: well kinda know the reason but fixing it is entirely different issue.

oryxel1 avatar Sep 29 '25 14:09 oryxel1

Verus is super easy it's bad anticheat i mean BlocksMC is using it so maybe it's easy to fix it, Then I'll be able to play more gamemodes because right now what i can do is play creative, prison because since fly is applied verus is disabled. But anyways try fix it Because I need to play TNT tag and murder mystery if u fix that problem i need to jump or fall down constantly to run away and win.

I'm waiting for the fix.

ForgedSengoku avatar Sep 29 '25 15:09 ForgedSengoku

Verus is super easy it's bad anticheat i mean BlocksMC is using it so maybe it's easy to fix it, Then I'll be able to play more gamemodes because right now what i can do is play creative, prison because since fly is applied verus is disabled. But anyways try fix it Because I need to play TNT tag and murder mystery if u fix that problem i need to jump or fall down constantly to run away and win

Not as simple as you think, it kinda not entirely Geyser fault here (even tho I do admit Geyser movement code is quite bad), but more because of how Bedrock-Java handle their movement part. It's not as simple as "well it's a bad anticheat so Geyser can bypass them as well!" because those normally have hardcoded values checks or a really specific check that managed to flag Geyser. Again it's a bit complicated to explain here. But it's not as easy as you think it's, just because the anticheat is bad doesn't mean it's easy to fix as an issue.

oryxel1 avatar Sep 29 '25 15:09 oryxel1

@oryxel1, Why can't you just do this by, Try using snifCraft to capture java packets from java edition client and from bedrock And try compare packets to match that java edition 1.20.2 has So to fix false flag by correcting y axis. Might be complex but verus is super trash anticheat it's a joke, it is known to be super trash so it's not hard. I'm not sure how can I fix this but surely you maybe can

Of how it hits ground To fix that false flag For verus anticheat.

ForgedSengoku avatar Sep 30 '25 22:09 ForgedSengoku

Again already know the reason, fixing it is an entire different issue. And Verus is not the anticheat this will flag.

oryxel1 avatar Oct 01 '25 01:10 oryxel1

So you saying you aren't fixing for verus? Or which specific anticheat I'm saying that verus flags me

ForgedSengoku avatar Oct 01 '25 08:10 ForgedSengoku

It's an confirmed issue, we will get to it when we get to it, and I already know that verus flag it. Some work have been made on this, and we will notice you when it's fixed, for now just be patient. I will notify you if there any news :)

oryxel1 avatar Oct 01 '25 08:10 oryxel1

Here's a video to help you more even faster to fix it A bedrock player jumps jitery so falling is jitery

Compare bedrock geysermc player thru java server connected at here: (bedrock player) https://youtu.be/4Lh5hRdg3co?si=D9S7AQIM7wNpBNU4

Now me in java edition aswell jumping: https://youtu.be/g4Y-OuPsKOE?si=dV9PfGdvTmyHGbLh Smooth buttery and you see I'm in bedrock edition not java pov looking at another player of my another device jumping

Maybe this'll help you finally fix it

I'll be waiting more for 5 days. Good luck.

ForgedSengoku avatar Oct 02 '25 16:10 ForgedSengoku

Please just be patient, things can't just be magically fix in 5 days since there could be a lot of testing involved and this is not a high priority for now at least.

oryxel1 avatar Oct 02 '25 23:10 oryxel1

Tired of waiting for fix please try this

its been 3 weeks since i reported this

This seems to happen becuase of how bedrock fooles when inGroundTrue its like pretending to be inside the ground where the geysermc is flagging verus becuase of how and even i confirmed it:

By when you blink via horion and im stuck in air and its geysermc sending weird packets of like fly silent like idling but in java edition when i blinnk it doesnt happen. Here's a leaked verus FLY4G from some cracked verus anticehat not sure which version but heres it Tired of waiting 3 weeks no fix so here's this. IT FLAGS FLY4G and flyI

//FLY4G Code! // Decompiled with: CFR 0.152 // Class Version: 8 package me.levansj01.verus.check.checks.fly;

import java.util.concurrent.ThreadLocalRandom; import me.levansj01.verus.alert.manager.AlertManager; import me.levansj01.verus.check.MovementCheck; import me.levansj01.verus.check.annotation.CheckInfo; import me.levansj01.verus.check.type.CheckType; import me.levansj01.verus.check.version.CheckVersion; import me.levansj01.verus.data.version.ClientVersion; import me.levansj01.verus.util.Cuboid; import me.levansj01.verus.util.item.MaterialList; import me.levansj01.verus.util.location.PlayerLocation; import org.bukkit.World;

/*

  • Illegal identifiers - recommend switching to table mode */ @CheckInfo(type=CheckType.FLY, subType="G", friendlyName="Fly", version=CheckVersion.RELEASE, minViolations=-2.5, maxViolations=20, logData=true) public class FlyG extends MovementCheck { private boolean ignoring = 0x30BFE6F6 ^ 0x30BFE6F6; public static final boolean    ‏       = true; private int jump = 0xBD190C9 ^ 0xBD190C9; public static final boolean    ​   ​‌‎ = true; public static final boolean     ‌ ‏ ‍‌ = true;

    @Override public void handle(PlayerLocation playerLocation, PlayerLocation playerLocation2, long l) { if (this.ignoring) { if (playerLocation2.getGround().booleanValue()) { this.ignoring = 0x10C3F3A4 ^ 0x10C3F3A4; if (!   ‏      ) { throw null; } } } else if (playerLocation2.getY() > playerLocation.getY()) { if (!(this.playerData.getVelocityTicks() <= (this.playerData.getPingTicks() + (0x54762F29 ^ 0x54762F28)) * (0x8C3B4F16 ^ 0x8C3B4F14) || this.playerData.isVehicle() || this.playerData.canFly() || this.playerData.isFallFlying() || this.playerData.isGliding() || this.playerData.isRiptiding() || this.playerData.isHooked() || this.playerData.isTeleportingV2() || !this.playerData.isSurvival() || !this.playerData.isSpawned() || this.playerData.isLevitating())) { if (!(this.playerData.hasPlacedBlock((0x3B99F99C ^ 0x3B99F99D) != 0) || this.playerData.hadJumpBoost() || this.playerData.hadLevitation())) { double d; double d2 = playerLocation2.getY() - Math.max(0.0, playerLocation.getY()); if (d2 > 100000.0 || this.violations > 300.0) { AlertManager.getInstance().handleBan(this.playerData, this, (0x5BE3681F ^ 0x5BE3681F) != 0); this.playerData.fuckOff(); } int n = (Integer)this.playerData.getJumpLevel().get(); double d3 = 0.41999998688699; if (!playerLocation2.getGround().booleanValue()) { d = d3; if (!   ‏      ) { throw null; } } else { d = 0.5; } double d4 = Math.max(d, d3 + (double)Math.max(this.jump, n) * 0.2); double d5 = d2 - d4; if (playerLocation.getGround().booleanValue()) { this.jump = n; } if (this.playerData.getVersion() != ClientVersion.V1_7 && playerLocation2.getGround().booleanValue() && playerLocation.getGround().booleanValue() && (d5 == 0.0625 || d5 == 0.10000002384185791)) { return; } if (d2 > d4 && Math.abs(d2 - 0.5) > 1.0E-12) { if (this.playerData.isTeleporting(0xD6BE6EBC ^ 0xD6BE6EBE) && !this.playerData.isTeleportingV2()) { this.playerData.setLastTransactionID((short)(ThreadLocalRandom.current().nextInt(0x7E202AA2 ^ 0x7E20D55E) + (0x65614EED ^ 0x9A9ECEED))); this.playerData.setSpawned(0x90954C94 ^ 0xEF6AB36B); } World world = this.player.getWorld(); Cuboid cuboid = new Cuboid(playerLocation).move(0.0, -1.5, 0.0).expand(0.5, 2.0, 0.5); this.run(() -> { if (cuboid.checkBlocks(this.player, world, material -> { int n; if (!MaterialList.INVALID_JUMP.contains(material) && !MaterialList.SHULKER_BOX.contains(material) && material != MaterialList.PURPLE_FUCKING_SHULKER) { n = 0x7E4563BD ^ 0x7E4563BC; if (!   ​   ​‌‎) { throw null; } } else { n = 0xB3AA304E ^ 0xB3AA304E; } return n != 0; })) { double d2; Object[] objectArray = new Object[0x8C018180 ^ 0x8C018181]; objectArray[0x1229077B ^ 0x1229077B] = d5; String string = String.format("D: %s", objectArray); if (this.playerData.isTeleporting()) { d2 = 0.25; if (!    ‌ ‏ ‍‌) { throw null; } } else { d2 = Math.min(10.0, 0.5 + d5); } this.handleViolation(string, d2); if (!    ‌ ‏ ‍‌) { throw null; } } else { this.ignoring = 0x8D91938C ^ 0x8D91938D; } }); if (!   ‏      ) { throw null; } } else { this.violations -= Math.min(this.violations + 2.5, 0.025); } } } } } }

End of FLYG code

this is the leaked code for you :) and you can check it i dont thikn its jump height fault its just prob geysermc sending weird packets.

If you can still please try this

FLYI Code:

// Decompiled with: CFR 0.152 // Class Version: 8 package me.levansj01.verus.check.checks.fly;

import java.lang.invoke.LambdaMetafactory; import java.util.function.Predicate; import java.util.function.Supplier; import me.levansj01.verus.check.MovementCheck; import me.levansj01.verus.check.annotation.CheckInfo; import me.levansj01.verus.check.type.CheckType; import me.levansj01.verus.check.version.CheckVersion; import me.levansj01.verus.compat.NMSManager; import me.levansj01.verus.compat.ServerVersion; import me.levansj01.verus.data.version.ClientVersion; import me.levansj01.verus.storage.StorageEngine; import me.levansj01.verus.type.VerusTypeLoader; import me.levansj01.verus.util.BukkitUtil; import me.levansj01.verus.util.Cuboid; import me.levansj01.verus.util.item.MaterialList; import me.levansj01.verus.util.java.MathUtil; import me.levansj01.verus.util.location.PlayerLocation; import me.levansj01.verus.verus2.data.player.TickerType; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.entity.Boat; import org.bukkit.entity.Entity; import org.bukkit.entity.Minecart; import org.bukkit.potion.PotionEffectType;

/*

  • Illegal identifiers - recommend switching to table mode */ @CheckInfo(type=CheckType.FLY, subType="I", friendlyName="Fly", version=CheckVersion.RELEASE, minViolations=-2.5, maxViolations=50, logData=true) public class FlyI extends MovementCheck { private double threshold; public static final boolean   ‍ ‏‍‍    = true; public static final boolean  ‏  ‎      = true; private int lastTPTick; private Double lastYDiff = null; public static final boolean ‎  ‌   ​   = true; private int lastBypassTick; public static final boolean    ‏‏      = true;

    private void lambda$handle$3(PlayerLocation playerLocation, World world, Cuboid cuboid, Cuboid cuboid2, int n, boolean bl, double d, double d2, PlayerLocation playerLocation2) { boolean bl2 = playerLocation.toBlock().isWaterLogged(world); Predicate<Material> predicate = material -> { int n; if (!MaterialList.BAD_VELOCITY.contains(material) && !MaterialList.INVALID_SHAPE.contains(material)) { n = 0x44756D5E ^ 0x44756D5F; if (!  ‍ ‏‍‍   ) { throw null; } } else { n = 0x6EB7944 ^ 0x6EB7944; } return n != 0; }; if (cuboid.checkBlocks(this.player, world, predicate) && cuboid2.checkBlocks(this.player, world, material -> { boolean bl; if (material == MaterialList.AIR) { bl = 0x9C90E236 ^ 0x9C90E237; if (!   ‏‏     ) { throw null; } } else { bl = 0xEAB49CAD ^ 0xEAB49CAD; } return bl; }) && !bl2) { double d3; int n2; for (Entity entity : this.player.getNearbyEntities(2.5, 2.5, 2.5)) { if (entity instanceof Boat || entity instanceof Minecart) { this.threshold = 0.0; this.lastBypassTick = n - (0xBADB26E1 ^ 0xBADB2685); return; } if ( ‏  ‎     ) continue; throw null; } this.threshold += 1.0; if (this.playerData.hasLag() || this.playerData.hasFast() || !bl) { n2 = 0x97223D43 ^ 0x97223D42; if (! ‏  ‎     ) { throw null; } } else { n2 = 0x777F90BA ^ 0x777F90BA; } int n3 = n2; Supplier<String> supplier = () -> { Object[] objectArray = new Object[0xCFAFD1F9 ^ 0xCFAFD1FD]; objectArray[0xD3B5A3BB ^ 0xD3B5A3BB] = d; objectArray[0x87186185 ^ 0x87186184] = d2; objectArray[0x5ECF62A7 ^ 0x5ECF62A5] = playerLocation2.getY() % 1.0; objectArray[0x812EBA3 ^ 0x812EBA0] = bl; return String.format("D: %s D2: %s P: %s V: %s", objectArray); }; if (n3 != 0) { d3 = 0.1; if (! ‏  ‎     ) { throw null; } } else { d3 = 1.0; } this.handleViolation(supplier, d3 * this.threshold); if (! ‏  ‎     ) { throw null; } } else { this.decreaseVL(0.1); this.lastBypassTick = n; this.threshold = 0.0; } }

    /*

    • Unable to fully structure code

    • Could not resolve type clashes */ @Override public void handle(PlayerLocation var1_1, PlayerLocation var2_2, long var3_3) { block21: { block23: { block22: { if (this.playerData.getTickerMap().get(TickerType.TELEPORT) <= (1991746511 ^ 1991746510)) { this.lastYDiff = null; this.threshold = 0.0; return; } if (var1_1.getGround().booleanValue() && var2_2.getGround().booleanValue()) break block21; var5_4 = var2_2.getY() - var1_1.getY(); var7_5 = this.playerData.getVersion(); var8_6 = var5_4 - 0.41999998688697815; if (this.lastYDiff == null) break block21; if (this.playerData.getTotalTicks() - (1454820932 ^ 1454820972) <= this.lastBypassTick || this.playerData.hasPlacedBucket()) break block21; if (this.playerData.hasPlacedBlock((boolean)(651732404 ^ 651732405)) || this.playerData.isFallFlying() || this.playerData.isGliding() || this.playerData.canFly() || !this.playerData.isSpawned() || this.playerData.isVehicle()) break block21; if (this.playerData.getVelocityTicks() <= ((-1327746852 ^ -1327746850) + this.playerData.getMaxPingTicks()) * (-2058610972 ^ -2058610970) || this.playerData.isLevitating() || this.playerData.isRiptiding() || this.playerData.hadJumpBoost()) break block21; if (NMSManager.getInstance().getServerVersion().before(ServerVersion.v1_13_R2)) break block22; if (!(var2_2.getY() < var1_1.getY())) break block21; if (BukkitUtil.hasEffect(this.playerData.getEffects(), 1241683717 ^ 1241683737)) break block21; } if (!(Math.abs(var5_4 + 0.9800000190734863) > 1.0E-11) || !(Math.abs(var5_4 + 0.09800000190735147) > 1.0E-11) || !(Math.abs(var5_4 - 0.0030162615090425504) > 1.0E-9) || StorageEngine.getInstance().getVerusConfig().isUnloadedChunkFix() && !(Math.abs(var5_4 / 0.9800000190734863 + 0.08) > 1.0E-11) || !(Math.abs(var8_6) > 9.999999960041972E-13) || !(Math.abs(var8_6 - (double)((Integer)this.playerData.getJumpLevel().get()).intValue() * 0.1) > 1.0000000116860974E-7) || !var7_5.before(ClientVersion.V1_9) && (!(Math.abs(var5_4 + 0.15233518685055714) > 1.0E-11) || !(Math.abs(var5_4 + 0.07242780368044421) > 1.0E-11)) || !var7_5.before(ClientVersion.V1_13) && !(Math.max(var2_2.getY(), var1_1.getY()) < 255.0)) break block21; if (var1_1.getX() != var2_2.getX() && var1_1.getZ() != var2_2.getZ()) { v0 = -2035699642 ^ -2035699641; if (!FlyI.‎  ‌   ​  ) { throw null; } } else { v0 = -1709318803 ^ -1709318803; } var10_7 = v0; var11_8 = (this.lastYDiff - 0.08) * 0.9800000190734863; if (var2_2.getGround() != false && var5_4 < 0.0 && var11_8 < var5_4 && MathUtil.onGround(var2_2.getY()) != false || var1_1.distanceXZSquared(var2_2) < 0.0025 && BukkitUtil.hasEffect(this.playerData.getEffects(), PotionEffectType.JUMP)) { var11_8 = var5_4; if (!FlyI.‎  ‌   ​  ) { throw null; } } else if ((VerusTypeLoader.isDev() || this.playerData.getVersion() != ClientVersion.V1_9 && !BukkitUtil.hasEffect(this.playerData.getEffects(), PotionEffectType.JUMP)) && Math.abs(var11_8) < 0.005) { var11_8 = 0.0; } var13_9 = Math.abs(var11_8 - var5_4); var15_10 = (var11_8 - var5_4) / var11_8; var17_11 = this.playerData.getTotalTicks(); if (!(var13_9 > 2.0) || !(Math.abs(var15_10) > 300.0)) break block23; v1 = new Object[1176064877 ^ 1176064872]; v1[-710802298 ^ -710802298] = this.playerData.getTeleportTicks(); v1[1211020984 ^ 1211020985] = var1_1.getGround(); v1[-1526919156 ^ -1526919154] = var13_9; v1[-676412096 ^ -676412093] = var15_10 * 100.0; v1[2072470564 ^ 2072470560] = "%"; v2 = String.format("%s %s %.3f, %.3f%s", v1); if (var17_11 - this.lastTPTick > (-2023714309 ^ -2023714321)) ** GOTO lbl-1000 if (var17_11 - this.lastTPTick > (-1319221830 ^ -1319221829)) { v3 = 1.0; if (!FlyI.‎  ‌   ​  ) { throw null; } } else lbl-1000: // 2 sources

           {
               v3 = 0.5;
           }
           this.handleViolation(v2, v3);
           this.lastTPTick = var17_11;
       }
       if (!this.playerData.isTeleporting() && !var1_1.getGround().booleanValue()) {
           if (var13_9 > 1.0E-7) {
               var18_12 = this.player.getWorld();
               var19_13 = new Cuboid(var2_2).add(-0.5, 0.5, -1.0, 1.5, -0.5, 0.5);
               if (VerusTypeLoader.isDev()) {
                   v4 = 0.29999;
                   if (!FlyI.‎  ‌   ​  ) {
                       throw null;
                   }
               } else {
                   v4 = 0.5;
               }
               var20_14 = v4;
               var22_15 = this.playerData.getLocation().getY();
               var24_16 = Cuboid.withLimit(var1_1, var2_2, 239221058 ^ 239221074).move(0.0, 2.0, 0.0).add(-var20_14, var20_14, -0.5, 0.5, -var20_14, var20_14);
               this.run((Runnable)LambdaMetafactory.metafactory(null, null, null, ()V, lambda$handle$3(me.levansj01.verus.util.location.PlayerLocation org.bukkit.World me.levansj01.verus.util.Cuboid me.levansj01.verus.util.Cuboid int boolean double double me.levansj01.verus.util.location.PlayerLocation ), ()V)((FlyI)this, (PlayerLocation)var1_1, (World)var18_12, (Cuboid)var19_13, (Cuboid)var24_16, (int)var17_11, (boolean)var10_7, (double)var13_9, (double)var5_4, (PlayerLocation)var2_2));
               if (!FlyI.‎  ‌   ​  ) {
                   throw null;
               }
           } else {
               this.decreaseVL(0.025);
               this.threshold = 0.0;
           }
       }
      

      } if (!var2_2.getGround().booleanValue() || !var1_1.getGround().booleanValue()) { this.lastYDiff = var2_2.getY() - var1_1.getY(); if (!FlyI.‎  ‌   ​  ) { throw null; } } else { this.lastYDiff = null; } } }

This is becuase geysermc prob sets the player onground true and thats why it flags on verus please try collosion this happens when player is in air and not on ground that the plugin reports about movement not the verus but the anticheat-test.com plugin Likely force set ur onground

super complex to explain and still no clue to fixi

ForgedSengoku avatar Oct 20 '25 19:10 ForgedSengoku

This is a FOSS project ran by volunteers, we do not provide an ETA for fixes - it'll be worked on once we have time for it. Please be patient!

onebeastchris avatar Oct 20 '25 19:10 onebeastchris

Too late, becuase blocksmc updated anticheat to something else, and now its unplayable making this impoosbile.

ForgedSengoku avatar Oct 29 '25 20:10 ForgedSengoku

bro why couudnt u all fix it faster Its just too late bro

ForgedSengoku avatar Oct 29 '25 20:10 ForgedSengoku

its now grim

ForgedSengoku avatar Oct 29 '25 20:10 ForgedSengoku

its over man.

ForgedSengoku avatar Oct 29 '25 20:10 ForgedSengoku

its too late becuase blocksmc updated anticheat to grimac and now geysermc is barely playable its unplayable

ForgedSengoku avatar Oct 29 '25 20:10 ForgedSengoku

ok

onebeastchris avatar Oct 29 '25 20:10 onebeastchris

It’s your decision to use Geyser. If you really dislike Geyser, just don’t use it. Common sense.

SleepyPopp avatar Oct 29 '25 20:10 SleepyPopp

i mean i wanted to play blocksmc tnt tag and i could before if u did update the y axis guess i was too late man

im gonna close this

ForgedSengoku avatar Oct 29 '25 20:10 ForgedSengoku

ColdPVP still has verus

ForgedSengoku avatar Nov 03 '25 10:11 ForgedSengoku