Skip to content

Commit

Permalink
Merge pull request #43 from CivClassic/civ14
Browse files Browse the repository at this point in the history
Up to Civ14
  • Loading branch information
ProgrammerDan committed Oct 2, 2019
2 parents fe3fc61 + a6f93ce commit b4e51df
Show file tree
Hide file tree
Showing 56 changed files with 725 additions and 692 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -164,3 +164,7 @@ release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties

.idea/

*.iml
2 changes: 1 addition & 1 deletion namelayer-all/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

<artifactId>NameLayer</artifactId>
<!-- My Mavenfu is weak, you must update in 2 places. -->
<version>2.12.0</version>
<version>2.13.0</version>

<dependencies>
<dependency>
Expand Down
16 changes: 13 additions & 3 deletions namelayer-spigot/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,21 @@
<dependencies>
<dependency>
<groupId>vg.civcraft.mc.namelayer</groupId>
<artifactId>namelayer-nms-v1_13_R2</artifactId>
<artifactId>namelayer-nms-v1_14_R1</artifactId>
<version>1.0.1</version>
</dependency>

<!-- Spigot -->
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.13.2-R0.1-SNAPSHOT</version>
<version>1.14.4-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>vg.civcraft.mc.civmodcore</groupId>
<artifactId>CivModCore</artifactId>
<version>1.7.0</version>
<version>1.7.5</version>
<scope>provided</scope>
</dependency>
</dependencies>
Expand Down Expand Up @@ -121,6 +121,16 @@
<artifactId>namelayer-nms-v1_12_R1</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>vg.civcraft.mc.namelayer</groupId>
<artifactId>namelayer-nms-v1_13_R2</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>vg.civcraft.mc.namelayer</groupId>
<artifactId>namelayer-nms-v1_14_R1</artifactId>
<version>1.0.1</version>
</dependency>
</dependencies>
</profile>
</profiles>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
package vg.civcraft.mc.namelayer;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
Expand All @@ -32,8 +29,8 @@ public class GroupManager{
private static GroupManagerDao groupManagerDao;
private PermissionHandler permhandle;

private static Map<String, Group> groupsByName = new ConcurrentHashMap<String, Group>();
private static Map<Integer, Group> groupsById = new ConcurrentHashMap<Integer, Group>();
private static Map<String, Group> groupsByName = new ConcurrentHashMap<>();
private static Map<Integer, Group> groupsById = new ConcurrentHashMap<>();

public GroupManager(){
groupManagerDao = NameLayerPlugin.getGroupManagerDao();
Expand All @@ -42,7 +39,8 @@ public GroupManager(){

/**
* Saves the group into caching and saves it into the db. Also fires the GroupCreateEvent.
* @param The group to create to db.
* @param group the group to create to db.
* @return the internal ID of the group created.
*/
public int createGroup(Group group){
return createGroup(group,true);
Expand Down Expand Up @@ -232,6 +230,9 @@ public void transferGroup(Group g, UUID uuid, boolean savetodb){
* _for now_ simply invalidating the cache on servers.
*
* Eventually, we'll need to go line-by-line through the db code and just replicate in cache. That day is not today.
*
* @param group the origin group
* @param toMerge the group to merge in
*/
public void doneMergeGroup(Group group, Group toMerge) {
if (group == null || toMerge == null) {
Expand Down Expand Up @@ -410,6 +411,9 @@ public static Group getSpecialCircumstanceGroup(String name){
/**
* DO NOT WORK WITH THE PERMISSION OBJECT ITSELF TO DETERMINE ACCESS. Use the methods provided in this class instead, as they
* respect all the permission inheritation stuff
*
* @param group the group to retrieve permissions from
* @return the actual permissions for this object or null
*/
public GroupPermission getPermissionforGroup(Group group){
if (group == null) {
Expand All @@ -432,7 +436,7 @@ public boolean hasAccess(Group group, UUID player, PermissionType perm) {
if (p != null && (p.isOp() || p.hasPermission("namelayer.admin"))) {
return true;
}
if (group == null || player == null || perm == null) {
if (group == null || perm == null) {
NameLayerPlugin.getInstance().getLogger().log(Level.INFO, "hasAccess failed, caller passed in null", new Exception());
return false;
}
Expand All @@ -443,26 +447,25 @@ public boolean hasAccess(Group group, UUID player, PermissionType perm) {
return false;
}
}
GroupPermission perms = getPermissionforGroup(group);
for(PlayerType rank : getRecursivePlayerTypes(group, player)) {
if (perms.hasPermission(rank, perm)) {
//player has right rank in the group itself or at least one super group
return hasPlayerInheritsPerms(group, player, perm);
}

/**
* Checks if a player has a permission in a group or one of its parent groups
* @param group the group, and its parents etc to check
* @param player the player
* @param perm the permission to check
* @return if the player has the specified permission in a group or one of its parents
*/
private boolean hasPlayerInheritsPerms(Group group, UUID player, PermissionType perm) {
while (group != null) {
PlayerType type = group.getPlayerType(player);
if (type != null && getPermissionforGroup(group).hasPermission(type, perm)) {
return true;
}
}
return false;
}

private List<PlayerType> getRecursivePlayerTypes(Group group, UUID player) {
List<PlayerType> perms = new LinkedList<PlayerType>();
PlayerType type = group.getPlayerType(player);
if (type != null) {
perms.add(type);
group = group.getSuperGroup();
}
if (group.hasSuperGroup()) {
perms.addAll(getRecursivePlayerTypes(group.getSuperGroup(), player));
}
return perms;
return false;
}

// == PERMISSION HANDLING ============================================================= //
Expand All @@ -478,7 +481,7 @@ private void deleteGroupPerms(Group group){
public List<String> getAllGroupNames(UUID uuid){
if (uuid == null) {
NameLayerPlugin.getInstance().getLogger().log(Level.INFO, "getAllGroupNames failed, caller passed in null", new Exception());
return new ArrayList<String>();
return new ArrayList<>();
}
return groupManagerDao.getGroupNames(uuid);
}
Expand All @@ -491,11 +494,7 @@ private void initiateDefaultPerms(Integer groupId){
Map <PlayerType, List <PermissionType>> defaultPermMapping = new HashMap<GroupManager.PlayerType, List<PermissionType>>();
for(PermissionType perm : PermissionType.getAllPermissions()) {
for(PlayerType type : perm.getDefaultPermLevels()) {
List <PermissionType> perms = defaultPermMapping.get(type);
if (perms == null) {
perms = new LinkedList<PermissionType>();
defaultPermMapping.put(type, perms);
}
List<PermissionType> perms = defaultPermMapping.computeIfAbsent(type, k -> new ArrayList<>());
perms.add(perm);
}
}
Expand All @@ -512,7 +511,7 @@ public String getDefaultGroup(UUID uuid){

/**
* Invalidates a group from cache.
* @param group
* @param group the group to invalidate cache for
*/
public static void invalidateCache(String group){
if (group == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,6 @@ public void onEnable() {
}
}

// Calling this for ACivMod
@Override
public void onLoad(){
super.onLoad();
}

public void registerListeners(){
getServer().getPluginManager().registerEvents(new AssociationListener(), this);
getServer().getPluginManager().registerEvents(new PlayerListener(), this);
Expand Down Expand Up @@ -215,26 +209,6 @@ else if (level == Level.SEVERE)
message +
"\n --------------------------------------");
}
/**
* Updates the version number for a plugin. You must specify what
* the current version number is.
* @param currentVersion- The current version of the plugin.
* @param pluginName- The plugin name.
* @return Returns the new version of the db.
*/
@Deprecated
public static void insertVersionNum(int currentVersion, String pluginName){
throw new UnsupportedOperationException("insertVersionNum is no longer supported. Extend CivModCore and use ManagedDatasource");
}
/**
* Checks the version of a specific plugin's db.
* @param name- The name of the plugin.
* @return Returns the version of the plugin or 0 if none was found.
*/
@Deprecated
public static int getVersionNum(String pluginName){
throw new UnsupportedOperationException("getVersionNum is no longer supported. Extend CivModCore and use ManagedDatasource");
}

public static String getSpecialAdminGroup(){
return "Name_Layer_Special";
Expand All @@ -244,11 +218,6 @@ public static boolean createGroupOnFirstJoin() {
return createGroupOnFirstJoin;
}

@Override
protected String getPluginName() {
return "NameLayerPlugin";
}

public int getGroupLimit(){
return groupLimit;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,48 +10,42 @@
import vg.civcraft.mc.civmodcore.command.Command;
import vg.civcraft.mc.namelayer.command.commands.AcceptInvite;
import vg.civcraft.mc.namelayer.command.commands.AddBlacklist;
import vg.civcraft.mc.namelayer.command.commands.LinkGroups;
import vg.civcraft.mc.namelayer.command.commands.ChangePlayerName;
import vg.civcraft.mc.namelayer.command.commands.CreateGroup;
import vg.civcraft.mc.namelayer.command.commands.DeleteGroup;
import vg.civcraft.mc.namelayer.command.commands.DisciplineGroup;
import vg.civcraft.mc.namelayer.command.commands.GetDefaultGroup;
import vg.civcraft.mc.namelayer.command.commands.GlobalStats;
import vg.civcraft.mc.namelayer.command.commands.GroupStats;
import vg.civcraft.mc.namelayer.command.commands.InfoDump;
import vg.civcraft.mc.namelayer.command.commands.InvitePlayer;
import vg.civcraft.mc.namelayer.command.commands.JoinGroup;
import vg.civcraft.mc.namelayer.command.commands.LeaveGroup;
import vg.civcraft.mc.namelayer.command.commands.NameLayerGroupGui;
import vg.civcraft.mc.namelayer.command.commands.ShowBlacklist;
import vg.civcraft.mc.namelayer.command.commands.ListCurrentInvites;
import vg.civcraft.mc.namelayer.command.commands.ListGroups;
import vg.civcraft.mc.namelayer.command.commands.ListMembers;
import vg.civcraft.mc.namelayer.command.commands.ListPermissions;
import vg.civcraft.mc.namelayer.command.commands.ListPlayerTypes;
import vg.civcraft.mc.namelayer.command.commands.ListSubGroups;
import vg.civcraft.mc.namelayer.command.commands.MergeGroups;
import vg.civcraft.mc.namelayer.command.commands.ModifyPermissions;
import vg.civcraft.mc.namelayer.command.commands.NameLayerGroupGui;
import vg.civcraft.mc.namelayer.command.commands.PromotePlayer;
import vg.civcraft.mc.namelayer.command.commands.RejectInvite;
import vg.civcraft.mc.namelayer.command.commands.RemoveBlacklist;
import vg.civcraft.mc.namelayer.command.commands.RemoveMember;
import vg.civcraft.mc.namelayer.command.commands.UnlinkGroups;
import vg.civcraft.mc.namelayer.command.commands.RevokeInvite;
import vg.civcraft.mc.namelayer.command.commands.SetDefaultGroup;
import vg.civcraft.mc.namelayer.command.commands.SetPassword;
import vg.civcraft.mc.namelayer.command.commands.ShowBlacklist;
import vg.civcraft.mc.namelayer.command.commands.ToggleAutoAcceptInvites;
import vg.civcraft.mc.namelayer.command.commands.TransferGroup;
import vg.civcraft.mc.namelayer.command.commands.PromotePlayer;
import vg.civcraft.mc.namelayer.command.commands.RejectInvite;
import vg.civcraft.mc.namelayer.command.commands.RevokeInvite;
import vg.civcraft.mc.namelayer.command.commands.SetDefaultGroup;
import vg.civcraft.mc.namelayer.command.commands.GetDefaultGroup;
import vg.civcraft.mc.namelayer.command.commands.UpdateName;

public class CommandHandler {
public Map<String, Command> commands = new HashMap<String, Command>();
private Map<String, Command> commands = new HashMap<>();

public void registerCommands(){
addCommands(new AcceptInvite("AcceptInvite"));
//addCommands(new LinkGroups("LinkGroups"));
//addCommands(new UnlinkGroups("UnlinkGroups"));
//addCommands(new ListSubGroups("ListSubGroups"));
addCommands(new CreateGroup("CreateGroup"));
addCommands(new DeleteGroup("DeleteGroup"));
addCommands(new DisciplineGroup("DisiplineGroup"));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
package vg.civcraft.mc.namelayer.command.TabCompleters;

import java.util.LinkedList;
import java.util.List;
import java.util.UUID;

import org.bukkit.entity.Player;

import vg.civcraft.mc.namelayer.GroupManager;
import vg.civcraft.mc.namelayer.NameAPI;
import vg.civcraft.mc.namelayer.group.Group;
import vg.civcraft.mc.namelayer.permission.PermissionType;

import java.util.LinkedList;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

Expand All @@ -18,30 +23,31 @@ public static List<String> complete(String lastArg, PermissionType accessLevel,
UUID uuid = NameAPI.getUUID(sender.getName());
GroupManager gm = NameAPI.getGroupManager();
List<String> groups = gm.getAllGroupNames(uuid);
List<String> fitting_groups = new LinkedList<>();
List<String> result = new LinkedList<>();
List<String> fittingGroups = new ArrayList<>();
List<String> result = new ArrayList<>();

if (lastArg != null){
for (String group : groups){
if (group.toLowerCase().startsWith(lastArg.toLowerCase())){
fitting_groups.add(group);
} else {
fittingGroups.add(group);
}
}
}
} else {
fitting_groups = groups;
fittingGroups = groups;
}

if (accessLevel == null) {
for (String group_name: fitting_groups){
Group group = gm.getGroup(group_name);
if (group.isMember(uuid))
result.add(group_name);
for (String groupName : fittingGroups){
Group group = GroupManager.getGroup(groupName);
if (group != null && group.isMember(uuid)) {
result.add(groupName);
}
}
} else {
for (String group_name : fitting_groups) {
if (gm.hasAccess(group_name, uuid, accessLevel))
result.add(group_name);
for (String groupName : fittingGroups) {
if (gm.hasAccess(groupName, uuid, accessLevel)) {
result.add(groupName);
}
}
}
return result;
Expand Down
Loading

0 comments on commit b4e51df

Please sign in to comment.