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<>("look_distance", configManager.getConfig().lookPropertyDistance()));
register(new DummyProperty<>("view_distance", configManager.getConfig().viewDistance())); register(new DummyProperty<>("view_distance", configManager.getConfig().viewDistance()));
register(new DummyProperty<>("permission_required", false));
register(new GlowProperty(packetFactory)); register(new GlowProperty(packetFactory));
register(new BitsetProperty("fire", 0, 0x01)); register(new BitsetProperty("fire", 0, 0x01));
register(new BitsetProperty("invisible", 0, 0x20)); register(new BitsetProperty("invisible", 0, 0x20));

@ -115,7 +115,7 @@ public class NpcTypeImpl implements NpcType {
public NpcTypeImpl build() { public NpcTypeImpl build() {
ServerVersion version = PacketEvents.getAPI().getServerManager().getVersion(); ServerVersion version = PacketEvents.getAPI().getServerManager().getVersion();
addProperties("fire", "invisible", "silent", "look", "look_distance", "view_distance", 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"); if (!type.equals(EntityTypes.PLAYER)) addProperties("dinnerbone");
// TODO: make this look nicer after completing the rest of the properties // TODO: make this look nicer after completing the rest of the properties
if (version.isNewerThanOrEquals(ServerVersion.V_1_9)) addProperties("glow"); 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<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<LookType> lookProperty = propertyRegistry.getByName("look", LookType.class);
EntityPropertyImpl<Double> lookDistanceProperty = propertyRegistry.getByName("look_distance", Double.class); EntityPropertyImpl<Double> lookDistanceProperty = propertyRegistry.getByName("look_distance", Double.class);
EntityPropertyImpl<Boolean> permissionRequiredProperty = propertyRegistry.getByName("permission_required", Boolean.class);
double lookDistance; double lookDistance;
for (NpcEntryImpl entry : npcRegistry.getProcessable()) { for (NpcEntryImpl entry : npcRegistry.getProcessable()) {
NpcImpl npc = entry.getNpc(); NpcImpl npc = entry.getNpc();
@ -39,11 +40,16 @@ public class NpcProcessorTask extends BukkitRunnable {
Player closest = null; Player closest = null;
LookType lookType = npc.getProperty(lookProperty); LookType lookType = npc.getProperty(lookProperty);
lookDistance = NumberConversions.square(npc.getProperty(lookDistanceProperty)); lookDistance = NumberConversions.square(npc.getProperty(lookDistanceProperty));
boolean permissionRequired = npc.getProperty(permissionRequiredProperty);
for (Player player : Bukkit.getOnlinePlayers()) { for (Player player : Bukkit.getOnlinePlayers()) {
if (!player.getWorld().equals(npc.getWorld())) { if (!player.getWorld().equals(npc.getWorld())) {
if (npc.isVisibleTo(player)) npc.hide(player); if (npc.isVisibleTo(player)) npc.hide(player);
continue; continue;
} }
if (permissionRequired && !player.hasPermission("znpcsplus.npc." + entry.getId())) {
if (npc.isVisibleTo(player)) npc.hide(player);
continue;
}
double distance = player.getLocation().distanceSquared(npc.getBukkitLocation()); double distance = player.getLocation().distanceSquared(npc.getBukkitLocation());
// visibility // visibility