diff --git a/pom.xml b/pom.xml
index 38855197..eb43d718 100644
--- a/pom.xml
+++ b/pom.xml
@@ -108,7 +108,7 @@
com.github.stefvanschie.inventoryframework
IF
- 0.5.8
+ 0.5.19
org.spigotmc
diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdAdmin.java b/src/main/java/com/massivecraft/factions/cmd/CmdAdmin.java
index 21718cb9..2c7bbc05 100644
--- a/src/main/java/com/massivecraft/factions/cmd/CmdAdmin.java
+++ b/src/main/java/com/massivecraft/factions/cmd/CmdAdmin.java
@@ -57,6 +57,10 @@ public class CmdAdmin extends FCommand {
return;
}
+ if(fyou.isAlt()){
+ return;
+ }
+
// only perform a FPlayerJoinEvent when newLeader isn't actually in the faction
if (fyou.getFaction() != targetFaction) {
FPlayerJoinEvent event = new FPlayerJoinEvent(FPlayers.getInstance().getByPlayer(context.player), targetFaction, FPlayerJoinEvent.PlayerJoinReason.LEADER);
diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdColeader.java b/src/main/java/com/massivecraft/factions/cmd/CmdColeader.java
index b4f707b9..6fbac352 100644
--- a/src/main/java/com/massivecraft/factions/cmd/CmdColeader.java
+++ b/src/main/java/com/massivecraft/factions/cmd/CmdColeader.java
@@ -55,6 +55,10 @@ public class CmdColeader extends FCommand {
return;
}
+ if(you.isAlt()){
+ return;
+ }
+
if (context.fPlayer != null && context.fPlayer.getRole() != Role.LEADER && !permAny) {
context.msg(TL.COMMAND_COLEADER_NOTADMIN);
return;
diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdJoin.java b/src/main/java/com/massivecraft/factions/cmd/CmdJoin.java
index 5bad4de5..87731bc3 100644
--- a/src/main/java/com/massivecraft/factions/cmd/CmdJoin.java
+++ b/src/main/java/com/massivecraft/factions/cmd/CmdJoin.java
@@ -16,10 +16,6 @@ import java.util.Objects;
public class CmdJoin extends FCommand {
- /**
- * @author FactionsUUID Team
- */
-
public CmdJoin() {
super();
this.aliases.addAll(Aliases.join);
@@ -81,7 +77,7 @@ public class CmdJoin extends FCommand {
int altLimit = Conf.factionAltMemberLimit;
- if (altLimit > 0 && faction.getAltPlayers().size() >= altLimit && faction.altInvited(context.fPlayer)) {
+ if (altLimit > 0 && faction.getAltPlayers().size() >= altLimit && !faction.altInvited(context.fPlayer)) {
context.msg(TL.COMMAND_JOIN_ATLIMIT, faction.getTag(context.fPlayer), altLimit, fplayer.describeTo(context.fPlayer, false));
return;
}
@@ -115,6 +111,8 @@ public class CmdJoin extends FCommand {
fplayer.msg(TL.COMMAND_JOIN_MOVED, context.fPlayer.describeTo(fplayer, true), faction.getTag(fplayer));
}
+ faction.msg(TL.COMMAND_JOIN_JOINED, fplayer.describeTo(faction, true));
+
fplayer.resetFactionData();
if (faction.altInvited(fplayer)) {
@@ -125,30 +123,13 @@ public class CmdJoin extends FCommand {
}
faction.deinvite(fplayer);
-
- try {
- context.fPlayer.setRole(faction.getDefaultRole());
- FactionsPlugin.instance.logFactionEvent(faction, FLogType.INVITES, context.fPlayer.getName(), CC.Green + "joined", "the faction");
- if (Discord.useDiscord && context.fPlayer.discordSetup() && Discord.isInMainGuild(context.fPlayer.discordUser()) && Discord.mainGuild != null) {
- Member m = Discord.mainGuild.getMember(context.fPlayer.discordUser());
- if (Conf.factionRoles) {
- Discord.mainGuild.getController().addSingleRoleToMember(m, Objects.requireNonNull(Discord.createFactionRole(faction.getTag()))).queue();
- }
- if (Conf.factionDiscordTags) {
- Discord.mainGuild.getController().setNickname(m, Discord.getNicknameString(context.fPlayer)).queue();
- }
- }
- } catch (HierarchyException e) {
- System.out.print(e.getMessage());
- }
-
- faction.msg(TL.COMMAND_JOIN_JOINED, fplayer.describeTo(faction, true));
+ context.fPlayer.setRole(faction.getDefaultRole());
if (Conf.logFactionJoin) {
if (samePlayer) {
- FactionsPlugin.getInstance().log(TL.COMMAND_JOIN_JOINEDLOG.toString(), fplayer.getName(), faction.getTag());
+ FactionsPlugin.instance.log(TL.COMMAND_JOIN_JOINEDLOG.toString(), fplayer.getName(), faction.getTag());
} else {
- FactionsPlugin.getInstance().log(TL.COMMAND_JOIN_MOVEDLOG.toString(), context.fPlayer.getName(), fplayer.getName(), faction.getTag());
+ FactionsPlugin.instance.log(TL.COMMAND_JOIN_MOVEDLOG.toString(), context.fPlayer.getName(), fplayer.getName(), faction.getTag());
}
}
}
diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdKick.java b/src/main/java/com/massivecraft/factions/cmd/CmdKick.java
index 505bf8e5..4d2f36c3 100644
--- a/src/main/java/com/massivecraft/factions/cmd/CmdKick.java
+++ b/src/main/java/com/massivecraft/factions/cmd/CmdKick.java
@@ -1,9 +1,6 @@
package com.massivecraft.factions.cmd;
-import com.massivecraft.factions.Conf;
-import com.massivecraft.factions.FPlayer;
-import com.massivecraft.factions.Faction;
-import com.massivecraft.factions.FactionsPlugin;
+import com.massivecraft.factions.*;
import com.massivecraft.factions.cmd.audit.FLogType;
import com.massivecraft.factions.event.FPlayerLeaveEvent;
import com.massivecraft.factions.struct.Permission;
@@ -115,6 +112,7 @@ public class CmdKick extends FCommand {
toKickFaction.msg(TL.COMMAND_KICK_FACTION, context.fPlayer.describeTo(toKickFaction, true), toKick.describeTo(toKickFaction, true));
toKick.msg(TL.COMMAND_KICK_KICKED, context.fPlayer.describeTo(toKick, true), toKickFaction.describeTo(toKick));
+
if (toKickFaction != context.faction) {
context.fPlayer.msg(TL.COMMAND_KICK_KICKS, toKick.describeTo(context.fPlayer), toKickFaction.describeTo(context.fPlayer));
}
@@ -127,6 +125,9 @@ public class CmdKick extends FCommand {
FactionsPlugin.instance.logFactionEvent(toKickFaction, FLogType.INVITES, context.fPlayer.getName(), CC.Red + "kicked", toKick.getName());
toKickFaction.deinvite(toKick);
toKick.resetFactionData();
+ if(!CmdFly.checkBypassPerms(toKick, toKick.getPlayer(), toKickFaction, false)){
+ CmdFly.disableFlight(toKick);
+ }
}
@Override
diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdList.java b/src/main/java/com/massivecraft/factions/cmd/CmdList.java
index 49280bc6..f75c08ec 100644
--- a/src/main/java/com/massivecraft/factions/cmd/CmdList.java
+++ b/src/main/java/com/massivecraft/factions/cmd/CmdList.java
@@ -42,76 +42,75 @@ public class CmdList extends FCommand {
// if economy is enabled, they're not on the bypass list, and this command has a cost set, make 'em pay
if (!context.payForCommand(Conf.econCostList, "to list the factions", "for listing the factions"))
return;
- FactionsPlugin.getInstance().getServer().getScheduler().runTaskAsynchronously(FactionsPlugin.instance, () -> {
- ArrayList factionList = Factions.getInstance().getAllFactions();
- factionList.remove(Factions.getInstance().getWilderness());
- factionList.remove(Factions.getInstance().getSafeZone());
- factionList.remove(Factions.getInstance().getWarZone());
+ ArrayList factionList = Factions.getInstance().getAllFactions();
+ factionList.remove(Factions.getInstance().getWilderness());
+ factionList.remove(Factions.getInstance().getSafeZone());
+ factionList.remove(Factions.getInstance().getWarZone());
- // remove exempt factions
- if (context.fPlayer != null && context.fPlayer.getPlayer() != null && !context.fPlayer.getPlayer().hasPermission("factions.show.bypassexempt")) {
- List exemptFactions = FactionsPlugin.getInstance().getConfig().getStringList("show-exempt");
+ // remove exempt factions
+ if (context.fPlayer != null && context.fPlayer.getPlayer() != null && !context.fPlayer.getPlayer().hasPermission("factions.show.bypassexempt")) {
+ List exemptFactions = FactionsPlugin.getInstance().getConfig().getStringList("show-exempt");
- factionList.removeIf(next -> exemptFactions.contains(next.getTag()));
+ factionList.removeIf(next -> exemptFactions.contains(next.getTag()));
+ }
+
+ // Sort by total followers first
+ factionList.sort((f1, f2) -> {
+ int f1Size = f1.getFPlayers().size();
+ int f2Size = f2.getFPlayers().size();
+ if (f1Size < f2Size) {
+ return 1;
+ } else if (f1Size > f2Size) {
+ return -1;
}
-
- // Sort by total followers first
- factionList.sort((f1, f2) -> {
- int f1Size = f1.getFPlayers().size();
- int f2Size = f2.getFPlayers().size();
- if (f1Size < f2Size) {
- return 1;
- } else if (f1Size > f2Size) {
- return -1;
- }
- return 0;
- });
-
- // Then sort by how many members are online now
- factionList.sort((f1, f2) -> {
- int f1Size = f1.getFPlayersWhereOnline(true).size();
- int f2Size = f2.getFPlayersWhereOnline(true).size();
- if (f1Size < f2Size) {
- return 1;
- } else if (f1Size > f2Size) {
- return -1;
- }
- return 0;
- });
-
- ArrayList lines = new ArrayList<>();
-
- factionList.add(0, Factions.getInstance().getWilderness());
-
- final int pageheight = 9;
- int pagenumber = context.argAsInt(0, 1);
- int pagecount = (factionList.size() / pageheight) + 1;
- if (pagenumber > pagecount) {
- pagenumber = pagecount;
- } else if (pagenumber < 1) {
- pagenumber = 1;
- }
- int start = (pagenumber - 1) * pageheight;
- int end = start + pageheight;
- if (end > factionList.size()) {
- end = factionList.size();
- }
-
-
- String header = FactionsPlugin.getInstance().getConfig().getString("list.header", defaults[0]);
- header = header.replace("{pagenumber}", String.valueOf(pagenumber)).replace("{pagecount}", String.valueOf(pagecount));
- lines.add(FactionsPlugin.getInstance().txt.parse(header));
-
- for (Faction faction : factionList.subList(start, end)) {
- if (faction.isWilderness()) {
- lines.add(FactionsPlugin.getInstance().txt.parse(TagUtil.parsePlain(faction, FactionsPlugin.getInstance().getConfig().getString("list.factionless", defaults[1]))));
- continue;
- }
- lines.add(FactionsPlugin.getInstance().txt.parse(TagUtil.parsePlain(faction, context.fPlayer, FactionsPlugin.getInstance().getConfig().getString("list.entry", defaults[2]))));
- }
- context.sendMessage(lines);
+ return 0;
});
+
+ // Then sort by how many members are online now
+ factionList.sort((f1, f2) -> {
+ int f1Size = f1.getFPlayersWhereOnline(true).size();
+ int f2Size = f2.getFPlayersWhereOnline(true).size();
+ if (f1Size < f2Size) {
+ return 1;
+ } else if (f1Size > f2Size) {
+ return -1;
+ }
+ return 0;
+ });
+
+ ArrayList lines = new ArrayList<>();
+
+ factionList.add(0, Factions.getInstance().getWilderness());
+
+ final int pageheight = 9;
+ int pagenumber = context.argAsInt(0, 1);
+ int pagecount = (factionList.size() / pageheight) + 1;
+ if (pagenumber > pagecount) {
+ pagenumber = pagecount;
+ } else if (pagenumber < 1) {
+ pagenumber = 1;
+ }
+ int start = (pagenumber - 1) * pageheight;
+ int end = start + pageheight;
+ if (end > factionList.size()) {
+ end = factionList.size();
+ }
+
+
+ String header = FactionsPlugin.getInstance().getConfig().getString("list.header", defaults[0]);
+ assert header != null;
+ header = header.replace("{pagenumber}", String.valueOf(pagenumber)).replace("{pagecount}", String.valueOf(pagecount));
+ lines.add(FactionsPlugin.getInstance().txt.parse(header));
+
+ for (Faction faction : factionList.subList(start, end)) {
+ if (faction.isWilderness()) {
+ lines.add(FactionsPlugin.getInstance().txt.parse(TagUtil.parsePlain(faction, FactionsPlugin.getInstance().getConfig().getString("list.factionless", defaults[1]))));
+ continue;
+ }
+ lines.add(FactionsPlugin.getInstance().txt.parse(TagUtil.parsePlain(faction, context.fPlayer, FactionsPlugin.getInstance().getConfig().getString("list.entry", defaults[2]))));
+ }
+ context.sendMessage(lines);
}
@Override
diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdMod.java b/src/main/java/com/massivecraft/factions/cmd/CmdMod.java
index 82c2335a..e75a0fae 100644
--- a/src/main/java/com/massivecraft/factions/cmd/CmdMod.java
+++ b/src/main/java/com/massivecraft/factions/cmd/CmdMod.java
@@ -50,6 +50,10 @@ public class CmdMod extends FCommand {
return;
}
+ if(you.isAlt()){
+ return;
+ }
+
if (context.fPlayer != null && context.fPlayer.getRole() != Role.LEADER && !permAny) {
context.msg(TL.COMMAND_MOD_NOTADMIN);
return;
diff --git a/src/main/java/com/massivecraft/factions/cmd/roles/FPromoteCommand.java b/src/main/java/com/massivecraft/factions/cmd/roles/FPromoteCommand.java
index a4b70522..5fdac43d 100644
--- a/src/main/java/com/massivecraft/factions/cmd/roles/FPromoteCommand.java
+++ b/src/main/java/com/massivecraft/factions/cmd/roles/FPromoteCommand.java
@@ -74,6 +74,10 @@ public class FPromoteCommand extends FCommand {
}
}
+ if(target.isAlt()){
+ return;
+ }
+
// Don't allow people to demote people who already have the lowest rank.
if (current.value == 0 && relative <= 0) {
context.msg(TL.COMMAND_PROMOTE_LOWEST_RANK, target.getName());
diff --git a/src/main/java/com/massivecraft/factions/cmd/wild/CmdWild.java b/src/main/java/com/massivecraft/factions/cmd/wild/CmdWild.java
index 8a42ec0e..bdefeaaa 100644
--- a/src/main/java/com/massivecraft/factions/cmd/wild/CmdWild.java
+++ b/src/main/java/com/massivecraft/factions/cmd/wild/CmdWild.java
@@ -115,5 +115,4 @@ public class CmdWild extends FCommand implements WaitedTask {
player.sendMessage(TL.COMMAND_WILD_INTERUPTED.toString());
teleportRange.remove(player);
}
-
-}
+}
\ No newline at end of file
diff --git a/src/main/java/com/massivecraft/factions/zcore/fperms/gui/PermissableActionFrame.java b/src/main/java/com/massivecraft/factions/zcore/fperms/gui/PermissableActionFrame.java
index cd530934..8d9ad3fb 100644
--- a/src/main/java/com/massivecraft/factions/zcore/fperms/gui/PermissableActionFrame.java
+++ b/src/main/java/com/massivecraft/factions/zcore/fperms/gui/PermissableActionFrame.java
@@ -19,6 +19,7 @@ import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
public class PermissableActionFrame {
@@ -30,9 +31,10 @@ public class PermissableActionFrame {
public PermissableActionFrame(Faction f) {
ConfigurationSection section = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.action");
+ assert section != null;
gui = new Gui(FactionsPlugin.getInstance(),
- section.getInt("rows", 3),
- FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fperm-gui.action.name").replace("{faction}", f.getTag())));
+ section.getInt("rows", 4),
+ FactionsPlugin.getInstance().color(Objects.requireNonNull(FactionsPlugin.getInstance().getConfig().getString("fperm-gui.action.name")).replace("{faction}", f.getTag())));
}
public void buildGUI(FPlayer fplayer, Permissable perm) {
@@ -40,8 +42,7 @@ public class PermissableActionFrame {
List GUIItems = new ArrayList<>();
ItemStack dumby = buildDummyItem();
// Fill background of GUI with dumbyitem & replace GUI assets after
- for (int x = 0; x <= (gui.getRows() * 9) - 1; x++)
- GUIItems.add(new GuiItem(dumby, e -> e.setCancelled(true)));
+ for (int x = 0; x <= (gui.getRows() * 9) - 1; x++) GUIItems.add(new GuiItem(dumby, e -> e.setCancelled(true)));
for (PermissableAction action : PermissableAction.values()) {
if (action.getSlot() == -1) continue;
GUIItems.set(action.getSlot(), new GuiItem(action.buildAsset(fplayer, perm), e -> {
@@ -53,17 +54,12 @@ public class PermissableActionFrame {
case LEFT:
access = Access.ALLOW;
success = fplayer.getFaction().setPermission(perm, action, access);
- FactionsPlugin.instance.logFactionEvent(fplayer.getFaction(), FLogType.PERM_EDIT_DEFAULTS, fplayer.getName(), ChatColor.GREEN.toString() + ChatColor.BOLD + "ALLOWED", action.getName(), perm.name());
break;
case RIGHT:
access = Access.DENY;
success = fplayer.getFaction().setPermission(perm, action, access);
- FactionsPlugin.instance.logFactionEvent(fplayer.getFaction(), FLogType.PERM_EDIT_DEFAULTS, fplayer.getName(), ChatColor.RED.toString() + ChatColor.BOLD + "DENIED", action.getName(), perm.name());
break;
case MIDDLE:
- access = Access.UNDEFINED;
- success = fplayer.getFaction().setPermission(perm, action, access);
- break;
default:
return;
}
@@ -93,9 +89,11 @@ public class PermissableActionFrame {
ConfigurationSection config = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.dummy-item");
ItemStack item = XMaterial.matchXMaterial(config.getString("Type")).get().parseItem();
ItemMeta meta = item.getItemMeta();
- meta.setLore(FactionsPlugin.getInstance().colorList(config.getStringList("Lore")));
- meta.setDisplayName(FactionsPlugin.getInstance().color(config.getString("Name")));
- item.setItemMeta(meta);
+ if (meta != null) {
+ meta.setLore(FactionsPlugin.getInstance().colorList(config.getStringList("Lore")));
+ meta.setDisplayName(FactionsPlugin.getInstance().color(config.getString("Name")));
+ item.setItemMeta(meta);
+ }
return item;
}
@@ -103,9 +101,11 @@ public class PermissableActionFrame {
ConfigurationSection config = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.back-item");
ItemStack item = XMaterial.matchXMaterial(config.getString("Type")).get().parseItem();
ItemMeta meta = item.getItemMeta();
- meta.setLore(FactionsPlugin.getInstance().colorList(config.getStringList("Lore")));
- meta.setDisplayName(FactionsPlugin.getInstance().color(config.getString("Name")));
- item.setItemMeta(meta);
+ if (meta != null) {
+ meta.setLore(FactionsPlugin.getInstance().colorList(config.getStringList("Lore")));
+ meta.setDisplayName(FactionsPlugin.getInstance().color(config.getString("Name")));
+ item.setItemMeta(meta);
+ }
return item;
}
}
\ No newline at end of file
diff --git a/src/main/java/com/massivecraft/factions/zcore/fperms/gui/PermissableRelationFrame.java b/src/main/java/com/massivecraft/factions/zcore/fperms/gui/PermissableRelationFrame.java
index 95e14f0a..d5ea4876 100644
--- a/src/main/java/com/massivecraft/factions/zcore/fperms/gui/PermissableRelationFrame.java
+++ b/src/main/java/com/massivecraft/factions/zcore/fperms/gui/PermissableRelationFrame.java
@@ -16,6 +16,7 @@ import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
public class PermissableRelationFrame {
@@ -27,9 +28,10 @@ public class PermissableRelationFrame {
public PermissableRelationFrame(Faction f) {
ConfigurationSection section = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.relation");
+ assert section != null;
gui = new Gui(FactionsPlugin.getInstance(),
- section.getInt("rows", 3),
- FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fperm-gui.relation.name").replace("{faction}", f.getTag())));
+ section.getInt("rows", 4),
+ FactionsPlugin.getInstance().color(Objects.requireNonNull(FactionsPlugin.getInstance().getConfig().getString("fperm-gui.relation.name")).replace("{faction}", f.getTag())));
}
public void buildGUI(FPlayer fplayer) {
@@ -37,8 +39,7 @@ public class PermissableRelationFrame {
List GUIItems = new ArrayList<>();
ItemStack dumby = buildDummyItem();
// Fill background of GUI with dumbyitem & replace GUI assets after
- for (int x = 0; x <= (gui.getRows() * 9) - 1; x++)
- GUIItems.add(new GuiItem(dumby, e -> e.setCancelled(true)));
+ for (int x = 0; x <= (gui.getRows() * 9) - 1; x++) GUIItems.add(new GuiItem(dumby, e -> e.setCancelled(true)));
ConfigurationSection sec = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.relation");
for (String key : sec.getConfigurationSection("slots").getKeys(false)) {
if (key == null || sec.getInt("slots." + key) < 0) continue;
@@ -58,8 +59,10 @@ public class PermissableRelationFrame {
private ItemStack buildAsset(String loc, String relation) {
ItemStack item = XMaterial.matchXMaterial(FactionsPlugin.getInstance().getConfig().getString(loc)).get().parseItem();
ItemMeta meta = item.getItemMeta();
- meta.setDisplayName(FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fperm-gui.relation.Placeholder-Item.Name").replace("{relation}", relation)));
- item.setItemMeta(meta);
+ if (meta != null) {
+ meta.setDisplayName(FactionsPlugin.getInstance().color(FactionsPlugin.getInstance().getConfig().getString("fperm-gui.relation.Placeholder-Item.Name").replace("{relation}", relation)));
+ item.setItemMeta(meta);
+ }
return item;
}
@@ -67,9 +70,12 @@ public class PermissableRelationFrame {
ConfigurationSection config = FactionsPlugin.getInstance().getConfig().getConfigurationSection("fperm-gui.dummy-item");
ItemStack item = XMaterial.matchXMaterial(config.getString("Type")).get().parseItem();
ItemMeta meta = item.getItemMeta();
- meta.setLore(FactionsPlugin.getInstance().colorList(config.getStringList("Lore")));
- meta.setDisplayName(FactionsPlugin.getInstance().color(config.getString("Name")));
- item.setItemMeta(meta);
+ // So u can set it to air.
+ if (meta != null) {
+ meta.setLore(FactionsPlugin.getInstance().colorList(config.getStringList("Lore")));
+ meta.setDisplayName(FactionsPlugin.getInstance().color(config.getString("Name")));
+ item.setItemMeta(meta);
+ }
return item;
}