Fix start errors
This commit is contained in:
@@ -43,8 +43,8 @@ dependencies {
|
|||||||
|
|
||||||
compileOnly("org.popcraft:chunky-common:1.3.38")
|
compileOnly("org.popcraft:chunky-common:1.3.38")
|
||||||
|
|
||||||
implementation("club.mcscrims:core:1.4.3.1")
|
implementation("club.mcscrims:core:1.4.3.2")
|
||||||
implementation("club.mcscrims:spigot:1.4.3.1")
|
implementation("club.mcscrims:spigot:1.4.3.2")
|
||||||
|
|
||||||
compileOnly("io.papermc.paper:paper-api:1.21.1-R0.1-SNAPSHOT")
|
compileOnly("io.papermc.paper:paper-api:1.21.1-R0.1-SNAPSHOT")
|
||||||
paperweight.paperDevBundle("1.21.1-R0.1-SNAPSHOT")
|
paperweight.paperDevBundle("1.21.1-R0.1-SNAPSHOT")
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ import net.kyori.adventure.text.Component
|
|||||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer
|
||||||
import net.luckperms.api.LuckPerms
|
import net.luckperms.api.LuckPerms
|
||||||
import org.bukkit.Bukkit
|
import org.bukkit.Bukkit
|
||||||
|
import org.bukkit.entity.Player
|
||||||
import org.bukkit.plugin.java.JavaPlugin
|
import org.bukkit.plugin.java.JavaPlugin
|
||||||
|
|
||||||
class SpeedHG : JavaPlugin() {
|
class SpeedHG : JavaPlugin() {
|
||||||
@@ -83,16 +84,16 @@ class SpeedHG : JavaPlugin() {
|
|||||||
{
|
{
|
||||||
instance = this
|
instance = this
|
||||||
|
|
||||||
loadConfigurations()
|
|
||||||
setupDatabase()
|
|
||||||
networkManager = SpigotNetworkManager.getInstance()!!
|
|
||||||
|
|
||||||
worldManager = WorldManager( this )
|
worldManager = WorldManager( this )
|
||||||
worldManager.deleteWorld()
|
worldManager.deleteWorld()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onEnable()
|
override fun onEnable()
|
||||||
{
|
{
|
||||||
|
loadConfigurations()
|
||||||
|
setupDatabase()
|
||||||
|
networkManager = SpigotNetworkManager.getInstance()!!
|
||||||
|
|
||||||
worldManager.setupWorld()
|
worldManager.setupWorld()
|
||||||
|
|
||||||
chatFormatter = ChatFormatter.create(
|
chatFormatter = ChatFormatter.create(
|
||||||
@@ -150,6 +151,18 @@ class SpeedHG : JavaPlugin() {
|
|||||||
getCommand("kits")?.setExecutor(KitsCommand( this, kitInventoryManager ))
|
getCommand("kits")?.setExecutor(KitsCommand( this, kitInventoryManager ))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getAlivePlayers(): List<Player>
|
||||||
|
{
|
||||||
|
val alivePlayers = mutableListOf<Player>()
|
||||||
|
|
||||||
|
runBlocking {
|
||||||
|
val players = playerRepository.findAlivePlayers( server.name )
|
||||||
|
alivePlayers.addAll(players.map { Bukkit.getPlayer( it.uuid )!! })
|
||||||
|
}
|
||||||
|
|
||||||
|
return alivePlayers
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* LUCKPERMS >>
|
* LUCKPERMS >>
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class KitsCommand(
|
|||||||
): Boolean {
|
): Boolean {
|
||||||
if ( sender !is Player )
|
if ( sender !is Player )
|
||||||
{
|
{
|
||||||
sender.sendMessage("§cOnly players can use this command.")
|
plugin.chatManager.sendSenderMessage( sender, "default.only_players" )
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package club.mcscrims.speedhg.config
|
package club.mcscrims.speedhg.config
|
||||||
|
|
||||||
import club.mcscrims.core.config.ConfigData
|
|
||||||
import club.mcscrims.core.config.DurationEntry
|
import club.mcscrims.core.config.DurationEntry
|
||||||
import club.mcscrims.core.config.DurationType
|
import club.mcscrims.core.config.DurationType
|
||||||
import club.mcscrims.core.config.annotations.ConfigClass
|
import club.mcscrims.core.config.annotations.ConfigClass
|
||||||
@@ -56,7 +55,7 @@ data class PluginConfig(
|
|||||||
data class GameConfig(
|
data class GameConfig(
|
||||||
val name: String = "SpeedHG",
|
val name: String = "SpeedHG",
|
||||||
val variantName: String = "Solo - Single Kit",
|
val variantName: String = "Solo - Single Kit",
|
||||||
val minimumPlayers: Int = 8,
|
val minimumPlayers: Int = 2,
|
||||||
val competitiveGame: Boolean = false,
|
val competitiveGame: Boolean = false,
|
||||||
val competitiveCommands: List<String> = emptyList(),
|
val competitiveCommands: List<String> = emptyList(),
|
||||||
val playerStates: Map<String, StateConfig> = getPlayerStates(),
|
val playerStates: Map<String, StateConfig> = getPlayerStates(),
|
||||||
@@ -78,7 +77,7 @@ data class PluginConfig(
|
|||||||
playerState: String
|
playerState: String
|
||||||
): DurationEntry
|
): DurationEntry
|
||||||
{
|
{
|
||||||
return SpeedHG.instance.pluginConfig.parseDuration( "game.playerStates.$playerState.duration" )
|
return (getPlayerStates()[ playerState ]?.duration as DurationEntry )
|
||||||
}
|
}
|
||||||
|
|
||||||
data class StateConfig(
|
data class StateConfig(
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import club.mcscrims.spigot.scheduler.SchedulerManager
|
|||||||
import club.mcscrims.spigot.scheduler.TaskRegistration
|
import club.mcscrims.spigot.scheduler.TaskRegistration
|
||||||
import org.bukkit.Bukkit
|
import org.bukkit.Bukkit
|
||||||
import org.bukkit.entity.Player
|
import org.bukkit.entity.Player
|
||||||
|
import org.bukkit.scheduler.BukkitTask
|
||||||
|
|
||||||
abstract class GameState(
|
abstract class GameState(
|
||||||
val name: String,
|
val name: String,
|
||||||
@@ -15,7 +16,7 @@ abstract class GameState(
|
|||||||
protected val durationSeconds: Int? = null
|
protected val durationSeconds: Int? = null
|
||||||
) {
|
) {
|
||||||
|
|
||||||
private var tickTask: TaskRegistration? = null
|
private var tickTask: BukkitTask? = null
|
||||||
private var remainingSeconds: Int = durationSeconds ?: 0
|
private var remainingSeconds: Int = durationSeconds ?: 0
|
||||||
private var isActive: Boolean = false
|
private var isActive: Boolean = false
|
||||||
|
|
||||||
@@ -25,7 +26,7 @@ abstract class GameState(
|
|||||||
isActive = true
|
isActive = true
|
||||||
remainingSeconds = durationSeconds ?: 0
|
remainingSeconds = durationSeconds ?: 0
|
||||||
|
|
||||||
if ( durationSeconds != null && durationSeconds > 0 )
|
if ( durationSeconds != null )
|
||||||
startTicking()
|
startTicking()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,12 +43,11 @@ abstract class GameState(
|
|||||||
|
|
||||||
private fun startTicking()
|
private fun startTicking()
|
||||||
{
|
{
|
||||||
tickTask = schedulerManager.runRepeating( 20L, 20L )
|
tickTask = Bukkit.getScheduler().runTaskTimer( plugin, { ->
|
||||||
{
|
|
||||||
if ( !isActive )
|
if ( !isActive )
|
||||||
{
|
{
|
||||||
stopTicking()
|
stopTicking()
|
||||||
return@runRepeating
|
return@runTaskTimer
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -62,7 +62,7 @@ abstract class GameState(
|
|||||||
if (plugin.pluginConfig.data.getDuration( name ).type == DurationType.INCREASING )
|
if (plugin.pluginConfig.data.getDuration( name ).type == DurationType.INCREASING )
|
||||||
{
|
{
|
||||||
remainingSeconds++
|
remainingSeconds++
|
||||||
return@runRepeating
|
return@runTaskTimer
|
||||||
}
|
}
|
||||||
|
|
||||||
remainingSeconds--
|
remainingSeconds--
|
||||||
@@ -75,7 +75,7 @@ abstract class GameState(
|
|||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}, 20L, 20L )
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun stopTicking() {
|
private fun stopTicking() {
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ class FeastState(
|
|||||||
private val random = Random()
|
private val random = Random()
|
||||||
|
|
||||||
internal var feastLocation: Location
|
internal var feastLocation: Location
|
||||||
internal lateinit var feastBox: BoundingBox
|
internal var feastBox: BoundingBox
|
||||||
internal var feastHeight: Int = 1
|
internal var feastHeight: Int = 1
|
||||||
|
|
||||||
init
|
init
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import org.bukkit.entity.Player
|
|||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent
|
import org.bukkit.event.entity.EntityDamageByEntityEvent
|
||||||
import org.bukkit.event.player.PlayerInteractEvent
|
import org.bukkit.event.player.PlayerInteractEvent
|
||||||
import org.bukkit.event.player.PlayerMoveEvent
|
import org.bukkit.event.player.PlayerMoveEvent
|
||||||
|
import org.bukkit.inventory.ItemStack
|
||||||
|
|
||||||
abstract class AbstractKit(
|
abstract class AbstractKit(
|
||||||
val id: String,
|
val id: String,
|
||||||
@@ -23,6 +24,7 @@ abstract class AbstractKit(
|
|||||||
) {
|
) {
|
||||||
|
|
||||||
lateinit var config: Map<String, Double>
|
lateinit var config: Map<String, Double>
|
||||||
|
val items = mutableListOf<ItemStack>()
|
||||||
|
|
||||||
abstract fun onSelect( player: Player )
|
abstract fun onSelect( player: Player )
|
||||||
|
|
||||||
@@ -93,7 +95,7 @@ abstract class AbstractKit(
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum class PlayStyle {
|
enum class PlayStyle {
|
||||||
OFFENSIVE, DEFENSIVE, NULL
|
OFFENSIVE, DEFENSIVE
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class KitMetaData {
|
enum class KitMetaData {
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ class KitManager(
|
|||||||
Component::class.java,
|
Component::class.java,
|
||||||
List::class.java,
|
List::class.java,
|
||||||
Material::class.java,
|
Material::class.java,
|
||||||
|
PlayStyle::class.java,
|
||||||
SpeedHG::class.java,
|
SpeedHG::class.java,
|
||||||
AbilityContext::class.java,
|
AbilityContext::class.java,
|
||||||
GameManager::class.java
|
GameManager::class.java
|
||||||
@@ -80,7 +81,7 @@ class KitManager(
|
|||||||
displayName,
|
displayName,
|
||||||
description,
|
description,
|
||||||
icon,
|
icon,
|
||||||
PlayStyle.NULL,
|
PlayStyle.DEFENSIVE,
|
||||||
plugin,
|
plugin,
|
||||||
plugin.abilityContext,
|
plugin.abilityContext,
|
||||||
plugin.gameManager
|
plugin.gameManager
|
||||||
|
|||||||
@@ -46,11 +46,12 @@ class AnchorKit(
|
|||||||
player: Player
|
player: Player
|
||||||
) {
|
) {
|
||||||
anvilItem = ItemBuilder( plugin, Material.ANVIL )
|
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 )
|
.unbreakable( true )
|
||||||
.hideAttributes()
|
.hideAttributes()
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
|
items.add( anvilItem )
|
||||||
player.inventory.setItem( 0, anvilItem )
|
player.inventory.setItem( 0, anvilItem )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,20 @@
|
|||||||
package club.mcscrims.speedhg.kit.impl
|
package club.mcscrims.speedhg.kit.impl
|
||||||
|
|
||||||
import club.mcscrims.speedhg.SpeedHG
|
import club.mcscrims.speedhg.SpeedHG
|
||||||
import club.mcscrims.speedhg.SpeedHG.Companion.content
|
|
||||||
import club.mcscrims.speedhg.ability.AbilityContext
|
import club.mcscrims.speedhg.ability.AbilityContext
|
||||||
import club.mcscrims.speedhg.game.GameManager
|
import club.mcscrims.speedhg.game.GameManager
|
||||||
import club.mcscrims.speedhg.kit.AbstractKit
|
import club.mcscrims.speedhg.kit.AbstractKit
|
||||||
import club.mcscrims.speedhg.kit.KitMetaData
|
import club.mcscrims.speedhg.kit.KitMetaData
|
||||||
import club.mcscrims.speedhg.kit.PlayStyle
|
import club.mcscrims.speedhg.kit.PlayStyle
|
||||||
import club.mcscrims.spigot.item.ItemBuilder
|
import club.mcscrims.spigot.item.ItemBuilder
|
||||||
|
import club.mcscrims.spigot.util.GroundDetector
|
||||||
import net.kyori.adventure.text.Component
|
import net.kyori.adventure.text.Component
|
||||||
|
import org.bukkit.Bukkit
|
||||||
|
import org.bukkit.GameMode
|
||||||
import org.bukkit.Material
|
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.entity.Player
|
||||||
import org.bukkit.event.block.Action
|
import org.bukkit.event.block.Action
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent
|
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.event.player.PlayerMoveEvent
|
||||||
import org.bukkit.inventory.ItemStack
|
import org.bukkit.inventory.ItemStack
|
||||||
import org.bukkit.metadata.FixedMetadataValue
|
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(
|
class BlackPantherKit(
|
||||||
id: String,
|
id: String,
|
||||||
@@ -46,33 +57,33 @@ class BlackPantherKit(
|
|||||||
PlayStyle.DEFENSIVE ->
|
PlayStyle.DEFENSIVE ->
|
||||||
{
|
{
|
||||||
blackDye = ItemBuilder( plugin, Material.BLACK_DYE )
|
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 )
|
.unbreakable( true )
|
||||||
.hideAttributes()
|
.hideAttributes()
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
|
items.add( blackDye )
|
||||||
player.inventory.setItem( 0, blackDye )
|
player.inventory.setItem( 0, blackDye )
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayStyle.OFFENSIVE ->
|
PlayStyle.OFFENSIVE ->
|
||||||
{
|
{
|
||||||
blackDye = ItemBuilder( plugin, Material.BLACK_DYE )
|
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 )
|
.unbreakable( true )
|
||||||
.hideAttributes()
|
.hideAttributes()
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
blazePowder = ItemBuilder( plugin, Material.BLAZE_POWDER )
|
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 )
|
.unbreakable( true )
|
||||||
.hideAttributes()
|
.hideAttributes()
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
|
items.addAll(listOf( blackDye, blazePowder ))
|
||||||
player.inventory.setItem( 0, blackDye )
|
player.inventory.setItem( 0, blackDye )
|
||||||
player.inventory.setItem( 1, blazePowder )
|
player.inventory.setItem( 1, blazePowder )
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,11 +138,11 @@ class BlackPantherKit(
|
|||||||
|
|
||||||
if ( playStyle == PlayStyle.DEFENSIVE )
|
if ( playStyle == PlayStyle.DEFENSIVE )
|
||||||
{
|
{
|
||||||
|
launchAndDash( player )
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
push( player )
|
||||||
}
|
}
|
||||||
|
|
||||||
Material.BLAZE_POWDER ->
|
Material.BLAZE_POWDER ->
|
||||||
@@ -153,6 +164,101 @@ class BlackPantherKit(
|
|||||||
|
|
||||||
override fun onMove( player: Player, event: PlayerMoveEvent ) {}
|
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(
|
private fun extraDamage(
|
||||||
player: Player
|
player: Player
|
||||||
) {
|
) {
|
||||||
|
|||||||
@@ -42,11 +42,12 @@ class BlitzcrankKit(
|
|||||||
player: Player
|
player: Player
|
||||||
) {
|
) {
|
||||||
hotsItem = ItemBuilder( plugin, Material.HEART_OF_THE_SEA )
|
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 )
|
.unbreakable( true )
|
||||||
.hideAttributes()
|
.hideAttributes()
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
|
items.add( hotsItem )
|
||||||
player.inventory.setItem( 0, hotsItem )
|
player.inventory.setItem( 0, hotsItem )
|
||||||
|
|
||||||
when( playStyle )
|
when( playStyle )
|
||||||
@@ -54,26 +55,26 @@ class BlitzcrankKit(
|
|||||||
PlayStyle.DEFENSIVE ->
|
PlayStyle.DEFENSIVE ->
|
||||||
{
|
{
|
||||||
fishingRodItem = ItemBuilder( plugin, Material.FISHING_ROD )
|
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 )
|
.unbreakable( true )
|
||||||
.hideAttributes()
|
.hideAttributes()
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
|
items.add( fishingRodItem )
|
||||||
player.inventory.setItem( 1, fishingRodItem )
|
player.inventory.setItem( 1, fishingRodItem )
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayStyle.OFFENSIVE ->
|
PlayStyle.OFFENSIVE ->
|
||||||
{
|
{
|
||||||
pufferfishItem = ItemBuilder( plugin, Material.PUFFERFISH )
|
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 )
|
.unbreakable( true )
|
||||||
.hideAttributes()
|
.hideAttributes()
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
|
items.add( pufferfishItem )
|
||||||
player.inventory.setItem( 1, pufferfishItem )
|
player.inventory.setItem( 1, pufferfishItem )
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -203,7 +204,7 @@ class BlitzcrankKit(
|
|||||||
target.velocity = hookDirection
|
target.velocity = hookDirection
|
||||||
|
|
||||||
plugin.chatManager.sendMessage( player, "kits.blitzcrank.messages.hook.player", "{player}" to target.getDisplayName )
|
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(
|
private fun stunNearby(
|
||||||
|
|||||||
@@ -202,7 +202,16 @@ class GameStateListener(
|
|||||||
return
|
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
|
@EventHandler
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class RecraftInspector(
|
|||||||
|
|
||||||
private val beforeState = plugin.pluginConfig.data.game.recraftNerf[ "before_state" ] as String
|
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 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()
|
fun startRunnable()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class WorldManager(
|
|||||||
private val plugin: SpeedHG
|
private val plugin: SpeedHG
|
||||||
) {
|
) {
|
||||||
|
|
||||||
private lateinit var worldName: String
|
private var worldName = "world"
|
||||||
private lateinit var world: World
|
private lateinit var world: World
|
||||||
|
|
||||||
fun highestLocationWithRadius(
|
fun highestLocationWithRadius(
|
||||||
@@ -113,21 +113,21 @@ class WorldManager(
|
|||||||
|
|
||||||
// CHUNKY >>
|
// CHUNKY >>
|
||||||
|
|
||||||
plugin.logger.info("Setting up world... [Stage [3]: CHUNKY]")
|
// plugin.logger.info("Setting up world... [Stage [3]: CHUNKY]")
|
||||||
val chunky = Bukkit.getServicesManager().load( ChunkyAPI::class.java )
|
// val chunky = Bukkit.getServicesManager().load( ChunkyAPI::class.java )
|
||||||
|
//
|
||||||
if ( chunky == null || chunky.version() != 0 )
|
// if ( chunky == null || chunky.version() != 0 )
|
||||||
{
|
// {
|
||||||
plugin.isReady = true
|
// plugin.isReady = true
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
val radius = world.worldBorder.size / 2
|
// val radius = world.worldBorder.size / 2
|
||||||
|
//
|
||||||
chunky.startTask( worldName, "square", 0.0, 0.0, radius, radius, "concentric" )
|
// chunky.startTask( worldName, "square", 0.0, 0.0, radius, radius, "concentric" )
|
||||||
chunky.onGenerationComplete { plugin.isReady = true }
|
// chunky.onGenerationComplete { plugin.isReady = true }
|
||||||
|
//
|
||||||
plugin.server.dispatchCommand( Bukkit.getConsoleSender(), "chunky silent" )
|
// plugin.server.dispatchCommand( Bukkit.getConsoleSender(), "chunky silent" )
|
||||||
|
|
||||||
// FINISH >>
|
// FINISH >>
|
||||||
|
|
||||||
@@ -150,7 +150,9 @@ class WorldManager(
|
|||||||
fun getWorld(): World?
|
fun getWorld(): World?
|
||||||
{
|
{
|
||||||
return if ( !::world.isInitialized )
|
return if ( !::world.isInitialized )
|
||||||
setWorld( plugin.pluginConfig.data.world.name )
|
try {
|
||||||
|
setWorld( plugin.pluginConfig.data.world.name )
|
||||||
|
} catch ( _: Exception ) { null }
|
||||||
else this.world
|
else this.world
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -57,25 +57,25 @@ game:
|
|||||||
playerStates:
|
playerStates:
|
||||||
waiting:
|
waiting:
|
||||||
scoreboard: 'Waiting - %time%'
|
scoreboard: 'Waiting - %time%'
|
||||||
duration: FIXED:-1
|
duration: "FIXED:-1"
|
||||||
preStart:
|
preStart:
|
||||||
scoreboard: 'Waiting - %time%'
|
scoreboard: 'Waiting - %time%'
|
||||||
duration: FIXED:300
|
duration: "FIXED:300"
|
||||||
immunity:
|
immunity:
|
||||||
scoreboard: 'Playing - %time%'
|
scoreboard: 'Playing - %time%'
|
||||||
duration: FIXED:90
|
duration: "FIXED:90"
|
||||||
battle:
|
battle:
|
||||||
scoreboard: 'Playing - %time%'
|
scoreboard: 'Playing - %time%'
|
||||||
duration: INCREASING
|
duration: "INCREASING"
|
||||||
feast:
|
feast:
|
||||||
scoreboard: 'Playing - %time%'
|
scoreboard: 'Playing - %time%'
|
||||||
duration: FIXED:300
|
duration: "FIXED:300"
|
||||||
deathmatch:
|
deathmatch:
|
||||||
scoreboard: 'Playing - %time%'
|
scoreboard: 'Playing - %time%'
|
||||||
duration: INCREASING
|
duration: "INCREASING"
|
||||||
end:
|
end:
|
||||||
scoreboard: 'Ending - %time%'
|
scoreboard: 'Ending - %time%'
|
||||||
duration: FIXED:60
|
duration: "FIXED:60"
|
||||||
|
|
||||||
recraftNerf:
|
recraftNerf:
|
||||||
enabled: false
|
enabled: false
|
||||||
|
|||||||
@@ -3,6 +3,11 @@ version: '1.0.0'
|
|||||||
main: club.mcscrims.speedhg.SpeedHG
|
main: club.mcscrims.speedhg.SpeedHG
|
||||||
api-version: '1.21'
|
api-version: '1.21'
|
||||||
|
|
||||||
|
depend:
|
||||||
|
- "WorldEdit"
|
||||||
|
- "Apollo-Bukkit"
|
||||||
|
- "McScrims-CoreSystem"
|
||||||
|
|
||||||
commands:
|
commands:
|
||||||
kits:
|
kits:
|
||||||
description: Open the kit selection menu
|
description: Open the kit selection menu
|
||||||
|
|||||||
Reference in New Issue
Block a user