Merge pull request #7 from SKBotNL/main

Refactoring
This commit was merged in pull request #7.
This commit is contained in:
NotAlexNoyle authored and GitHub committed 2026-01-27 09:00:14 +00:00
commit 9f4d1553b8
8 files changed
+90 -300

No files matched your search

+1 -1
View File
@@ -3,4 +3,4 @@ Plugin that makes mobs drop heads. Made for TrueOG.\
Only has all mobs from 1.19.4.
## Credits
The texture URLs of mobs without variants in [Heads.kt](src/main/kotlin/net/trueog/mobHeadsOG/Heads.kt) are courtesy of [VanillaTweaks](https://www.vanillatweaks.net/)' "More Mob Heads" datapack and the texture URLs of the mobs with variants are found using [Minecraft Heads](https://minecraft-heads.com) (for heads whose contributors I could find, they are credited in a comment next to the URL).
The texture URLs of mobs without variants in [Heads.kt](src/main/kotlin/net/trueog/mobheadsog/Heads.kt) are courtesy of [VanillaTweaks](https://www.vanillatweaks.net/)' "More Mob Heads" datapack and the texture URLs of the mobs with variants are found using [Minecraft Heads](https://minecraft-heads.com) (for heads whose contributors I could find, they are credited in a comment next to the URL).
@@ -1,262 +0,0 @@
package net.trueog.mobHeadsOG
import org.bukkit.DyeColor
import org.bukkit.entity.TropicalFish
object Fish {
enum class SpecialFishType {
// bodyColor[-patternColor] pattern
ANEMONE, // Orange-Gray Stripey
BLACK_TANG, // Gray Flopper
BLUE_TANG, // Gray-Blue Flopper
BUTTERFLYFISH, // White-Gray Clayfish
CICHLID, // Blue-Gray Sunstreak
CLOWNFISH, // Orange-White Kob
COTTON_CANDY_BETTA, // Pink-Light Blue Spotty
DOTTYBACK, // Purple-Yellow Blockfish
EMPEROR_RED_SNAPPER, // White-Red Clayfish
GOATFISH, // White-Yellow Spotty
MOORISH_IDOL, // White-Gray Glitter
ORNATE_BUTTERFLYFISH, // White-Orange Clayfish
PARROTFISH, // Cyan-Pink Dasher
QUEEN_ANGELFISH, // Lime-Light Blue Brinely
RED_CICHLID, // Red-White Betty
RED_LIPPED_BLENNY, // Gray-Red Snooper
RED_SNAPPER, // Red-White Blockfish
THREADFIN, // White-Yellow Flopper
TOMATO_CLOWNFISH, // Red-White Kob
TRIGGERFISH, // Gray-White Sunstreak
YELLOWTAIL_PARROTFISH, // Cyan-Yellow Dasher
YELLOW_TANG, // Yellow Flopper
}
fun getSpecialFishType(fish: TropicalFish): SpecialFishType? {
if (
fish.bodyColor == DyeColor.ORANGE &&
fish.patternColor == DyeColor.GRAY &&
fish.pattern === TropicalFish.Pattern.STRIPEY
) {
return SpecialFishType.ANEMONE
} else if (
fish.bodyColor == DyeColor.GRAY &&
fish.patternColor == DyeColor.GRAY &&
fish.pattern == TropicalFish.Pattern.FLOPPER
) {
return SpecialFishType.BLACK_TANG
} else if (
fish.bodyColor == DyeColor.GRAY &&
fish.patternColor == DyeColor.BLUE &&
fish.pattern == TropicalFish.Pattern.FLOPPER
) {
return SpecialFishType.BLUE_TANG
} else if (
fish.bodyColor == DyeColor.WHITE &&
fish.patternColor == DyeColor.GRAY &&
fish.pattern == TropicalFish.Pattern.CLAYFISH
) {
return SpecialFishType.BUTTERFLYFISH
} else if (
fish.bodyColor == DyeColor.BLUE &&
fish.patternColor == DyeColor.GRAY &&
fish.pattern == TropicalFish.Pattern.SUNSTREAK
) {
return SpecialFishType.CICHLID
} else if (
fish.bodyColor == DyeColor.ORANGE &&
fish.patternColor == DyeColor.WHITE &&
fish.pattern == TropicalFish.Pattern.KOB
) {
return SpecialFishType.CLOWNFISH
} else if (
fish.bodyColor == DyeColor.PINK &&
fish.patternColor == DyeColor.LIGHT_BLUE &&
fish.pattern == TropicalFish.Pattern.SPOTTY
) {
return SpecialFishType.COTTON_CANDY_BETTA
} else if (
fish.bodyColor == DyeColor.PURPLE &&
fish.patternColor == DyeColor.YELLOW &&
fish.pattern == TropicalFish.Pattern.BLOCKFISH
) {
return SpecialFishType.DOTTYBACK
} else if (
fish.bodyColor == DyeColor.WHITE &&
fish.patternColor == DyeColor.RED &&
fish.pattern == TropicalFish.Pattern.CLAYFISH
) {
return SpecialFishType.EMPEROR_RED_SNAPPER
} else if (
fish.bodyColor == DyeColor.WHITE &&
fish.patternColor == DyeColor.YELLOW &&
fish.pattern == TropicalFish.Pattern.SPOTTY
) {
return SpecialFishType.GOATFISH
} else if (
fish.bodyColor == DyeColor.WHITE &&
fish.patternColor == DyeColor.GRAY &&
fish.pattern == TropicalFish.Pattern.GLITTER
) {
return SpecialFishType.MOORISH_IDOL
} else if (
fish.bodyColor == DyeColor.WHITE &&
fish.patternColor == DyeColor.ORANGE &&
fish.pattern == TropicalFish.Pattern.CLAYFISH
) {
return SpecialFishType.ORNATE_BUTTERFLYFISH
} else if (
fish.bodyColor == DyeColor.CYAN &&
fish.patternColor == DyeColor.PINK &&
fish.pattern == TropicalFish.Pattern.DASHER
) {
return SpecialFishType.PARROTFISH
} else if (
fish.bodyColor == DyeColor.LIME &&
fish.patternColor == DyeColor.LIGHT_BLUE &&
fish.pattern == TropicalFish.Pattern.BRINELY
) {
return SpecialFishType.QUEEN_ANGELFISH
} else if (
fish.bodyColor == DyeColor.RED &&
fish.patternColor == DyeColor.WHITE &&
fish.pattern == TropicalFish.Pattern.BETTY
) {
return SpecialFishType.RED_CICHLID
} else if (
fish.bodyColor == DyeColor.GRAY &&
fish.patternColor == DyeColor.RED &&
fish.pattern == TropicalFish.Pattern.SNOOPER
) {
return SpecialFishType.RED_LIPPED_BLENNY
} else if (
fish.bodyColor == DyeColor.RED &&
fish.patternColor == DyeColor.WHITE &&
fish.pattern == TropicalFish.Pattern.BLOCKFISH
) {
return SpecialFishType.RED_SNAPPER
} else if (
fish.bodyColor == DyeColor.WHITE &&
fish.patternColor == DyeColor.YELLOW &&
fish.pattern == TropicalFish.Pattern.FLOPPER
) {
return SpecialFishType.THREADFIN
} else if (
fish.bodyColor == DyeColor.RED &&
fish.patternColor == DyeColor.WHITE &&
fish.pattern == TropicalFish.Pattern.KOB
) {
return SpecialFishType.TOMATO_CLOWNFISH
} else if (
fish.bodyColor == DyeColor.GRAY &&
fish.patternColor == DyeColor.WHITE &&
fish.pattern == TropicalFish.Pattern.SUNSTREAK
) {
return SpecialFishType.TRIGGERFISH
} else if (
fish.bodyColor == DyeColor.CYAN &&
fish.patternColor == DyeColor.YELLOW &&
fish.pattern == TropicalFish.Pattern.DASHER
) {
return SpecialFishType.YELLOWTAIL_PARROTFISH
} else if (
fish.bodyColor == DyeColor.YELLOW &&
fish.patternColor == DyeColor.YELLOW &&
fish.pattern == TropicalFish.Pattern.FLOPPER
) {
return SpecialFishType.YELLOW_TANG
}
return null
}
fun getSpecialFishType(
bodyColor: DyeColor,
patternColor: DyeColor,
pattern: TropicalFish.Pattern,
): SpecialFishType? {
if (bodyColor == DyeColor.ORANGE && patternColor == DyeColor.GRAY && pattern === TropicalFish.Pattern.STRIPEY) {
return SpecialFishType.ANEMONE
} else if (
bodyColor == DyeColor.GRAY && patternColor == DyeColor.GRAY && pattern == TropicalFish.Pattern.FLOPPER
) {
return SpecialFishType.BLACK_TANG
} else if (
bodyColor == DyeColor.GRAY && patternColor == DyeColor.BLUE && pattern == TropicalFish.Pattern.FLOPPER
) {
return SpecialFishType.BLUE_TANG
} else if (
bodyColor == DyeColor.WHITE && patternColor == DyeColor.GRAY && pattern == TropicalFish.Pattern.CLAYFISH
) {
return SpecialFishType.BUTTERFLYFISH
} else if (
bodyColor == DyeColor.BLUE && patternColor == DyeColor.GRAY && pattern == TropicalFish.Pattern.SUNSTREAK
) {
return SpecialFishType.CICHLID
} else if (
bodyColor == DyeColor.ORANGE && patternColor == DyeColor.WHITE && pattern == TropicalFish.Pattern.KOB
) {
return SpecialFishType.CLOWNFISH
} else if (
bodyColor == DyeColor.PINK && patternColor == DyeColor.LIGHT_BLUE && pattern == TropicalFish.Pattern.SPOTTY
) {
return SpecialFishType.COTTON_CANDY_BETTA
} else if (
bodyColor == DyeColor.PURPLE && patternColor == DyeColor.YELLOW && pattern == TropicalFish.Pattern.BLOCKFISH
) {
return SpecialFishType.DOTTYBACK
} else if (
bodyColor == DyeColor.WHITE && patternColor == DyeColor.RED && pattern == TropicalFish.Pattern.CLAYFISH
) {
return SpecialFishType.EMPEROR_RED_SNAPPER
} else if (
bodyColor == DyeColor.WHITE && patternColor == DyeColor.YELLOW && pattern == TropicalFish.Pattern.SPOTTY
) {
return SpecialFishType.GOATFISH
} else if (
bodyColor == DyeColor.WHITE && patternColor == DyeColor.GRAY && pattern == TropicalFish.Pattern.GLITTER
) {
return SpecialFishType.MOORISH_IDOL
} else if (
bodyColor == DyeColor.WHITE && patternColor == DyeColor.ORANGE && pattern == TropicalFish.Pattern.CLAYFISH
) {
return SpecialFishType.ORNATE_BUTTERFLYFISH
} else if (
bodyColor == DyeColor.CYAN && patternColor == DyeColor.PINK && pattern == TropicalFish.Pattern.DASHER
) {
return SpecialFishType.PARROTFISH
} else if (
bodyColor == DyeColor.LIME && patternColor == DyeColor.LIGHT_BLUE && pattern == TropicalFish.Pattern.BRINELY
) {
return SpecialFishType.QUEEN_ANGELFISH
} else if (
bodyColor == DyeColor.RED && patternColor == DyeColor.WHITE && pattern == TropicalFish.Pattern.BETTY
) {
return SpecialFishType.RED_CICHLID
} else if (
bodyColor == DyeColor.GRAY && patternColor == DyeColor.RED && pattern == TropicalFish.Pattern.SNOOPER
) {
return SpecialFishType.RED_LIPPED_BLENNY
} else if (
bodyColor == DyeColor.RED && patternColor == DyeColor.WHITE && pattern == TropicalFish.Pattern.BLOCKFISH
) {
return SpecialFishType.RED_SNAPPER
} else if (
bodyColor == DyeColor.WHITE && patternColor == DyeColor.YELLOW && pattern == TropicalFish.Pattern.FLOPPER
) {
return SpecialFishType.THREADFIN
} else if (bodyColor == DyeColor.RED && patternColor == DyeColor.WHITE && pattern == TropicalFish.Pattern.KOB) {
return SpecialFishType.TOMATO_CLOWNFISH
} else if (
bodyColor == DyeColor.GRAY && patternColor == DyeColor.WHITE && pattern == TropicalFish.Pattern.SUNSTREAK
) {
return SpecialFishType.TRIGGERFISH
} else if (
bodyColor == DyeColor.CYAN && patternColor == DyeColor.YELLOW && pattern == TropicalFish.Pattern.DASHER
) {
return SpecialFishType.YELLOWTAIL_PARROTFISH
} else if (
bodyColor == DyeColor.YELLOW && patternColor == DyeColor.YELLOW && pattern == TropicalFish.Pattern.FLOPPER
) {
return SpecialFishType.YELLOW_TANG
}
return null
}
}
@@ -1,4 +1,4 @@
package net.trueog.mobHeadsOG
package net.trueog.mobheadsog
import java.io.File
import org.bukkit.configuration.file.YamlConfiguration
@@ -51,7 +51,7 @@ class Config {
return false
}
if (dropChance > 1 || dropChance < 0) {
if (dropChance !in 0.0..1.0) {
MobHeadsOG.plugin.logger.severe(
"The drop chance of $key is not a valid chance (the drop chance must not be smaller than 0 and not bigger than 1)"
)
@@ -1,4 +1,4 @@
package net.trueog.mobHeadsOG
package net.trueog.mobheadsog
import java.util.*
import net.kyori.adventure.text.Component
@@ -81,15 +81,9 @@ class Events : Listener {
val profile = createProfile(nullUuid)
profile.clearProperties()
val textures = profile.textures
val skinUrl = Heads.getHeadUrl(event.entity)
if (skinUrl == null) {
return
}
val skinUrl = Heads.getHeadUrl(event.entity) ?: return
val stringRepresentation = Heads.toStringRepresentation(event.entity)
if (stringRepresentation == null) {
return
}
val stringRepresentation = Heads.toStringRepresentation(event.entity) ?: return
headMeta.persistentDataContainer.set(customMobHeadKey, PersistentDataType.STRING, stringRepresentation)
headMeta.displayName(
@@ -106,12 +100,7 @@ class Events : Listener {
@EventHandler
fun onBlockPlace(event: BlockPlaceEvent) {
val customMobHeadData =
event.itemInHand.itemMeta.persistentDataContainer.get(customMobHeadKey, PersistentDataType.STRING)
if (customMobHeadData == null) {
return
}
customMobHeadData == "CREEPER"
event.itemInHand.itemMeta.persistentDataContainer.get(customMobHeadKey, PersistentDataType.STRING) ?: return
event.block.setMetadata("customMobHead", FixedMetadataValue(MobHeadsOG.plugin, customMobHeadData))
}
@@ -138,10 +127,7 @@ class Events : Listener {
val profile = createProfile(nullUuid)
val textures = profile.textures
val skinUrl = Heads.getHeadUrlWithStringRepresentation(customMobHeadData)
if (skinUrl == null) {
return
}
val skinUrl = Heads.getHeadUrlWithStringRepresentation(customMobHeadData) ?: return
headMeta.persistentDataContainer.set(customMobHeadKey, PersistentDataType.STRING, customMobHeadData)
headMeta.displayName(
@@ -170,9 +156,6 @@ class Events : Listener {
val customMobHeadData = metadata.first().asString()
val name = Heads.getNameForEntity(customMobHeadData)
if (name == null) {
return
}
event.player.sendActionBar(MobHeadsOG.mm.deserialize("<yellow>$name Head"))
}
@@ -0,0 +1,74 @@
package net.trueog.mobheadsog
import org.bukkit.DyeColor
import org.bukkit.entity.TropicalFish
object Fish {
enum class SpecialFishType {
// bodyColor[-patternColor] pattern
ANEMONE, // Orange-Gray Stripey
BLACK_TANG, // Gray Flopper
BLUE_TANG, // Gray-Blue Flopper
BUTTERFLYFISH, // White-Gray Clayfish
CICHLID, // Blue-Gray Sunstreak
CLOWNFISH, // Orange-White Kob
COTTON_CANDY_BETTA, // Pink-Light Blue Spotty
DOTTYBACK, // Purple-Yellow Blockfish
EMPEROR_RED_SNAPPER, // White-Red Clayfish
GOATFISH, // White-Yellow Spotty
MOORISH_IDOL, // White-Gray Glitter
ORNATE_BUTTERFLYFISH, // White-Orange Clayfish
PARROTFISH, // Cyan-Pink Dasher
QUEEN_ANGELFISH, // Lime-Light Blue Brinely
RED_CICHLID, // Red-White Betty
RED_LIPPED_BLENNY, // Gray-Red Snooper
RED_SNAPPER, // Red-White Blockfish
THREADFIN, // White-Yellow Flopper
TOMATO_CLOWNFISH, // Red-White Kob
TRIGGERFISH, // Gray-White Sunstreak
YELLOWTAIL_PARROTFISH, // Cyan-Yellow Dasher
YELLOW_TANG, // Yellow Flopper
}
data class FishKey(val bodyColor: DyeColor, val patternColor: DyeColor, val pattern: TropicalFish.Pattern)
val specialFishTypeMap =
mapOf<FishKey, SpecialFishType>(
FishKey(DyeColor.ORANGE, DyeColor.GRAY, TropicalFish.Pattern.STRIPEY) to SpecialFishType.ANEMONE,
FishKey(DyeColor.GRAY, DyeColor.GRAY, TropicalFish.Pattern.FLOPPER) to SpecialFishType.BLACK_TANG,
FishKey(DyeColor.GRAY, DyeColor.BLUE, TropicalFish.Pattern.FLOPPER) to SpecialFishType.BLUE_TANG,
FishKey(DyeColor.WHITE, DyeColor.GRAY, TropicalFish.Pattern.CLAYFISH) to SpecialFishType.BUTTERFLYFISH,
FishKey(DyeColor.BLUE, DyeColor.GRAY, TropicalFish.Pattern.SUNSTREAK) to SpecialFishType.CICHLID,
FishKey(DyeColor.ORANGE, DyeColor.WHITE, TropicalFish.Pattern.KOB) to SpecialFishType.CLOWNFISH,
FishKey(DyeColor.PINK, DyeColor.LIGHT_BLUE, TropicalFish.Pattern.SPOTTY) to
SpecialFishType.COTTON_CANDY_BETTA,
FishKey(DyeColor.PURPLE, DyeColor.YELLOW, TropicalFish.Pattern.BLOCKFISH) to SpecialFishType.DOTTYBACK,
FishKey(DyeColor.WHITE, DyeColor.RED, TropicalFish.Pattern.CLAYFISH) to SpecialFishType.EMPEROR_RED_SNAPPER,
FishKey(DyeColor.WHITE, DyeColor.YELLOW, TropicalFish.Pattern.SPOTTY) to SpecialFishType.GOATFISH,
FishKey(DyeColor.WHITE, DyeColor.GRAY, TropicalFish.Pattern.GLITTER) to SpecialFishType.MOORISH_IDOL,
FishKey(DyeColor.WHITE, DyeColor.ORANGE, TropicalFish.Pattern.CLAYFISH) to
SpecialFishType.ORNATE_BUTTERFLYFISH,
FishKey(DyeColor.CYAN, DyeColor.PINK, TropicalFish.Pattern.DASHER) to SpecialFishType.PARROTFISH,
FishKey(DyeColor.LIME, DyeColor.LIGHT_BLUE, TropicalFish.Pattern.BRINELY) to
SpecialFishType.QUEEN_ANGELFISH,
FishKey(DyeColor.RED, DyeColor.WHITE, TropicalFish.Pattern.BETTY) to SpecialFishType.RED_CICHLID,
FishKey(DyeColor.GRAY, DyeColor.RED, TropicalFish.Pattern.SNOOPER) to SpecialFishType.RED_LIPPED_BLENNY,
FishKey(DyeColor.RED, DyeColor.WHITE, TropicalFish.Pattern.BLOCKFISH) to SpecialFishType.RED_SNAPPER,
FishKey(DyeColor.WHITE, DyeColor.YELLOW, TropicalFish.Pattern.FLOPPER) to SpecialFishType.THREADFIN,
FishKey(DyeColor.RED, DyeColor.WHITE, TropicalFish.Pattern.KOB) to SpecialFishType.TOMATO_CLOWNFISH,
FishKey(DyeColor.GRAY, DyeColor.WHITE, TropicalFish.Pattern.SUNSTREAK) to SpecialFishType.TRIGGERFISH,
FishKey(DyeColor.CYAN, DyeColor.YELLOW, TropicalFish.Pattern.DASHER) to
SpecialFishType.YELLOWTAIL_PARROTFISH,
FishKey(DyeColor.YELLOW, DyeColor.YELLOW, TropicalFish.Pattern.FLOPPER) to SpecialFishType.YELLOW_TANG,
)
fun getSpecialFishType(fish: TropicalFish) = getSpecialFishType(fish.bodyColor, fish.patternColor, fish.pattern)
fun getSpecialFishType(
bodyColor: DyeColor,
patternColor: DyeColor,
pattern: TropicalFish.Pattern,
): SpecialFishType? {
return specialFishTypeMap[FishKey(bodyColor, patternColor, pattern)]
}
}
@@ -1,7 +1,7 @@
package net.trueog.mobHeadsOG
package net.trueog.mobheadsog
import java.net.URL
import net.trueog.mobHeadsOG.Fish.SpecialFishType
import net.trueog.mobheadsog.Fish.SpecialFishType
import org.bukkit.DyeColor
import org.bukkit.entity.*
@@ -1612,10 +1612,7 @@ object Heads {
EntityType.TROPICAL_FISH -> {
val fish = entity as TropicalFish
val specialFishType = Fish.getSpecialFishType(fish)
if (specialFishType == null) {
return headIndex[fish.type]
}
val specialFishType = Fish.getSpecialFishType(fish) ?: return headIndex[fish.type]
return specialFishHeadIndex[specialFishType]
}
@@ -1789,10 +1786,8 @@ object Heads {
val bodyColor = DyeColor.valueOf(split[0])
val patternColor = DyeColor.valueOf(split[1])
val pattern = TropicalFish.Pattern.valueOf(split[2])
val specialFishType = Fish.getSpecialFishType(bodyColor, patternColor, pattern)
if (specialFishType == null) {
return headIndex[entityType]
}
val specialFishType =
Fish.getSpecialFishType(bodyColor, patternColor, pattern) ?: return headIndex[entityType]
return specialFishHeadIndex[specialFishType]
}
@@ -1950,7 +1945,7 @@ object Heads {
return name.titleCase()
}
fun getNameForEntity(stringRepresentation: String): String? {
fun getNameForEntity(stringRepresentation: String): String {
val split = stringRepresentation.split(" ")
val entityType = EntityType.valueOf(split.last())
@@ -1,4 +1,4 @@
package net.trueog.mobHeadsOG
package net.trueog.mobheadsog
import net.kyori.adventure.text.minimessage.MiniMessage
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver
+1 -1
View File
@@ -1,4 +1,4 @@
name: MobHeads-OG
version: '${version}'
main: net.trueog.mobHeadsOG.MobHeadsOG
main: net.trueog.mobheadsog.MobHeadsOG
api-version: '${apiVersion}'