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,13 +101,26 @@ public class ProtocolLibListener implements Listener {
return; return;
for (WrappedDataValue wdv : wdvs) { for (WrappedDataValue wdv : wdvs) {
if (fakeName != null && wdv.getIndex() == 2) { switch (wdv.getIndex()) {
wdv.setRawValue(fakeName); case 0:
delta = true; if (sneaking) {
} else if (sneaking && wdv.getIndex() == 0) { byte flags = (byte) (((Number) wdv.getValue()).byteValue() | 0x02);
byte b = (byte) (((Number) wdv.getValue()).byteValue() | 0x02); wdv.setValue(flags);
wdv.setValue(b); delta = true;
delta = true; }
break;
case 2:
if (fakeName != null) {
wdv.setRawValue(fakeName);
delta = true;
}
break;
case 23:
if (fakeName != null && npc.getEntity().getType() == EntityType.TEXT_DISPLAY) {
wdv.setRawValue(((Optional<?>) fakeName).get());
delta = true;
}
break;
} }
} }
if (delta) { if (delta) {
@ -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) {