Added safety register for properties, also doing a debug value using "visibility" property

This commit is contained in:
OmeWillem
2024-07-03 23:05:05 +02:00
parent 5c62516182
commit 77384818f4
3 changed files with 26 additions and 1 deletions

View File

@@ -8,6 +8,7 @@ import com.ticxo.modelengine.api.model.ModeledEntity;
import lombok.Getter;
import lombok.Setter;
import me.zimzaza4.geyserutils.common.animation.Animation;
import me.zimzaza4.geyserutils.spigot.GeyserUtils;
import me.zimzaza4.geyserutils.spigot.api.PlayerUtils;
import org.bukkit.Bukkit;
import org.bukkit.entity.Entity;
@@ -40,6 +41,7 @@ public class EntityTask {
boolean firstAnimation = true;
boolean spawnAnimationPlayed = false;
boolean removed = false;
boolean registered = false;
String lastAnimation = "";
boolean looping = true;
@@ -199,11 +201,14 @@ public class EntityTask {
if (animationCooldown.get() > 0) {
animationCooldown.decrementAndGet();
}
updateVisibility(model.getViewers());
}
public void sendEntityData(Player player, int delay) {
// System.out.println("TYPE: " + "modelengine:" + model.getActiveModel().getBlueprint().getName().toLowerCase());
PlayerUtils.setCustomEntity(player, model.getEntity().getEntityId(), "modelengine:" + model.getActiveModel().getBlueprint().getName().toLowerCase());
registerProperties(player);
Bukkit.getScheduler().runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), () -> {
// PlayerUtils.sendCustomSkin(player, model.getEntity(), model.getActiveModel().getBlueprint().getName());
@@ -218,6 +223,16 @@ public class EntityTask {
}, delay);
}
// the only reason I do it here is for safety, it's also done in the Pack generator (just like adding the custom entity)
public void registerProperties(Player player) {
Entity entity = model.getEntity();
PlayerUtils.registerProperty(player, entity, "nm_raccoon:visibility", Boolean.class);
model.getActiveModel().getBones().forEach((s,bone) -> {
PlayerUtils.registerProperty(player, entity, "nm_raccoon:" + s, Boolean.class);
});
}
public void sendScale(Player player) {
// todo?
}
@@ -348,6 +363,14 @@ public class EntityTask {
}
public void updateVisibility(Set<Player> viewers) {
Entity entity = model.getEntity();
for (Player viewer : viewers) {
PlayerUtils.sendBoolProperty(viewer, entity, "nm_raccoon:visibility", true);
}
}
private boolean canSee(Player player, Entity entity) {
if (!player.isOnline()) {
return false;

View File

@@ -6,7 +6,10 @@ import com.ticxo.modelengine.api.entity.BukkitEntity;
import com.ticxo.modelengine.api.model.ActiveModel;
import com.ticxo.modelengine.api.model.ModeledEntity;
import lombok.Getter;
import me.zimzaza4.geyserutils.spigot.api.PlayerUtils;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.metadata.FixedMetadataValue;
@@ -41,7 +44,6 @@ public class ModelEntity {
this.activeModel = model;
this.entity = spawnEntity();
runEntityTask();
}
public void teleportToModel() {