use of com.iridium.iridiumskyblock.database.User in project IridiumSkyblock by Iridium-Development.
the class BlockPlaceListener method onBlockPlaceEvent.
@EventHandler(ignoreCancelled = true)
public void onBlockPlaceEvent(BlockPlaceEvent 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()) {
World world = event.getBlock().getLocation().getWorld();
if (IridiumSkyblockAPI.getInstance().isIslandWorld(world)) {
if (!user.isBypassing())
event.setCancelled(true);
}
return;
}
XMaterial material = XMaterial.matchXMaterial(event.getBlock().getType());
if (!IridiumSkyblock.getInstance().getIslandManager().getIslandPermission(island.get(), user, PermissionType.BLOCK_PLACE)) {
event.setCancelled(true);
player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().cannotPlaceBlocks.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
return;
}
int limitUpgradeLevel = IridiumSkyblock.getInstance().getIslandManager().getIslandUpgrade(island.get(), "blocklimit").getLevel();
int blockLimit = IridiumSkyblock.getInstance().getUpgrades().blockLimitUpgrade.upgrades.get(limitUpgradeLevel).limits.getOrDefault(material, 0);
if (blockLimit > 0 && IridiumSkyblock.getInstance().getIslandManager().getIslandBlockAmount(island.get(), material) >= blockLimit) {
player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().blockLimitReached.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix).replace("%limit%", String.valueOf(blockLimit)).replace("%block%", WordUtils.capitalizeFully(material.name().toLowerCase().replace("_", " ")))));
event.setCancelled(true);
}
}
use of com.iridium.iridiumskyblock.database.User in project IridiumSkyblock by Iridium-Development.
the class BucketListener method onClick.
@EventHandler(ignoreCancelled = true)
public void onClick(PlayerInteractEvent event) {
if (!IridiumSkyblockAPI.getInstance().isIslandWorld(event.getPlayer().getWorld()))
return;
Player player = event.getPlayer();
ItemStack itemInHand = player.getInventory().getItemInMainHand();
if (!(IridiumSkyblock.getInstance().getConfiguration().obsidianBucket && event.getAction().equals(Action.RIGHT_CLICK_BLOCK) && event.getClickedBlock().getType().equals(Material.OBSIDIAN) && itemInHand.getType().equals(Material.BUCKET))) {
return;
}
Location location = event.getClickedBlock().getLocation();
Optional<Island> island = IridiumSkyblock.getInstance().getIslandManager().getIslandViaLocation(location);
User user = IridiumSkyblock.getInstance().getUserManager().getUser(player);
if (island.isPresent()) {
if (IridiumSkyblock.getInstance().getIslandManager().getIslandPermission(island.get(), user, PermissionType.BUCKET)) {
event.getClickedBlock().setType(Material.AIR);
if (itemInHand.getAmount() > 1) {
itemInHand.setAmount(itemInHand.getAmount() - 1);
if (InventoryUtils.hasEmptySlot(player.getInventory())) {
event.getPlayer().getInventory().addItem(new ItemStack(Material.LAVA_BUCKET));
} else {
player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().inventoryFull));
player.getWorld().dropItem(player.getLocation(), new ItemStack(Material.LAVA_BUCKET));
}
} else {
itemInHand.setType(Material.LAVA_BUCKET);
}
} else {
player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().noPermission.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
}
}
}
use of com.iridium.iridiumskyblock.database.User in project IridiumSkyblock by Iridium-Development.
the class EntityDamageListener method handleDamageBetweenPlayers.
public void handleDamageBetweenPlayers(EntityDamageByEntityEvent event, Player attacker, Player victim, Island island) {
Configuration configuration = IridiumSkyblock.getInstance().getConfiguration();
if (!configuration.pvpSettings.pvpOnIslands) {
if (!messageIsOnCooldown(attacker)) {
attacker.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().cannotHurtPlayer.replace("%prefix%", configuration.prefix)));
}
if (event.getCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) {
event.getDamager().remove();
}
event.setCancelled(true);
return;
}
User attackerUser = IridiumSkyblock.getInstance().getUserManager().getUser(attacker);
User victimUser = IridiumSkyblock.getInstance().getUserManager().getUser(victim);
Optional<IslandTrusted> attackerTrusted = IridiumSkyblock.getInstance().getIslandManager().getIslandTrusted(island, attackerUser);
Optional<IslandTrusted> victimTrusted = IridiumSkyblock.getInstance().getIslandManager().getIslandTrusted(island, victimUser);
boolean attackerIsMember = island.equals(attackerUser.getIsland().orElse(null)) || attackerTrusted.isPresent();
boolean victimIsMember = island.equals(victimUser.getIsland().orElse(null)) || victimTrusted.isPresent();
// If pvp between members is allowed or neither attacker or victim is a member, return
if (configuration.pvpSettings.pvpBetweenMembers || !(attackerIsMember || victimIsMember))
return;
if (!messageIsOnCooldown(attacker)) {
attacker.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().cannotHurtMember.replace("%prefix%", configuration.prefix)));
}
if (event.getCause().equals(EntityDamageEvent.DamageCause.PROJECTILE))
event.getDamager().remove();
event.setCancelled(true);
}
use of com.iridium.iridiumskyblock.database.User in project IridiumSkyblock by Iridium-Development.
the class EntityDamageListener method handlePlayerDamage.
private void handlePlayerDamage(EntityDamageEvent event, Island island) {
Configuration.IslandDamageSettings pvpSettings = IridiumSkyblock.getInstance().getConfiguration().pvpSettings;
Player player = (Player) event.getEntity();
User user = IridiumSkyblock.getInstance().getUserManager().getUser(player);
Optional<IslandTrusted> trusted = IridiumSkyblock.getInstance().getIslandManager().getIslandTrusted(island, user);
boolean isMember = island.equals(user.getIsland().orElse(null)) || trusted.isPresent();
List<EntityDamageEvent.DamageCause> preventCauses = isMember ? pvpSettings.membersPreventedDamages : pvpSettings.visitorsPreventedDamages;
if (preventCauses.contains(event.getCause())) {
event.setCancelled(true);
}
}
use of com.iridium.iridiumskyblock.database.User in project IridiumSkyblock by Iridium-Development.
the class IslandSettingsGUI method onInventoryClick.
/**
* Called when there is a click in this GUI.
* Cancelled automatically.
*
* @param event The InventoryClickEvent provided by Bukkit
*/
@Override
public void onInventoryClick(InventoryClickEvent event) {
Player player = (Player) event.getWhoClicked();
User user = IridiumSkyblock.getInstance().getUserManager().getUser(player);
if (!IridiumSkyblock.getInstance().getIslandManager().getIslandPermission(getIsland(), user, PermissionType.ISLAND_SETTINGS)) {
event.getWhoClicked().sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().cannotChangeSettings.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
return;
}
for (Map.Entry<String, Setting> setting : IridiumSkyblock.getInstance().getSettingsList().entrySet()) {
if (event.getSlot() != setting.getValue().getItem().slot)
continue;
if (!setting.getValue().isModifiable())
continue;
SettingType settingType = SettingType.getByName(setting.getKey());
IslandSetting islandSetting = IridiumSkyblock.getInstance().getIslandManager().getIslandSetting(getIsland(), settingType);
String newValue = (event.getClick() == ClickType.RIGHT ? settingType.getNext() : settingType.getPrevious()).getNew(islandSetting.getValue());
IslandSettingChangeEvent islandSettingChangeEvent = new IslandSettingChangeEvent(player, getIsland(), settingType, newValue);
Bukkit.getPluginManager().callEvent(islandSettingChangeEvent);
if (islandSettingChangeEvent.isCancelled())
return;
newValue = islandSettingChangeEvent.getNewValue();
islandSetting.setValue(newValue);
settingType.getOnChange().run(getIsland(), newValue);
addContent(event.getInventory());
}
}
Aggregations