Jump to content

Recommended Posts

Posted

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;
        }
    }

 

Posted

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

  On 1/28/2022 at 6:26 AM, ElTotisPro50 said:
Minecraft.getInstance().player
Expand  

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

Posted
  On 1/28/2022 at 8:32 AM, 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

Expand  

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;
            }
		}

 

Posted
  On 1/28/2022 at 4:07 PM, ElTotisPro50 said:
Expand  

the thread is outdated, since it's from 2019

 

  On 1/28/2022 at 8:32 AM, Luis_ST said:

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

Expand  

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

Posted
  On 1/28/2022 at 4:12 PM, Luis_ST said:

the thread is outdated, since it's from 2019

 

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

Expand  

no, im not getting the player from Minecraft class, but i did in some other events i made, why is it bad?

Posted
  On 1/28/2022 at 4:15 PM, ElTotisPro50 said:

no, im not getting the player from Minecraft class

Expand  

yeah, but in this way it won't work

  On 1/28/2022 at 4:15 PM, ElTotisPro50 said:

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

Expand  

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

Posted
  On 1/28/2022 at 5:38 PM, 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

Expand  

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;
        }

)

Posted
  On 1/28/2022 at 6:09 PM, Luis_ST said:

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

Expand  

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;
    }
}

 

Posted
  On 1/28/2022 at 6:22 PM, Luis_ST said:

in mcp mappings it's PlayerEntity#sendPlayerAbilities

yes

Expand  

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;
     }
}

 

Posted (edited)
  On 1/28/2022 at 6:47 PM, Luis_ST said:

this should work, show the code

Expand  
@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
Posted
  On 1/28/2022 at 11:13 PM, 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

Expand  

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

Posted
  On 1/29/2022 at 1:17 PM, 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

Expand  

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

Posted
  On 1/29/2022 at 5:28 PM, 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.

Expand  
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?

Posted
  On 1/29/2022 at 6:18 PM, diesieben07 said:

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

Expand  

i did it and it still not working

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

 

Posted
  On 1/29/2022 at 9:03 PM, 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.

Expand  

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();
    }

 

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.