Skip to content

Commit

Permalink
fix : add error message when spawner has not spawnedType field
Browse files Browse the repository at this point in the history
  • Loading branch information
fhebuterne committed Sep 1, 2024
1 parent b8b9e78 commit 7a3047d
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ class PickSpawner : JavaPlugin() {
pluginManager.registerEvents(PickaxeMigrationPlayerInteractEventListener(this, itemInitService), this)
pluginManager.registerEvents(PlayerItemDamageListener(this, itemInitService), this)
pluginManager.registerEvents(PlayerCommandPreprocessListener(this), this)
pluginManager.registerEvents(BlockPlaceEventListener(), this)
pluginManager.registerEvents(BlockPlaceEventListener(this), this)
}

private fun registerCommands(itemInitService: ItemInitService) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package fr.fabienhebuterne.pickspawner.config

import fr.fabienhebuterne.pickspawner.config.TranslationConfig.Companion.toColorHex
import org.bukkit.ChatColor
import org.bukkit.Location
import org.bukkit.entity.EntityType
import java.util.UUID
import java.util.regex.Matcher
import java.util.regex.Pattern

Expand All @@ -16,8 +18,9 @@ data class TranslationConfig(
val reloadEnded: String,
val pickaxeHasBeenMigrated: String,
val buyCustomPickaxe: String,
val buyCustomPickaxeDurability: String
val buyCustomPickaxeDurability: String,
) : ConfigType {

fun getEntityOrDefault(entityType: EntityType): String {
return entity.getOrDefault(entityType, entityType.name)
}
Expand Down Expand Up @@ -83,5 +86,19 @@ data class ErrorConfig(
val missingMoneyToBuy: String,
val missingItemToBuy: String,
val cancelBuyDurabilityMissingCustomPickaxeInMainHand: String,
val cancelBuyDurabilityExceedMaxDurability: String
)
val cancelBuyDurabilityExceedMaxDurability: String,
val missingSpawnedTypeOnPlayer: String = "&8[&e&lPickSpawner&8] &cCan't place this spawner because missing spawnerType, contact an staff member",
val missingSpawnedTypeOnLogs: String = "&8[&e&lPickSpawner&8] &cPlayer with name {{playerPseudo}} and uuid {{playerUUID}} can't place spawner because missing spawnerType",
) {

fun getMissingSpawnedTypeOnLogs(
playerPseudo: String,
playerUUID: UUID,
): String {
return missingSpawnedTypeOnLogs
.replace("{{playerPseudo}}", playerPseudo)
.replace("{{playerUUID}}", playerUUID.toString())
.toColorHex()
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,14 @@ package fr.fabienhebuterne.pickspawner.module.interactspawner
import fr.fabienhebuterne.pickspawner.PickSpawner
import fr.fabienhebuterne.pickspawner.config.TranslationConfig.Companion.toColorHex
import fr.fabienhebuterne.pickspawner.module.CommonListener
import fr.fabienhebuterne.pickspawner.module.ItemInitService
import fr.fabienhebuterne.pickspawner.module.interactspawner.PlayerInteraction.entityTypeByPlayer
import org.bukkit.Material
import org.bukkit.block.CreatureSpawner
import org.bukkit.entity.EntityType
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.block.Action
import org.bukkit.event.player.PlayerInteractEvent
import org.bukkit.inventory.meta.BlockStateMeta
import java.util.*

class PlayerInteractEventListener(
private val instance: PickSpawner
Expand All @@ -36,8 +33,15 @@ class PlayerInteractEventListener(
return
}

val entityType = ((itemStack.itemMeta as BlockStateMeta).blockState as CreatureSpawner).spawnedType
entityTypeByPlayer[event.player.uniqueId] = entityType
try {
val entityType = ((itemStack.itemMeta as BlockStateMeta).blockState as CreatureSpawner).spawnedType
// ignore warn by idea intellij because entity can not have entityType sometimes
// despite the @NotNull annotation on spawnedType
@Suppress("SENSELESS_COMPARISON")
if (entityType != null) {
entityTypeByPlayer[event.player.uniqueId] = entityType
}
} catch (_: NullPointerException) { }
}

private fun cancelUpdateSpawnerWithEggs(event: PlayerInteractEvent) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,27 @@
package fr.fabienhebuterne.pickspawner.module.placespawner

import fr.fabienhebuterne.pickspawner.PickSpawner
import fr.fabienhebuterne.pickspawner.config.TranslationConfig.Companion.toColorHex
import fr.fabienhebuterne.pickspawner.module.CommonListener
import fr.fabienhebuterne.pickspawner.module.interactspawner.PlayerInteraction.entityTypeByPlayer
import org.bukkit.Bukkit
import org.bukkit.Material
import org.bukkit.block.CreatureSpawner
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.block.BlockPlaceEvent

class BlockPlaceEventListener : Listener {
class BlockPlaceEventListener(
private val instance: PickSpawner
) : Listener {

@EventHandler
fun execute(event: BlockPlaceEvent) {
CommonListener.execute { blockPlaceEvent(event) }
}

private fun blockPlaceEvent(event: BlockPlaceEvent) {
if (event.blockPlaced.type != Material.SPAWNER || !entityTypeByPlayer.containsKey(event.player.uniqueId)) {
if (event.blockPlaced.type != Material.SPAWNER) {
return
}

Expand All @@ -26,6 +31,12 @@ class BlockPlaceEventListener : Listener {
if (entityType != null) {
spawner.spawnedType = entityType
blockState.update()
entityTypeByPlayer.remove(event.player.uniqueId)
} else {
val player = event.player
Bukkit.getLogger().warning(instance.translationConfig.errors.getMissingSpawnedTypeOnLogs(player.name, player.uniqueId))
player.sendMessage(instance.translationConfig.errors.missingSpawnedTypeOnPlayer.toColorHex())
event.isCancelled = true
}
}

Expand Down

0 comments on commit 7a3047d

Please sign in to comment.