Fix protocollib integration and overwrite text display component

This commit is contained in:
fullwall 2024-06-06 18:22:56 +08:00
parent 468703fe79
commit d4b41bd0cd

View File

@ -101,14 +101,27 @@ public class ProtocolLibListener implements Listener {
return; return;
for (WrappedDataValue wdv : wdvs) { for (WrappedDataValue wdv : wdvs) {
if (fakeName != null && wdv.getIndex() == 2) { switch (wdv.getIndex()) {
case 0:
if (sneaking) {
byte flags = (byte) (((Number) wdv.getValue()).byteValue() | 0x02);
wdv.setValue(flags);
delta = true;
}
break;
case 2:
if (fakeName != null) {
wdv.setRawValue(fakeName); wdv.setRawValue(fakeName);
delta = true; delta = true;
} else if (sneaking && wdv.getIndex() == 0) { }
byte b = (byte) (((Number) wdv.getValue()).byteValue() | 0x02); break;
wdv.setValue(b); case 23:
if (fakeName != null && npc.getEntity().getType() == EntityType.TEXT_DISPLAY) {
wdv.setRawValue(((Optional<?>) fakeName).get());
delta = true; delta = true;
} }
break;
}
} }
if (delta) { if (delta) {
packet.getDataValueCollectionModifier().write(0, wdvs); packet.getDataValueCollectionModifier().write(0, wdvs);
@ -222,7 +235,7 @@ public class ProtocolLibListener implements Listener {
private NPC getNPCFromPacket(PacketEvent event) { private NPC getNPCFromPacket(PacketEvent event) {
PacketContainer packet = event.getPacket(); PacketContainer packet = event.getPacket();
try { try {
Object entityModifier = packet.getEntityModifier(event).getTarget(); Object entityModifier = packet.getEntityModifier(event).read(0);
return entityModifier instanceof NPCHolder ? ((NPCHolder) entityModifier).getNPC() : null; return entityModifier instanceof NPCHolder ? ((NPCHolder) entityModifier).getNPC() : null;
} catch (FieldAccessException | IllegalArgumentException ex) { } catch (FieldAccessException | IllegalArgumentException ex) {
if (!LOGGED_ERROR) { if (!LOGGED_ERROR) {