Get rid of array and preserve original skin data

This commit is contained in:
rtm516 2024-04-27 00:00:41 +01:00
parent d2a9ee53e8
commit 92e4439075
No known key found for this signature in database
GPG Key ID: 331715B8B007C67A
1 changed files with 23 additions and 6 deletions

View File

@ -261,25 +261,26 @@ public class SkinProvider {
// Call event to allow extensions to modify the skin, cape and geo
boolean isBedrock = GeyserImpl.getInstance().connectionByUuid(entity.getUuid()) != null;
final SkinData[] skinData = {new SkinData(skin, cape, geometry)};
GeyserImpl.getInstance().eventBus().fire(new SessionSkinApplyEvent(session, entity.getUsername(), entity.getUuid(), data.isAlex(), isBedrock, skinData[0]) {
SkinData skinData = new SkinData(skin, cape, geometry);
final EventSkinData eventSkinData = new EventSkinData(skinData);
GeyserImpl.getInstance().eventBus().fire(new SessionSkinApplyEvent(session, entity.getUsername(), entity.getUuid(), data.isAlex(), isBedrock, skinData) {
@Override
public void skin(@NonNull Skin newSkin) {
skinData[0] = new SkinData(newSkin, skinData[0].cape(), skinData[0].geometry());
eventSkinData.skinData(new SkinData(newSkin, skinData.cape(), skinData.geometry()));
}
@Override
public void cape(@NonNull Cape newCape) {
skinData[0] = new SkinData(skinData[0].skin(), newCape, skinData[0].geometry());
eventSkinData.skinData(new SkinData(skinData.skin(), newCape, skinData.geometry()));
}
@Override
public void geometry(@NonNull SkinGeometry newGeometry) {
skinData[0] = new SkinData(skinData[0].skin(), skinData[0].cape(), newGeometry);
eventSkinData.skinData(new SkinData(skinData.skin(), skinData.cape(), newGeometry));
}
});
return skinData[0];
return eventSkinData.skinData();
} catch (Exception e) {
GeyserImpl.getInstance().getLogger().error(GeyserLocale.getLocaleStringLog("geyser.skin.fail", entity.getUuid()), e);
}
@ -614,4 +615,20 @@ public class SkinProvider {
public record SkinAndCape(Skin skin, Cape cape) {
}
public static class EventSkinData {
private SkinData skinData;
public EventSkinData(SkinData skinData) {
this.skinData = skinData;
}
public SkinData skinData() {
return skinData;
}
public void skinData(SkinData skinData) {
this.skinData = skinData;
}
}
}