use of com.iridium.iridiumskyblock.database.Island in project IridiumSkyblock by Iridium-Development.
the class IslandRegenGUI method selectSchematic.
/**
* Executed when the player selects the Island schematic.
*
* @param schematicConfig The data of the selected schematic
*/
@Override
public void selectSchematic(Map.Entry<String, Schematics.SchematicConfig> schematicConfig) {
User user = IridiumSkyblock.getInstance().getUserManager().getUser(player);
Optional<Island> island = user.getIsland();
IslandRegenSettings regenSettings = IridiumSkyblock.getInstance().getConfiguration().regenSettings;
if (island.isPresent()) {
if (PlayerUtils.pay(player, island.get(), regenSettings.crystalPrice, regenSettings.moneyPrice)) {
player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().regeneratingIsland.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
IridiumSkyblock.getInstance().getIslandManager().regenerateIsland(island.get(), user, schematicConfig.getValue());
cooldownProvider.applyCooldown(player);
} else {
player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().cannotAfford.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
}
} else {
player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().noIsland.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
}
}
use of com.iridium.iridiumskyblock.database.Island in project IridiumSkyblock by Iridium-Development.
the class BlockFormListener method onBlockForm.
@EventHandler(ignoreCancelled = true)
public void onBlockForm(BlockFormEvent event) {
if (!IridiumSkyblockAPI.getInstance().isIslandWorld(event.getBlock().getWorld()))
return;
XMaterial newMaterial = XMaterial.matchXMaterial(event.getNewState().getType());
// Custom basalt generators should only work in nether
if (newMaterial == XMaterial.COBBLESTONE || newMaterial == XMaterial.STONE || (newMaterial == XMaterial.BASALT && event.getBlock().getLocation().getWorld().getEnvironment() == World.Environment.NETHER)) {
Optional<Island> island = IridiumSkyblock.getInstance().getIslandManager().getIslandViaLocation(event.getNewState().getLocation());
if (island.isPresent()) {
int upgradeLevel = IridiumSkyblock.getInstance().getIslandManager().getIslandUpgrade(island.get(), "generator").getLevel();
RandomAccessList<XMaterial> randomMaterialList = newMaterial == XMaterial.BASALT ? netherOreLevels.get(upgradeLevel) : normalOreLevels.get(upgradeLevel);
if (randomMaterialList == null)
return;
Optional<XMaterial> xMaterialOptional = randomMaterialList.nextElement();
if (!xMaterialOptional.isPresent())
return;
Material material = xMaterialOptional.get().parseMaterial();
if (material == Material.COBBLESTONE && newMaterial == XMaterial.STONE)
material = Material.STONE;
if (material != null)
event.getNewState().setType(material);
}
}
}
use of com.iridium.iridiumskyblock.database.Island in project IridiumSkyblock by Iridium-Development.
the class BucketListener method onBucketEvent.
public void onBucketEvent(PlayerBucketEvent event) {
Player player = event.getPlayer();
User user = IridiumSkyblock.getInstance().getUserManager().getUser(player);
Optional<Island> island = IridiumSkyblock.getInstance().getIslandManager().getIslandViaLocation(event.getBlock().getLocation());
if (!island.isPresent()) {
if (IridiumSkyblockAPI.getInstance().isIslandWorld(event.getBlockClicked().getWorld())) {
if (!user.isBypassing())
event.setCancelled(true);
}
return;
}
if (IridiumSkyblock.getInstance().getIslandManager().getIslandPermission(island.get(), user, PermissionType.BUCKET)) {
return;
}
event.setCancelled(true);
player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().cannotUseBuckets.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
}
use of com.iridium.iridiumskyblock.database.Island in project IridiumSkyblock by Iridium-Development.
the class EnchantItemListener method monitorItemEnchant.
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
public void monitorItemEnchant(EnchantItemEvent event) {
if (!IridiumSkyblockAPI.getInstance().isIslandWorld(event.getEnchanter().getWorld()))
return;
Player player = event.getEnchanter();
User user = IridiumSkyblock.getInstance().getUserManager().getUser(player);
Optional<Island> island = user.getIsland();
XMaterial material = XMaterial.matchXMaterial(event.getItem().getType());
island.ifPresent(value -> IridiumSkyblock.getInstance().getMissionManager().handleMissionUpdates(value, "ENCHANT", material.name(), 1));
}
use of com.iridium.iridiumskyblock.database.Island in project IridiumSkyblock by Iridium-Development.
the class EntityDamageListener method onEntityDamageByEntity.
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
if (event.getEntity().equals(event.getDamager()))
return;
Optional<Island> island = IridiumSkyblock.getInstance().getIslandManager().getIslandViaLocation(event.getEntity().getLocation());
if (!island.isPresent())
return;
if (event.getEntity() instanceof Player) {
Player victim = (Player) event.getEntity();
if (event.getDamager() instanceof Player) {
handleDamageBetweenPlayers(event, (Player) event.getDamager(), victim, island.get());
return;
}
if (event.getDamager() instanceof Projectile) {
Projectile projectile = (Projectile) event.getDamager();
if (!(projectile.getShooter() instanceof Player))
return;
handleDamageBetweenPlayers(event, (Player) projectile.getShooter(), victim, island.get());
return;
}
handlePlayerDamage(event, island.get());
return;
}
if (event.getDamager() instanceof Player) {
Player player = (Player) event.getDamager();
if (!IridiumSkyblock.getInstance().getIslandManager().getIslandPermission(island.get(), IridiumSkyblock.getInstance().getUserManager().getUser(player), PermissionType.KILL_MOBS)) {
event.setCancelled(true);
player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().cannotHurtMobs.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
}
return;
}
if (event.getDamager() instanceof Projectile) {
Projectile projectile = (Projectile) event.getDamager();
if (projectile.getShooter() == null || !(projectile.getShooter() instanceof Player))
return;
Player player = (Player) projectile.getShooter();
if (!IridiumSkyblock.getInstance().getIslandManager().getIslandPermission(island.get(), IridiumSkyblock.getInstance().getUserManager().getUser(player), PermissionType.KILL_MOBS)) {
projectile.remove();
event.setCancelled(true);
player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().cannotHurtMobs.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
}
}
}
Aggregations