Jump to content

[1.7.10] Hiding entity from players.


Yevi

Recommended Posts

Cancel the event that sends out the packets for that player

 

How glad I'd be if that was true...

There is no "event that sends out the packets". There isn't even event that gets called when packet is sent. Only thing that, you could say "is binding" events and packets is PlayerEvent.StartTracking. That one will not do since it only allows you to do additional stuff.

 

In past I alredy tackled this problem (making client not receive (ANY) info about given entity), but it is not really possible with standard modding.

When asked why there is no event that could help - simple answer would be: too many places that send entity packets to be altered with one or even few events.

 

"Advanced" modding solution is to replace all things that call packet-sending. Last time I checked: can be done with lots of ASM or mayyybe some instance-replacement (lookup where packets are sent).

 

Note: Vanilla, and because of that also Forge, is not designed to support such actions. E.g: Spigot/Bukkit plugins allowed that because those were servers written from scraps - with a lot more hooks and design decisions that would allow such action.

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

Cancel the event that sends out the packets for that player

 

How glad I'd be if that was true...

There is no "event that sends out the packets". There isn't even event that gets called when packet is sent. Only thing that, you could say "is binding" events and packets is PlayerEvent.StartTracking. That one will not do since it only allows you to do additional stuff.

 

In past I alredy tackled this problem (making client not receive (ANY) info about given entity), but it is not really possible with standard modding.

When asked why there is no event that could help - simple answer would be: too many places that send entity packets to be altered with one or even few events.

 

"Advanced" modding solution is to replace all things that call packet-sending. Last time I checked: can be done with lots of ASM or mayyybe some instance-replacement (lookup where packets are sent).

 

Note: Vanilla, and because of that also Forge, is not designed to support such actions. E.g: Spigot/Bukkit plugins allowed that because those were servers written from scraps - with a lot more hooks and design decisions that would allow such action.

 

Why wouldn't there be a event pushing function in the interface of packets? O.o It seems like a really huge oversight, since the server hasn't got any control over the packets whatsoever from that perspective... Every object does whatever it wants

I do pony stuff :3

Link to comment
Share on other sites

Well, you can hook yourself into packet pipeline (idk proper naming). That way you can catch any kind of packet, including entity packets and then remove sending packets that contain entityID which client should never receive.

 

This is probably easiest way to do it, but it is literally fighting symptoms (not source). Not really huge overhead, but still not the best solution (which requires a lot more work and is simply not easy to apply to mc code).

 

How to do it... well - diesieben will probabyl ram into thread soon and if not - look at his post history (should find something about it).

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

Well, you can hook yourself into packet pipeline (idk proper naming). That way you can catch any kind of packet, including entity packets and then remove sending packets that contain entityID which client should never receive.

 

This is probably easiest way to do it, but it is literally fighting symptoms (not source). Not really huge overhead, but still not the best solution (which requires a lot more work and is simply not easy to apply to mc code).

 

How to do it... well - diesieben will probabyl ram into thread soon and if not - look at his post history (should find something about it).

 

I'd call modding in general fighting symptons, since the forge source is being unchanged most of the time :P

I do pony stuff :3

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • So the default PlayerModel contains this code here to set the players arms to slim   if (pSlim) { $$3.addOrReplaceChild("left_arm", CubeListBuilder.create().texOffs(32, 48).addBox(-1.0F, -2.0F, -2.0F, 3.0F, 12.0F, 4.0F, pCubeDeformation), PartPose.offset(5.0F, 2.5F, 0.0F)); $$3.addOrReplaceChild("right_arm", CubeListBuilder.create().texOffs(40, 16).addBox(-2.0F, -2.0F, -2.0F, 3.0F, 12.0F, 4.0F, pCubeDeformation), PartPose.offset(-5.0F, 2.5F, 0.0F)); $$3.addOrReplaceChild("left_sleeve", CubeListBuilder.create().texOffs(48, 48).addBox(-1.0F, -2.0F, -2.0F, 3.0F, 12.0F, 4.0F, pCubeDeformation.extend(0.25F)), PartPose.offset(5.0F, 2.5F, 0.0F)); $$3.addOrReplaceChild("right_sleeve", CubeListBuilder.create().texOffs(40, 32).addBox(-2.0F, -2.0F, -2.0F, 3.0F, 12.0F, 4.0F, pCubeDeformation.extend(0.25F)), PartPose.offset(-5.0F, 2.5F, 0.0F)); } else { $$3.addOrReplaceChild("left_arm", CubeListBuilder.create().texOffs(32, 48).addBox(-1.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, pCubeDeformation), PartPose.offset(5.0F, 2.0F, 0.0F)); $$3.addOrReplaceChild("left_sleeve", CubeListBuilder.create().texOffs(48, 48).addBox(-1.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, pCubeDeformation.extend(0.25F)), PartPose.offset(5.0F, 2.0F, 0.0F)); $$3.addOrReplaceChild("right_sleeve", CubeListBuilder.create().texOffs(40, 32).addBox(-3.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, pCubeDeformation.extend(0.25F)), PartPose.offset(-5.0F, 2.0F, 0.0F)); } And that's got me thinking. If I can't replace the whole model in one fell swoop, what if I replaced each individual limb with my models mesh definitions? Note: It was crazy. The createMesh method in PlayerModel could not be @Overriden and addOrReplaceChild just makes changes to a new model that uses the original as a base.     However, I did render my model using this   final toatestentity idk = entities.toatest.get().create(p.level()); Minecraft.getInstance().getEntityRenderDispatcher().getRenderer(idk).render(idk, 0f, pTicks, stack, buffer, paLights); However that just uses the render from the entity I used to test getting the model to render in the first place. I don't want to do that. I want to fully replace the player model which this doesn't actually do (I don't think?).  Maybe it'd just be best to render my model as a new layer and make the base player model invisible? Maybe I'll take a look at how armor is rendered to move with the player so I won't have to make my own animations? Idk, I'm really set on figuring this out though.
    • AT Launcher works just fine
    • Make a test with another Launcher like MultiMC or AT Launcher  
    • https://mclo.gs/EZ0jeA2
  • Topics

×
×
  • Create New...

Important Information

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