First Wave of Skript Support.
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package com.massivecraft.factions;
|
||||
|
||||
import ch.njol.skript.Skript;
|
||||
import ch.njol.skript.SkriptAddon;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.massivecraft.factions.cmd.CmdAutoHelp;
|
||||
@@ -78,6 +80,8 @@ public class SavageFactions extends MPlugin {
|
||||
private ClipPlaceholderAPIManager clipPlaceholderAPIManager;
|
||||
private boolean mvdwPlaceholderAPIManager = false;
|
||||
|
||||
SkriptAddon skriptAddon;
|
||||
|
||||
private Listener[] eventsListener;
|
||||
|
||||
public SavageFactions() {
|
||||
@@ -203,6 +207,17 @@ public class SavageFactions extends MPlugin {
|
||||
factionsFlight = true;
|
||||
}
|
||||
|
||||
if (getServer().getPluginManager().getPlugin("Skript") != null) {
|
||||
log("Skript was found! Registering SavageFactions Addon...");
|
||||
skriptAddon = Skript.registerAddon(this);
|
||||
try {
|
||||
skriptAddon.loadClasses("com.massivecraft.factions.skript", "expressions");
|
||||
} catch (IOException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
log("Skript addon registered!");
|
||||
}
|
||||
|
||||
|
||||
// Register Event Handlers
|
||||
eventsListener = new Listener[] {
|
||||
@@ -237,6 +252,10 @@ public class SavageFactions extends MPlugin {
|
||||
this.loadSuccessful = true;
|
||||
}
|
||||
|
||||
public SkriptAddon getSkriptAddon() {
|
||||
return skriptAddon;
|
||||
}
|
||||
|
||||
private void setupMultiversionMaterials() {
|
||||
if (mc113) {
|
||||
BANNER = Material.valueOf("LEGACY_BANNER");
|
||||
|
||||
@@ -35,6 +35,7 @@ public class CmdDisband extends FCommand {
|
||||
senderMustBeModerator = false;
|
||||
senderMustBeColeader = false;
|
||||
senderMustBeAdmin = false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
package com.massivecraft.factions.skript.expressions.player;
|
||||
|
||||
import ch.njol.skript.Skript;
|
||||
import ch.njol.skript.classes.Changer;
|
||||
import ch.njol.skript.lang.Expression;
|
||||
import ch.njol.skript.lang.ExpressionType;
|
||||
import ch.njol.skript.lang.SkriptParser;
|
||||
import ch.njol.skript.lang.util.SimpleExpression;
|
||||
import ch.njol.util.Kleenean;
|
||||
import ch.njol.util.coll.CollectionUtils;
|
||||
import com.massivecraft.factions.FPlayer;
|
||||
import com.massivecraft.factions.FPlayers;
|
||||
import com.massivecraft.factions.Faction;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event;
|
||||
|
||||
public class PlayerFactionExpression extends SimpleExpression<String> {
|
||||
|
||||
|
||||
static {
|
||||
Skript.registerExpression(PlayerFactionExpression.class, String.class, ExpressionType.SIMPLE, "[the] faction of %player%", "[the] %player%['s] faction");
|
||||
}
|
||||
|
||||
Expression<Player> playerExpression;
|
||||
|
||||
@Override
|
||||
public Class<? extends String> getReturnType() {
|
||||
return String.class;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isSingle() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parser) {
|
||||
playerExpression = (Expression<Player>) exprs[0];
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(Event event, boolean debug) {
|
||||
return "Player Faction Name Expression with expression player" + playerExpression.toString(event, debug);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String[] get(Event event) {
|
||||
Player player = playerExpression.getSingle(event);
|
||||
|
||||
if (player != null) {
|
||||
FPlayer fPlayer = FPlayers.getInstance().getByPlayer(player);
|
||||
return new String[]{fPlayer.getFaction().getTag()};
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?>[] acceptChange(final Changer.ChangeMode mode) {
|
||||
if (mode == Changer.ChangeMode.DELETE || mode == Changer.ChangeMode.RESET || mode == Changer.ChangeMode.SET) {
|
||||
return CollectionUtils.array(String.class);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void change(Event event, Object[] delta, Changer.ChangeMode mode) {
|
||||
Player player = playerExpression.getSingle(event);
|
||||
if (player == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
FPlayer fPlayer = FPlayers.getInstance().getByPlayer(player);
|
||||
switch (mode) {
|
||||
case DELETE:
|
||||
case RESET:
|
||||
fPlayer.setFaction(Factions.getInstance().getWilderness());
|
||||
break;
|
||||
case SET:
|
||||
Faction faction = Factions.getInstance().getByTag((String) delta[0]);
|
||||
if (faction == null) {
|
||||
faction = Factions.getInstance().getWilderness();
|
||||
}
|
||||
fPlayer.setFaction(faction);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
package com.massivecraft.factions.skript.expressions.player;
|
||||
|
||||
import ch.njol.skript.Skript;
|
||||
import ch.njol.skript.classes.Changer;
|
||||
import ch.njol.skript.lang.Expression;
|
||||
import ch.njol.skript.lang.ExpressionType;
|
||||
import ch.njol.skript.lang.SkriptParser;
|
||||
import ch.njol.skript.lang.util.SimpleExpression;
|
||||
import ch.njol.util.Kleenean;
|
||||
import ch.njol.util.coll.CollectionUtils;
|
||||
import com.massivecraft.factions.FPlayer;
|
||||
import com.massivecraft.factions.FPlayers;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event;
|
||||
|
||||
public class PlayerPowerExpression extends SimpleExpression<Number> {
|
||||
|
||||
|
||||
static {
|
||||
Skript.registerExpression(PlayerPowerExpression.class, Number.class, ExpressionType.SIMPLE, "[the] power of %player%", "[the] %player%['s] power");
|
||||
}
|
||||
|
||||
Expression<Player> playerExpression;
|
||||
|
||||
@Override
|
||||
public Class<? extends Number> getReturnType() {
|
||||
return Double.class;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isSingle() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parser) {
|
||||
playerExpression = (Expression<Player>) exprs[0];
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(Event event, boolean debug) {
|
||||
return "Player Power with expression player" + playerExpression.toString(event, debug);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Double[] get(Event event) {
|
||||
Player player = playerExpression.getSingle(event);
|
||||
|
||||
if (player != null) {
|
||||
FPlayer fPlayer = FPlayers.getInstance().getByPlayer(player);
|
||||
return new Double[]{fPlayer.getFaction().getPower()};
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?>[] acceptChange(final Changer.ChangeMode mode) {
|
||||
if (mode == Changer.ChangeMode.RESET || mode == Changer.ChangeMode.ADD || mode == Changer.ChangeMode.REMOVE) {
|
||||
return CollectionUtils.array(Number.class);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void change(Event event, Object[] delta, Changer.ChangeMode mode) {
|
||||
Player player = playerExpression.getSingle(event);
|
||||
if (player == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
FPlayer fPlayer = FPlayers.getInstance().getByPlayer(player);
|
||||
switch (mode) {
|
||||
case ADD:
|
||||
fPlayer.alterPower(Double.valueOf((Long) delta[0]));
|
||||
break;
|
||||
case REMOVE:
|
||||
fPlayer.alterPower(Double.valueOf((Long) delta[0]) * -1);
|
||||
break;
|
||||
case RESET:
|
||||
fPlayer.alterPower(fPlayer.getPowerMax() * -1);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package com.massivecraft.factions.skript.expressions.player;
|
||||
|
||||
import ch.njol.skript.Skript;
|
||||
import ch.njol.skript.classes.Changer;
|
||||
import ch.njol.skript.lang.Expression;
|
||||
import ch.njol.skript.lang.ExpressionType;
|
||||
import ch.njol.skript.lang.SkriptParser;
|
||||
import ch.njol.skript.lang.util.SimpleExpression;
|
||||
import ch.njol.util.Kleenean;
|
||||
import ch.njol.util.coll.CollectionUtils;
|
||||
import com.massivecraft.factions.FPlayer;
|
||||
import com.massivecraft.factions.FPlayers;
|
||||
import com.massivecraft.factions.struct.Role;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event;
|
||||
|
||||
public class PlayerRoleExpression extends SimpleExpression<String> {
|
||||
|
||||
static {
|
||||
Skript.registerExpression(PlayerRoleExpression.class, String.class, ExpressionType.SIMPLE, "[the] role of %player%", "[the] %player%['s] role");
|
||||
}
|
||||
|
||||
Expression<Player> playerExpression;
|
||||
|
||||
@Override
|
||||
public Class<? extends String> getReturnType() {
|
||||
return String.class;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isSingle() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parser) {
|
||||
playerExpression = (Expression<Player>) exprs[0];
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(Event event, boolean debug) {
|
||||
return "Player Faction Name Expression with expression player" + playerExpression.toString(event, debug);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String[] get(Event event) {
|
||||
Player player = playerExpression.getSingle(event);
|
||||
|
||||
if (player != null) {
|
||||
FPlayer fPlayer = FPlayers.getInstance().getByPlayer(player);
|
||||
return new String[]{fPlayer.getRole().toString()};
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?>[] acceptChange(final Changer.ChangeMode mode) {
|
||||
if (mode == Changer.ChangeMode.DELETE || mode == Changer.ChangeMode.RESET || mode == Changer.ChangeMode.SET) {
|
||||
return CollectionUtils.array(String.class);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void change(Event event, Object[] delta, Changer.ChangeMode mode) {
|
||||
Player player = playerExpression.getSingle(event);
|
||||
if (player == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
FPlayer fPlayer = FPlayers.getInstance().getByPlayer(player);
|
||||
switch (mode) {
|
||||
case DELETE:
|
||||
case RESET:
|
||||
fPlayer.setRole(Role.RECRUIT);
|
||||
break;
|
||||
case SET:
|
||||
fPlayer.setRole(Role.fromString(((String) delta[0]).toLowerCase()));
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -3,7 +3,7 @@ version: ${project.version}
|
||||
api-version: 1.13
|
||||
main: com.massivecraft.factions.SavageFactions
|
||||
authors: [Olof Larsson, Brett Flannigan, drtshock, ProSavage, AL56AF50, Driftay]
|
||||
softdepend: [CoreProtect, PlayerVaults, PlaceholderAPI, MVdWPlaceholderAPI, PermissionsEx, Permissions, Essentials, EssentialsChat, HeroChat, iChat, LocalAreaChat, LWC, nChat, ChatManager, CAPI, AuthMe, Vault, Spout, WorldEdit, WorldGuard, AuthDB, CaptureThePoints, CombatTag, dynmap, FactionsTop]
|
||||
softdepend: [Skript, CoreProtect, PlayerVaults, PlaceholderAPI, MVdWPlaceholderAPI, PermissionsEx, Permissions, Essentials, EssentialsChat, HeroChat, iChat, LocalAreaChat, LWC, nChat, ChatManager, CAPI, AuthMe, Vault, Spout, WorldEdit, WorldGuard, AuthDB, CaptureThePoints, CombatTag, dynmap, FactionsTop]
|
||||
website: www.prosavage.net
|
||||
commands:
|
||||
factions:
|
||||
|
||||
Reference in New Issue
Block a user