Welcome on MasterOf13FPS! MasterOf13FPS

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

Vanilla Server-Reach ist 6 Blöcke!

MasterOf13FPS

Administrator
Staff member
Administrator
MasterOf13FPS
Joined
Jul 11, 2020
Messages
0
Reaction score
25
Points
0
Jo Leute,
um das ein für alle mal klarzustellen, da es viele "Mhyten" um das Thema Vanilla-Server-Reach gibt und die Meinungen dabei sehr weit auseinander gehen, von 6 bis teilweise 10 Blöcken Hit-Reach, möchte ich euch hier mal versuchen das Thema auf Codeebene etwas näher zu bringen.

Fangen wir an...

Als erstes decompilen wir die Vanilla Server-Source (ich verwende 1.8.8, auf anderen Versionen gibt es evtl. kleinere Unterschiede (1.9, 1.10, etc.)).
Dafür verwenden wir das ModCoderPack(http://www.modcoderpack.com/).
Falls ihr nicht wisst wie es genau funktioniert googlet einfach ;)

Nun zum Code:

Wenn der Client ein anderes Entity attacken will, sendet er dem Server ein C02PacketUseEntity-Packet.
Wenn man ein bisschen in der Server-Source sucht, findet man die Methode processUseEntity() in der Klasse net.minecraft.network.NetHandlerPlayServer, der man C02PacketUseEntity(-Packet) übergeben muss:
View attachment 228
Wie man hier sehen kann, wird die Variable d0 auf 36 gesetzt. Dann wird mit der Methode "getDistanceSqToEntity" geprüft, ob das Entity im "Radius" des Spielers ist.

(Die Methode "canEntityBeSeen" ist hier irrelevant, da diese nur überprüft, ob Blöcke zwischen den Entities sind.)


Weiter mit der Methode "getDistanceSqToEntity":
"Returns the squared distance to the entity [...]" heißt, dass die Methode die Distanz quadriert("hoch 2") zurückgibt.
Warum hoch 2? https://de.wikipedia.org/wiki/Satz_des_Pythagoras

View attachment 229
Quadriert heißt für uns jetzt: Wurzel ziehen :D
Und die Wurzel von 36 ist 6.
Und 6^2 = 36.
;-D

Ich hoffe, jeder konnte es nachvollziehen. Falls noch Fragen existieren: Schreibt es unter diesen Thread :)
 
Last edited by a moderator:
shape1
shape2
shape3
shape4
shape5
shape6
Back
Top