Fixes a bunch of grammatical errors, and some warnings
This commit is contained in:
parent
fd8cce63ee
commit
645d59d06e
1
.gitignore
vendored
1
.gitignore
vendored
@ -167,7 +167,6 @@ GitHub.sublime-settings
|
|||||||
Session.vim
|
Session.vim
|
||||||
# temporary
|
# temporary
|
||||||
.netrwhist
|
.netrwhist
|
||||||
*~
|
|
||||||
# auto-generated tag files
|
# auto-generated tag files
|
||||||
tags
|
tags
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<!-- In order to help you we need to know which plugin this issue is about. -->
|
<!-- In order to help you we need to know which plugin this issue is about. -->
|
||||||
<!-- The plugin always has the same version as MassiveCore. -->
|
<!-- The plugin always has the same version as MassiveCore. -->
|
||||||
<!-- All our plugins depend on MassiveCore, you did not forget to install it did you? -->
|
<!-- All our plugins depend on MassiveCore, you did not forget to install it, did you? -->
|
||||||
<!-- Run the command "/massivecore version" to see the version you are running. -->
|
<!-- Run the command "/massivecore version" to see the version you are running. -->
|
||||||
|
|
||||||
- **Affected Plugin Name:** Factions
|
- **Affected Plugin Name:** Factions
|
||||||
@ -17,11 +17,11 @@
|
|||||||
## Steps to Reproduce this Bug
|
## Steps to Reproduce this Bug
|
||||||
|
|
||||||
<!-- Write a step by step description of how we can reproduce this bug. -->
|
<!-- Write a step by step description of how we can reproduce this bug. -->
|
||||||
<!-- As developers we need to know how to trigger the bug before we can fix it. -->
|
<!-- As developers, we need to know how to trigger the bug before we can fix it. -->
|
||||||
|
|
||||||
1. First I did this.
|
1. First I did this.
|
||||||
2. Next I did that.
|
2. Next I did that.
|
||||||
3. Finally this happened.
|
3. Finally, this happened.
|
||||||
|
|
||||||
## Observed Results
|
## Observed Results
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ public class TerritoryAccess {
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
// This method intentionally returns null if the Faction no longer exists.
|
// This method intentionally returns null if the Faction no longer exists.
|
||||||
// In Board we don't even return this TerritoryAccess if that is the case.
|
// In Board, we don't even return this TerritoryAccess if that is the case.
|
||||||
public Faction getHostFaction() {
|
public Faction getHostFaction() {
|
||||||
return Faction.get(this.getHostFactionId());
|
return Faction.get(this.getHostFactionId());
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,6 @@ public class BoardAdapter implements JsonDeserializer<Board>, JsonSerializer<Boa
|
|||||||
// OVERRIDE
|
// OVERRIDE
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
@Override
|
||||||
public Board deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
public Board deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
||||||
return new Board(context.deserialize(json, Board.MAP_TYPE));
|
return new Board(context.deserialize(json, Board.MAP_TYPE));
|
||||||
|
@ -35,7 +35,7 @@ public class ChatFormatter {
|
|||||||
|
|
||||||
public static String format(String msg, CommandSender sender, CommandSender recipient) {
|
public static String format(String msg, CommandSender sender, CommandSender recipient) {
|
||||||
// We build the return value in this string buffer
|
// We build the return value in this string buffer
|
||||||
StringBuffer ret = new StringBuffer();
|
StringBuilder ret = new StringBuilder();
|
||||||
|
|
||||||
// A matcher to match all the tags in the msg
|
// A matcher to match all the tags in the msg
|
||||||
Matcher matcher = pattern.matcher(msg);
|
Matcher matcher = pattern.matcher(msg);
|
||||||
|
@ -58,7 +58,7 @@ public class CmdFactionsCreate extends FactionsCommand {
|
|||||||
|
|
||||||
EventFactionsMembershipChange joinEvent = new EventFactionsMembershipChange(sender, msender, faction, MembershipChangeReason.CREATE);
|
EventFactionsMembershipChange joinEvent = new EventFactionsMembershipChange(sender, msender, faction, MembershipChangeReason.CREATE);
|
||||||
joinEvent.run();
|
joinEvent.run();
|
||||||
// NOTE: join event cannot be cancelled or you'll have an empty faction
|
// NOTE: join event cannot be cancelled, or you'll have an empty faction
|
||||||
|
|
||||||
// Inform
|
// Inform
|
||||||
msg("<i>You created the faction %s", faction.getName(msender));
|
msg("<i>You created the faction %s", faction.getName(msender));
|
||||||
|
@ -32,7 +32,7 @@ public class CmdFactionsFlagSet extends FactionsCommand {
|
|||||||
boolean value = this.readArg();
|
boolean value = this.readArg();
|
||||||
Faction faction = this.readArg(msenderFaction);
|
Faction faction = this.readArg(msenderFaction);
|
||||||
|
|
||||||
// Do the sender have the right to change flags for this faction?
|
// Does the sender have the right to change flags for this faction?
|
||||||
if (!MPerm.getPermFlags().has(msender, faction, true)) {
|
if (!MPerm.getPermFlags().has(msender, faction, true)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ public class CmdFactionsPermSet extends FactionsCommand {
|
|||||||
|
|
||||||
MPerm.MPermable permable = TypeMPermable.get(faction).read(this.argAt(1), sender);
|
MPerm.MPermable permable = TypeMPermable.get(faction).read(this.argAt(1), sender);
|
||||||
|
|
||||||
// Do the sender have the right to change perms for this faction?
|
// Does the sender have the right to change perms for this faction?
|
||||||
if (!MPerm.getPermPerms().has(msender, faction, true)) {
|
if (!MPerm.getPermPerms().has(msender, faction, true)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -60,8 +60,7 @@ public class CmdFactionsPermView extends FactionsCommand {
|
|||||||
String permissionSingularPlural = permNames.size() == 1 ? "permission" : "permissions";
|
String permissionSingularPlural = permNames.size() == 1 ? "permission" : "permissions";
|
||||||
msg("<i>In <reset>%s <reset>%s <i>specifically has the %s: <reset>%s<i>.", faction.describeTo(msender), permable.getDisplayName(sender), permissionSingularPlural, names);
|
msg("<i>In <reset>%s <reset>%s <i>specifically has the %s: <reset>%s<i>.", faction.describeTo(msender), permable.getDisplayName(sender), permissionSingularPlural, names);
|
||||||
}
|
}
|
||||||
if (permable instanceof MPlayer) {
|
if (permable instanceof MPlayer mplayer) {
|
||||||
MPlayer mplayer = (MPlayer) permable;
|
|
||||||
msg("<i>They may have other permissions through their faction membership, rank or relation to <reset>%s<i>.", faction.describeTo(msender));
|
msg("<i>They may have other permissions through their faction membership, rank or relation to <reset>%s<i>.", faction.describeTo(msender));
|
||||||
|
|
||||||
List<Mson> msons = new MassiveList<>();
|
List<Mson> msons = new MassiveList<>();
|
||||||
@ -76,15 +75,13 @@ public class CmdFactionsPermView extends FactionsCommand {
|
|||||||
Mson msons2 = Mson.implode(msons, Mson.SPACE);
|
Mson msons2 = Mson.implode(msons, Mson.SPACE);
|
||||||
message(mson(mson("Commands: ").color(ChatColor.YELLOW), msons2));
|
message(mson(mson("Commands: ").color(ChatColor.YELLOW), msons2));
|
||||||
}
|
}
|
||||||
if (permable instanceof Faction) {
|
if (permable instanceof Faction faction1) {
|
||||||
Faction faction1 = (Faction) permable;
|
|
||||||
msg("<i>They may have other permissions through their relation to <reset>%s<i>.", faction.describeTo(msender));
|
msg("<i>They may have other permissions through their relation to <reset>%s<i>.", faction.describeTo(msender));
|
||||||
Mson msonRelation = Mson.parse("<command>[relation]").command(this, faction.getRelationTo(faction1).toString(), faction.getName());
|
Mson msonRelation = Mson.parse("<command>[relation]").command(this, faction.getRelationTo(faction1).toString(), faction.getName());
|
||||||
Mson msons = Mson.implode(MUtil.list(msonRelation), Mson.SPACE);
|
Mson msons = Mson.implode(MUtil.list(msonRelation), Mson.SPACE);
|
||||||
message(mson(mson("Commands: ").color(ChatColor.YELLOW), msons));
|
message(mson(mson("Commands: ").color(ChatColor.YELLOW), msons));
|
||||||
}
|
}
|
||||||
if (permable instanceof Rank && !faction.hasRank((Rank) permable)) {
|
if (permable instanceof Rank rank && !faction.hasRank((Rank) permable)) {
|
||||||
Rank rank = (Rank) permable;
|
|
||||||
msg("<i>They may have other permissions thorugh their faction membership or relation to <reset>%s<i>.", faction.describeTo(msender));
|
msg("<i>They may have other permissions thorugh their faction membership or relation to <reset>%s<i>.", faction.describeTo(msender));
|
||||||
Mson msonFaction = Mson.parse("<command>[faction]").command(this, rank.getFaction().getName(), faction.getName());
|
Mson msonFaction = Mson.parse("<command>[faction]").command(this, rank.getFaction().getName(), faction.getName());
|
||||||
Mson msonRelation = Mson.parse("<command>[relation]").command(this, faction.getRelationTo(rank.getFaction()).toString(), faction.getName());
|
Mson msonRelation = Mson.parse("<command>[relation]").command(this, faction.getRelationTo(rank.getFaction()).toString(), faction.getName());
|
||||||
|
@ -45,18 +45,15 @@ public class CmdFactionsPermViewall extends FactionsCommand {
|
|||||||
List<MPermable> permables = new MassiveList<>();
|
List<MPermable> permables = new MassiveList<>();
|
||||||
permables.add(permable);
|
permables.add(permable);
|
||||||
|
|
||||||
if (permable instanceof MPlayer) {
|
if (permable instanceof MPlayer mplayer) {
|
||||||
MPlayer mplayer = (MPlayer) permable;
|
|
||||||
permables.add(mplayer.getFaction());
|
permables.add(mplayer.getFaction());
|
||||||
permables.add(mplayer.getRank());
|
permables.add(mplayer.getRank());
|
||||||
permables.add(faction.getRelationTo(mplayer));
|
permables.add(faction.getRelationTo(mplayer));
|
||||||
}
|
}
|
||||||
if (permable instanceof Faction) {
|
if (permable instanceof Faction faction1) {
|
||||||
Faction faction1 = (Faction) permable;
|
|
||||||
permables.add(faction.getRelationTo(faction1));
|
permables.add(faction.getRelationTo(faction1));
|
||||||
}
|
}
|
||||||
if (permable instanceof Rank && !faction.hasRank((Rank) permable)) {
|
if (permable instanceof Rank rank && !faction.hasRank((Rank) permable)) {
|
||||||
Rank rank = (Rank) permable;
|
|
||||||
Faction faction1 = rank.getFaction();
|
Faction faction1 = rank.getFaction();
|
||||||
permables.add(faction1);
|
permables.add(faction1);
|
||||||
permables.add(faction.getRelationTo(faction1));
|
permables.add(faction.getRelationTo(faction1));
|
||||||
|
@ -59,7 +59,7 @@ public class CmdFactionsPlayer extends FactionsCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// INFO: Power per Hour
|
// INFO: Power per Hour
|
||||||
// If the player is not at maximum we wan't to display how much time left.
|
// If the player is not at maximum we want to display how much time left.
|
||||||
|
|
||||||
String stringTillMax = "";
|
String stringTillMax = "";
|
||||||
double powerTillMax = mplayer.getPowerMax() - mplayer.getPower();
|
double powerTillMax = mplayer.getPowerMax() - mplayer.getPower();
|
||||||
|
@ -163,12 +163,12 @@ public class CmdFactionsRankSet extends FactionsCommand {
|
|||||||
// The following two if statements could be merged.
|
// The following two if statements could be merged.
|
||||||
// But isn't for the sake of nicer error messages.
|
// But isn't for the sake of nicer error messages.
|
||||||
if (senderRank == targetRank) {
|
if (senderRank == targetRank) {
|
||||||
// You can't change someones rank if it is equal to yours.
|
// You can't change someone's rank if it is equal to yours.
|
||||||
throw new MassiveException().addMsg("<h>%s <b>can't manage eachother.", senderRank.getName() + "s");
|
throw new MassiveException().addMsg("<h>%s <b>can't manage eachother.", senderRank.getName() + "s");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (senderRank.isLessThan(targetRank)) {
|
if (senderRank.isLessThan(targetRank)) {
|
||||||
// You can't change someones rank if it is higher than yours.
|
// You can't change someone's rank if it is higher than yours.
|
||||||
throw new MassiveException().addMsg("<b>You can't manage people of higher rank.");
|
throw new MassiveException().addMsg("<b>You can't manage people of higher rank.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -259,7 +259,7 @@ public class CmdFactionsRankSet extends FactionsCommand {
|
|||||||
// Inform & demote the old leader.
|
// Inform & demote the old leader.
|
||||||
targetFactionCurrentLeader.setRank(rank.getRankBelow());
|
targetFactionCurrentLeader.setRank(rank.getRankBelow());
|
||||||
if (targetFactionCurrentLeader != msender) {
|
if (targetFactionCurrentLeader != msender) {
|
||||||
// They kinda know if they fired the command themself.
|
// They kinda know if they fired the command themselves.
|
||||||
targetFactionCurrentLeader.msg("<i>You have been demoted from the position of faction leader by %s<i>.", msender.describeTo(targetFactionCurrentLeader, true));
|
targetFactionCurrentLeader.msg("<i>You have been demoted from the position of faction leader by %s<i>.", msender.describeTo(targetFactionCurrentLeader, true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ public class CmdFactionsTitle extends FactionsCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Rank Check
|
// Check Rank
|
||||||
if (!msender.isOverriding() && you.getRank().isMoreThan(msender.getRank())) {
|
if (!msender.isOverriding() && you.getRank().isMoreThan(msender.getRank())) {
|
||||||
throw new MassiveException().addMsg("<b>You can not edit titles for higher ranks.");
|
throw new MassiveException().addMsg("<b>You can not edit titles for higher ranks.");
|
||||||
}
|
}
|
||||||
|
@ -80,20 +80,14 @@ public class CmdFactionsTop extends FactionsCommand {
|
|||||||
private static String getValue(TopCategory category, Faction faction, MPlayer mplayer) {
|
private static String getValue(TopCategory category, Faction faction, MPlayer mplayer) {
|
||||||
String ret = Txt.parse("%s<i>: ", faction.getName(mplayer));
|
String ret = Txt.parse("%s<i>: ", faction.getName(mplayer));
|
||||||
switch (category) {
|
switch (category) {
|
||||||
case MONEY:
|
case MONEY -> ret += Money.format(Econ.getMoney(faction), true);
|
||||||
ret += Money.format(Econ.getMoney(faction), true);
|
case MEMBERS -> ret += faction.getMPlayers().size() + " members";
|
||||||
break;
|
case TERRITORY -> ret += faction.getLandCount() + " chunks";
|
||||||
case MEMBERS:
|
case AGE -> {
|
||||||
ret += faction.getMPlayers().size() + " members";
|
|
||||||
break;
|
|
||||||
case TERRITORY:
|
|
||||||
ret += faction.getLandCount() + " chunks";
|
|
||||||
break;
|
|
||||||
case AGE:
|
|
||||||
long ageMillis = faction.getAge();
|
long ageMillis = faction.getAge();
|
||||||
LinkedHashMap<TimeUnit, Long> ageUnitcounts = TimeDiffUtil.limit(TimeDiffUtil.unitcounts(ageMillis, TimeUnit.getAllButMillis()), 3);
|
LinkedHashMap<TimeUnit, Long> ageUnitcounts = TimeDiffUtil.limit(TimeDiffUtil.unitcounts(ageMillis, TimeUnit.getAllButMillis()), 3);
|
||||||
ret += TimeDiffUtil.formatedVerboose(ageUnitcounts);
|
ret += TimeDiffUtil.formatedVerboose(ageUnitcounts);
|
||||||
break;
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,7 @@ public class TypeFaction extends TypeAbstract<Faction> {
|
|||||||
return FactionColl.get().getNone();
|
return FactionColl.get().getNone();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Faction Id Exact
|
// Faction id Exact
|
||||||
if (FactionColl.get().containsId(str)) {
|
if (FactionColl.get().containsId(str)) {
|
||||||
ret = FactionColl.get().get(str);
|
ret = FactionColl.get().get(str);
|
||||||
if (ret != null) {
|
if (ret != null) {
|
||||||
|
@ -60,7 +60,7 @@ public class ComparatorFactionList extends ComparatorAbstract<Faction> {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tie by Id
|
// Tie by id
|
||||||
return ComparatorComparable.get().compare(f1.getId(), f2.getId());
|
return ComparatorComparable.get().compare(f1.getId(), f2.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,12 +75,10 @@ public class EngineCanCombatHappen extends Engine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ProjectileSource projectileSource = event.getPotion().getShooter();
|
ProjectileSource projectileSource = event.getPotion().getShooter();
|
||||||
if (!(projectileSource instanceof Entity)) {
|
if (!(projectileSource instanceof Entity thrower)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Entity thrower = (Entity) projectileSource;
|
|
||||||
|
|
||||||
// ... scan through affected entities to make sure they're all valid targets.
|
// ... scan through affected entities to make sure they're all valid targets.
|
||||||
for (LivingEntity affectedEntity : event.getAffectedEntities()) {
|
for (LivingEntity affectedEntity : event.getAffectedEntities()) {
|
||||||
EntityDamageByEntityEvent sub = new EntityDamageByEntityEvent(thrower, affectedEntity, EntityDamageEvent.DamageCause.CUSTOM, 0D);
|
EntityDamageByEntityEvent sub = new EntityDamageByEntityEvent(thrower, affectedEntity, EntityDamageEvent.DamageCause.CUSTOM, 0D);
|
||||||
@ -101,12 +99,10 @@ public class EngineCanCombatHappen extends Engine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ProjectileSource projectileSource = event.getEntity().getSource();
|
ProjectileSource projectileSource = event.getEntity().getSource();
|
||||||
if (!(projectileSource instanceof Entity)) {
|
if (!(projectileSource instanceof Entity thrower)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Entity thrower = (Entity) projectileSource;
|
|
||||||
|
|
||||||
// ... create a dummy list to avoid ConcurrentModificationException ...
|
// ... create a dummy list to avoid ConcurrentModificationException ...
|
||||||
List<LivingEntity> affectedList = new ArrayList<>();
|
List<LivingEntity> affectedList = new ArrayList<>();
|
||||||
|
|
||||||
@ -201,7 +197,7 @@ public class EngineCanCombatHappen extends Engine {
|
|||||||
|
|
||||||
// ... PVP flag may cause a damage block ...
|
// ... PVP flag may cause a damage block ...
|
||||||
// (just checking the defender as above isn't enough. What about the attacker? It could be in a no-pvp area)
|
// (just checking the defender as above isn't enough. What about the attacker? It could be in a no-pvp area)
|
||||||
// NOTE: This check is probably not that important but we could keep it anyways.
|
// NOTE: This check is probably not that important, but we could keep it anyway.
|
||||||
if (attackerPsFaction.getFlag(MFlag.getFlagPvp()) == false) {
|
if (attackerPsFaction.getFlag(MFlag.getFlagPvp()) == false) {
|
||||||
ret = falseUnlessDisallowedPvpEventCancelled(attacker, defender, DisallowCause.PEACEFUL_LAND, event);
|
ret = falseUnlessDisallowedPvpEventCancelled(attacker, defender, DisallowCause.PEACEFUL_LAND, event);
|
||||||
if (!ret && notify) {
|
if (!ret && notify) {
|
||||||
|
@ -64,7 +64,7 @@ public class EngineChat extends Engine {
|
|||||||
// SET FORMAT
|
// SET FORMAT
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
private class SetFormatEventExecutor implements EventExecutor {
|
private static class SetFormatEventExecutor implements EventExecutor {
|
||||||
@Override
|
@Override
|
||||||
public void execute(Listener listener, Event event) throws EventException {
|
public void execute(Listener listener, Event event) throws EventException {
|
||||||
try {
|
try {
|
||||||
@ -86,7 +86,7 @@ public class EngineChat extends Engine {
|
|||||||
// PARSE TAGS
|
// PARSE TAGS
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
private class ParseTagsEventExecutor implements EventExecutor {
|
private static class ParseTagsEventExecutor implements EventExecutor {
|
||||||
@Override
|
@Override
|
||||||
public void execute(Listener listener, Event event) throws EventException {
|
public void execute(Listener listener, Event event) throws EventException {
|
||||||
try {
|
try {
|
||||||
@ -115,7 +115,7 @@ public class EngineChat extends Engine {
|
|||||||
// PARSE RELCOLOR
|
// PARSE RELCOLOR
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
private class ParseRelcolorEventExecutor implements EventExecutor {
|
private static class ParseRelcolorEventExecutor implements EventExecutor {
|
||||||
@Override
|
@Override
|
||||||
public void execute(Listener listener, Event event) throws EventException {
|
public void execute(Listener listener, Event event) throws EventException {
|
||||||
try {
|
try {
|
||||||
|
@ -40,7 +40,7 @@ public class EngineCleanInactivity extends Engine {
|
|||||||
public void applyPlayerAgeBonus(EventMassiveCorePlayerCleanInactivityToleranceMillis event) {
|
public void applyPlayerAgeBonus(EventMassiveCorePlayerCleanInactivityToleranceMillis event) {
|
||||||
// Calculate First Played
|
// Calculate First Played
|
||||||
Long firstPlayed = event.getEntity().getFirstPlayed();
|
Long firstPlayed = event.getEntity().getFirstPlayed();
|
||||||
Long age = 0L;
|
long age = 0L;
|
||||||
if (firstPlayed != null) {
|
if (firstPlayed != null) {
|
||||||
age = System.currentTimeMillis() - firstPlayed;
|
age = System.currentTimeMillis() - firstPlayed;
|
||||||
}
|
}
|
||||||
@ -78,7 +78,7 @@ public class EngineCleanInactivity extends Engine {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Long bonus = 0L;
|
long bonus = 0L;
|
||||||
for (Entry<Long, Long> entry : ageToBonus.entrySet()) {
|
for (Entry<Long, Long> entry : ageToBonus.entrySet()) {
|
||||||
Long key = entry.getKey();
|
Long key = entry.getKey();
|
||||||
if (key == null) {
|
if (key == null) {
|
||||||
|
@ -51,7 +51,7 @@ public class EngineFlagSpawn extends Engine {
|
|||||||
|
|
||||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||||
public void blockMonstersAndAnimals(CreatureSpawnEvent event) {
|
public void blockMonstersAndAnimals(CreatureSpawnEvent event) {
|
||||||
// If this is a natural spawn ..
|
// If this is a natural spawn
|
||||||
if (!NATURAL_SPAWN_REASONS.contains(event.getSpawnReason())) {
|
if (!NATURAL_SPAWN_REASONS.contains(event.getSpawnReason())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -137,10 +137,9 @@ public class EngineFly extends Engine {
|
|||||||
|
|
||||||
// ... and the attacker is a player ...
|
// ... and the attacker is a player ...
|
||||||
Entity eattacker = MUtil.getLiableDamager(event);
|
Entity eattacker = MUtil.getLiableDamager(event);
|
||||||
if (!(eattacker instanceof Player)) {
|
if (!(eattacker instanceof Player attacker)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Player attacker = (Player) eattacker;
|
|
||||||
MPlayer mattacker = MPlayer.get(attacker);
|
MPlayer mattacker = MPlayer.get(attacker);
|
||||||
|
|
||||||
// ... disable flying for both
|
// ... disable flying for both
|
||||||
@ -195,7 +194,7 @@ public class EngineFly extends Engine {
|
|||||||
}
|
}
|
||||||
// ... otherwise ...
|
// ... otherwise ...
|
||||||
else {
|
else {
|
||||||
// .. tell them to have someone else edit it ...
|
// ... tell them to have someone else edit it ...
|
||||||
ex.addMsg("<i>You can ask a faction admin to change the flag.");
|
ex.addMsg("<i>You can ask a faction admin to change the flag.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,8 @@ public class EngineLastActivity extends Engine {
|
|||||||
@EventHandler(priority = EventPriority.LOWEST)
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void updateLastActivity(PlayerJoinEvent event) {
|
public void updateLastActivity(PlayerJoinEvent event) {
|
||||||
// During the join event itself we want to be able to reach the old data.
|
// During the join event itself we want to be able to reach the old data.
|
||||||
// That is also the way the underlying fallback Mixin system does it and we do it that way for the sake of symmetry.
|
// That is also the way the underlying fallback Mixin system does it, and we do it that way for the sake of
|
||||||
|
// symmetry.
|
||||||
// For that reason we wait till the next tick with updating the value.
|
// For that reason we wait till the next tick with updating the value.
|
||||||
updateLastActivitySoon(event.getPlayer());
|
updateLastActivitySoon(event.getPlayer());
|
||||||
}
|
}
|
||||||
|
@ -238,7 +238,7 @@ public class EnginePermBuild extends Engine {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ... or are allowed to right click with the item, this event is safe to perform.
|
// ... or are allowed to right-click with the item, this event is safe to perform.
|
||||||
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) {
|
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -266,7 +266,7 @@ public class EnginePermBuild extends Engine {
|
|||||||
// Armor stands are handled in EngineSpigot instead.
|
// Armor stands are handled in EngineSpigot instead.
|
||||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||||
public void useEntity(PlayerInteractEntityEvent event) {
|
public void useEntity(PlayerInteractEntityEvent event) {
|
||||||
// Ignore Off Hand
|
// Ignore Off-Hand
|
||||||
if (isOffHand(event)) {
|
if (isOffHand(event)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -276,10 +276,10 @@ public class EnginePermBuild extends Engine {
|
|||||||
// This is a special Spigot event that fires for Minecraft 1.8 armor stands.
|
// This is a special Spigot event that fires for Minecraft 1.8 armor stands.
|
||||||
// It also fires for other entity types but for those the event is buggy.
|
// It also fires for other entity types but for those the event is buggy.
|
||||||
// It seems we can only cancel interaction with armor stands from here.
|
// It seems we can only cancel interaction with armor stands from here.
|
||||||
// Thus we only handle armor stands from here and handle everything else in EngineMain.
|
// Thus, we only handle armor stands from here and handle everything else in EngineMain.
|
||||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||||
public void handleArmorStand(PlayerInteractAtEntityEvent event) {
|
public void handleArmorStand(PlayerInteractAtEntityEvent event) {
|
||||||
// Ignore Off Hand
|
// Ignore Off-Hand
|
||||||
if (isOffHand(event)) {
|
if (isOffHand(event)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -328,10 +328,9 @@ public class EnginePermBuild extends Engine {
|
|||||||
public void combustEntity(EntityCombustByEntityEvent event) {
|
public void combustEntity(EntityCombustByEntityEvent event) {
|
||||||
|
|
||||||
// If a burning projectile ...
|
// If a burning projectile ...
|
||||||
if (!(event.getCombuster() instanceof Projectile)) {
|
if (!(event.getCombuster() instanceof Projectile entityProjectile)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Projectile entityProjectile = (Projectile) event.getCombuster();
|
|
||||||
|
|
||||||
// ... fired by a player ...
|
// ... fired by a player ...
|
||||||
ProjectileSource projectileSource = entityProjectile.getShooter();
|
ProjectileSource projectileSource = entityProjectile.getShooter();
|
||||||
|
@ -42,10 +42,9 @@ public enum ProtectCase {
|
|||||||
return MPerm.getPermBuild();
|
return MPerm.getPermBuild();
|
||||||
|
|
||||||
case USE_ENTITY:
|
case USE_ENTITY:
|
||||||
if (!(object instanceof Entity)) {
|
if (!(object instanceof Entity entity)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Entity entity = (Entity) object;
|
|
||||||
EntityType type = entity.getType();
|
EntityType type = entity.getType();
|
||||||
if (EnumerationUtil.isEntityTypeContainer(type)) {
|
if (EnumerationUtil.isEntityTypeContainer(type)) {
|
||||||
return MPerm.getPermContainer();
|
return MPerm.getPermContainer();
|
||||||
@ -55,10 +54,9 @@ public enum ProtectCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case USE_BLOCK:
|
case USE_BLOCK:
|
||||||
if (!(object instanceof Material)) {
|
if (!(object instanceof Material material)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Material material = (Material) object;
|
|
||||||
if (material == Material.LECTERN) {
|
if (material == Material.LECTERN) {
|
||||||
return MPerm.getPermLectern();
|
return MPerm.getPermLectern();
|
||||||
}
|
}
|
||||||
|
@ -109,10 +109,11 @@ public class Faction extends Entity<Faction> implements FactionsParticipator, MP
|
|||||||
// FIELDS: RAW
|
// FIELDS: RAW
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// In this section of the source code we place the field declarations only.
|
// In this section of the source code we place the field declarations only.
|
||||||
// Each field has it's own section further down since just the getter and setter logic takes up quite some place.
|
// Each field has its own section further down since just the getter and setter logic takes up quite some place.
|
||||||
|
|
||||||
// The actual faction id looks something like "54947df8-0e9e-4471-a2f9-9af509fb5889" and that is not too easy to remember for humans.
|
// The actual faction id looks something like "54947df8-0e9e-4471-a2f9-9af509fb5889" and that is not too easy to
|
||||||
// Thus we make use of a name. Since the id is used in all foreign key situations changing the name is fine.
|
// remember for humans.
|
||||||
|
// Thus, we make use of a name. Since the id is used in all foreign key situations changing the name is fine.
|
||||||
// Null should never happen. The name must not be null.
|
// Null should never happen. The name must not be null.
|
||||||
private String name = null;
|
private String name = null;
|
||||||
|
|
||||||
@ -861,7 +862,7 @@ public class Faction extends Entity<Faction> implements FactionsParticipator, MP
|
|||||||
Set<String> permables = this.perms.get(permId);
|
Set<String> permables = this.perms.get(permId);
|
||||||
|
|
||||||
if (permables == null) {
|
if (permables == null) {
|
||||||
// No perms was found, but likely this is just a new MPerm.
|
// No perms were found, but likely this is just a new MPerm.
|
||||||
// So if this does not exist in the database, throw an error.
|
// So if this does not exist in the database, throw an error.
|
||||||
if (!doesPermExist(permId)) {
|
if (!doesPermExist(permId)) {
|
||||||
throw new NullPointerException(permId + " caused null");
|
throw new NullPointerException(permId + " caused null");
|
||||||
@ -897,7 +898,7 @@ public class Faction extends Entity<Faction> implements FactionsParticipator, MP
|
|||||||
// TODO: Isn't this section redundant and just a copy of that from getPermitted?
|
// TODO: Isn't this section redundant and just a copy of that from getPermitted?
|
||||||
Set<String> permables = this.perms.get(permId);
|
Set<String> permables = this.perms.get(permId);
|
||||||
if (permables == null) {
|
if (permables == null) {
|
||||||
// No perms was found, but likely this is just a new MPerm.
|
// No perms were found, but likely this is just a new MPerm.
|
||||||
// So if this does not exist in the database, throw an error.
|
// So if this does not exist in the database, throw an error.
|
||||||
if (!doesPermExist(permId)) {
|
if (!doesPermExist(permId)) {
|
||||||
throw new NullPointerException(permId + " caused null");
|
throw new NullPointerException(permId + " caused null");
|
||||||
@ -917,7 +918,7 @@ public class Faction extends Entity<Faction> implements FactionsParticipator, MP
|
|||||||
|
|
||||||
Set<String> perms = this.perms.get(permId);
|
Set<String> perms = this.perms.get(permId);
|
||||||
if (perms == null) {
|
if (perms == null) {
|
||||||
// No perms was found, but likely this is just a new MPerm.
|
// No perms were found, but likely this is just a new MPerm.
|
||||||
// So if this does not exist in the database, throw an error.
|
// So if this does not exist in the database, throw an error.
|
||||||
if (!doesPermExist(permId)) {
|
if (!doesPermExist(permId)) {
|
||||||
throw new NullPointerException(permId + " caused null");
|
throw new NullPointerException(permId + " caused null");
|
||||||
|
@ -93,7 +93,7 @@ public class FactionColl extends Coll<Faction> {
|
|||||||
faction.setPermittedRelations(MPerm.getPermLectern(), MPerm.getPermables(faction));
|
faction.setPermittedRelations(MPerm.getPermLectern(), MPerm.getPermables(faction));
|
||||||
faction.setPermittedRelations(MPerm.getPermButton(), MPerm.getPermables(faction));
|
faction.setPermittedRelations(MPerm.getPermButton(), MPerm.getPermables(faction));
|
||||||
faction.setPermittedRelations(MPerm.getPermLever(), MPerm.getPermables(faction));
|
faction.setPermittedRelations(MPerm.getPermLever(), MPerm.getPermables(faction));
|
||||||
faction.setPermittedRelations(MPerm.getPermDeposit(), Collections.singleton(faction.getLeaderRank())); // Wilderness deposit should be limited as an anti spam meassure.
|
faction.setPermittedRelations(MPerm.getPermDeposit(), Collections.singleton(faction.getLeaderRank())); // Wilderness deposit should be limited as an anti-spam measure.
|
||||||
|
|
||||||
return faction;
|
return faction;
|
||||||
}
|
}
|
||||||
|
@ -76,8 +76,8 @@ public class MConf extends Entity<MConf> {
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
// Use this blacklist/whitelist system to toggle features on a per world basis.
|
// Use this blacklist/whitelist system to toggle features on a per world basis.
|
||||||
// Do you only want claiming enabled on the one map called "Hurr"?
|
// Do you only want the ability to claim enabled on the one map called "Hurr"?
|
||||||
// In such case set standard to false and add "Hurr" as an exeption to worldsClaimingEnabled.
|
// In such case set standard to false and add "Hurr" as an exception to worldsClaimingEnabled.
|
||||||
public WorldExceptionSet worldsClaimingEnabled = new WorldExceptionSet();
|
public WorldExceptionSet worldsClaimingEnabled = new WorldExceptionSet();
|
||||||
public WorldExceptionSet worldsPowerLossEnabled = new WorldExceptionSet();
|
public WorldExceptionSet worldsPowerLossEnabled = new WorldExceptionSet();
|
||||||
public WorldExceptionSet worldsPowerGainEnabled = new WorldExceptionSet();
|
public WorldExceptionSet worldsPowerGainEnabled = new WorldExceptionSet();
|
||||||
@ -175,7 +175,7 @@ public class MConf extends Entity<MConf> {
|
|||||||
public int factionMemberLimit = 0;
|
public int factionMemberLimit = 0;
|
||||||
|
|
||||||
// Is there a maximum faction power cap?
|
// Is there a maximum faction power cap?
|
||||||
// 0 means there is not. Set it to a positive value in case you wan't to use this feature.
|
// 0 means there is not. Set it to a positive value in case you want to use this feature.
|
||||||
public double factionPowerMax = 0.0;
|
public double factionPowerMax = 0.0;
|
||||||
|
|
||||||
// Limit the length of faction names here.
|
// Limit the length of faction names here.
|
||||||
@ -198,26 +198,26 @@ public class MConf extends Entity<MConf> {
|
|||||||
|
|
||||||
// Must claims be connected to each other?
|
// Must claims be connected to each other?
|
||||||
// If you set this to false you will allow factions to claim more than one base per world map.
|
// If you set this to false you will allow factions to claim more than one base per world map.
|
||||||
// That would makes outposts possible but also potentially ugly weird claims messing up your Dynmap and ingame experiance.
|
// That would make outposts possible but also potentially ugly weird claims messing up your Dynmap and in-game experience.
|
||||||
public boolean claimsMustBeConnected = true;
|
public boolean claimsMustBeConnected = true;
|
||||||
|
|
||||||
// Must claims be connected to each other enforced strictly?
|
// Must claims be connected to each other enforced strictly?
|
||||||
// If this is enabled there is also done a check on
|
// If this is enabled there is also done a check on
|
||||||
// unclaim which makes sure you can't make two different bases by unclaiming land.
|
// un-claim which makes sure you can't make two different bases by un-claiming land.
|
||||||
public boolean claimsMustBeConnectedStrict = false;
|
public boolean claimsMustBeConnectedStrict = false;
|
||||||
|
|
||||||
// Would you like to allow unconnected claims when conquering land from another faction?
|
// Would you like to allow unconnected claims when conquering land from another faction?
|
||||||
// Setting this to true would allow taking over someone elses base even if claims normally have to be connected.
|
// Setting this to true would allow taking over someone else's base even if claims normally have to be connected.
|
||||||
// Note that even without this you can pillage/unclaim another factions territory in war.
|
// Note that even without this you can pillage/un-claim another factions territory in war.
|
||||||
// You just won't be able to take the land as your own.
|
// You just won't be able to take the land as your own.
|
||||||
public boolean claimsCanBeUnconnectedIfOwnedByOtherFaction = false;
|
public boolean claimsCanBeUnconnectedIfOwnedByOtherFaction = false;
|
||||||
|
|
||||||
// Is claiming from other factions even allowed?
|
// Is claiming from other factions even allowed?
|
||||||
// Set this to false to disable territorial warfare altogether.
|
// Set this to false in order to disable territorial warfare altogether.
|
||||||
public boolean claimingFromOthersAllowed = true;
|
public boolean claimingFromOthersAllowed = true;
|
||||||
|
|
||||||
// Is it required for factions to have an inflated land/power ratio in order to have their land conquered by another faction?
|
// Is it required for factions to have an inflated land/power ratio in order to have their land conquered by another faction?
|
||||||
// Set this to false to allow factions to invade each other without requiring them to have an inflated land/power ratio..
|
// Set this to false in order to allow factions to invade each other without requiring them to have an inflated land/power ratio..
|
||||||
public boolean claimingFromOthersMustBeInflated = true;
|
public boolean claimingFromOthersMustBeInflated = true;
|
||||||
|
|
||||||
// Is a minimum distance (measured in chunks) to other factions required?
|
// Is a minimum distance (measured in chunks) to other factions required?
|
||||||
@ -260,7 +260,7 @@ public class MConf extends Entity<MConf> {
|
|||||||
|
|
||||||
// Must warps be located inside the faction's territory?
|
// Must warps be located inside the faction's territory?
|
||||||
// It's usually a wise idea keeping this true.
|
// It's usually a wise idea keeping this true.
|
||||||
// Otherwise players can set their warps inside enemy territory.
|
// Otherwise, players can set their warps inside enemy territory.
|
||||||
public boolean warpsMustBeInClaimedTerritory = true;
|
public boolean warpsMustBeInClaimedTerritory = true;
|
||||||
|
|
||||||
// And what faction warp should be used when a player types /f home
|
// And what faction warp should be used when a player types /f home
|
||||||
@ -303,7 +303,7 @@ public class MConf extends Entity<MConf> {
|
|||||||
// ASSORTED
|
// ASSORTED
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
// Set this to true if want to block the promotion of new leaders for permanent factions.
|
// Set this to true if you want to block the promotion of new leaders for permanent factions.
|
||||||
// I don't really understand the user case for this option.
|
// I don't really understand the user case for this option.
|
||||||
public boolean permanentFactionsDisableLeaderPromotion = false;
|
public boolean permanentFactionsDisableLeaderPromotion = false;
|
||||||
|
|
||||||
@ -458,7 +458,7 @@ public class MConf extends Entity<MConf> {
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
// Here you can alter the colors tied to certain faction relations and settings.
|
// Here you can alter the colors tied to certain faction relations and settings.
|
||||||
// You probably don't want to edit these to much.
|
// You probably don't want to edit these too much.
|
||||||
// Doing so might confuse players that are used to Factions.
|
// Doing so might confuse players that are used to Factions.
|
||||||
public ChatColor colorMember = ChatColor.GREEN;
|
public ChatColor colorMember = ChatColor.GREEN;
|
||||||
public ChatColor colorAlly = ChatColor.DARK_PURPLE;
|
public ChatColor colorAlly = ChatColor.DARK_PURPLE;
|
||||||
@ -604,7 +604,7 @@ public class MConf extends Entity<MConf> {
|
|||||||
// Interacting with these materials when they are already placed in the terrain results in an edit.
|
// Interacting with these materials when they are already placed in the terrain results in an edit.
|
||||||
public BackstringSet<Material> materialsEditOnInteract = new BackstringSet<>(Material.class);
|
public BackstringSet<Material> materialsEditOnInteract = new BackstringSet<>(Material.class);
|
||||||
|
|
||||||
// Interacting with the the terrain holding this item in hand results in an edit.
|
// Interacting with the terrain holding this item in hand results in an edit.
|
||||||
// There's no need to add all block materials here. Only special items other than blocks.
|
// There's no need to add all block materials here. Only special items other than blocks.
|
||||||
public BackstringSet<Material> materialsEditTools = new BackstringSet<>(Material.class);
|
public BackstringSet<Material> materialsEditTools = new BackstringSet<>(Material.class);
|
||||||
|
|
||||||
@ -756,19 +756,20 @@ public class MConf extends Entity<MConf> {
|
|||||||
// Format for popup - substitute values for macros
|
// Format for popup - substitute values for macros
|
||||||
//public String dynmapInfowindowFormat = "<div class=\"infowindow\"><span style=\"font-size:120%;\">%regionname%</span><br />Flags<br /><span style=\"font-weight:bold;\">%flags%</span></div>";
|
//public String dynmapInfowindowFormat = "<div class=\"infowindow\"><span style=\"font-size:120%;\">%regionname%</span><br />Flags<br /><span style=\"font-weight:bold;\">%flags%</span></div>";
|
||||||
public String dynmapFactionDescription =
|
public String dynmapFactionDescription =
|
||||||
"<div class=\"infowindow\">\n" +
|
"""
|
||||||
"<span style=\"font-weight: bold; font-size: 150%;\">%name%</span></br>\n" +
|
<div class="infowindow">
|
||||||
"<span style=\"font-style: italic; font-size: 110%;\">%description%</span></br>\n" +
|
<span style="font-weight: bold; font-size: 150%;">%name%</span></br>
|
||||||
"</br>\n" +
|
<span style="font-style: italic; font-size: 110%;">%description%</span></br>
|
||||||
"<span style=\"font-weight: bold;\">Leader:</span> %players.leader%</br>\n" +
|
</br>
|
||||||
"<span style=\"font-weight: bold;\">Members:</span> %players%</br>\n" +
|
<span style="font-weight: bold;">Leader:</span> %players.leader%</br>
|
||||||
"</br>\n" +
|
<span style="font-weight: bold;">Members:</span> %players%</br>
|
||||||
"<span style=\"font-weight: bold;\">Age:</span> %age%</br>\n" +
|
</br>
|
||||||
"<span style=\"font-weight: bold;\">Bank:</span> %money%</br>\n" +
|
<span style="font-weight: bold;">Age:</span> %age%</br>
|
||||||
"</br>\n" +
|
<span style="font-weight: bold;">Bank:</span> %money%</br>
|
||||||
"<span style=\"font-weight: bold;\">Flags:</span></br>\n" +
|
</br>
|
||||||
"%flags.table3%\n" +
|
<span style="font-weight: bold;">Flags:</span></br>
|
||||||
"</div>";
|
%flags.table3%
|
||||||
|
</div>""";
|
||||||
|
|
||||||
// Enable the %money% macro. Only do this if you know your economy manager is thread safe.
|
// Enable the %money% macro. Only do this if you know your economy manager is thread safe.
|
||||||
public boolean dynmapShowMoneyInDescription = false;
|
public boolean dynmapShowMoneyInDescription = false;
|
||||||
|
@ -214,8 +214,9 @@ public class MFlag extends Entity<MFlag> implements Prioritized, Registerable, N
|
|||||||
|
|
||||||
// The sort priority. Low values appear first in sorted lists.
|
// The sort priority. Low values appear first in sorted lists.
|
||||||
// 1 is high up, 99999 is far down.
|
// 1 is high up, 99999 is far down.
|
||||||
// Standard Faction flags use "thousand values" like 1000, 2000, 3000 etc to allow adding new flags inbetween.
|
// Standard Faction flags use "a thousand interval values" like 1000, 2000, 3000 etc. to allow adding new flags
|
||||||
// So 1000 might sound like a lot but it's actually the priority for the first flag.
|
// in between.
|
||||||
|
// So 1000 might sound like a lot, but it's actually the priority for the first flag.
|
||||||
private int priority = 0;
|
private int priority = 0;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -315,8 +315,9 @@ public class MPerm extends Entity<MPerm> implements Prioritized, Registerable, N
|
|||||||
|
|
||||||
// The sort priority. Low values appear first in sorted lists.
|
// The sort priority. Low values appear first in sorted lists.
|
||||||
// 1 is high up, 99999 is far down.
|
// 1 is high up, 99999 is far down.
|
||||||
// Standard Faction perms use "thousand values" like 1000, 2000, 3000 etc to allow adding new perms inbetween.
|
// Standard Faction perms use "a thousand interval values" like 1000, 2000, 3000 etc. to allow adding new perms
|
||||||
// So 1000 might sound like a lot but it's actually the priority for the first perm.
|
// in between.
|
||||||
|
// So 1000 might sound like a lot, but it's actually the priority for the first perm.
|
||||||
private int priority = 0;
|
private int priority = 0;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -31,6 +31,7 @@ import java.util.Collection;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class MPlayer extends SenderEntity<MPlayer> implements FactionsParticipator, MPerm.MPermable {
|
public class MPlayer extends SenderEntity<MPlayer> implements FactionsParticipator, MPerm.MPermable {
|
||||||
@ -130,7 +131,7 @@ public class MPlayer extends SenderEntity<MPlayer> implements FactionsParticipat
|
|||||||
// FIELDS: RAW
|
// FIELDS: RAW
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// In this section of the source code we place the field declarations only.
|
// In this section of the source code we place the field declarations only.
|
||||||
// Each field has it's own section further down since just the getter and setter logic takes up quite some place.
|
// Each field has its own section further down since just the getter and setter logic takes up quite some place.
|
||||||
|
|
||||||
// The last known time of explicit player activity, such as login or logout.
|
// The last known time of explicit player activity, such as login or logout.
|
||||||
// This value is most importantly used for removing cleanable players.
|
// This value is most importantly used for removing cleanable players.
|
||||||
@ -292,7 +293,7 @@ public class MPlayer extends SenderEntity<MPlayer> implements FactionsParticipat
|
|||||||
return !this.getFaction().isNone();
|
return !this.getFaction().isNone();
|
||||||
}
|
}
|
||||||
|
|
||||||
// This setter is so long because it search for default/null case and takes
|
// This setter is so long because it searches for default/null case and takes
|
||||||
// care of updating the faction member index
|
// care of updating the faction member index
|
||||||
public void setFactionId(String factionId) {
|
public void setFactionId(String factionId) {
|
||||||
// Before
|
// Before
|
||||||
@ -591,10 +592,7 @@ public class MPlayer extends SenderEntity<MPlayer> implements FactionsParticipat
|
|||||||
if (!MixinTitle.get().isAvailable()) {
|
if (!MixinTitle.get().isAvailable()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (this.territoryInfoTitles == null) {
|
return Objects.requireNonNullElseGet(this.territoryInfoTitles, () -> MConf.get().territoryInfoTitlesDefault);
|
||||||
return MConf.get().territoryInfoTitlesDefault;
|
|
||||||
}
|
|
||||||
return this.territoryInfoTitles;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTerritoryInfoTitles(Boolean territoryInfoTitles) {
|
public void setTerritoryInfoTitles(Boolean territoryInfoTitles) {
|
||||||
|
@ -24,7 +24,7 @@ public class MigratorFaction001Invitations extends MigratorRoot {
|
|||||||
this.addInnerMigrator(new MigratorFaction001InvitationsField());
|
this.addInnerMigrator(new MigratorFaction001InvitationsField());
|
||||||
}
|
}
|
||||||
|
|
||||||
public class MigratorFaction001InvitationsField extends MigratorFieldConvert {
|
public static class MigratorFaction001InvitationsField extends MigratorFieldConvert {
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// CONSTRUCT
|
// CONSTRUCT
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
@ -49,17 +49,15 @@ public class MigratorMConf001EnumerationUtil extends MigratorRoot {
|
|||||||
|
|
||||||
private void removeFromStringsField(JsonObject entity, String fieldName, Collection<String> removals) {
|
private void removeFromStringsField(JsonObject entity, String fieldName, Collection<String> removals) {
|
||||||
JsonElement stringsElement = entity.get(fieldName);
|
JsonElement stringsElement = entity.get(fieldName);
|
||||||
if (!(stringsElement instanceof JsonArray)) {
|
if (!(stringsElement instanceof JsonArray strings)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
JsonArray strings = (JsonArray) stringsElement;
|
|
||||||
|
|
||||||
for (Iterator<JsonElement> iterator = strings.iterator(); iterator.hasNext(); ) {
|
for (Iterator<JsonElement> iterator = strings.iterator(); iterator.hasNext(); ) {
|
||||||
JsonElement stringElement = iterator.next();
|
JsonElement stringElement = iterator.next();
|
||||||
if (!(stringElement instanceof JsonPrimitive)) {
|
if (!(stringElement instanceof JsonPrimitive string)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
JsonPrimitive string = (JsonPrimitive) stringElement;
|
|
||||||
|
|
||||||
if (!removals.contains(string.getAsString())) {
|
if (!removals.contains(string.getAsString())) {
|
||||||
continue;
|
continue;
|
||||||
|
@ -42,7 +42,7 @@ public class MigratorMPerm002MoveStandard extends MigratorRoot {
|
|||||||
|
|
||||||
String id = entity.get("name").getAsString();
|
String id = entity.get("name").getAsString();
|
||||||
|
|
||||||
// This is hacky but we utilise that names and ids are the same
|
// This is hacky, but we utilise that names and ids are the same
|
||||||
MConf.get().perm2default.put(id, result);
|
MConf.get().perm2default.put(id, result);
|
||||||
MConf.get().changed();
|
MConf.get().changed();
|
||||||
}
|
}
|
||||||
|
@ -91,7 +91,7 @@ public class Econ {
|
|||||||
Faction fMe = RelationUtil.getFaction(me);
|
Faction fMe = RelationUtil.getFaction(me);
|
||||||
Faction fYou = RelationUtil.getFaction(you);
|
Faction fYou = RelationUtil.getFaction(you);
|
||||||
|
|
||||||
// A faction can always transfer away the money of it's members and its own money...
|
// A faction can always transfer away the money of its members and its own money...
|
||||||
// This will however probably never happen as a faction does not have free will.
|
// This will however probably never happen as a faction does not have free will.
|
||||||
// Ohh by the way... Yes it could. For daily rent to the faction.
|
// Ohh by the way... Yes it could. For daily rent to the faction.
|
||||||
if (me == fMe && fMe == fYou) {
|
if (me == fMe && fMe == fYou) {
|
||||||
@ -279,7 +279,7 @@ public class Econ {
|
|||||||
return Money.move(from, to, by, amount, category);
|
return Money.move(from, to, by, amount, category);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Or if neither to or from is a faction
|
// Or if neither to nor from is a faction
|
||||||
if (!fromFaction && !toFaction) {
|
if (!fromFaction && !toFaction) {
|
||||||
return Money.move(from, to, by, amount, category);
|
return Money.move(from, to, by, amount, category);
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,8 @@ public class DynmapStyle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: We just return the string here. We do not return the resolved Dynmap MarkerIcon object.
|
// NOTE: We just return the string here. We do not return the resolved Dynmap MarkerIcon object.
|
||||||
// The reason is we use this class in the MConf. For serialization to work Dynmap would have to be loaded and we can't require that.
|
// The reason is we use this class in the MConf. For serialization to work Dynmap would have to be loaded, and we
|
||||||
|
// can't require that.
|
||||||
// Using dynmap is optional.
|
// Using dynmap is optional.
|
||||||
public final String homeMarker;
|
public final String homeMarker;
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ public class EngineDynmap extends Engine {
|
|||||||
long before = System.currentTimeMillis();
|
long before = System.currentTimeMillis();
|
||||||
|
|
||||||
// We do what we can here.
|
// We do what we can here.
|
||||||
// You /can/ run this method from the main server thread but it's not recommended at all.
|
// You /can/ run this method from the main server thread, but it's not recommended at all.
|
||||||
// This method is supposed to be run async to avoid locking the main server thread.
|
// This method is supposed to be run async to avoid locking the main server thread.
|
||||||
//final Map<String, TempMarker> homes = createHomes();
|
//final Map<String, TempMarker> homes = createHomes();
|
||||||
final Map<String, AreaMarkerValues> areas = createAreas();
|
final Map<String, AreaMarkerValues> areas = createAreas();
|
||||||
@ -106,7 +106,7 @@ public class EngineDynmap extends Engine {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// createLayer() is thread safe but it makes use of fields set in fetchDynmapAPI() so we must have it after.
|
// createLayer() is thread safe, but it makes use of fields set in fetchDynmapAPI() so we must have it after.
|
||||||
if (!updateLayer(createLayer())) {
|
if (!updateLayer(createLayer())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -268,9 +268,9 @@ public class EngineDynmap extends Engine {
|
|||||||
Map<PS, PS> edges_v = new MassiveMap<>();
|
Map<PS, PS> edges_v = new MassiveMap<>();
|
||||||
|
|
||||||
List<PS> sorted_x = new MassiveList<>(points);
|
List<PS> sorted_x = new MassiveList<>(points);
|
||||||
Collections.sort(sorted_x, this::xThenZ);
|
sorted_x.sort(this::xThenZ);
|
||||||
List<PS> sorted_z = new MassiveList<>(points);
|
List<PS> sorted_z = new MassiveList<>(points);
|
||||||
Collections.sort(sorted_z, this::zThenX);
|
sorted_z.sort(this::zThenX);
|
||||||
|
|
||||||
// Create horizontal edges
|
// Create horizontal edges
|
||||||
for (int i = 0; i < points.size(); ) {
|
for (int i = 0; i < points.size(); ) {
|
||||||
@ -292,6 +292,7 @@ public class EngineDynmap extends Engine {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO: Why has this been commented out?
|
||||||
//List<PS> linelist = getLineList(polygonChunks);
|
//List<PS> linelist = getLineList(polygonChunks);
|
||||||
|
|
||||||
|
|
||||||
@ -432,7 +433,7 @@ public class EngineDynmap extends Engine {
|
|||||||
// Calc current partial
|
// Calc current partial
|
||||||
String partial = IntegrationDynmap.FACTIONS_AREA_ + world + "__" + faction.getId() + "__";
|
String partial = IntegrationDynmap.FACTIONS_AREA_ + world + "__" + faction.getId() + "__";
|
||||||
|
|
||||||
// If different than last time, then reset the counter
|
// If different from last time, then reset the counter
|
||||||
if (!partial.equals(lastPartialMarkerId)) {
|
if (!partial.equals(lastPartialMarkerId)) {
|
||||||
markerIdx = 0;
|
markerIdx = 0;
|
||||||
}
|
}
|
||||||
@ -657,31 +658,21 @@ public class EngineDynmap extends Engine {
|
|||||||
XPLUS, ZPLUS, XMINUS, ZMINUS;
|
XPLUS, ZPLUS, XMINUS, ZMINUS;
|
||||||
|
|
||||||
public PS adjacent(PS ps) {
|
public PS adjacent(PS ps) {
|
||||||
switch (this) {
|
return switch (this) {
|
||||||
case XPLUS:
|
case XPLUS -> PS.valueOf(ps.getChunkX() + 1, ps.getChunkZ());
|
||||||
return PS.valueOf(ps.getChunkX() + 1, ps.getChunkZ());
|
case ZPLUS -> PS.valueOf(ps.getChunkX(), ps.getChunkZ() + 1);
|
||||||
case ZPLUS:
|
case XMINUS -> PS.valueOf(ps.getChunkX() - 1, ps.getChunkZ());
|
||||||
return PS.valueOf(ps.getChunkX(), ps.getChunkZ() + 1);
|
case ZMINUS -> PS.valueOf(ps.getChunkX(), ps.getChunkZ() - 1);
|
||||||
case XMINUS:
|
};
|
||||||
return PS.valueOf(ps.getChunkX() - 1, ps.getChunkZ());
|
|
||||||
case ZMINUS:
|
|
||||||
return PS.valueOf(ps.getChunkX(), ps.getChunkZ() - 1);
|
|
||||||
}
|
|
||||||
throw new RuntimeException("say what");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public PS getCorner(PS ps) {
|
public PS getCorner(PS ps) {
|
||||||
switch (this) {
|
return switch (this) {
|
||||||
case XPLUS:
|
case XPLUS -> PS.valueOf(ps.getChunkX() + 1, ps.getChunkZ());
|
||||||
return PS.valueOf(ps.getChunkX() + 1, ps.getChunkZ());
|
case ZPLUS -> PS.valueOf(ps.getChunkX() + 1, ps.getChunkZ() + 1);
|
||||||
case ZPLUS:
|
case XMINUS -> PS.valueOf(ps.getChunkX(), ps.getChunkZ() + 1);
|
||||||
return PS.valueOf(ps.getChunkX() + 1, ps.getChunkZ() + 1);
|
case ZMINUS -> PS.valueOf(ps.getChunkX(), ps.getChunkZ());
|
||||||
case XMINUS:
|
};
|
||||||
return PS.valueOf(ps.getChunkX(), ps.getChunkZ() + 1);
|
|
||||||
case ZMINUS:
|
|
||||||
return PS.valueOf(ps.getChunkX(), ps.getChunkZ());
|
|
||||||
}
|
|
||||||
throw new RuntimeException("say what");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Direction turnRight() {
|
public Direction turnRight() {
|
||||||
|
@ -9,7 +9,7 @@ public class IntegrationDynmap extends Integration {
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
// Constants must be here rather than in EngineDynmap.
|
// Constants must be here rather than in EngineDynmap.
|
||||||
// MConf relies on DynmapStyle which relies on these constants
|
// MConf relies on DynmapStyle which relies on these constants,
|
||||||
// and we must be able to load MConf without EngineDynmap.
|
// and we must be able to load MConf without EngineDynmap.
|
||||||
public final static int BLOCKS_PER_CHUNK = 16;
|
public final static int BLOCKS_PER_CHUNK = 16;
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ public class EngineLwc extends Engine {
|
|||||||
|
|
||||||
// ... then remove for all other factions than the new one.
|
// ... then remove for all other factions than the new one.
|
||||||
// First we wait one tick to make sure the chunk ownership changes have been applied.
|
// First we wait one tick to make sure the chunk ownership changes have been applied.
|
||||||
// Then we remove the protections but we do it asynchronously to not lock the main thread.
|
// Then we remove the protections, but we do it asynchronously to not lock the main thread.
|
||||||
for (PS chunk : chunks) {
|
for (PS chunk : chunks) {
|
||||||
removeAlienProtectionsAsyncNextTick(chunk, newFaction);
|
removeAlienProtectionsAsyncNextTick(chunk, newFaction);
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ public class FactionsLwcModule extends JavaModule {
|
|||||||
protection.remove();
|
protection.remove();
|
||||||
|
|
||||||
// ... cancel the event ...
|
// ... cancel the event ...
|
||||||
// NOTE: The first time you click nothing but the unlock should happen.
|
// NOTE: The first time you click nothing but the unlocking should happen.
|
||||||
// NOTE: This way it's more obvious the auto unlock system kicked in.
|
// NOTE: This way it's more obvious the auto unlock system kicked in.
|
||||||
// NOTE: No inventory will get opened.
|
// NOTE: No inventory will get opened.
|
||||||
event.setResult(Result.CANCEL);
|
event.setResult(Result.CANCEL);
|
||||||
|
@ -50,29 +50,20 @@ public class PlaceholderFactions extends PlaceholderExpansion {
|
|||||||
}
|
}
|
||||||
DecimalFormat df = new DecimalFormat("#.##");
|
DecimalFormat df = new DecimalFormat("#.##");
|
||||||
|
|
||||||
switch (params) {
|
return switch (params) {
|
||||||
case "faction":
|
case "faction" -> mplayer.getFaction().getName();
|
||||||
return mplayer.getFaction().getName();
|
case "power" -> df.format(mplayer.getPower());
|
||||||
case "power":
|
case "powermax" -> df.format(mplayer.getPowerMax());
|
||||||
return df.format(mplayer.getPower());
|
case "factionpower" -> df.format(mplayer.getFaction().getPower());
|
||||||
case "powermax":
|
case "factionpowermax" -> df.format(mplayer.getFaction().getPowerMax());
|
||||||
return df.format(mplayer.getPowerMax());
|
case "title" -> mplayer.getTitle();
|
||||||
case "factionpower":
|
case "rank" -> mplayer.getRank().getName();
|
||||||
return df.format(mplayer.getFaction().getPower());
|
case "claims" ->
|
||||||
case "factionpowermax":
|
Long.toString(BoardColl.get().getAll().stream().mapToInt(board -> board.getCount(mplayer.getFaction())).sum());
|
||||||
return df.format(mplayer.getFaction().getPowerMax());
|
case "onlinemembers" -> Integer.toString(mplayer.getFaction().getMPlayersWhereOnlineTo(mplayer).size());
|
||||||
case "title":
|
case "allmembers" -> Integer.toString(mplayer.getFaction().getMPlayers().size());
|
||||||
return mplayer.getTitle();
|
default -> null;
|
||||||
case "rank":
|
};
|
||||||
return mplayer.getRank().getName();
|
|
||||||
case "claims":
|
|
||||||
return Long.toString(BoardColl.get().getAll().stream().mapToInt(board -> board.getCount(mplayer.getFaction())).sum());
|
|
||||||
case "onlinemembers":
|
|
||||||
return Integer.toString(mplayer.getFaction().getMPlayersWhereOnlineTo(mplayer).size());
|
|
||||||
case "allmembers":
|
|
||||||
return Integer.toString(mplayer.getFaction().getMPlayers().size());
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -48,8 +48,7 @@ public class RelationUtil {
|
|||||||
} else {
|
} else {
|
||||||
ret = thatFactionName;
|
ret = thatFactionName;
|
||||||
}
|
}
|
||||||
} else if (that instanceof MPlayer) {
|
} else if (that instanceof MPlayer mplayerthat) {
|
||||||
MPlayer mplayerthat = (MPlayer) that;
|
|
||||||
if (that == me) {
|
if (that == me) {
|
||||||
ret = SELF;
|
ret = SELF;
|
||||||
} else if (isSameFaction) {
|
} else if (isSameFaction) {
|
||||||
|
Loading…
Reference in New Issue
Block a user