mirror of https://github.com/GeyserMC/Geyser.git
Get rid of array and preserve original skin data
This commit is contained in:
parent
d2a9ee53e8
commit
92e4439075
|
@ -261,25 +261,26 @@ public class SkinProvider {
|
||||||
|
|
||||||
// Call event to allow extensions to modify the skin, cape and geo
|
// Call event to allow extensions to modify the skin, cape and geo
|
||||||
boolean isBedrock = GeyserImpl.getInstance().connectionByUuid(entity.getUuid()) != null;
|
boolean isBedrock = GeyserImpl.getInstance().connectionByUuid(entity.getUuid()) != null;
|
||||||
final SkinData[] skinData = {new SkinData(skin, cape, geometry)};
|
SkinData skinData = new SkinData(skin, cape, geometry);
|
||||||
GeyserImpl.getInstance().eventBus().fire(new SessionSkinApplyEvent(session, entity.getUsername(), entity.getUuid(), data.isAlex(), isBedrock, skinData[0]) {
|
final EventSkinData eventSkinData = new EventSkinData(skinData);
|
||||||
|
GeyserImpl.getInstance().eventBus().fire(new SessionSkinApplyEvent(session, entity.getUsername(), entity.getUuid(), data.isAlex(), isBedrock, skinData) {
|
||||||
@Override
|
@Override
|
||||||
public void skin(@NonNull Skin newSkin) {
|
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
|
@Override
|
||||||
public void cape(@NonNull Cape newCape) {
|
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
|
@Override
|
||||||
public void geometry(@NonNull SkinGeometry newGeometry) {
|
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) {
|
} catch (Exception e) {
|
||||||
GeyserImpl.getInstance().getLogger().error(GeyserLocale.getLocaleStringLog("geyser.skin.fail", entity.getUuid()), 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 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue