1
0
Fork 0

feat: 1.20 update

This commit is contained in:
ineanto 2023-06-26 15:36:57 +02:00
parent 47b9690261
commit f795dcd68f
15 changed files with 104 additions and 79 deletions

View file

@ -4,6 +4,5 @@ enum class GameState {
WAITING,
LAUNCH,
GRACE_PERIOD,
GAME,
DRAGON
GAME
}

View file

@ -13,10 +13,12 @@ class EntityDamageListener : Listener {
fun onEntityDamage(event: EntityDamageEvent) {
if (event.entity is Player) {
val player = (event.entity as Player)
if (player.gameMode == GameMode.SURVIVAL) {
if ((RunnerDragon.STATE == GameState.GRACE_PERIOD || RunnerDragon.STATE == GameState.DRAGON) && event.cause == EntityDamageEvent.DamageCause.ENTITY_ATTACK) {
if (RunnerDragon.STATE == GameState.GRACE_PERIOD && event.cause == EntityDamageEvent.DamageCause.ENTITY_ATTACK) {
if (player.gameMode == GameMode.SURVIVAL) {
event.isCancelled = true
} else if (RunnerDragon.STATE == GameState.LAUNCH || RunnerDragon.STATE == GameState.WAITING) {
}
} else if (RunnerDragon.STATE == GameState.LAUNCH || RunnerDragon.STATE == GameState.WAITING) {
if (player.gameMode == GameMode.ADVENTURE || player.gameMode == GameMode.SURVIVAL) {
event.isCancelled = true
}
}

View file

@ -8,7 +8,6 @@ import org.bukkit.event.player.PlayerJoinEvent
import xyz.atnrch.dragon.GameState
import xyz.atnrch.dragon.RunnerDragon
import xyz.atnrch.dragon.player.DragonPlayer
import xyz.haoshoku.nick.api.NickAPI
class PlayerJoinListener : Listener {
@EventHandler
@ -16,16 +15,21 @@ class PlayerJoinListener : Listener {
val player = event.player
val dragonPlayer: DragonPlayer = RunnerDragon.instance.playerManager.addPlayer(player.uniqueId)
NickAPI.resetNick(player)
NickAPI.resetUniqueId(player)
NickAPI.resetGameProfileName(player)
NickAPI.resetSkin(player)
NickAPI.setUniqueId(player, player.uniqueId)
// TODO (Ineanto, 6/26/23): Set nick
/**
* NickAPI.resetNick(player)
* NickAPI.resetUniqueId(player)
* NickAPI.resetGameProfileName(player)
* NickAPI.resetSkin(player)
* NickAPI.setUniqueId(player, player.uniqueId)
*/
event.joinMessage = "(${ChatColor.GREEN}+${ChatColor.WHITE}) ${player.name}"
if (RunnerDragon.STATE == GameState.WAITING) {
dragonPlayer.sendMessage("Bienvenue !")
dragonPlayer.instantiatePlayer()
dragonPlayer.player.gameMode = GameMode.ADVENTURE
dragonPlayer.setTeamItem(true)
}

View file

@ -20,27 +20,25 @@ class EnderDragonListener : Listener {
fun onEnderDragonDeath(event: EntityDeathEvent) {
if (event.entity is EnderDragon) {
val dragon = event.entity as EnderDragon
val damageEvent = dragon.lastDamageCause ?: return
val lastDamageCause = dragon.lastDamageCause ?: return
val entity: Entity = lastDamageCause.entity
var player: Player? = null
when (damageEvent.cause) {
when (lastDamageCause.cause) {
EntityDamageEvent.DamageCause.BLOCK_EXPLOSION -> {
val first: Optional<UUID> = RunnerDragon.LAST_BED_INTERACT.asMap().entries.stream()
.sorted { a, b -> b.value.compareTo(a.value) }
.map { it.key }
.findFirst()
if (first.isEmpty) {
return
}
player = Bukkit.getPlayer(first.get()) ?: return
}
EntityDamageEvent.DamageCause.ENTITY_ATTACK, EntityDamageEvent.DamageCause.PROJECTILE -> {
val damager: Entity = damageEvent.entity
if (damager is Projectile) {
player = damager.shooter as Player
} else if (damager is Player) {
player = damager
EntityDamageEvent.DamageCause.ENTITY_ATTACK, EntityDamageEvent.DamageCause.ENTITY_SWEEP_ATTACK, EntityDamageEvent.DamageCause.PROJECTILE -> {
if (entity is Projectile) {
player = entity.shooter as Player
} else if (entity is Player) {
Bukkit.broadcastMessage("Last damage dealt by ${entity.name}")
player = entity
}
}
@ -51,7 +49,7 @@ class EnderDragonListener : Listener {
val team = dragonPlayer?.getTeam()
if (dragon.dragonBattle?.hasBeenPreviouslyKilled()?.not() == true) {
Bukkit.getOnlinePlayers().forEach {
if (it.location.world!!.environment.equals(Environment.THE_END).not()) {
if ((it.location.world!!.environment == Environment.THE_END).not()) {
it.playSound(it.location, Sound.ENTITY_ENDER_DRAGON_DEATH, 1f, 0.5f)
}
}
@ -59,7 +57,7 @@ class EnderDragonListener : Listener {
Bukkit.broadcastMessage("${RunnerDragon.TITLE_MSG} ${ChatColor.GOLD}${ChatColor.BOLD}LE DRAGON A ÉTÉ TUÉ PAR L'ÉQUIPE ${team?.displayName}${ChatColor.GOLD}${ChatColor.BOLD}!")
}
SecondFight.start(dragon, dragonPlayer)
SecondFight.start(dragon)
}
}
}

View file

@ -8,25 +8,31 @@ import org.bukkit.entity.EnderDragon
import org.bukkit.potion.PotionEffect
import org.bukkit.potion.PotionEffectType
import xyz.atnrch.dragon.RunnerDragon
import xyz.atnrch.dragon.player.DragonPlayer
class SecondFight {
companion object {
fun start(dragon: EnderDragon, dragonPlayer: DragonPlayer?) {
for (i in 0..2) {
Bukkit.broadcastMessage("${RunnerDragon.TITLE_MSG} ${ChatColor.BOLD}${ChatColor.RED}???")
}
fun start(dragon: EnderDragon) {
Bukkit.getScheduler().scheduleSyncDelayedTask(
RunnerDragon.instance, {
Bukkit.broadcastMessage("${RunnerDragon.TITLE_MSG} ${ChatColor.MAGIC}??ZFjZI19112::!d!zq?")
for (i in 0..2) {
Bukkit.broadcastMessage("${RunnerDragon.TITLE_MSG} ${ChatColor.BOLD}${ChatColor.RED}???")
}
Bukkit.getOnlinePlayers().forEach {
if (it.location.world!!.environment != World.Environment.THE_END) {
it.teleport(dragonPlayer!!.player.location)
}
it.addPotionEffect(PotionEffect(PotionEffectType.BLINDNESS, 5, 1))
it.playSound(it.location, Sound.ENTITY_LIGHTNING_BOLT_IMPACT, 1f, 0.5f)
}
Bukkit.getOnlinePlayers().forEach {
it.addPotionEffect(PotionEffect(PotionEffectType.BLINDNESS, 5, 1))
it.playSound(it.location, Sound.ENTITY_LIGHTNING_BOLT_IMPACT, 1f, 0.5f)
if (it.location.world!!.environment != World.Environment.THE_END) {
it.teleport(RunnerDragon.WORLD_END.spawnLocation)
}
}
dragon.dragonBattle!!.initiateRespawn()
dragon.dragonBattle!!.resetCrystals()
Bukkit.broadcastMessage("${RunnerDragon.TITLE_MSG} ${ChatColor.BOLD}${ChatColor.RED}")
dragon.dragonBattle!!.resetCrystals()
dragon.dragonBattle!!.initiateRespawn()
}, 20L * 5
)
}
}
}

View file

@ -9,6 +9,7 @@ import org.bukkit.event.block.BlockBreakEvent
import org.bukkit.event.block.BlockPlaceEvent
import org.bukkit.event.entity.EntityDamageEvent
import org.bukkit.event.entity.FoodLevelChangeEvent
import org.bukkit.event.player.PlayerInteractAtEntityEvent
import org.bukkit.event.player.PlayerInteractEvent
import xyz.atnrch.dragon.GameState
import xyz.atnrch.dragon.RunnerDragon
@ -18,7 +19,7 @@ class WaitingListener : Listener {
@EventHandler
fun onBlockBreak(event: BlockPlaceEvent) {
val player = event.player
if (RunnerDragon.STATE == GameState.WAITING && player.gameMode == GameMode.SURVIVAL) {
if (RunnerDragon.STATE == GameState.WAITING && player.gameMode == GameMode.ADVENTURE) {
event.isCancelled = true
}
}
@ -26,7 +27,7 @@ class WaitingListener : Listener {
@EventHandler
fun onBlockBreak(event: BlockBreakEvent) {
val player = event.player
if (RunnerDragon.STATE == GameState.WAITING && player.gameMode == GameMode.SURVIVAL) {
if (RunnerDragon.STATE == GameState.WAITING && player.gameMode == GameMode.ADVENTURE) {
event.isCancelled = true
}
}
@ -35,7 +36,7 @@ class WaitingListener : Listener {
fun onEntityDamage(event: EntityDamageEvent) {
if (event.entity is Player) {
val player = (event.entity as Player)
if (RunnerDragon.STATE == GameState.WAITING && player.gameMode == GameMode.SURVIVAL) {
if (RunnerDragon.STATE == GameState.WAITING && player.gameMode == GameMode.ADVENTURE) {
event.isCancelled = true
}
}
@ -43,18 +44,25 @@ class WaitingListener : Listener {
@EventHandler
fun onFoodLevelChange(event: FoodLevelChangeEvent) {
if (RunnerDragon.STATE == GameState.WAITING && event.entity.gameMode == GameMode.SURVIVAL) {
if (RunnerDragon.STATE == GameState.WAITING && event.entity.gameMode == GameMode.ADVENTURE) {
event.isCancelled = true
}
}
@EventHandler
fun onItemInteract(event: PlayerInteractEvent) {
if (RunnerDragon.STATE == GameState.WAITING && event.player.gameMode == GameMode.SURVIVAL) {
if (RunnerDragon.STATE == GameState.WAITING && event.player.gameMode == GameMode.ADVENTURE) {
if (event.item?.itemMeta?.displayName == "${ChatColor.GOLD}Choisir une équipe") {
CandleInventory(event.player)
}
event.isCancelled = true
}
}
@EventHandler
fun onItemInteract(event: PlayerInteractAtEntityEvent) {
if (RunnerDragon.STATE == GameState.WAITING && event.player.gameMode == GameMode.ADVENTURE) {
event.isCancelled = true
}
}
}

View file

@ -1,25 +1,24 @@
package xyz.atnrch.dragon.inventory
import de.studiocode.invui.gui.GUI
import de.studiocode.invui.gui.builder.GUIBuilder
import de.studiocode.invui.gui.builder.guitype.GUIType
import de.studiocode.invui.item.Item
import de.studiocode.invui.item.builder.ItemBuilder
import de.studiocode.invui.item.impl.SimpleItem
import de.studiocode.invui.window.impl.single.SimpleWindow
import org.bukkit.Material
import org.bukkit.entity.Player
import xyz.atnrch.dragon.RunnerDragon
import xyz.xenondevs.invui.gui.Gui
import xyz.xenondevs.invui.item.Item
import xyz.xenondevs.invui.item.builder.ItemBuilder
import xyz.xenondevs.invui.item.impl.SimpleItem
import xyz.xenondevs.invui.window.Window
class CandleInventory(val player: Player) {
private var gui: GUI
private var gui: Gui
init {
val items = arrayListOf<Item>()
RunnerDragon.instance.teamManager.getTeams().forEach {
items.add(CandleItem(it))
}
gui = GUIBuilder(GUIType.NORMAL)
gui = Gui.normal()
.setStructure(
"# # # # # # # # #",
"# x x x x x x x #",
@ -29,6 +28,6 @@ class CandleInventory(val player: Player) {
.addIngredient('#', SimpleItem(ItemBuilder(Material.BLACK_STAINED_GLASS_PANE)))
.build()
items.forEach { item -> gui.addItems(item) }
SimpleWindow(player, "RunnerDragon", gui).show()
Window.single().setTitle("RunnerDragon").setGui(gui).open(player)
}
}

View file

@ -1,8 +1,5 @@
package xyz.atnrch.dragon.inventory
import de.studiocode.invui.item.ItemProvider
import de.studiocode.invui.item.builder.ItemBuilder
import de.studiocode.invui.item.impl.BaseItem
import org.bukkit.ChatColor
import org.bukkit.entity.Player
import org.bukkit.event.inventory.ClickType
@ -10,8 +7,11 @@ import org.bukkit.event.inventory.InventoryClickEvent
import xyz.atnrch.dragon.RunnerDragon
import xyz.atnrch.dragon.teams.CandleColor
import xyz.atnrch.dragon.teams.Team
import xyz.xenondevs.invui.item.ItemProvider
import xyz.xenondevs.invui.item.builder.ItemBuilder
import xyz.xenondevs.invui.item.impl.AbstractItem
class CandleItem(private val team: Team) : BaseItem() {
class CandleItem(private val team: Team) : AbstractItem() {
override fun getItemProvider(): ItemProvider {
val material = CandleColor.getFromTeamColor(team.teamColor)

View file

@ -7,7 +7,6 @@ import org.bukkit.Material
import org.bukkit.inventory.ItemStack
import xyz.atnrch.dragon.RunnerDragon
import xyz.atnrch.dragon.teams.Team
import xyz.haoshoku.nick.api.NickAPI
import java.util.*
@ -15,7 +14,7 @@ class DragonPlayer(uuid: UUID) {
val player = Bukkit.getPlayer(uuid)!!
fun instantiatePlayer() {
RunnerDragon.instance.worldManager.teleportAtSpawn(player) // really useful?
RunnerDragon.instance.worldManager.teleportAtSpawn(player)
updateHeaderFooter()
impulse101()
setTeam(Team.DEFAULT_TEAM)
@ -74,8 +73,11 @@ class DragonPlayer(uuid: UUID) {
}
fun updateDisplayName() {
NickAPI.nick(player, "${getTeam()!!.teamColor.chatColor}${player.name}")
NickAPI.refreshPlayer(player)
// TODO (Ineanto, 6/26/23): Update nick
/**
* NickAPI.nick(player, "${getTeam()!!.teamColor.chatColor}${player.name}")
* NickAPI.refreshPlayer(player)
*/
}
private fun formatDuration(totalSeconds: Int): String {

View file

@ -8,7 +8,7 @@ import java.util.*
class TeamManager(
private val instance: RunnerDragon,
private val teams: ArrayList<Team> = arrayListOf(),
private val convert: HashMap<ChatColor, Team> = hashMapOf(),
private val convert: EnumMap<ChatColor, Team> = EnumMap(ChatColor::class.java),
private val players: HashMap<UUID, Team> = hashMapOf()
) {
fun createTeams(size: Int) {

View file

@ -1,8 +1,8 @@
name: RunnerDragon
main: xyz.atnrch.dragon.RunnerDragon
version: 1.0
api-version: 1.19
depend: [NickAPI, WorldEdit]
version: 1.0-SNAPSHOT
api-version: "1.20"
depend: [WorldEdit]
commands:
rd:
description: "Contrôle RunnerDragon."