Jump to content

(1.16.5 MCP) turn on the noclip is not working


ElTotisPro50

Recommended Posts

i made an event and when i press a key it it supposed to put true noclip (im using a LivingUpdateEvent because mojang programmed it like that), but is not working, this is an example: when you have hacks and enter in a server, if you activate noclip usually it doesnt work because the server has an anticheat, and instead of letting you go through the block it sends you a bit back

VIDEO[when the screen shakes a little bit is because i activated the noclip]( https://imgur.com/a/LATKmV4 )

@SubscribeEvent
    public static void testevent(LivingEvent.LivingUpdateEvent event)
    {
        if(Minecraft.getInstance().player == null) //This is because it crashes the game of an null error
            return;

        PlayerEntity player = Minecraft.getInstance().player;
        if(ModKeys.mykey.isKeyDown())
        {
            player.noClip = true;
        }
    }

 

Link to comment
Share on other sites

first of all use TickEvent.Player and not LivingEvent.LivingUpdateEvent, since the Event is only fired for all LivingEntites (exclude the Player)

2 hours ago, ElTotisPro50 said:
Minecraft.getInstance().player

the Minecraft class is completely client side, you need to do this on server side

Link to comment
Share on other sites

8 hours ago, Luis_ST said:

first of all use TickEvent.Player and not LivingEvent.LivingUpdateEvent, since the Event is only fired for all LivingEntites (exclude the Player)

the Minecraft class is completely client side, you need to do this on server side

https://forums.minecraftforge.net/topic/75228-1143-no-clip-through-blocks/

 

it says that it only works in LivingUpdateEvent 

but is like this?

if(Minecraft.getInstance().player == null) //This is because it crashes the game of an null error
            return;

		if(!world.isRemote) {

			PlayerEntity player = Minecraft.getInstance().player;
            if(ModKeys.mykey.isKeyDown())
            {
                player.noClip = true;
            }
		}

 

Link to comment
Share on other sites

3 minutes ago, ElTotisPro50 said:

the thread is outdated, since it's from 2019

 

7 hours ago, Luis_ST said:

the Minecraft class is completely client side, you need to do this on server side

again subscribe to TickEvent.Player and use the Player from the event and not inecraft.getInstance().player

Link to comment
Share on other sites

1 hour ago, ElTotisPro50 said:

no, im not getting the player from Minecraft class

yeah, but in this way it won't work

1 hour ago, ElTotisPro50 said:

but i did in some other events i made, why is it bad?

it's client side, but noClip is handelt server side
if you set noClip on client side you have a few ticks the logic you want
then you will receive a update packet from the server and the value would be reset

Link to comment
Share on other sites

1 hour ago, Luis_ST said:

yeah, but in this way it won't work

it's client side, but noClip is handelt server side
if you set noClip on client side you have a few ticks the logic you want
then you will receive a update packet from the server and the value would be reset

nope it didnt work (i did it in server side and in tickevent

	@SubscribeEvent
    public static void tickEvent(TickEvent.PlayerTickEvent event)
    {
        PlayerEntity player = event.player;
        World world = player.world;

        if(!world.isRemote && ModKeys.mykey.isKeyDown())
        {
            player.noClip = true;
        }

)

Link to comment
Share on other sites

1 hour ago, Luis_ST said:

check the TickEvent Phase and the LogicalSide,
also call Player#onUpdateAbilities

there is no player#onUpdateAbilities

and what do you mean with tick event phase and logical side? like this?

if(event.phase == TickEvent.Phase.END)
{
    if(event.side.isServer() && ModKeys.abilityTransformKey.isKeyDown())
    {
        player.noClip = true;
    }
}

 

Link to comment
Share on other sites

1 hour ago, Luis_ST said:

in mcp mappings it's PlayerEntity#sendPlayerAbilities

yes

nope, not throwing errors or crashing it just doesnt to anything (i wrote sendPlayerAbilities() before noclip because i guess is like that) and also my key is working correctly the problem is not my key

if(event.phase == TickEvent.Phase.END)
{
     f(event.side.isServer() && ModKeys.mykey.isKeyDown())
     {
         player.sendPlayerAbilities();
         player.noClip = true;
     }
}

 

Link to comment
Share on other sites

1 hour ago, Luis_ST said:

this should work, show the code

@SubscribeEvent
public static void tickEvent(TickEvent.PlayerTickEvent event)
{
    PlayerEntity player = event.player;
    World world = player.world;

    if(event.phase == TickEvent.Phase.END)
    {
       if(event.side.isServer() && ModKeys.mykey.isKeyDown())
        {
		//This
                player.noClip = true;
                player.sendPlayerAbilities();

		//Non of them work(in the code i dont duplicate them im just showing that i used the 2 combinations)

                //Or this
                player.sendPlayerAbilities();
                player.noClip = true;
		}
    }
}

 

Edited by ElTotisPro50
Link to comment
Share on other sites

14 hours ago, ElTotisPro50 said:

do i REALLY REALLY REALLY need to send the package to the server? i never saw a tutorial or something about sending packages and in the page you wrote it sends a message

in vanilla it's called packet, in forge it's called message and yes you need to set a packet
you can use this as a practical example

Link to comment
Share on other sites

5 hours ago, Luis_ST said:

in vanilla it's called packet, in forge it's called message and yes you need to set a packet
you can use this as a practical example

You said that i use this: https://imgur.com/a/RpGsSLy , but you are making your "packet" different https://imgur.com/a/M9M5sH4 , 

 

i dont understand why i need this or WHAT I HAVE TO PUT IN ANYWHERE ON THE PACKET CLASS

 

just explain me what i have to do with the packages

Link to comment
Share on other sites

1 hour ago, diesieben07 said:

You need packets because keyboard input is client side only. But the server must turn on noclip as well, otherwise it thinks you're cheating by moving through blocks.

Packets are the only way to communicate between server and client.

Packages are not at all relevant here.

You need to understand basic Java.

SubscribeEvent
    public static void tickEvent(TickEvent.PlayerTickEvent event)
    {
        PlayerEntity player = event.player;
        World world = player.world;

        if(event.phase == TickEvent.Phase.END)
        {
            if(event.side.isServer()) //i used isClient() too and it didnt work either
            {
                player.sendPlayerAbilities();
                player.noClip = true;
            }
        }

im not using anymore keybind and it still DOESNT WORK, you said i need the package for keybinds but if im not using keybinds why is not working?

Link to comment
Share on other sites

3 hours ago, diesieben07 said:

You need to first turn on noclip and then sync the abilities. How else do you expect this to ever work...?

i did it and it still not working

if(event.phase == TickEvent.Phase.END)
        {
            if(event.side.isServer())
            {
		player.noClip = true;
                player.sendPlayerAbilities();
            }
        }

 

Link to comment
Share on other sites

2 hours ago, diesieben07 said:

Then they were wrong.

noClip will be overwritten every tick by the player code. You have to set it in LivingUpdateEvent to counter-overwrite the vanilla code.

SO I WAS RIGHT ALL THE TIME, but thats what i did (except adding sendPlayerAbilities() but it didnt work either)

 @SubscribeEvent
    public static void test(LivingEvent.LivingUpdateEvent event)
    {
        if(Minecraft.getInstance().player == null) //for not having the null pointer exception error
            return;
        PlayerEntity player = Minecraft.getInstance().player;
        player.noClip = true;
        player.sendPlayerAbilities();
    }

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.