-
-
Notifications
You must be signed in to change notification settings - Fork 332
Expand file tree
/
Copy pathServerEntity.java.patch
More file actions
51 lines (46 loc) · 2.55 KB
/
Copy pathServerEntity.java.patch
File metadata and controls
51 lines (46 loc) · 2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
--- a/net/minecraft/server/level/ServerEntity.java
+++ b/net/minecraft/server/level/ServerEntity.java
@@ -98,9 +_,9 @@
if (this.entity instanceof ItemFrame frame && this.tickCount % 10 == 0) {
ItemStack itemStack = frame.getItem();
- if (itemStack.getItem() instanceof MapItem) {
+ if (true) {
MapId id = itemStack.get(DataComponents.MAP_ID);
- MapItemSavedData data = MapItem.getSavedData(id, this.level);
+ MapItemSavedData data = MapItem.getSavedData(itemStack, this.level);
if (data != null) {
for (ServerPlayer player : this.level.players()) {
data.tickCarriedBy(player, itemStack, frame);
@@ -255,6 +_,7 @@
public void removePairing(ServerPlayer player) {
this.entity.stopSeenByPlayer(player);
player.connection.send(new ClientboundRemoveEntitiesPacket(this.entity.getId()));
+ net.neoforged.neoforge.event.EventHooks.onStopEntityTracking(this.entity, player);
}
public void addPairing(ServerPlayer player) {
@@ -262,9 +_,10 @@
this.sendPairingData(player, packets::add);
player.connection.send(new ClientboundBundlePacket(packets));
this.entity.startSeenByPlayer(player);
+ net.neoforged.neoforge.event.EventHooks.onStartEntityTracking(this.entity, player);
}
- public void sendPairingData(ServerPlayer player, Consumer<Packet<ClientGamePacketListener>> broadcast) {
+ public void sendPairingData(ServerPlayer player, Consumer<Packet<? super ClientGamePacketListener>> broadcast) {
this.entity.updateDataBeforeSync();
if (this.entity.isRemoved()) {
LOGGER.warn("Fetching packet for removed entity {}", this.entity);
@@ -272,6 +_,7 @@
Packet<ClientGamePacketListener> packet = this.entity.getAddEntityPacket(this);
broadcast.accept(packet);
+ this.entity.sendPairingData(player, payload -> broadcast.accept(payload.toVanillaClientbound()));
if (this.trackedDataValues != null) {
broadcast.accept(new ClientboundSetEntityDataPacket(this.entity.getId(), this.trackedDataValues));
}
@@ -309,6 +_,8 @@
if (this.entity instanceof Leashable leashable && leashable.isLeashed()) {
broadcast.accept(new ClientboundSetEntityLinkPacket(this.entity, leashable.getLeashHolder()));
}
+
+ net.neoforged.neoforge.attachment.sync.AttachmentSync.syncInitialEntityAttachments(this.entity, player, broadcast);
}
public Vec3 getPositionBase() {