Mirror von
https://github.com/GeyserMC/Geyser.git
synchronisiert 2024-11-03 14:50:19 +01:00
Fix item spawning up (#2278)
Dieser Commit ist enthalten in:
Ursprung
569c36680d
Commit
3c9f628ac4
@ -28,6 +28,7 @@ package org.geysermc.connector.entity;
|
|||||||
import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata;
|
import com.github.steveice10.mc.protocol.data.game.entity.metadata.EntityMetadata;
|
||||||
import com.github.steveice10.mc.protocol.data.game.entity.metadata.ItemStack;
|
import com.github.steveice10.mc.protocol.data.game.entity.metadata.ItemStack;
|
||||||
import com.nukkitx.math.vector.Vector3f;
|
import com.nukkitx.math.vector.Vector3f;
|
||||||
|
import com.nukkitx.protocol.bedrock.data.inventory.ItemData;
|
||||||
import com.nukkitx.protocol.bedrock.packet.AddItemEntityPacket;
|
import com.nukkitx.protocol.bedrock.packet.AddItemEntityPacket;
|
||||||
import org.geysermc.connector.entity.type.EntityType;
|
import org.geysermc.connector.entity.type.EntityType;
|
||||||
import org.geysermc.connector.network.session.GeyserSession;
|
import org.geysermc.connector.network.session.GeyserSession;
|
||||||
@ -35,6 +36,8 @@ import org.geysermc.connector.network.translators.item.ItemTranslator;
|
|||||||
|
|
||||||
public class ItemEntity extends Entity {
|
public class ItemEntity extends Entity {
|
||||||
|
|
||||||
|
protected ItemData item;
|
||||||
|
|
||||||
public ItemEntity(long entityId, long geyserId, EntityType entityType, Vector3f position, Vector3f motion, Vector3f rotation) {
|
public ItemEntity(long entityId, long geyserId, EntityType entityType, Vector3f position, Vector3f motion, Vector3f rotation) {
|
||||||
super(entityId, geyserId, entityType, position.add(0d, entityType.getOffset(), 0d), motion, rotation);
|
super(entityId, geyserId, entityType, position.add(0d, entityType.getOffset(), 0d), motion, rotation);
|
||||||
}
|
}
|
||||||
@ -52,18 +55,28 @@ public class ItemEntity extends Entity {
|
|||||||
super.moveAbsolute(session, position.add(0d, this.entityType.getOffset(), 0d), rotation, isOnGround, teleported);
|
super.moveAbsolute(session, position.add(0d, this.entityType.getOffset(), 0d), rotation, isOnGround, teleported);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void spawnEntity(GeyserSession session) {
|
||||||
|
if (item == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
valid = true;
|
||||||
|
AddItemEntityPacket itemPacket = new AddItemEntityPacket();
|
||||||
|
itemPacket.setRuntimeEntityId(geyserId);
|
||||||
|
itemPacket.setPosition(position.add(0d, this.entityType.getOffset(), 0d));
|
||||||
|
itemPacket.setMotion(motion);
|
||||||
|
itemPacket.setUniqueEntityId(geyserId);
|
||||||
|
itemPacket.setFromFishing(false);
|
||||||
|
itemPacket.setItemInHand(item);
|
||||||
|
session.sendUpstreamPacket(itemPacket);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) {
|
public void updateBedrockMetadata(EntityMetadata entityMetadata, GeyserSession session) {
|
||||||
if (entityMetadata.getId() == 8) {
|
if (entityMetadata.getId() == 8) {
|
||||||
AddItemEntityPacket itemPacket = new AddItemEntityPacket();
|
item = ItemTranslator.translateToBedrock(session, (ItemStack) entityMetadata.getValue());
|
||||||
itemPacket.setRuntimeEntityId(geyserId);
|
despawnEntity(session);
|
||||||
itemPacket.setPosition(position.add(0d, this.entityType.getOffset(), 0d));
|
spawnEntity(session);
|
||||||
itemPacket.setMotion(motion);
|
|
||||||
itemPacket.setUniqueEntityId(geyserId);
|
|
||||||
itemPacket.setFromFishing(false);
|
|
||||||
itemPacket.getMetadata().putAll(metadata);
|
|
||||||
itemPacket.setItemInHand(ItemTranslator.translateToBedrock(session, (ItemStack) entityMetadata.getValue()));
|
|
||||||
session.sendUpstreamPacket(itemPacket);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
super.updateBedrockMetadata(entityMetadata, session);
|
super.updateBedrockMetadata(entityMetadata, session);
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren