|
16 | 16 | import studio.magemonkey.divinity.Divinity; |
17 | 17 | import studio.magemonkey.divinity.api.event.EntityEquipmentChangeEvent; |
18 | 18 | import studio.magemonkey.divinity.data.api.DivinityUser; |
| 19 | +import studio.magemonkey.divinity.data.api.UserEntityNamesMode; |
19 | 20 | import studio.magemonkey.divinity.data.api.UserProfile; |
20 | 21 | import studio.magemonkey.divinity.manager.EntityManager; |
21 | 22 |
|
@@ -179,4 +180,35 @@ protected void manageDamageParticle(@NotNull EnginePlayerPacketEvent e, @NotNull |
179 | 180 | ex.printStackTrace(); |
180 | 181 | } |
181 | 182 | } |
| 183 | + |
| 184 | + @Override |
| 185 | + protected void manageEntityNames(@NotNull EnginePlayerPacketEvent e, @NotNull Object packet) { |
| 186 | + DivinityUser user = plugin.getUserManager().getOrLoadUser(e.getReciever()); |
| 187 | + if (user == null) return; |
| 188 | + |
| 189 | + UserProfile profile = user.getActiveProfile(); |
| 190 | + UserEntityNamesMode namesMode = profile.getNamesMode(); |
| 191 | + if (namesMode == UserEntityNamesMode.DEFAULT) return; |
| 192 | + |
| 193 | + Class pClass = Reflex.getClass(PACKET_LOCATION, "PacketPlayOutEntityMetadata"); |
| 194 | + |
| 195 | + Object p = pClass.cast(packet); |
| 196 | + @SuppressWarnings("unchecked") |
| 197 | + List<Object> list = (List<Object>) Reflex.getFieldValue(p, "d"); |
| 198 | + if (list == null) return; |
| 199 | + |
| 200 | + // Hide or show custom entity names |
| 201 | + if (list.size() > 13) { |
| 202 | + Object index3 = list.get(13); |
| 203 | + |
| 204 | + Method bMethod = Reflex.getMethod(index3.getClass(), "c"); |
| 205 | + |
| 206 | + Object b = Reflex.invokeMethod(bMethod, index3); |
| 207 | + if (b == null || !b.getClass().equals(Boolean.class)) return; |
| 208 | + //Object nameVisible = Reflex.getFieldValue(index3, "b"); |
| 209 | + |
| 210 | + boolean visibility = namesMode == UserEntityNamesMode.ALWAYS_VISIBLE; |
| 211 | + Reflex.setFieldValue(index3, "c", visibility); |
| 212 | + } |
| 213 | + } |
182 | 214 | } |
0 commit comments