From bb47145a738ba23c6cdf2999a212bf884ff9b8ef Mon Sep 17 00:00:00 2001 From: TDSTOS Date: Fri, 12 Dec 2025 05:12:09 +0100 Subject: [PATCH] Fix start errors --- build.gradle.kts | 4 +- .../kotlin/club/mcscrims/speedhg/SpeedHG.kt | 21 ++- .../mcscrims/speedhg/command/KitsCommand.kt | 2 +- .../mcscrims/speedhg/config/PluginConfig.kt | 5 +- .../club/mcscrims/speedhg/game/GameState.kt | 14 +- .../mcscrims/speedhg/game/impl/FeastState.kt | 2 +- .../club/mcscrims/speedhg/kit/AbstractKit.kt | 4 +- .../club/mcscrims/speedhg/kit/KitManager.kt | 3 +- .../mcscrims/speedhg/kit/impl/AnchorKit.kt | 3 +- .../speedhg/kit/impl/BlackPantherKit.kt | 122 ++++++++++++++++-- .../speedhg/kit/impl/BlitzcrankKit.kt | 13 +- .../speedhg/listener/GameStateListener.kt | 11 +- .../speedhg/recraft/RecraftInspector.kt | 2 +- .../mcscrims/speedhg/world/WorldManager.kt | 36 +++--- src/main/resources/config.yml | 14 +- src/main/resources/plugin.yml | 5 + 16 files changed, 200 insertions(+), 61 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 8fe4b6c..579b578 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -43,8 +43,8 @@ dependencies { compileOnly("org.popcraft:chunky-common:1.3.38") - implementation("club.mcscrims:core:1.4.3.1") - implementation("club.mcscrims:spigot:1.4.3.1") + implementation("club.mcscrims:core:1.4.3.2") + implementation("club.mcscrims:spigot:1.4.3.2") compileOnly("io.papermc.paper:paper-api:1.21.1-R0.1-SNAPSHOT") paperweight.paperDevBundle("1.21.1-R0.1-SNAPSHOT") diff --git a/src/main/kotlin/club/mcscrims/speedhg/SpeedHG.kt b/src/main/kotlin/club/mcscrims/speedhg/SpeedHG.kt index 1354e14..3c45d98 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/SpeedHG.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/SpeedHG.kt @@ -36,6 +36,7 @@ import net.kyori.adventure.text.Component import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer import net.luckperms.api.LuckPerms import org.bukkit.Bukkit +import org.bukkit.entity.Player import org.bukkit.plugin.java.JavaPlugin class SpeedHG : JavaPlugin() { @@ -83,16 +84,16 @@ class SpeedHG : JavaPlugin() { { instance = this - loadConfigurations() - setupDatabase() - networkManager = SpigotNetworkManager.getInstance()!! - worldManager = WorldManager( this ) worldManager.deleteWorld() } override fun onEnable() { + loadConfigurations() + setupDatabase() + networkManager = SpigotNetworkManager.getInstance()!! + worldManager.setupWorld() chatFormatter = ChatFormatter.create( @@ -150,6 +151,18 @@ class SpeedHG : JavaPlugin() { getCommand("kits")?.setExecutor(KitsCommand( this, kitInventoryManager )) } + fun getAlivePlayers(): List + { + val alivePlayers = mutableListOf() + + runBlocking { + val players = playerRepository.findAlivePlayers( server.name ) + alivePlayers.addAll(players.map { Bukkit.getPlayer( it.uuid )!! }) + } + + return alivePlayers + } + /* * LUCKPERMS >> */ diff --git a/src/main/kotlin/club/mcscrims/speedhg/command/KitsCommand.kt b/src/main/kotlin/club/mcscrims/speedhg/command/KitsCommand.kt index efc4387..db33fa2 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/command/KitsCommand.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/command/KitsCommand.kt @@ -20,7 +20,7 @@ class KitsCommand( ): Boolean { if ( sender !is Player ) { - sender.sendMessage("§cOnly players can use this command.") + plugin.chatManager.sendSenderMessage( sender, "default.only_players" ) return true } diff --git a/src/main/kotlin/club/mcscrims/speedhg/config/PluginConfig.kt b/src/main/kotlin/club/mcscrims/speedhg/config/PluginConfig.kt index c9a6c6c..be91010 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/config/PluginConfig.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/config/PluginConfig.kt @@ -1,6 +1,5 @@ package club.mcscrims.speedhg.config -import club.mcscrims.core.config.ConfigData import club.mcscrims.core.config.DurationEntry import club.mcscrims.core.config.DurationType import club.mcscrims.core.config.annotations.ConfigClass @@ -56,7 +55,7 @@ data class PluginConfig( data class GameConfig( val name: String = "SpeedHG", val variantName: String = "Solo - Single Kit", - val minimumPlayers: Int = 8, + val minimumPlayers: Int = 2, val competitiveGame: Boolean = false, val competitiveCommands: List = emptyList(), val playerStates: Map = getPlayerStates(), @@ -78,7 +77,7 @@ data class PluginConfig( playerState: String ): DurationEntry { - return SpeedHG.instance.pluginConfig.parseDuration( "game.playerStates.$playerState.duration" ) + return (getPlayerStates()[ playerState ]?.duration as DurationEntry ) } data class StateConfig( diff --git a/src/main/kotlin/club/mcscrims/speedhg/game/GameState.kt b/src/main/kotlin/club/mcscrims/speedhg/game/GameState.kt index cba20c0..2e977e3 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/game/GameState.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/game/GameState.kt @@ -6,6 +6,7 @@ import club.mcscrims.spigot.scheduler.SchedulerManager import club.mcscrims.spigot.scheduler.TaskRegistration import org.bukkit.Bukkit import org.bukkit.entity.Player +import org.bukkit.scheduler.BukkitTask abstract class GameState( val name: String, @@ -15,7 +16,7 @@ abstract class GameState( protected val durationSeconds: Int? = null ) { - private var tickTask: TaskRegistration? = null + private var tickTask: BukkitTask? = null private var remainingSeconds: Int = durationSeconds ?: 0 private var isActive: Boolean = false @@ -25,7 +26,7 @@ abstract class GameState( isActive = true remainingSeconds = durationSeconds ?: 0 - if ( durationSeconds != null && durationSeconds > 0 ) + if ( durationSeconds != null ) startTicking() } @@ -42,12 +43,11 @@ abstract class GameState( private fun startTicking() { - tickTask = schedulerManager.runRepeating( 20L, 20L ) - { + tickTask = Bukkit.getScheduler().runTaskTimer( plugin, { -> if ( !isActive ) { stopTicking() - return@runRepeating + return@runTaskTimer } try { @@ -62,7 +62,7 @@ abstract class GameState( if (plugin.pluginConfig.data.getDuration( name ).type == DurationType.INCREASING ) { remainingSeconds++ - return@runRepeating + return@runTaskTimer } remainingSeconds-- @@ -75,7 +75,7 @@ abstract class GameState( e.printStackTrace() } } - } + }, 20L, 20L ) } private fun stopTicking() { diff --git a/src/main/kotlin/club/mcscrims/speedhg/game/impl/FeastState.kt b/src/main/kotlin/club/mcscrims/speedhg/game/impl/FeastState.kt index ba5aa93..0781e31 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/game/impl/FeastState.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/game/impl/FeastState.kt @@ -30,7 +30,7 @@ class FeastState( private val random = Random() internal var feastLocation: Location - internal lateinit var feastBox: BoundingBox + internal var feastBox: BoundingBox internal var feastHeight: Int = 1 init diff --git a/src/main/kotlin/club/mcscrims/speedhg/kit/AbstractKit.kt b/src/main/kotlin/club/mcscrims/speedhg/kit/AbstractKit.kt index bbb5c52..ed79da1 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/kit/AbstractKit.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/kit/AbstractKit.kt @@ -10,6 +10,7 @@ import org.bukkit.entity.Player import org.bukkit.event.entity.EntityDamageByEntityEvent import org.bukkit.event.player.PlayerInteractEvent import org.bukkit.event.player.PlayerMoveEvent +import org.bukkit.inventory.ItemStack abstract class AbstractKit( val id: String, @@ -23,6 +24,7 @@ abstract class AbstractKit( ) { lateinit var config: Map + val items = mutableListOf() abstract fun onSelect( player: Player ) @@ -93,7 +95,7 @@ abstract class AbstractKit( } enum class PlayStyle { - OFFENSIVE, DEFENSIVE, NULL + OFFENSIVE, DEFENSIVE } enum class KitMetaData { diff --git a/src/main/kotlin/club/mcscrims/speedhg/kit/KitManager.kt b/src/main/kotlin/club/mcscrims/speedhg/kit/KitManager.kt index ca10018..fa3d38d 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/kit/KitManager.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/kit/KitManager.kt @@ -70,6 +70,7 @@ class KitManager( Component::class.java, List::class.java, Material::class.java, + PlayStyle::class.java, SpeedHG::class.java, AbilityContext::class.java, GameManager::class.java @@ -80,7 +81,7 @@ class KitManager( displayName, description, icon, - PlayStyle.NULL, + PlayStyle.DEFENSIVE, plugin, plugin.abilityContext, plugin.gameManager diff --git a/src/main/kotlin/club/mcscrims/speedhg/kit/impl/AnchorKit.kt b/src/main/kotlin/club/mcscrims/speedhg/kit/impl/AnchorKit.kt index 2cb0be5..c21d7d2 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/kit/impl/AnchorKit.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/kit/impl/AnchorKit.kt @@ -46,11 +46,12 @@ class AnchorKit( player: Player ) { anvilItem = ItemBuilder( plugin, Material.ANVIL ) - .name(plugin.chatFormatter.format( "kits.anchor.items.anvil.${playStyle.name.lowercase()}" ).content()) + .name(plugin.messageConfig.data.getKitItemNames( "anchor", "anvil" )!![ playStyle.name.lowercase() ]!!) .unbreakable( true ) .hideAttributes() .build() + items.add( anvilItem ) player.inventory.setItem( 0, anvilItem ) } diff --git a/src/main/kotlin/club/mcscrims/speedhg/kit/impl/BlackPantherKit.kt b/src/main/kotlin/club/mcscrims/speedhg/kit/impl/BlackPantherKit.kt index 02ac7a9..787456f 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/kit/impl/BlackPantherKit.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/kit/impl/BlackPantherKit.kt @@ -1,15 +1,20 @@ package club.mcscrims.speedhg.kit.impl import club.mcscrims.speedhg.SpeedHG -import club.mcscrims.speedhg.SpeedHG.Companion.content import club.mcscrims.speedhg.ability.AbilityContext import club.mcscrims.speedhg.game.GameManager import club.mcscrims.speedhg.kit.AbstractKit import club.mcscrims.speedhg.kit.KitMetaData import club.mcscrims.speedhg.kit.PlayStyle import club.mcscrims.spigot.item.ItemBuilder +import club.mcscrims.spigot.util.GroundDetector import net.kyori.adventure.text.Component +import org.bukkit.Bukkit +import org.bukkit.GameMode import org.bukkit.Material +import org.bukkit.Particle +import org.bukkit.entity.EnderPearl +import org.bukkit.entity.EntityType import org.bukkit.entity.Player import org.bukkit.event.block.Action import org.bukkit.event.entity.EntityDamageByEntityEvent @@ -17,6 +22,12 @@ import org.bukkit.event.player.PlayerInteractEvent import org.bukkit.event.player.PlayerMoveEvent import org.bukkit.inventory.ItemStack import org.bukkit.metadata.FixedMetadataValue +import org.bukkit.potion.PotionEffect +import org.bukkit.potion.PotionEffectType +import org.bukkit.scheduler.BukkitRunnable +import org.bukkit.util.Vector +import kotlin.math.max +import kotlin.math.roundToInt class BlackPantherKit( id: String, @@ -46,33 +57,33 @@ class BlackPantherKit( PlayStyle.DEFENSIVE -> { blackDye = ItemBuilder( plugin, Material.BLACK_DYE ) - .name(plugin.chatFormatter.format( "kits.anchor.items.blackDye.${playStyle.name.lowercase()}" ).content()) + .name(plugin.messageConfig.data.getKitItemNames( "blackpanther", "blackDye" )!![ "null" ]!!) .unbreakable( true ) .hideAttributes() .build() + items.add( blackDye ) player.inventory.setItem( 0, blackDye ) } PlayStyle.OFFENSIVE -> { blackDye = ItemBuilder( plugin, Material.BLACK_DYE ) - .name(plugin.chatFormatter.format( "kits.anchor.items.blackDye.${playStyle.name.lowercase()}" ).content()) + .name(plugin.messageConfig.data.getKitItemNames( "blackpanther", "blackDye" )!![ playStyle.name.lowercase() ]!!) .unbreakable( true ) .hideAttributes() .build() blazePowder = ItemBuilder( plugin, Material.BLAZE_POWDER ) - .name(plugin.chatFormatter.format( "kits.anchor.items.blazePowder" ).content()) + .name(plugin.messageConfig.data.getKitItemNames( "blackpanther", "blazePowder" )!![ playStyle.name.lowercase() ]!!) .unbreakable( true ) .hideAttributes() .build() + items.addAll(listOf( blackDye, blazePowder )) player.inventory.setItem( 0, blackDye ) player.inventory.setItem( 1, blazePowder ) } - - else -> {} } } @@ -127,11 +138,11 @@ class BlackPantherKit( if ( playStyle == PlayStyle.DEFENSIVE ) { - + launchAndDash( player ) return } - + push( player ) } Material.BLAZE_POWDER -> @@ -153,6 +164,101 @@ class BlackPantherKit( override fun onMove( player: Player, event: PlayerMoveEvent ) {} + private fun push( + player: Player + ) { + plugin.getAlivePlayers().stream() + .filter { it != player } + .filter { it.location.distance( player.location ) <= defaultRadius } + .forEach { nearby -> + val pushDirection = nearby.location.toVector().subtract( player.location.toVector() ).normalize() + pushDirection.multiply( 1.0 ) + pushDirection.setY( 0.5 ) + nearby.velocity = pushDirection + + val enderPearl = player.world.spawnEntity( player.location, EntityType.ENDER_PEARL ) as EnderPearl + enderPearl.velocity = pushDirection + enderPearl.setMetadata( KitMetaData.IS_BLACK_PANTHER.getKey(), FixedMetadataValue( plugin, true )) + + object : BukkitRunnable() + { + + override fun run() + { + if (GroundDetector.isOnGround( nearby )) + { + this.cancel() + return + } + + nearby.world.spawnParticle( Particle.END_ROD, nearby.location, 5, 0.2, 0.2, 0.2 ) + } + + }.runTaskTimer( plugin, 0L, 2L ) + } + } + + private fun launchAndDash( + player: Player, + upwardVelocity: Double = 2.2, + waitTicks: Long = 60L, + dashSpeed: Double = 2.8, + horizontalOnly: Boolean = true, + yBoost: Double = 0.2, + noFallDamageMillis: Double = 1.0 + ) { + if ( !player.isOnline ) return + if ( player.isInsideVehicle ) player.leaveVehicle() + if ( player.gameMode == GameMode.SPECTATOR ) return + + player.velocity = Vector( 0.0, upwardVelocity, 0.0 ) + player.fallDistance = 0f + + if ( noFallDamageMillis > 0 ) + player.addPotionEffect(PotionEffect( PotionEffectType.RESISTANCE, ( noFallDamageMillis * 20 ).toInt(), 999, false, false, false )) + + Bukkit.getScheduler().runTaskLater( plugin, { -> + val p = Bukkit.getPlayer( player.uniqueId ) ?: return@runTaskLater + if ( !p.isOnline ) return@runTaskLater + + var dir = p.eyeLocation.direction + if ( horizontalOnly ) dir = Vector( dir.x, 0.0, dir.z ) + dir = if ( dir.lengthSquared() < 1e-6 ) Vector( 0, 0, 0 ) else dir.normalize() + + val dash = dir.multiply( dashSpeed ).add(Vector( 0.0, yBoost, 0.0 )) + p.velocity = dash + }, max( 0L, waitTicks )) + + object : BukkitRunnable() + { + + override fun run() + { + if (GroundDetector.isOnGround( player )) + { + player.world.createExplosion( + player.location, + explosionMultiplier.roundToInt().toFloat(), + false, true + ) + + val alivePlayers = plugin.getAlivePlayers().stream() + .filter { it != player } + .filter { it.location.distance( player.location ) <= defaultRadius } + .toList() + + alivePlayers.forEach { nearby -> + nearby.damage( 6.0, player ) + } + + plugin.chatManager.sendMessage( player, "kits.blackPanther.messages.wakandaForever.hit", "{hit}" to alivePlayers.size.toString() ) + this.cancel() + } + } + + }.runTaskTimer( plugin, max( 0L, waitTicks ) + 5L, 5L ) + } + private fun extraDamage( player: Player ) { diff --git a/src/main/kotlin/club/mcscrims/speedhg/kit/impl/BlitzcrankKit.kt b/src/main/kotlin/club/mcscrims/speedhg/kit/impl/BlitzcrankKit.kt index 83736d3..711b581 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/kit/impl/BlitzcrankKit.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/kit/impl/BlitzcrankKit.kt @@ -42,11 +42,12 @@ class BlitzcrankKit( player: Player ) { hotsItem = ItemBuilder( plugin, Material.HEART_OF_THE_SEA ) - .name(plugin.chatFormatter.format( "kits.blitzcrank.items.hots" ).content()) + .name(plugin.messageConfig.data.getKitItemNames( "blitzcrank", "hots" )!![ playStyle.name.lowercase() ]!!) .unbreakable( true ) .hideAttributes() .build() + items.add( hotsItem ) player.inventory.setItem( 0, hotsItem ) when( playStyle ) @@ -54,26 +55,26 @@ class BlitzcrankKit( PlayStyle.DEFENSIVE -> { fishingRodItem = ItemBuilder( plugin, Material.FISHING_ROD ) - .name(plugin.chatFormatter.format( "kits.blitzcrank.items.fishing_rod" ).content()) + .name(plugin.messageConfig.data.getKitItemNames( "blitzcrank", "fishingrod" )!![ playStyle.name.lowercase() ]!!) .unbreakable( true ) .hideAttributes() .build() + items.add( fishingRodItem ) player.inventory.setItem( 1, fishingRodItem ) } PlayStyle.OFFENSIVE -> { pufferfishItem = ItemBuilder( plugin, Material.PUFFERFISH ) - .name(plugin.chatFormatter.format( "kits.blitzcrank.items.pufferfish" ).content()) + .name(plugin.messageConfig.data.getKitItemNames( "blitzcrank", "pufferfish" )!![ playStyle.name.lowercase() ]!!) .unbreakable( true ) .hideAttributes() .build() + items.add( pufferfishItem ) player.inventory.setItem( 1, pufferfishItem ) } - - else -> {} } } @@ -203,7 +204,7 @@ class BlitzcrankKit( target.velocity = hookDirection plugin.chatManager.sendMessage( player, "kits.blitzcrank.messages.hook.player", "{player}" to target.getDisplayName ) - plugin.chatManager.sendMessage( player, "kits.blitzcrank.messages.hook.target" ) + plugin.chatManager.sendMessage( target, "kits.blitzcrank.messages.hook.target" ) } private fun stunNearby( diff --git a/src/main/kotlin/club/mcscrims/speedhg/listener/GameStateListener.kt b/src/main/kotlin/club/mcscrims/speedhg/listener/GameStateListener.kt index 62e24a6..96154bf 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/listener/GameStateListener.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/listener/GameStateListener.kt @@ -202,7 +202,16 @@ class GameStateListener( return } - TODO( "Kit & perk items" ) + val kit = plugin.kitManager.getSelectedKit( player ) + ?: return + + val items = kit.items.ifEmpty { return } + + if (items.contains( event.itemDrop.itemStack )) + { + event.isCancelled = true + player.playSound( player, Sound.BLOCK_NOTE_BLOCK_BASS, 1f, 1f ) + } } @EventHandler diff --git a/src/main/kotlin/club/mcscrims/speedhg/recraft/RecraftInspector.kt b/src/main/kotlin/club/mcscrims/speedhg/recraft/RecraftInspector.kt index c64fac3..cc39d04 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/recraft/RecraftInspector.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/recraft/RecraftInspector.kt @@ -11,7 +11,7 @@ class RecraftInspector( private val beforeState = plugin.pluginConfig.data.game.recraftNerf[ "before_state" ] as String private val recraftNerfEnabled = plugin.pluginConfig.data.game.recraftNerf[ "enabled" ] as Boolean - private val maxRecraftAmount = plugin.pluginConfig.data.game.recraftNerf[ "max_amount" ] as Int + private val maxRecraftAmount = plugin.pluginConfig.data.game.recraftNerf[ "max_amount" ] as Double fun startRunnable() { diff --git a/src/main/kotlin/club/mcscrims/speedhg/world/WorldManager.kt b/src/main/kotlin/club/mcscrims/speedhg/world/WorldManager.kt index edf9e20..e77d378 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/world/WorldManager.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/world/WorldManager.kt @@ -12,7 +12,7 @@ class WorldManager( private val plugin: SpeedHG ) { - private lateinit var worldName: String + private var worldName = "world" private lateinit var world: World fun highestLocationWithRadius( @@ -113,21 +113,21 @@ class WorldManager( // CHUNKY >> - plugin.logger.info("Setting up world... [Stage [3]: CHUNKY]") - val chunky = Bukkit.getServicesManager().load( ChunkyAPI::class.java ) - - if ( chunky == null || chunky.version() != 0 ) - { - plugin.isReady = true - return - } - - val radius = world.worldBorder.size / 2 - - chunky.startTask( worldName, "square", 0.0, 0.0, radius, radius, "concentric" ) - chunky.onGenerationComplete { plugin.isReady = true } - - plugin.server.dispatchCommand( Bukkit.getConsoleSender(), "chunky silent" ) +// plugin.logger.info("Setting up world... [Stage [3]: CHUNKY]") +// val chunky = Bukkit.getServicesManager().load( ChunkyAPI::class.java ) +// +// if ( chunky == null || chunky.version() != 0 ) +// { +// plugin.isReady = true +// return +// } +// +// val radius = world.worldBorder.size / 2 +// +// chunky.startTask( worldName, "square", 0.0, 0.0, radius, radius, "concentric" ) +// chunky.onGenerationComplete { plugin.isReady = true } +// +// plugin.server.dispatchCommand( Bukkit.getConsoleSender(), "chunky silent" ) // FINISH >> @@ -150,7 +150,9 @@ class WorldManager( fun getWorld(): World? { return if ( !::world.isInitialized ) - setWorld( plugin.pluginConfig.data.world.name ) + try { + setWorld( plugin.pluginConfig.data.world.name ) + } catch ( _: Exception ) { null } else this.world } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 52a8338..d90d427 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -57,25 +57,25 @@ game: playerStates: waiting: scoreboard: 'Waiting - %time%' - duration: FIXED:-1 + duration: "FIXED:-1" preStart: scoreboard: 'Waiting - %time%' - duration: FIXED:300 + duration: "FIXED:300" immunity: scoreboard: 'Playing - %time%' - duration: FIXED:90 + duration: "FIXED:90" battle: scoreboard: 'Playing - %time%' - duration: INCREASING + duration: "INCREASING" feast: scoreboard: 'Playing - %time%' - duration: FIXED:300 + duration: "FIXED:300" deathmatch: scoreboard: 'Playing - %time%' - duration: INCREASING + duration: "INCREASING" end: scoreboard: 'Ending - %time%' - duration: FIXED:60 + duration: "FIXED:60" recraftNerf: enabled: false diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 1d75161..74c0e9d 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,6 +3,11 @@ version: '1.0.0' main: club.mcscrims.speedhg.SpeedHG api-version: '1.21' +depend: + - "WorldEdit" + - "Apollo-Bukkit" + - "McScrims-CoreSystem" + commands: kits: description: Open the kit selection menu