use of org.spongepowered.api.event.filter.cause.First in project Skree by Skelril.
the class ZoneSlaveOrb method onDropItem.
@Listener
public void onDropItem(DropItemEvent.Dispense event) {
event.getEntities().stream().filter(entity -> entity instanceof Item).forEach(entity -> {
ItemStack stack = ((EntityItem) entity).getEntityItem();
if (isZoneSlaveItem(stack)) {
Optional<Player> optPlayer = event.getCause().first(Player.class);
if (optPlayer.isPresent()) {
Player player = optPlayer.get();
if (!notifyGroupOwner(stack, player, false)) {
// TODO Log this, as it shouldn't happen
}
player.sendMessage(Text.of(TextColors.RED, "You've declined your group invite."));
}
entity.remove();
}
});
}
use of org.spongepowered.api.event.filter.cause.First in project Skree by Skelril.
the class ZoneMasterOrb 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 (!isZoneMasterItem(itemStack)) {
return;
}
if (isAttuned(itemStack)) {
if (isInInstanceWorld(player)) {
player.sendMessage(Text.of(TextColors.RED, "You cannot start an instance from within an instance."));
event.setCancelled(true);
return;
}
Optional<ZoneService> optService = Sponge.getServiceManager().provide(ZoneService.class);
if (optService.isPresent()) {
Task.builder().execute(() -> {
ZoneService service = optService.get();
List<Player> group = new ArrayList<>();
group.add(player);
for (Player aPlayer : Sponge.getServer().getOnlinePlayers()) {
NonNullList<ItemStack> itemStacks = tf(aPlayer).inventory.mainInventory;
for (ItemStack aStack : itemStacks) {
if (!hasSameZoneID(itemStack, aStack)) {
continue;
}
if (isAttuned(aStack) && isZoneSlaveItem(aStack)) {
Optional<Player> optZoneOwner = getGroupOwner(aStack);
if (optZoneOwner.isPresent()) {
group.add(aPlayer);
break;
}
}
}
}
for (int i = group.size() - 1; i >= 0; --i) {
purgeZoneItems(group.get(i), itemStack);
// createLightningStrike(group.get(i)); SpongeCommon/420
saveLocation(group.get(i));
getMainWorldWrapper().getLobby().add(group.get(i));
}
service.requestZone(getZone(itemStack).get(), group, () -> {
getMainWorldWrapper().getLobby().remove(group);
}, result -> {
if (result.isPresent()) {
result.get().stream().filter(entry -> entry.getValue() != ZoneStatus.ADDED).forEach(entry -> {
player.setLocation(getRespawnLocation(player));
player.sendMessage(Text.of(TextColors.RED, "You could not be added to the zone."));
});
}
});
}).delayTicks(1).submit(SkreePlugin.inst());
}
}
event.setUseBlockResult(Tristate.FALSE);
}
Aggregations