Update visual fire handling with TriState support (#12303)

Replaced the Boolean-based visual fire system with TriState for improved clarity and flexibility, enabling three distinct states: TRUE, FALSE, and NOT_SET. Deprecated older methods in favor of new ones and updated internal handling to reflect these changes. Adjusted serialization and deserialization logic to accommodate the new TriState implementation.
This commit is contained in:
David
2025-05-07 23:33:41 +02:00
committed by GitHub
parent ab0253fecd
commit cbcf75a57c
4 changed files with 102 additions and 11 deletions

View File

@@ -13,6 +13,7 @@ import java.util.Set;
import java.util.UUID;
import io.papermc.paper.entity.LookAnchor;
import java.util.concurrent.CompletableFuture;
import net.kyori.adventure.util.TriState;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag;
import net.minecraft.network.chat.Component;
@@ -395,13 +396,25 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
}
@Override
@Deprecated
public void setVisualFire(boolean fire) {
this.getHandle().hasVisualFire = fire;
setVisualFire(fire ? TriState.TRUE : TriState.NOT_SET);
}
@Override
public void setVisualFire(final TriState fire) {
Preconditions.checkArgument(fire != null, "TriState cannot be null");
this.getHandle().visualFire = fire;
}
@Override
public boolean isVisualFire() {
return this.getHandle().hasVisualFire;
return getVisualFire().toBooleanOrElse(false);
}
@Override
public TriState getVisualFire() {
return this.getHandle().visualFire;
}
@Override