First Wave of Skript Support.

This commit is contained in:
ProSavage
2018-12-26 19:22:06 -06:00
parent 7be48b5942
commit bdd547309a
10 changed files with 327 additions and 7 deletions

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}
}