diff --git a/src/main/kotlin/me/clearedSpore/sporeCore/features/mode/item/ModeItemManager.kt b/src/main/kotlin/me/clearedSpore/sporeCore/features/mode/item/ModeItemManager.kt index 1d4ef9e..d25f764 100644 --- a/src/main/kotlin/me/clearedSpore/sporeCore/features/mode/item/ModeItemManager.kt +++ b/src/main/kotlin/me/clearedSpore/sporeCore/features/mode/item/ModeItemManager.kt @@ -1,12 +1,7 @@ package me.clearedSpore.sporeCore.features.mode.item import me.clearedSpore.sporeCore.SporeCore -import me.clearedSpore.sporeCore.features.mode.item.impl.InvseeItem -import me.clearedSpore.sporeCore.features.mode.item.impl.CompassItem -import me.clearedSpore.sporeCore.features.mode.item.impl.FreezeItem -import me.clearedSpore.sporeCore.features.mode.item.impl.HistoryItem -import me.clearedSpore.sporeCore.features.mode.item.impl.PunishSwordItem -import me.clearedSpore.sporeCore.features.mode.item.impl.SpeedItem +import me.clearedSpore.sporeCore.features.mode.item.impl.* import me.clearedSpore.sporeCore.features.mode.item.`object`.ModeItem import org.bukkit.Bukkit @@ -21,6 +16,7 @@ object ModeItemManager { register(HistoryItem()) register(InvseeItem()) register(CompassItem()) + register(WorldEditItem()) } fun register(item: ModeItem) { diff --git a/src/main/kotlin/me/clearedSpore/sporeCore/features/mode/item/impl/WorldEditItem.kt b/src/main/kotlin/me/clearedSpore/sporeCore/features/mode/item/impl/WorldEditItem.kt new file mode 100644 index 0000000..a83a77e --- /dev/null +++ b/src/main/kotlin/me/clearedSpore/sporeCore/features/mode/item/impl/WorldEditItem.kt @@ -0,0 +1,31 @@ +package me.clearedSpore.sporeCore.features.mode.item.impl + +import me.clearedSpore.sporeAPI.util.CC.blue +import me.clearedSpore.sporeAPI.util.CC.gray +import me.clearedSpore.sporeAPI.util.Logger +import me.clearedSpore.sporeCore.features.mode.item.`object`.ModeItem +import me.clearedSpore.sporeCore.util.ItemBuilder +import org.bukkit.Bukkit +import org.bukkit.Material +import org.bukkit.event.Listener +import org.bukkit.inventory.ItemStack + + +class WorldEditItem : ModeItem("worldedit"), Listener { + override fun getItemStack(): ItemStack { + if (Bukkit.getPluginManager().isPluginEnabled("WorldEdit") || Bukkit.getPluginManager() + .isPluginEnabled("FastAsyncWorldEdit") + ) { + val item = ItemBuilder(Material.WOODEN_AXE) + .addNBTTag("worldedit_item", id) + .setName("WorldEdit Wand".blue()) + .addLoreLine("Left Click to set the first position".gray()) + .addLoreLine("Right Click to set the second position".gray()) + .setGlow(true) + .build() + return item + } + Logger.info("WorldEdit is not installed on this server. The 'worldedit' item will not be given.") + return ItemStack.empty() + } +} \ No newline at end of file diff --git a/src/main/kotlin/me/clearedSpore/sporeCore/features/mode/listener/ModeListener.kt b/src/main/kotlin/me/clearedSpore/sporeCore/features/mode/listener/ModeListener.kt index b24fa0b..ba74e5e 100644 --- a/src/main/kotlin/me/clearedSpore/sporeCore/features/mode/listener/ModeListener.kt +++ b/src/main/kotlin/me/clearedSpore/sporeCore/features/mode/listener/ModeListener.kt @@ -16,6 +16,7 @@ import org.bukkit.event.block.BlockBreakEvent import org.bukkit.event.block.BlockPlaceEvent import org.bukkit.event.entity.EntityDamageByEntityEvent import org.bukkit.event.entity.EntityPickupItemEvent +import org.bukkit.event.entity.EntityShootBowEvent import org.bukkit.event.entity.FoodLevelChangeEvent import org.bukkit.event.inventory.InventoryClickEvent import org.bukkit.event.player.* @@ -111,6 +112,14 @@ class ModeListener(private val modeProvider: (Player) -> Mode?) : Listener { if (!mode.inventory) event.isCancelled = true } + @EventHandler + fun onBowPrepare(event: EntityShootBowEvent) { + val player = event.entity as? Player ?: return + val mode = modeProvider(player) ?: return + if (!mode.pvp) event.isCancelled = true + + } + @EventHandler fun onSilentChest(event: PlayerInteractEvent) { val player = event.player @@ -150,5 +159,6 @@ class ModeListener(private val modeProvider: (Player) -> Mode?) : Listener { } }, 0L, 20L) } + event.isCancelled = true } } diff --git a/src/main/kotlin/me/clearedSpore/sporeCore/features/reboot/RebootService.kt b/src/main/kotlin/me/clearedSpore/sporeCore/features/reboot/RebootService.kt index 81b60ac..cc7c92e 100644 --- a/src/main/kotlin/me/clearedSpore/sporeCore/features/reboot/RebootService.kt +++ b/src/main/kotlin/me/clearedSpore/sporeCore/features/reboot/RebootService.kt @@ -68,15 +68,17 @@ object RebootService { cancelled = true rebootTask?.cancel() rebootTask = null + Bukkit.broadcastMessage("§m-------------------------------------") Bukkit.broadcastMessage("") Bukkit.broadcastMessage("Reboot has been cancelled.".red()) Bukkit.broadcastMessage("") + Bukkit.broadcastMessage("§m-------------------------------------") } private fun sendRebootMessage(timeLeft: Long, isCountdown: Boolean = false) { val formatted = TimeUtil.formatDuration(timeLeft) - val title = "§lReboot!!".red() - val subtitle = "Rebooting in §f$formatted".blue() + val title = "§lServer Reboot".red() + val subtitle = "The server is rebooting in §f$formatted".blue() Bukkit.getOnlinePlayers().forEach { if (isCountdown) { @@ -87,9 +89,11 @@ object RebootService { it.playSound(it, Sound.ENTITY_PLAYER_LEVELUP, 1.0f, 1.0f) } + Bukkit.broadcastMessage("§m-------------------------------------") Bukkit.broadcastMessage("") - Bukkit.broadcastMessage("§lReboot!!".red()) - Bukkit.broadcastMessage("Rebooting in §f$formatted".blue()) + Bukkit.broadcastMessage("§lServer Reboot".red()) + Bukkit.broadcastMessage("The server is rebooting in §f$formatted".blue()) Bukkit.broadcastMessage("") + Bukkit.broadcastMessage("§m-------------------------------------") } } \ No newline at end of file diff --git a/src/main/kotlin/me/clearedSpore/sporeCore/features/vanish/VanishService.kt b/src/main/kotlin/me/clearedSpore/sporeCore/features/vanish/VanishService.kt index e890d12..c68ef6e 100644 --- a/src/main/kotlin/me/clearedSpore/sporeCore/features/vanish/VanishService.kt +++ b/src/main/kotlin/me/clearedSpore/sporeCore/features/vanish/VanishService.kt @@ -24,6 +24,7 @@ object VanishService { val wasInMode = ModeService.isInMode(userPlayer) vanishedPlayers.add(uuid) + userPlayer.isSleepingIgnored = true val config = SporeCore.instance.coreConfig if (!wasInMode && config.joinLeaveMessages.vanish && config.joinLeaveMessages.leave.isNotEmpty()) { Bukkit.broadcastMessage( @@ -72,6 +73,7 @@ object VanishService { } vanishedPlayers.remove(uuid) + userPlayer.isSleepingIgnored = false val config = SporeCore.instance.coreConfig if (!wasInMode && config.joinLeaveMessages.vanish && config.joinLeaveMessages.join.isNotEmpty()) { Bukkit.broadcastMessage( diff --git a/src/main/kotlin/me/clearedSpore/sporeCore/user/UserListener.kt b/src/main/kotlin/me/clearedSpore/sporeCore/user/UserListener.kt index de488bb..4274a7e 100644 --- a/src/main/kotlin/me/clearedSpore/sporeCore/user/UserListener.kt +++ b/src/main/kotlin/me/clearedSpore/sporeCore/user/UserListener.kt @@ -307,7 +307,7 @@ class UserListener : Listener { } - if (config.discord.chat.isNotEmpty() && !autoStaff && !VanishService.isVanished(player.uniqueId)) { + if (config.discord.chat.isNotEmpty() && !ModeService.isInMode(player) && !VanishService.isVanished(player.uniqueId)) { val embed = Webhook.Embed() .setColor(0x00FF00) .setDescription("**${player.name} joined the server**") @@ -352,6 +352,8 @@ class UserListener : Listener { event.quitMessage(null) wasVanished = true ModeService.toggleMode(player) + VanishService.vanishedPlayers.remove(player.uniqueId) + player.isSleepingIgnored = false } @@ -381,7 +383,7 @@ class UserListener : Listener { event.quitMessage = null } else { if (config.joinLeaveMessages.leave.isNotBlank()) { - event.quitMessage = config.joinLeaveMessages.join + event.quitMessage = config.joinLeaveMessages.leave .translate() .parsePlaceholders(player) }