Skip to content

Commit

Permalink
0.8.0
Browse files Browse the repository at this point in the history
Damage가 deserialize되지 않던 버그 수정
reload 명령 추가
Kommand 버전 업
Tap 버전 업
  • Loading branch information
noonmaru committed Oct 8, 2020
1 parent 14228a2 commit bafe76f
Show file tree
Hide file tree
Showing 11 changed files with 60 additions and 17 deletions.
4 changes: 2 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ subprojects {
compileOnly("com.comphenix.protocol:ProtocolLib:4.6.0-SNAPSHOT")
compileOnly("com.github.noonmaru:invfx:1.3.0")

implementationOnlyCommon("com.github.noonmaru:tap:3.1.8")
implementationOnlyCommon("com.github.noonmaru:kommand:0.5.0")
implementationOnlyCommon("com.github.noonmaru:tap:3.2.0")
implementationOnlyCommon("com.github.noonmaru:kommand:0.6.3")

testImplementation("junit:junit:4.13")
testImplementation("org.mockito:mockito-core:3.3.3")
Expand Down
2 changes: 1 addition & 1 deletion psychics-common/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
pluginName=Psychics
pluginMain=com.github.noonmaru.psychics.plugin.PsychicPlugin
version=0.7.2
version=0.8.0
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ class Esper(
return setPsychic(concept)
}

private fun removePsychic() {
internal fun removePsychic() {
psychic?.let { psychic ->
this.psychic = null
psychic.destroy()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,27 @@ class PsychicManager(

val espers: Collection<Esper> = Collections.unmodifiableCollection(espersByPlayer.values)

internal fun reload() {
espers.forEach { esper ->
esper.save()
esper.removePsychic()
}
abilityLoader.clear()

updateAbilities()
loadAbilities()
loadPsychics()

espers.forEach { it.load() }
}

internal fun unload() {
for (esper in espers) {
esper.save()
esper.clear()
}
espersByPlayer.clear()
abilityLoader.unloadAll()
abilityLoader.clear()
}

fun getEsper(player: Player): Esper? {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ package com.github.noonmaru.psychics.attribute
import com.github.noonmaru.psychics.format.decimalFormat
import net.md_5.bungee.api.ChatColor
import org.bukkit.configuration.serialization.ConfigurationSerializable
import org.bukkit.configuration.serialization.ConfigurationSerialization
import java.util.*

class EsperStatistic internal constructor(pairs: List<Pair<EsperAttribute, Double>>) : ConfigurationSerializable {
Expand Down Expand Up @@ -53,9 +52,6 @@ class EsperStatistic internal constructor(pairs: List<Pair<EsperAttribute, Doubl
}

companion object {
init {
ConfigurationSerialization.registerClass(EsperStatistic::class.java)
}

@JvmStatic
fun deserialize(map: Map<String, *>): EsperStatistic {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import com.github.noonmaru.kommand.KommandBuilder
import com.github.noonmaru.kommand.KommandContext
import com.github.noonmaru.kommand.argument.KommandArgument
import com.github.noonmaru.kommand.argument.player
import com.github.noonmaru.kommand.argument.playerTarget
import com.github.noonmaru.kommand.argument.suggestions
import com.github.noonmaru.kommand.sendFeedback
import com.github.noonmaru.psychics.AbilityConcept
Expand All @@ -32,6 +33,8 @@ import com.github.noonmaru.psychics.invfx.InvPsychic
import com.github.noonmaru.psychics.item.addItemNonDuplicate
import com.github.noonmaru.psychics.plugin.PsychicPlugin
import com.github.noonmaru.tap.util.updateFromGitHubMagically
import net.md_5.bungee.api.ChatColor
import org.bukkit.Bukkit
import org.bukkit.command.CommandSender
import org.bukkit.entity.Player

Expand All @@ -52,10 +55,10 @@ internal object CommandPsychic {
}
}
then("attach") {
then("player" to player()) {
then("players" to playerTarget()) {
then("psychic" to PsychicConceptArgument) {
executes {
attach(it.sender, it.parseArgument("player"), it.parseArgument("psychic"))
attach(it.sender, it.parseArgument("players"), it.parseArgument("psychic"))
}
}
}
Expand Down Expand Up @@ -93,16 +96,24 @@ internal object CommandPsychic {
}
}
}
then("reload") {
executes {
plugin.reloadPsychics()
Bukkit.broadcast("${ChatColor.GREEN}Psychics reload complete.", "psychics.reload")
}
}
}
}

private fun info(sender: Player, psychicConcept: PsychicConcept) {
sender.openWindow(InvPsychic.create(psychicConcept, sender.esper::getStatistic))
}

private fun attach(sender: CommandSender, player: Player, psychicConcept: PsychicConcept) {
requireNotNull(manager.getEsper(player)).attachPsychic(psychicConcept).isEnabled = true
sender.sendFeedback("${player.name}'s ability = ${psychicConcept.name}")
private fun attach(sender: CommandSender, players: List<Player>, psychicConcept: PsychicConcept) {
for (player in players) {
requireNotNull(manager.getEsper(player)).attachPsychic(psychicConcept).isEnabled = true
sender.sendFeedback("${player.name}'s ability = ${psychicConcept.name}")
}
}

private fun detach(sender: CommandSender, player: Player) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package com.github.noonmaru.psychics.damage

import com.github.noonmaru.psychics.attribute.EsperStatistic
import net.md_5.bungee.api.ChatColor
import org.bukkit.configuration.ConfigurationSection
import org.bukkit.configuration.serialization.ConfigurationSerializable

class Damage(
Expand All @@ -41,9 +42,12 @@ class Damage(
private const val STATS = "stats"

@Suppress("UNCHECKED_CAST")
@JvmStatic
fun deserialize(map: Map<String, *>): Damage {
val type = DamageType.valueOf(requireNotNull(map[TYPE]) as String)
val stats = EsperStatistic.deserialize(requireNotNull(map[STATS]) as Map<String, *>)

val statsValue = requireNotNull((map[STATS] as ConfigurationSection).getValues(false))
val stats = EsperStatistic.deserialize(statsValue)

return Damage(type, stats)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,7 @@ private fun LivingEntity.psychicDamageActual(
if (this is Mob && target == null)
target = damager

noDamageTicks = 0
damage(actualDamage)

return actualDamage
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ class AbilityLoader internal constructor() {
throw ClassNotFoundException(name)
}

fun unloadAll() {
fun clear() {
classes.clear()
classLoaders.run {
values.forEach(AbilityClassLoader::close)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,12 @@ package com.github.noonmaru.psychics.plugin
import com.github.noonmaru.kommand.kommand
import com.github.noonmaru.psychics.PsychicManager
import com.github.noonmaru.psychics.Psychics
import com.github.noonmaru.psychics.attribute.EsperStatistic
import com.github.noonmaru.psychics.command.CommandPsychic
import com.github.noonmaru.psychics.damage.Damage
import com.github.noonmaru.tap.event.EntityEventManager
import com.github.noonmaru.tap.fake.FakeEntityServer
import org.bukkit.configuration.serialization.ConfigurationSerialization
import org.bukkit.plugin.java.JavaPlugin
import java.io.File

Expand All @@ -40,6 +43,11 @@ class PsychicPlugin : JavaPlugin() {
lateinit var psychicManager: PsychicManager
private set

override fun onLoad() {
ConfigurationSerialization.registerClass(Damage::class.java)
ConfigurationSerialization.registerClass(EsperStatistic::class.java)
}

override fun onEnable() {
loadModules()
setupCommands()
Expand Down Expand Up @@ -99,4 +107,10 @@ class PsychicPlugin : JavaPlugin() {
fakeEntityServer.clear()
}
}

fun reloadPsychics() {
fakeEntityServer.entities.forEach { it.remove() }
entityEventManager.unregisterAll()
psychicManager.reload()
}
}
5 changes: 4 additions & 1 deletion psychics-common/src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,7 @@ commands:
psychics:
aliases: [ 'psy' ]
usage: /<command> help
permission: 'psychics.commands'
permission: 'psychics.commands'
permissions:
psychics.reload:
default: op

0 comments on commit bafe76f

Please sign in to comment.