Mirror von
https://github.com/GeyserMC/Geyser.git
synchronisiert 2024-12-26 16:12:46 +01:00
Check if firework item explosions tag is null (corresponding entity fix) (#633)
* Check if firework item explosions tag is null (corresponding entity fix) * Add null check on flight * Add null check around Flight * Fix newline on if statement * Fix newline on if statement, add null check on flight, remove debug code. * fix missing space..
Dieser Commit ist enthalten in:
Ursprung
286970676b
Commit
d918139c44
@ -60,54 +60,54 @@ public class FireworkEntity extends Entity {
|
|||||||
CompoundTag fireworks = tag.get("Fireworks");
|
CompoundTag fireworks = tag.get("Fireworks");
|
||||||
|
|
||||||
CompoundTagBuilder fireworksBuilder = CompoundTagBuilder.builder();
|
CompoundTagBuilder fireworksBuilder = CompoundTagBuilder.builder();
|
||||||
fireworksBuilder.byteTag("Flight", (Byte) fireworks.get("Flight").getValue());
|
if (fireworks.get("Flight") != null) {
|
||||||
|
fireworksBuilder.byteTag("Flight", (Byte) fireworks.get("Flight").getValue());
|
||||||
|
}
|
||||||
|
|
||||||
List<com.nukkitx.nbt.tag.CompoundTag> explosions = new ArrayList<>();
|
List<com.nukkitx.nbt.tag.CompoundTag> explosions = new ArrayList<>();
|
||||||
for (Tag effect : ((ListTag) fireworks.get("Explosions")).getValue()) {
|
if (fireworks.get("Explosions") != null) {
|
||||||
CompoundTag effectData = (CompoundTag) effect;
|
for (Tag effect : ((ListTag) fireworks.get("Explosions")).getValue()) {
|
||||||
|
CompoundTag effectData = (CompoundTag) effect;
|
||||||
|
CompoundTagBuilder effectBuilder = CompoundTagBuilder.builder();
|
||||||
|
|
||||||
try {
|
if (effectData.get("Type") != null) {
|
||||||
GeyserConnector.getInstance().getLogger().debug("Effect: " + new ObjectMapper().writeValueAsString(effect));
|
effectBuilder.byteTag("FireworkType", (Byte) effectData.get("Type").getValue());
|
||||||
} catch (JsonProcessingException e) { }
|
|
||||||
|
|
||||||
CompoundTagBuilder effectBuilder = CompoundTagBuilder.builder();
|
|
||||||
if (effectData.get("Type") != null) {
|
|
||||||
effectBuilder.byteTag("FireworkType", (Byte) effectData.get("Type").getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (effectData.get("Colors") != null) {
|
|
||||||
int[] oldColors = (int[]) effectData.get("Colors").getValue();
|
|
||||||
byte[] colors = new byte[oldColors.length];
|
|
||||||
|
|
||||||
int i = 0;
|
|
||||||
for (int color : oldColors) {
|
|
||||||
colors[i++] = FireworkColor.fromJavaID(color).getBedrockID();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
effectBuilder.byteArrayTag("FireworkColor", colors);
|
if (effectData.get("Colors") != null) {
|
||||||
}
|
int[] oldColors = (int[]) effectData.get("Colors").getValue();
|
||||||
|
byte[] colors = new byte[oldColors.length];
|
||||||
|
|
||||||
if (effectData.get("FadeColors") != null) {
|
int i = 0;
|
||||||
int[] oldColors = (int[]) effectData.get("FadeColors").getValue();
|
for (int color : oldColors) {
|
||||||
byte[] colors = new byte[oldColors.length];
|
colors[i++] = FireworkColor.fromJavaID(color).getBedrockID();
|
||||||
|
}
|
||||||
|
|
||||||
int i = 0;
|
effectBuilder.byteArrayTag("FireworkColor", colors);
|
||||||
for (int color : oldColors) {
|
|
||||||
colors[i++] = FireworkColor.fromJavaID(color).getBedrockID();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
effectBuilder.byteArrayTag("FireworkFade", colors);
|
if (effectData.get("FadeColors") != null) {
|
||||||
}
|
int[] oldColors = (int[]) effectData.get("FadeColors").getValue();
|
||||||
|
byte[] colors = new byte[oldColors.length];
|
||||||
|
|
||||||
if (effectData.get("Trail") != null) {
|
int i = 0;
|
||||||
effectBuilder.byteTag("FireworkTrail", (Byte) effectData.get("Trail").getValue());
|
for (int color : oldColors) {
|
||||||
}
|
colors[i++] = FireworkColor.fromJavaID(color).getBedrockID();
|
||||||
|
}
|
||||||
|
|
||||||
if (effectData.get("Flicker") != null) {
|
effectBuilder.byteArrayTag("FireworkFade", colors);
|
||||||
effectBuilder.byteTag("FireworkFlicker", (Byte) effectData.get("Flicker").getValue());
|
}
|
||||||
}
|
|
||||||
|
|
||||||
explosions.add(effectBuilder.buildRootTag());
|
if (effectData.get("Trail") != null) {
|
||||||
|
effectBuilder.byteTag("FireworkTrail", (Byte) effectData.get("Trail").getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (effectData.get("Flicker") != null) {
|
||||||
|
effectBuilder.byteTag("FireworkFlicker", (Byte) effectData.get("Flicker").getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
explosions.add(effectBuilder.buildRootTag());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fireworksBuilder.tag(new com.nukkitx.nbt.tag.ListTag<>("Explosions", com.nukkitx.nbt.tag.CompoundTag.class, explosions));
|
fireworksBuilder.tag(new com.nukkitx.nbt.tag.ListTag<>("Explosions", com.nukkitx.nbt.tag.CompoundTag.class, explosions));
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren