3
0
Mirror von https://github.com/GeyserMC/Geyser.git synchronisiert 2024-10-01 23:50:11 +02:00

Fix fishing rod behavior on Geyser players

Fixes #2716
Dieser Commit ist enthalten in:
Camotoy 2021-12-19 19:15:53 -05:00
Ursprung 71a975b805
Commit 15522aed52
2 geänderte Dateien mit 5 neuen und 11 gelöschten Zeilen

Datei anzeigen

@ -50,7 +50,7 @@ public class FishingHookEntity extends ThrowableEntity {
private boolean inWater = false;
@Getter
private final boolean isOwnerSessionPlayer;
private final long bedrockOwnerId;
@Getter
private long bedrockTargetId;
@ -66,14 +66,8 @@ public class FishingHookEntity extends ThrowableEntity {
// so that it can be handled by moveAbsoluteImmediate.
setBoundingBoxHeight(128);
isOwnerSessionPlayer = owner.getGeyserId() == session.getPlayerEntity().getGeyserId();
this.dirtyMetadata.put(EntityData.OWNER_EID, owner.getGeyserId());
}
@Override
public void spawnEntity() {
super.spawnEntity();
this.bedrockOwnerId = owner.getGeyserId();
this.dirtyMetadata.put(EntityData.OWNER_EID, this.bedrockOwnerId);
}
public void setHookedEntity(IntEntityMetadata entityMetadata) {

Datei anzeigen

@ -119,8 +119,8 @@ public class JavaEntityEventTranslator extends PacketTranslator<ClientboundEntit
// Player is pulled from a fishing rod
// The physics of this are clientside on Java
FishingHookEntity fishingHook = (FishingHookEntity) entity;
if (fishingHook.isOwnerSessionPlayer()) {
Entity hookOwner = session.getEntityCache().getEntityByGeyserId(fishingHook.getBedrockTargetId());
if (fishingHook.getBedrockTargetId() == session.getPlayerEntity().getGeyserId()) {
Entity hookOwner = session.getEntityCache().getEntityByGeyserId(fishingHook.getBedrockOwnerId());
if (hookOwner != null) {
// https://minecraft.gamepedia.com/Fishing_Rod#Hooking_mobs_and_other_entities
SetEntityMotionPacket motionPacket = new SetEntityMotionPacket();