use of org.spongepowered.api.entity.living.player.Player in project Skree by Skelril.
the class WildernessWorldWrapper method run.
@Override
public void run() {
for (Player player : Sponge.getServer().getOnlinePlayers()) {
int currentLevel = getLevel(player.getLocation()).orElse(-1);
WildernessPlayerMeta meta = playerMetaMap.getOrDefault(player.getUniqueId(), new WildernessPlayerMeta());
int lastLevel = meta.getLevel();
// Always set the level so as to mark the player meta as relevant
// if it is -1 no time stamp update shall be performed
meta.setLevel(currentLevel);
// Display a title change, unless the current level is -1 (outside of the Wilderness)
if (currentLevel != -1 && currentLevel != lastLevel) {
TextColor color = (allowsPvP(currentLevel) ? TextColors.RED : TextColors.WHITE);
player.sendTitle(Title.builder().title(Text.of(color, "Wilderness Level")).subtitle(Text.of(color, currentLevel)).fadeIn(20).fadeOut(20).build());
playerMetaMap.putIfAbsent(player.getUniqueId(), meta);
}
}
playerMetaMap.entrySet().removeIf(entry -> System.currentTimeMillis() - entry.getValue().getLastChange() >= TimeUnit.MINUTES.toMillis(5));
}
use of org.spongepowered.api.entity.living.player.Player in project Skree by Skelril.
the class MainWorldWrapper method createFor.
private PlayerCombatParser createFor(Cancellable event) {
return new PlayerCombatParser() {
@Override
public void processPvP(Player attacker, Player defender, @Nullable Entity indirectSource) {
Optional<PvPService> optService = Sponge.getServiceManager().provide(PvPService.class);
if (optService.isPresent()) {
PvPService service = optService.get();
if (service.getPvPState(attacker).allowByDefault() && service.getPvPState(defender).allowByDefault()) {
return;
}
}
if (!(indirectSource instanceof Snowball) || !lobby.contains(attacker)) {
attacker.sendMessage(Text.of(TextColors.RED, "PvP is opt-in only in the main world!"));
event.setCancelled(true);
}
}
@Override
public void processNonLivingAttack(DamageSource attacker, Player defender) {
if (attacker.getType() == DamageTypes.VOID) {
defender.setLocation(defender.getWorld().getSpawnLocation());
defender.offer(Keys.FALL_DISTANCE, 0F);
event.setCancelled(true);
}
}
};
}
use of org.spongepowered.api.entity.living.player.Player in project Skree by Skelril.
the class WorldCommand method execute.
@Override
public CommandResult execute(CommandSource src, CommandContext args) throws CommandException {
if (!(src instanceof Player)) {
src.sendMessage(Text.of("You must be a player to use this command!"));
return CommandResult.empty();
}
WorldService service = Sponge.getServiceManager().provideUnchecked(WorldService.class);
Optional<WorldProperties> optProperties = args.getOne("world");
if (!optProperties.isPresent()) {
src.sendMessage(Text.of(TextColors.YELLOW, "You are in: " + ((Player) src).getWorld().getName() + "."));
return CommandResult.empty();
}
Optional<World> optWorld = Sponge.getServer().getWorld(optProperties.get().getWorldName());
if (!optWorld.isPresent()) {
src.sendMessage(Text.of(TextColors.RED, "No loaded world by that name found."));
return CommandResult.empty();
}
World world = optWorld.get();
if (!WorldEntryPermissionCheck.checkDestination((Player) src, world)) {
src.sendMessage(Text.of(TextColors.RED, "You do not have permission to access worlds of this type."));
return CommandResult.empty();
}
Optional<Location<World>> optLoc = SafeTeleportHelper.teleport((Entity) src, optWorld.get().getSpawnLocation());
if (optLoc.isPresent()) {
src.sendMessage(Text.of(TextColors.YELLOW, "Entered world: " + world.getName() + " successfully!"));
} else if (args.hasAny("f")) {
((Player) src).setLocation(optWorld.get().getSpawnLocation());
src.sendMessage(Text.of(TextColors.YELLOW, "Force entered world: " + world.getName() + " successfully!"));
} else {
src.sendMessage(Text.of(TextColors.YELLOW, "Failed to enter " + world.getName() + " please report this!"));
}
return CommandResult.success();
}
use of org.spongepowered.api.entity.living.player.Player in project Skree by Skelril.
the class ZoneTransitionalOrbListener method onBlockInteract.
@Listener
public void onBlockInteract(InteractBlockEvent.Secondary.MainHand event, @First Player player) {
Optional<org.spongepowered.api.item.inventory.ItemStack> optItemStack = player.getItemInHand(HandTypes.MAIN_HAND);
if (!optItemStack.isPresent()) {
return;
}
ItemStack itemStack = tf(optItemStack.get());
if (itemStack.getItem() != CustomItemTypes.ZONE_TRANSITIONAL_ORB) {
return;
}
Optional<T> optInst = getApplicable(player);
if (optInst.isPresent()) {
Clause<Player, ZoneStatus> status = optInst.get().remove(player);
if (status.getValue() == ZoneStatus.REMOVED) {
Task.builder().execute(() -> {
tf(player).inventory.decrStackSize(tf(player).inventory.currentItem, 1);
tf(player).inventoryContainer.detectAndSendChanges();
}).delayTicks(1).submit(SkreePlugin.inst());
}
event.setUseBlockResult(Tristate.FALSE);
}
}
use of org.spongepowered.api.entity.living.player.Player in project Skree by Skelril.
the class CursedMineListener method onPlayerTeleport.
@Listener
public void onPlayerTeleport(MoveEntityEvent.Teleport event) {
Entity entity = event.getTargetEntity();
if (!(entity instanceof Player)) {
return;
}
Player player = (Player) entity;
Optional<CursedMineInstance> optInst = manager.getApplicableZone(player);
HitList hitList = manager.getHitList();
if ((optInst.isPresent() && optInst.get().hasRecordForPlayer(player)) || hitList.isOnHitList(player)) {
event.setCancelled(true);
player.sendMessage(Text.of(TextColors.RED, "You have been tele-blocked!"));
}
}
Aggregations