added permission_required property

This commit is contained in:
D3v1s0m 2023-10-28 10:14:20 +05:30
parent 4a89f3c21c
commit 3fba776df1
No known key found for this signature in database
GPG Key ID: FA1F770C7B1D40C1
3 changed files with 9 additions and 1 deletions

@ -127,6 +127,8 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
register(new DummyProperty<>("look_distance", configManager.getConfig().lookPropertyDistance()));
register(new DummyProperty<>("view_distance", configManager.getConfig().viewDistance()));
register(new DummyProperty<>("permission_required", false));
register(new GlowProperty(packetFactory));
register(new BitsetProperty("fire", 0, 0x01));
register(new BitsetProperty("invisible", 0, 0x20));

@ -115,7 +115,7 @@ public class NpcTypeImpl implements NpcType {
public NpcTypeImpl build() {
ServerVersion version = PacketEvents.getAPI().getServerManager().getVersion();
addProperties("fire", "invisible", "silent", "look", "look_distance", "view_distance",
"potion_color", "potion_ambient", "display_name");
"potion_color", "potion_ambient", "display_name", "permission_required");
if (!type.equals(EntityTypes.PLAYER)) addProperties("dinnerbone");
// TODO: make this look nicer after completing the rest of the properties
if (version.isNewerThanOrEquals(ServerVersion.V_1_9)) addProperties("glow");

@ -30,6 +30,7 @@ public class NpcProcessorTask extends BukkitRunnable {
EntityPropertyImpl<Integer> viewDistanceProperty = propertyRegistry.getByName("view_distance", Integer.class); // Not sure why this is an Integer, but it is
EntityPropertyImpl<LookType> lookProperty = propertyRegistry.getByName("look", LookType.class);
EntityPropertyImpl<Double> lookDistanceProperty = propertyRegistry.getByName("look_distance", Double.class);
EntityPropertyImpl<Boolean> permissionRequiredProperty = propertyRegistry.getByName("permission_required", Boolean.class);
double lookDistance;
for (NpcEntryImpl entry : npcRegistry.getProcessable()) {
NpcImpl npc = entry.getNpc();
@ -39,11 +40,16 @@ public class NpcProcessorTask extends BukkitRunnable {
Player closest = null;
LookType lookType = npc.getProperty(lookProperty);
lookDistance = NumberConversions.square(npc.getProperty(lookDistanceProperty));
boolean permissionRequired = npc.getProperty(permissionRequiredProperty);
for (Player player : Bukkit.getOnlinePlayers()) {
if (!player.getWorld().equals(npc.getWorld())) {
if (npc.isVisibleTo(player)) npc.hide(player);
continue;
}
if (permissionRequired && !player.hasPermission("znpcsplus.npc." + entry.getId())) {
if (npc.isVisibleTo(player)) npc.hide(player);
continue;
}
double distance = player.getLocation().distanceSquared(npc.getBukkitLocation());
// visibility