Files
CustomNPC-Plus/src/main/java/noppes/npcs/CustomNpcsPermissions.java
T

200 lines
10 KiB
Java
Raw Normal View History

2018-09-13 12:03:28 -04:00
package noppes.npcs;
2024-03-27 17:17:21 -04:00
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side;
2025-01-29 13:20:04 -05:00
import kamkeel.npcs.developer.Developer;
2023-01-12 21:33:06 -05:00
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import org.apache.logging.log4j.LogManager;
2018-09-13 12:03:28 -04:00
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
2025-03-13 17:14:45 -04:00
public class CustomNpcsPermissions {
2024-02-19 19:14:51 -05:00
// Open GUI
public static final Permission NPC_GUI = new Permission("customnpcs.npc.gui");
2025-02-13 02:09:50 -05:00
public static final Permission PAINTBRUSH_GUI = new Permission("customnpcs.npc.paintbrush");
// Builder
public static final Permission NPC_BUILD = new Permission("customnpcs.npc.build");
2024-02-19 19:14:51 -05:00
// Modify NPC
public static final Permission NPC_DELETE = new Permission("customnpcs.npc.delete");
2025-03-13 17:14:45 -04:00
public static final Permission NPC_CREATE = new Permission("customnpcs.npc.create");
2024-02-19 19:14:51 -05:00
public static final Permission NPC_RESET = new Permission("customnpcs.npc.reset");
// Extra NPCs
public static final Permission NPC_FREEZE = new Permission("customnpcs.npc.freeze");
public static final Permission NPC_TELEPORT = new Permission("customnpcs.npc.teleport");
// Save NPC
2025-03-13 17:14:45 -04:00
public static final Permission NPC_AI = new Permission("customnpcs.npc.ai");
public static final Permission NPC_ADVANCED = new Permission("customnpcs.npc.advanced");
public static final Permission NPC_DISPLAY = new Permission("customnpcs.npc.display");
public static final Permission NPC_INVENTORY = new Permission("customnpcs.npc.inventory");
public static final Permission NPC_STATS = new Permission("customnpcs.npc.stats");
public static final Permission NPC_CLONE = new Permission("customnpcs.npc.clone");
2018-09-13 12:03:28 -04:00
2025-03-14 20:38:11 -04:00
public static final Permission NPC_ADVANCED_TRADER = new Permission("customnpcs.npc.advanced.trader");
public static final Permission NPC_ADVANCED_DIALOG = new Permission("customnpcs.npc.advanced.dialog");
public static final Permission NPC_ADVANCED_FACTION = new Permission("customnpcs.npc.advanced.faction");
public static final Permission NPC_ADVANCED_JOB = new Permission("customnpcs.npc.advanced.job");
public static final Permission NPC_ADVANCED_ROLE = new Permission("customnpcs.npc.advanced.role");
public static final Permission NPC_ADVANCED_TRANSPORT = new Permission("customnpcs.npc.advanced.transport");
public static final Permission NPC_ADVANCED_TRANSFORM = new Permission("customnpcs.npc.advanced.transform");
public static final Permission NPC_ADVANCED_LINKED = new Permission("customnpcs.npc.advanced.linked");
public static final Permission NPC_ADVANCED_MAGIC = new Permission("customnpcs.npc.advanced.linked");
public static final Permission NPC_ADVANCED_TAGS = new Permission("customnpcs.npc.advanced.tags");
2024-02-19 19:14:51 -05:00
public static final Permission GLOBAL_REMOTE = new Permission("customnpcs.global.remote");
2025-03-14 20:32:26 -04:00
// Save Global Preferences
2024-02-19 19:14:51 -05:00
public static final Permission GLOBAL_LINKED = new Permission("customnpcs.global.linked");
2025-03-13 17:14:45 -04:00
public static final Permission GLOBAL_PLAYERDATA = new Permission("customnpcs.global.playerdata");
public static final Permission GLOBAL_BANK = new Permission("customnpcs.global.bank");
public static final Permission GLOBAL_DIALOG = new Permission("customnpcs.global.dialog");
public static final Permission GLOBAL_QUEST = new Permission("customnpcs.global.quest");
public static final Permission GLOBAL_FACTION = new Permission("customnpcs.global.faction");
public static final Permission GLOBAL_TRANSPORT = new Permission("customnpcs.global.transport");
public static final Permission GLOBAL_RECIPE = new Permission("customnpcs.global.recipe");
public static final Permission GLOBAL_NATURALSPAWN = new Permission("customnpcs.global.naturalspawn");
public static final Permission GLOBAL_TAG = new Permission("customnpcs.global.tag");
2024-02-19 19:14:51 -05:00
public static final Permission GLOBAL_ANIMATION = new Permission("customnpcs.global.animation");
2025-02-16 04:54:21 -05:00
public static final Permission GLOBAL_MAGIC = new Permission("customnpcs.global.magic");
public static final Permission GLOBAL_EFFECT = new Permission("customnpcs.global.effect");
2024-04-16 02:00:59 -04:00
public static final Permission SPAWNER_MOB = new Permission("customnpcs.spawner.mob");
2025-03-13 17:14:45 -04:00
public static final Permission SPAWNER_CREATE = new Permission("customnpcs.spawner.create");
2024-02-19 19:14:51 -05:00
// Open / Use Wands
2025-03-13 17:14:45 -04:00
public static final Permission TOOL_MOUNTER = new Permission("customnpcs.tool.mounter");
public static final Permission TOOL_PATHER = new Permission("customnpcs.tool.pather");
public static final Permission TOOL_SCRIPTER = new Permission("customnpcs.tool.scripter");
2024-02-19 19:14:51 -05:00
public static final Permission TOOL_CLONER = new Permission("customnpcs.tool.cloner");
public static final Permission TOOL_SCRIPTED_ITEM = new Permission("customnpcs.tool.scripteditem");
2024-02-19 19:47:13 -05:00
public static final Permission TOOL_TELEPORTER = new Permission("customnpcs.tool.teleporter");
2024-02-19 19:14:51 -05:00
// Edit Villager
2025-03-13 17:14:45 -04:00
public static final Permission EDIT_VILLAGER = new Permission("customnpcs.edit.villager");
2024-02-19 19:14:51 -05:00
public static final Permission EDIT_BLOCKS = new Permission("customnpcs.edit.blocks");
public static final Permission EDIT_REDSTONE = new Permission("customnpcs.edit.redstone");
public static final Permission EDIT_BOOK = new Permission("customnpcs.edit.book");
public static final Permission EDIT_TOMBSTONE = new Permission("customnpcs.edit.tombsone");
public static final Permission EDIT_WAYPOINT = new Permission("customnpcs.edit.waypoint");
public static final Permission EDIT_BIGSIGN = new Permission("customnpcs.edit.bigsign");
public static final Permission SOULSTONE_ALL = new Permission("customnpcs.soulstone.all");
// Modify / Save Scripts
2024-03-07 19:34:25 -05:00
public static final Permission SCRIPT = new Permission("customnpcs.script");
2024-02-19 19:14:51 -05:00
public static final Permission SCRIPT_NPC = new Permission("customnpcs.script.npc");
public static final Permission SCRIPT_FORGE = new Permission("customnpcs.script.forge");
public static final Permission SCRIPT_PLAYER = new Permission("customnpcs.script.player");
public static final Permission SCRIPT_GLOBAL = new Permission("customnpcs.script.global");
public static final Permission SCRIPT_ITEM = new Permission("customnpcs.script.item");
public static final Permission SCRIPT_BLOCK = new Permission("customnpcs.script.block");
2018-09-13 12:03:28 -04:00
// Profiles
public static final Permission PROFILE_ADMIN = new Permission("customnpcs.profile.admin");
public static final Permission PROFILE_CREATE = new Permission("customnpcs.profile.create");
public static final Permission PROFILE_DELETE = new Permission("customnpcs.profile.delete");
public static final Permission PROFILE_RENAME = new Permission("customnpcs.profile.rename");
public static final Permission PROFILE_CHANGE = new Permission("customnpcs.profile.change");
2025-02-19 18:15:05 -05:00
public static final Permission PROFILE_REGION_BYPASS = new Permission("customnpcs.profile.region-bypass");
public static final Permission PROFILE_MAX = new Permission("customnpcs.profile.max.*");
2025-03-13 17:14:45 -04:00
public static CustomNpcsPermissions Instance;
private Class<?> bukkit;
private Method getPlayer;
private Method hasPermission;
public CustomNpcsPermissions() {
Instance = this;
try {
bukkit = Class.forName("org.bukkit.Bukkit");
getPlayer = bukkit.getMethod("getPlayer", String.class);
hasPermission = Class.forName("org.bukkit.entity.Player").getMethod("hasPermission", String.class);
LogManager.getLogger(CustomNpcs.class).info("Bukkit permissions enabled");
LogManager.getLogger(CustomNpcs.class).info("Permissions available:");
Collections.sort(Permission.permissions, String.CASE_INSENSITIVE_ORDER);
for (String p : Permission.permissions) {
LogManager.getLogger(CustomNpcs.class).info(p);
}
} catch (ClassNotFoundException e) {
// bukkit/mcpc+ is not loaded
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
}
public static boolean hasPermission(EntityPlayer player, Permission permission) {
if (player != null) {
if (FMLCommonHandler.instance().getSide() == Side.SERVER && NoppesUtilServer.isOp(player))
2024-03-26 17:52:54 -04:00
return true;
2025-03-13 17:14:45 -04:00
if (Developer.Instance.hasUniversal(player.getUniqueID()))
return true;
if (permission != null) {
if (Instance.bukkit != null) {
return Instance.bukkitPermission(player.getCommandSenderName(), permission.name);
}
}
}
return true;
}
public static boolean hasCustomPermission(EntityPlayer player, String permission) {
if (player != null) {
if (FMLCommonHandler.instance().getSide() == Side.SERVER && NoppesUtilServer.isOp(player))
return true;
if (Developer.Instance.hasUniversal(player.getUniqueID()))
return true;
if (Instance.bukkit != null) {
return Instance.bukkitPermission(player.getCommandSenderName(), permission);
}
2025-03-13 17:14:45 -04:00
}
return false;
}
private boolean bukkitPermission(String username, String permission) {
try {
Object player = getPlayer.invoke(null, username);
return (Boolean) hasPermission.invoke(player, permission);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return false;
}
public static class Permission {
private static final List<String> permissions = new ArrayList<String>();
public String name;
public Permission(String name) {
this.name = name;
if (!permissions.contains(name))
permissions.add(name);
}
}
public static boolean hasPermissionString(EntityPlayerMP player, String permission) {
if (Instance.bukkit != null) {
return Instance.bukkitPermission(player.getCommandSenderName(), permission);
}
return true;
}
public static boolean enabled() {
return Instance.bukkit != null;
}
2018-09-13 12:03:28 -04:00
}