use of org.spongepowered.api.entity.living.player.Player in project TotalEconomy by Erigitic.
the class BalanceCommand method execute.
@Override
public CommandResult execute(CommandSource src, CommandContext args) throws CommandException {
if (src instanceof Player) {
Player sender = (Player) src;
TEAccount playerAccount = (TEAccount) accountManager.getOrCreateAccount(sender.getUniqueId()).get();
Currency defaultCurrency = totalEconomy.getDefaultCurrency();
Text playerBalance = defaultCurrency.format(playerAccount.getBalance(defaultCurrency));
sender.sendMessage(Text.of(TextColors.GRAY, "Balance: ", TextColors.GOLD, playerBalance));
return CommandResult.success();
}
return CommandResult.empty();
}
use of org.spongepowered.api.entity.living.player.Player in project TotalEconomy by Erigitic.
the class JobCommand method execute.
@Override
public CommandResult execute(CommandSource src, CommandContext args) throws CommandException {
if (src instanceof Player) {
Player player = ((Player) src).getPlayer().get();
String jobName = totalEconomy.getTEJobManager().getPlayerJob(player);
player.sendMessage(Text.of(TextColors.GRAY, "Current Job: ", TextColors.GOLD, totalEconomy.getTEJobManager().titleize(jobName)));
player.sendMessage(Text.of(TextColors.GRAY, totalEconomy.getTEJobManager().titleize(jobName), " Level: ", TextColors.GOLD, totalEconomy.getTEJobManager().getJobLevel(jobName, player)));
player.sendMessage(Text.of(TextColors.GRAY, totalEconomy.getTEJobManager().titleize(jobName), " Exp: ", TextColors.GOLD, totalEconomy.getTEJobManager().getJobExp(jobName, player), "/", totalEconomy.getTEJobManager().getExpToLevel(player), " exp\n"));
player.sendMessage(Text.of(TextColors.GRAY, "Available Jobs: ", TextColors.GOLD, totalEconomy.getTEJobManager().getJobList()));
return CommandResult.success();
} else {
throw new CommandException(Text.of("You can't have a job!"));
}
}
use of org.spongepowered.api.entity.living.player.Player in project TotalEconomy by Erigitic.
the class TEJobManager method onPlayerBlockBreak.
/**
* Used for the break option in jobs. Will check if the job has the break node and if it does it will check if the
* block that was broken is present in the config of the player's job. If it is, it will grab the job exp reward as
* well as the pay.
*
* @param event ChangeBlockEvent.Break
*/
@Listener
public void onPlayerBlockBreak(ChangeBlockEvent.Break event) {
if (event.getCause().first(Player.class).isPresent()) {
Player player = event.getCause().first(Player.class).get();
UUID playerUUID = player.getUniqueId();
String playerJob = getPlayerJob(player);
Optional<TEJob> optPlayerJob = getJob(playerJob, true);
String blockName = event.getTransactions().get(0).getOriginal().getState().getType().getName();
Optional<UUID> blockCreator = event.getTransactions().get(0).getOriginal().getCreator();
if (optPlayerJob.isPresent()) {
// Prevent blocks placed by other players from counting towards a job
if (!blockCreator.isPresent()) {
Optional<TEActionReward> reward = Optional.empty();
List<String> sets = optPlayerJob.get().getSets();
for (String s : sets) {
Optional<TEJobSet> optSet = getJobSet(s);
if (!optSet.isPresent()) {
logger.warn("[TE] Job " + getPlayerJob(player) + " has the nonexistent set \"" + s + "\"");
continue;
}
reward = optSet.get().getRewardFor("break", blockName);
}
if (reward.isPresent()) {
int expAmount = reward.get().getExpReward();
BigDecimal payAmount = reward.get().getMoneyReward();
boolean notify = accountManager.getJobNotificationState(player);
TEAccount playerAccount = (TEAccount) accountManager.getOrCreateAccount(player.getUniqueId()).get();
if (notify) {
notifyPlayer(player, payAmount);
}
addExp(player, expAmount);
playerAccount.deposit(totalEconomy.getDefaultCurrency(), payAmount, Cause.of(NamedCause.of("TotalEconomy", totalEconomy.getPluginContainer())));
checkForLevel(player);
}
}
}
}
}
use of org.spongepowered.api.entity.living.player.Player in project Skree by Skelril.
the class JungleRaidEffectListener method onClientLeave.
@Listener
public void onClientLeave(ClientConnectionEvent.Disconnect event) {
Player player = event.getTargetEntity();
Optional<JungleRaidInstance> optInst = manager.getApplicableZone(player);
if (optInst.isPresent()) {
JungleRaidInstance inst = optInst.get();
handleLoss(inst, player);
}
}
use of org.spongepowered.api.entity.living.player.Player in project Skree by Skelril.
the class JungleRaidEffectListener method createFor.
private PlayerCombatParser createFor(Cancellable event, JungleRaidInstance inst) {
return new PlayerCombatParser() {
@Override
public void processPvP(Player attacker, Player defender, @Nullable Entity indirectSource) {
final boolean isDamageEntityEvent = event instanceof DamageEntityEvent;
// Do Death Touch before anything else
if (inst.isFlagEnabled(JungleRaidFlag.DEATH_TOUCH) && isDamageEntityEvent) {
((DamageEntityEvent) event).setBaseDamage(Math.pow(defender.get(Keys.MAX_HEALTH).orElse(20D), 3));
return;
}
Optional<JungleRaidClass> optClass = inst.getClass(attacker);
if (optClass.isPresent()) {
JungleRaidClass jrClass = optClass.get();
if (jrClass == JungleRaidClass.SNIPER) {
Optional<ItemStack> optHeld = attacker.getItemInHand(HandTypes.MAIN_HAND);
boolean hasWoodenSword = optHeld.isPresent() && optHeld.get().getItem() == ItemTypes.WOODEN_SWORD;
if (indirectSource != null || !hasWoodenSword) {
double distSq = attacker.getLocation().getPosition().distanceSquared(defender.getLocation().getPosition());
double targetDistSq = Math.pow(70, 2);
double ratio = Math.min(distSq, targetDistSq) / targetDistSq;
if (isDamageEntityEvent) {
// Handle damage modification
((DamageEntityEvent) event).setBaseDamage(((DamageEntityEvent) event).getBaseDamage() * ratio);
} else {
// Disable the arrow fire in the Impact event
if (ratio < .7 && indirectSource != null) {
indirectSource.offer(Keys.FIRE_TICKS, 0);
}
}
}
}
}
if (inst.isFlagEnabled(JungleRaidFlag.TITAN_MODE) && attacker.getUniqueId().equals(inst.getFlagData().titan) && isDamageEntityEvent) {
((DamageEntityEvent) event).setBaseDamage(((DamageEntityEvent) event).getBaseDamage() * 2);
}
}
@Override
public void processNonLivingAttack(DamageSource attacker, Player defender) {
if (!(event instanceof DamageEntityEvent)) {
return;
}
if (attacker.getType() == DamageTypes.FALL) {
BlockType belowType = defender.getLocation().add(0, -1, 0).getBlockType();
if (inst.isFlagEnabled(JungleRaidFlag.TRAMPOLINE)) {
Vector3d oldVel = defender.getVelocity();
Vector3d newVel = new Vector3d(oldVel.getX(), 0, oldVel.getZ());
defender.setVelocity(new Vector3d(0, .1, 0).mul(((DamageEntityEvent) event).getBaseDamage()).add(newVel));
event.setCancelled(true);
} else if (belowType == BlockTypes.LEAVES || belowType == BlockTypes.LEAVES2) {
if (Probability.getChance(2)) {
Vector3d oldVel = defender.getVelocity();
Vector3d newVel = new Vector3d(oldVel.getX() > 0 ? -.5 : .5, 0, oldVel.getZ() > 0 ? -.5 : .5);
defender.setVelocity(new Vector3d(0, .1, 0).mul(((DamageEntityEvent) event).getBaseDamage()).add(newVel));
}
event.setCancelled(true);
}
} else if (attacker.getType() == DamageTypes.CUSTOM) {
if (inst.isFlagEnabled(JungleRaidFlag.EXPLOSIVE_ARROWS) || inst.isFlagEnabled(JungleRaidFlag.GRENADES)) {
((DamageEntityEvent) event).setBaseDamage(Math.min(((DamageEntityEvent) event).getBaseDamage(), 2));
}
}
}
};
}
Aggregations