feat: 1.20 update
This commit is contained in:
parent
47b9690261
commit
f795dcd68f
15 changed files with 104 additions and 79 deletions
.idea
build.gradle.ktssettings.gradle.ktssrc/main
kotlin/xyz/atnrch/dragon
resources
2
.idea/kotlinc.xml
generated
2
.idea/kotlinc.xml
generated
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="KotlinJpsPluginSettings">
|
||||
<option name="version" value="1.8.10" />
|
||||
<option name="version" value="1.8.21" />
|
||||
</component>
|
||||
</project>
|
8
.idea/misc.xml
generated
8
.idea/misc.xml
generated
|
@ -1,6 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="EntryPointsManager">
|
||||
<list size="1">
|
||||
<item index="0" class="java.lang.String" itemvalue="org.bukkit.event.EventHandler" />
|
||||
</list>
|
||||
</component>
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="FrameworkDetectionExcludesConfiguration">
|
||||
<file type="web" url="file://$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="18" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import io.github.patrick.gradle.remapper.RemapTask
|
||||
|
||||
plugins {
|
||||
kotlin("jvm") version "1.8.10"
|
||||
kotlin("jvm") version "1.8.21"
|
||||
id("com.github.johnrengelman.shadow") version "7.1.2"
|
||||
id("io.github.patrick.remapper") version "1.4.0"
|
||||
}
|
||||
|
@ -16,28 +16,29 @@ repositories {
|
|||
maven("https://oss.sonatype.org/content/repositories/central")
|
||||
maven("https://maven.enginehub.org/repo")
|
||||
maven("https://repo.xenondevs.xyz/releases")
|
||||
maven("https://haoshoku.xyz:1234/repository/public/")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// Stdlib
|
||||
implementation("org.jetbrains.kotlin:kotlin-stdlib:1.8.10")
|
||||
// InvUI
|
||||
implementation("de.studiocode.invui:InvUI:0.10.2")
|
||||
// NickAPI
|
||||
compileOnly("xyz.haoshoku.nick:nickapi:6.3.3-SNAPSHOT")
|
||||
implementation("xyz.xenondevs.invui:invui:1.11")
|
||||
// Commons IO
|
||||
implementation("commons-io:commons-io:2.11.0")
|
||||
// Spigot
|
||||
compileOnly("org.spigotmc:spigot:1.19.3-R0.1-SNAPSHOT:remapped-mojang")
|
||||
compileOnly("org.spigotmc:spigot-api:1.20.1-R0.1-SNAPSHOT")
|
||||
// WorldEdit
|
||||
compileOnly("com.sk89q.worldedit:worldedit-core:7.2.0-SNAPSHOT")
|
||||
compileOnly("com.sk89q.worldedit:worldedit-bukkit:7.2.0-SNAPSHOT")
|
||||
compileOnly("com.sk89q.worldedit:worldedit-core:7.3.0-SNAPSHOT")
|
||||
compileOnly("com.sk89q.worldedit:worldedit-bukkit:7.3.0-SNAPSHOT")
|
||||
}
|
||||
|
||||
kotlin { jvmToolchain(17) }
|
||||
kotlin {
|
||||
jvmToolchain(17)
|
||||
}
|
||||
|
||||
tasks {
|
||||
remap {
|
||||
version.set("1.19.3")
|
||||
version.set("1.20.1")
|
||||
action.set(RemapTask.Action.MOJANG_TO_SPIGOT)
|
||||
inputTask.set(shadowJar)
|
||||
}
|
||||
|
|
|
@ -1,3 +1 @@
|
|||
|
||||
rootProject.name = "Dragon"
|
||||
|
||||
rootProject.name = "RunnerDragon"
|
|
@ -4,6 +4,5 @@ enum class GameState {
|
|||
WAITING,
|
||||
LAUNCH,
|
||||
GRACE_PERIOD,
|
||||
GAME,
|
||||
DRAGON
|
||||
GAME
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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."
|
Loading…
Add table
Add a link
Reference in a new issue