Compare commits

...
Author SHA1 Message Date
Guilherme Pereira 608be25334 add discovered only filter to pokedex 2024-12-16 23:57:48 -03:00
Polymeta 2928667500 Merge branch '1.6-spawns' into 'main'
Updated recipes for Scope Lens, Wide Lens, and Zoom Lens. Updated spawns....

See merge request cable-mc/cobblemon!1384
2024-12-16 23:50:04 +00:00
VeraxielandPolymeta 1c528a909c Updated recipes for Scope Lens, Wide Lens, and Zoom Lens. Updated spawns.... 2024-12-16 23:50:04 +00:00
Hiroku 9ca5d12f84 Merge branch 'FixInBattleFlightFidgeting' into 'main'
FixInBattleFlightFidgeting

See merge request cable-mc/cobblemon!1383
2024-12-16 09:41:22 +00:00
Hiroku cc9bb528a8 Merge branch 'npc-hitbox' into 'main'
Fixed npcs not being able to take custom hitbox properties

See merge request cable-mc/cobblemon!1381
2024-12-16 09:40:46 +00:00
JazzMcNade f4c847fdd5 Replaced isGrounded with the more reliable isAirborne. Prevented pokemon from currently flying from receiving a raft. 2024-12-16 01:04:46 -06:00
Conan ec6e1403e7 Fixed npcs not being able to take custom hitbox properties 2024-12-16 05:24:26 +01:00
Hiroku 10a4a03a8b Merge branch 'close-battle-gui-with-mouse' into 'main'
Fix battle GUI not closing with mouse keybind

Closes #1093

See merge request cable-mc/cobblemon!1380
2024-12-16 03:06:46 +00:00
lionandHiroku e0a86f8794 Fix battle GUI not closing with mouse keybind 2024-12-16 03:06:45 +00:00
463 changed files with 6554 additions and 6103 deletions
+1
View File
@@ -431,6 +431,7 @@
- Fixed display case not being able to be fed items from underneath.
- Fixed Pokémon battling in water continuously sinking to the bottom.
- Fixed passive healing and wake from faint not disabling when their config values are set to 0.
- Fixed an issue where rebinding the R key to a mouse button prevented players from closing the battle interface using that button.
### Developer
- `SpawnCause` is now an implementation of `SpawningInfluence`.
@@ -62,9 +62,9 @@ class NPCClass {
fun encode(buffer: RegistryFriendlyByteBuf) {
buffer.writeString(resourceIdentifier.toString())
buffer.writeCollection(names) { _, v -> buffer.writeText(v) }
buffer.writeFloat(this.hitbox.width)
buffer.writeFloat(this.hitbox.height)
buffer.writeBoolean(this.hitbox.fixed)
buffer.writeFloat(hitbox.width)
buffer.writeFloat(hitbox.height)
buffer.writeBoolean(hitbox.fixed)
battleConfiguration.encode(buffer)
buffer.writeNullable(interaction) { _, value ->
buffer.writeString(value.type)
@@ -25,14 +25,24 @@ import net.minecraft.world.item.ItemStack
* @author whatsy
* @since September 4th, 2024
* @param searchString The string to use when checking.
* @param searchByType The type of search to perform
* @param showOnlyDiscoveredSpecies Whether to include only species that have been discovered or all species
*/
class SearchFilter(val pokedexManager: AbstractPokedexManager, val searchString: String, val searchByType: SearchByType = SearchByType.SPECIES) : EntryFilter() {
class SearchFilter(
val pokedexManager: AbstractPokedexManager,
val searchString: String,
val searchByType: SearchByType = SearchByType.SPECIES,
val showOnlyDiscoveredSpecies: Boolean,
) : EntryFilter() {
override fun test(entry: PokedexEntry): Boolean {
val pokedexEntryProgress = pokedexManager.getHighestKnowledgeFor(entry)
if (showOnlyDiscoveredSpecies && pokedexEntryProgress == PokedexEntryProgress.NONE) return false
if (searchString == "") return true
val species = PokemonSpecies.getByIdentifier(entry.speciesId) ?: return false
if (pokedexManager.getHighestKnowledgeFor(entry) == PokedexEntryProgress.NONE) return false
if (pokedexEntryProgress == PokedexEntryProgress.NONE) return false
when(searchByType) {
SearchByType.ABILITIES -> {
@@ -184,15 +184,16 @@ class BattleGUI : Screen(battleLang("gui.title")), CobblemonRenderable {
override fun charTyped(chr: Char, modifiers: Int): Boolean {
if (chr.toString().equals(PartySendBinding.boundKey().displayName.string, ignoreCase = true) && CobblemonClient.battleOverlay.opacity == BattleOverlay.MAX_OPACITY && PartySendBinding.canAction()) {
val battle = CobblemonClient.battle ?: return false
battle.minimised = !battle.minimised
PartySendBinding.actioned()
return true
return minimizeBattle()
}
return super.charTyped(chr, modifiers)
}
override fun mouseClicked(mouseX: Double, mouseY: Double, button: Int): Boolean {
if (button == PartySendBinding.boundKey().value && CobblemonClient.battleOverlay.opacity == BattleOverlay.MAX_OPACITY && PartySendBinding.canAction()) {
return minimizeBattle()
}
val battle = CobblemonClient.battle
if (battle?.spectating == true && specBackButton.isHovered(mouseX, mouseY)) {
RemoveSpectatorPacket(battle.battleId).sendToServer()
@@ -200,4 +201,11 @@ class BattleGUI : Screen(battleLang("gui.title")), CobblemonRenderable {
}
return super.mouseClicked(mouseX, mouseY, button)
}
private fun minimizeBattle(): Boolean {
val battle = CobblemonClient.battle ?: return false
battle.minimised = !battle.minimised
PartySendBinding.actioned()
return true
}
}
@@ -54,6 +54,7 @@ import com.cobblemon.mod.common.net.messages.server.block.AdjustBlockEntityViewe
import com.cobblemon.mod.common.pokemon.abilities.HiddenAbility
import com.cobblemon.mod.common.util.cobblemonResource
import com.cobblemon.mod.common.util.lang
import com.mojang.blaze3d.vertex.PoseStack
import net.minecraft.client.Minecraft
import net.minecraft.client.gui.GuiGraphics
import net.minecraft.client.gui.components.Renderable
@@ -63,6 +64,7 @@ import net.minecraft.client.gui.screens.Screen
import net.minecraft.client.resources.sounds.SimpleSoundInstance
import net.minecraft.core.BlockPos
import net.minecraft.network.chat.Component
import net.minecraft.network.chat.MutableComponent
import net.minecraft.resources.ResourceLocation
import net.minecraft.sounds.SoundEvent
@@ -127,11 +129,13 @@ class PokedexGUI private constructor(
private lateinit var regionSelectWidgetUp: ScaledButton
private lateinit var regionSelectWidgetDown: ScaledButton
private lateinit var onlyDiscoveredSpeciesButton: ScaledButton
private lateinit var searchByTypeButton: ScaledButton
private lateinit var scrollScreen: EntriesScrollingWidget
private lateinit var pokemonInfoWidget: PokemonInfoWidget
private lateinit var searchWidget: SearchWidget
private var showOnlyDiscoveredSpecies: Boolean = false
private var selectedSearchByType: SearchByType = SearchByType.SPECIES
private val tabButtons: MutableList<ScaledButton> = mutableListOf()
@@ -171,7 +175,7 @@ class PokedexGUI private constructor(
displaytabInfoElement(tabInfoIndex, false)
if (::searchWidget.isInitialized) removeWidget(searchWidget)
searchWidget = SearchWidget(x + 26, y + 28, 128, HEADER_BAR_HEIGHT, update = ::updateFilters)
searchWidget = SearchWidget(x + 26, y + 28, 120, HEADER_BAR_HEIGHT, update = ::updateFilters)
addRenderableWidget(searchWidget)
if (::regionSelectWidgetUp.isInitialized) removeWidget(regionSelectWidgetUp)
@@ -198,6 +202,21 @@ class PokedexGUI private constructor(
)
addRenderableWidget(regionSelectWidgetDown)
if (::onlyDiscoveredSpeciesButton.isInitialized) removeWidget(onlyDiscoveredSpeciesButton)
onlyDiscoveredSpeciesButton = ScaledButton(
buttonX = (x + 145.5).toFloat(),
buttonY = (y + 29.5).toFloat(),
buttonWidth = 16,
buttonHeight = 16,
scale = SCALE,
resource = cobblemonResource("textures/gui/pokedex/tab_species.png"),
clickAction = {
showOnlyDiscoveredSpecies = !showOnlyDiscoveredSpecies
updateFilters()
}
)
addRenderableWidget(onlyDiscoveredSpeciesButton)
if (::searchByTypeButton.isInitialized) removeWidget(searchByTypeButton)
searchByTypeButton = ScaledButton(
buttonX = (x + 154.5).toFloat(),
@@ -328,20 +347,28 @@ class PokedexGUI private constructor(
super.render(context, mouseX, mouseY, delta)
// Search type tooltip
if (searchByTypeButton.isButtonHovered(mouseX, mouseY)) {
matrices.pushPose()
matrices.translate(0.0, 0.0, 1000.0)
val searchTypeText = lang("ui.pokedex.search.search_by", lang("ui.pokedex.search.type.${selectedSearchByType.name.lowercase()}")).bold()
val searchTypeTextWidth = Minecraft.getInstance().font.width(searchTypeText.font(CobblemonResources.DEFAULT_LARGE))
val tooltipWidth = searchTypeTextWidth + 6
blitk(matrixStack = matrices, texture = tooltipEdge, x = mouseX - (tooltipWidth / 2) - 1, y = mouseY - 16, width = 1, height = 11)
blitk(matrixStack = matrices, texture = tooltipBackground, x = mouseX - (tooltipWidth / 2), y = mouseY - 16, width = tooltipWidth, height = 11)
blitk(matrixStack = matrices, texture = tooltipEdge, x = mouseX + (tooltipWidth / 2), y = mouseY - 16, width = 1, height = 11)
drawScaledText(context = context, font = CobblemonResources.DEFAULT_LARGE, text = searchTypeText, x = mouseX, y = mouseY - 15, shadow = true, centered = true)
matrices.popPose()
if (onlyDiscoveredSpeciesButton.isButtonHovered(mouseX, mouseY)) {
val text = lang("ui.pokedex.search.show_only_discovered").bold()
renderPokedexStyledTooltip(context, matrices, mouseX, mouseY, text)
}
if (searchByTypeButton.isButtonHovered(mouseX, mouseY)) {
val searchTypeText = lang("ui.pokedex.search.search_by", lang("ui.pokedex.search.type.${selectedSearchByType.name.lowercase()}")).bold()
renderPokedexStyledTooltip(context, matrices, mouseX, mouseY, searchTypeText)
}
}
private fun renderPokedexStyledTooltip(context: GuiGraphics, matrices: PoseStack, mouseX: Int, mouseY: Int, text: MutableComponent) {
matrices.pushPose()
matrices.translate(0.0, 0.0, 1000.0)
val searchTypeTextWidth = Minecraft.getInstance().font.width(text.font(CobblemonResources.DEFAULT_LARGE))
val tooltipWidth = searchTypeTextWidth + 6
blitk(matrixStack = matrices, texture = tooltipEdge, x = mouseX - (tooltipWidth / 2) - 1, y = mouseY - 16, width = 1, height = 11)
blitk(matrixStack = matrices, texture = tooltipBackground, x = mouseX - (tooltipWidth / 2), y = mouseY - 16, width = tooltipWidth, height = 11)
blitk(matrixStack = matrices, texture = tooltipEdge, x = mouseX + (tooltipWidth / 2), y = mouseY - 16, width = 1, height = 11)
drawScaledText(context = context, font = CobblemonResources.DEFAULT_LARGE, text = text, x = mouseX, y = mouseY - 15, shadow = true, centered = true)
matrices.popPose()
}
override fun onClose() {
@@ -435,7 +462,12 @@ class PokedexGUI private constructor(
fun getFilters(): Collection<EntryFilter> {
val filters: MutableList<EntryFilter> = mutableListOf()
filters.add(SearchFilter(CobblemonClient.clientPokedexData, searchWidget.value, selectedSearchByType))
filters.add(SearchFilter(
CobblemonClient.clientPokedexData,
searchWidget.value,
selectedSearchByType,
showOnlyDiscoveredSpecies
))
return filters
}
@@ -70,6 +70,7 @@ import net.minecraft.world.InteractionResult
import net.minecraft.world.damagesource.DamageSource
import net.minecraft.world.entity.AgeableMob
import net.minecraft.world.entity.Entity
import net.minecraft.world.entity.EntityDimensions
import net.minecraft.world.entity.Pose
import net.minecraft.world.entity.ai.Brain
import net.minecraft.world.entity.ai.attributes.AttributeSupplier
@@ -101,6 +102,8 @@ class NPCEntity(world: Level) : AgeableMob(CobblemonEntities.NPC, world), Npc, P
brain = makeBrain(brainDynamic ?: makeEmptyBrainDynamic())
}
}
this.refreshDimensions()
}
val level: Int
@@ -108,6 +111,8 @@ class NPCEntity(world: Level) : AgeableMob(CobblemonEntities.NPC, world), Npc, P
var skill: Int? = null // range from 0 - 5
var hitbox: EntityDimensions? = null
var party: NPCPartyStore? = null
var isMovable: Boolean? = null
@@ -342,6 +347,14 @@ class NPCEntity(world: Level) : AgeableMob(CobblemonEntities.NPC, world), Npc, P
it.putByteArray(DataKeys.NPC_PLAYER_TEXTURE_TEXTURE, playerTexture.texture)
})
}
val hitbox = hitbox
if (hitbox != null) {
nbt.put(DataKeys.NPC_HITBOX, CompoundTag().also {
it.putFloat(DataKeys.NPC_HITBOX_WIDTH, hitbox.width)
it.putFloat(DataKeys.NPC_HITBOX_HEIGHT, hitbox.height)
it.putBoolean(DataKeys.NPC_HITBOX_FIXED, hitbox.fixed)
})
}
val isMovable = isMovable
if (isMovable != null) {
nbt.putBoolean(DataKeys.NPC_IS_MOVABLE, isMovable)
@@ -361,9 +374,6 @@ class NPCEntity(world: Level) : AgeableMob(CobblemonEntities.NPC, world), Npc, P
return nbt
}
override fun hasCustomName() = true
override fun isCustomNameVisible() = true
override fun load(nbt: CompoundTag) {
npc = NPCClasses.getByIdentifier(ResourceLocation.parse(nbt.getString(DataKeys.NPC_CLASS))) ?: NPCClasses.classes.first()
entityData.set(LEVEL, nbt.getInt(DataKeys.NPC_LEVEL).takeIf { it != 0 } ?: 1)
@@ -396,7 +406,17 @@ class NPCEntity(world: Level) : AgeableMob(CobblemonEntities.NPC, world), Npc, P
this.isInvulnerable = if (nbt.contains(DataKeys.NPC_IS_INVULNERABLE)) nbt.getBoolean(DataKeys.NPC_IS_INVULNERABLE) else null
this.isLeashable = if (nbt.contains(DataKeys.NPC_IS_LEASHABLE)) nbt.getBoolean(DataKeys.NPC_IS_LEASHABLE) else null
this.allowProjectileHits = if (nbt.contains(DataKeys.NPC_ALLOW_PROJECTILE_HITS)) nbt.getBoolean(DataKeys.NPC_ALLOW_PROJECTILE_HITS) else null
this.hitbox = if (nbt.contains(DataKeys.NPC_HITBOX)) {
val hitboxNBT = nbt.getCompound(DataKeys.NPC_HITBOX)
val width = hitboxNBT.getFloat(DataKeys.NPC_HITBOX_WIDTH)
val height = hitboxNBT.getFloat(DataKeys.NPC_HITBOX_HEIGHT)
val fixed = hitboxNBT.getBoolean(DataKeys.NPC_HITBOX_FIXED)
if (fixed) EntityDimensions.fixed(width, height) else EntityDimensions.scalable(width, height)
} else {
null
}
updateAspects()
}
@@ -426,9 +446,13 @@ class NPCEntity(world: Level) : AgeableMob(CobblemonEntities.NPC, world), Npc, P
updateAspects()
}
override fun hasCustomName() = true
override fun isCustomNameVisible() = true
override fun isPersistenceRequired() = !npc.canDespawn
override fun getDefaultDimensions(pose: Pose) = npc.hitbox
override fun getDimensions(pose: Pose): EntityDimensions = hitbox ?: npc.hitbox
override fun isPushable(): Boolean {
return isMovable ?: npc.isMovable
@@ -394,9 +394,10 @@ open class PokemonEntity(
// Deploy a platform if a non-wild Pokemon is touching water but not underwater.
// This can't be done in the BattleMovementGoal as the sleep goal will override it.
if (ticksLived > 5 && platform == PlatformType.NONE
&& this.ownerUUID != null
&& ownerUUID != null
&& isInWater && !isUnderWater
&& !exposedForm.behaviour.moving.swim.canBreatheUnderwater && !exposedForm.behaviour.moving.swim.canWalkOnWater) {
&& !exposedForm.behaviour.moving.swim.canBreatheUnderwater && !exposedForm.behaviour.moving.swim.canWalkOnWater
&& !getBehaviourFlag(PokemonBehaviourFlag.FLYING)) {
platform = PlatformType.getPlatformTypeForPokemon((exposedForm))
}
} else {
@@ -50,7 +50,7 @@ class PokemonInBattleMovementGoal(val entity: PokemonEntity, val range: Int) : G
entity.navigation.moveTo(battlePos!!.x, battlePos!!.y, battlePos!!.z, 1.0)
hasMovedToPos = true
}
if (entity.ticksLived > 1 && !entity.onGround() && !entity.getBehaviourFlag(PokemonBehaviourFlag.FLYING)) {
if (entity.ticksLived > 1 && !entity.getBehaviourFlag(PokemonBehaviourFlag.FLYING) && entity.navigation.isAirborne(entity.level(), entity.blockPosition())) {
// Let flyers fly in battle if they're in the air
entity.setBehaviourFlag(PokemonBehaviourFlag.FLYING, true)
}
@@ -219,6 +219,10 @@ object DataKeys {
const val NPC_IS_INVULNERABLE = "IsInvulnerable"
const val NPC_IS_LEASHABLE = "IsLeashable"
const val NPC_ALLOW_PROJECTILE_HITS = "AllowProjectileHits"
const val NPC_HITBOX = "Hitbox"
const val NPC_HITBOX_WIDTH = "Width"
const val NPC_HITBOX_HEIGHT = "Height"
const val NPC_HITBOX_FIXED = "Fixed"
// PokemonProperties
const val ELEMENTAL_TYPE = "ElementalType"
@@ -1041,6 +1041,7 @@
"cobblemon.ui.pokedex.region.unknown": "Unknown",
"cobblemon.ui.pokedex.region.unova": "Unova",
"cobblemon.ui.pokedex.search.show_only_discovered": "Show Only Discovered Species",
"cobblemon.ui.pokedex.search.search_by": "Search by %1$s",
"cobblemon.ui.pokedex.search.type.species": "Species Name",
"cobblemon.ui.pokedex.search.type.abilities": "Ability",
@@ -0,0 +1,9 @@
{
"item": "cobblemon:enigma_berry",
"effects": [
{
"type": "cobblemon:ha_chance",
"chance": 0.05
}
]
}
@@ -1,9 +0,0 @@
{
"item": "cobblemon:enigma_berry",
"effects": [
{
"type": "cobblemon:ha_chance",
"chance": 0.05
}
]
}
@@ -0,0 +1,8 @@
{
"item": "cobblemon:berry_sweet",
"effects": [
{
"type": "cobblemon:inert"
}
]
}
@@ -0,0 +1,8 @@
{
"item": "cobblemon:clover_sweet",
"effects": [
{
"type": "cobblemon:inert"
}
]
}
@@ -0,0 +1,8 @@
{
"item": "cobblemon:flower_sweet",
"effects": [
{
"type": "cobblemon:inert"
}
]
}
@@ -0,0 +1,8 @@
{
"item": "cobblemon:love_sweet",
"effects": [
{
"type": "cobblemon:inert"
}
]
}
@@ -0,0 +1,8 @@
{
"item": "cobblemon:ribbon_sweet",
"effects": [
{
"type": "cobblemon:inert"
}
]
}
@@ -0,0 +1,8 @@
{
"item": "cobblemon:star_sweet",
"effects": [
{
"type": "cobblemon:inert"
}
]
}
@@ -0,0 +1,8 @@
{
"item": "cobblemon:strawberry_sweet",
"effects": [
{
"type": "cobblemon:inert"
}
]
}
@@ -1,9 +1,9 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"GCA",
"ICA",
"I "
" GA",
"GGA",
"II "
],
"key": {
"I": {
@@ -12,9 +12,6 @@
"G": {
"item": "minecraft:gold_ingot"
},
"C": {
"item": "minecraft:copper_ingot"
},
"A": {
"item": "minecraft:amethyst_shard"
}
@@ -1,20 +1,20 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
" Q",
"CPC",
"Q "
"IA",
"CI",
"C "
],
"key": {
"Q": {
"item": "minecraft:quartz"
},
"C": {
"item": "minecraft:copper_ingot"
},
"P": {
"item": "minecraft:ender_pearl"
}
"I": {
"item": "minecraft:iron_ingot"
},
"C": {
"item": "minecraft:copper_ingot"
},
"A": {
"item": "minecraft:amethyst_shard"
}
},
"result": {
"id": "cobblemon:wide_lens"
@@ -1,8 +1,8 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"AGC",
"GGC",
"AGG",
"GCC",
" C"
],
"key": {
@@ -5,22 +5,7 @@
],
"maxY": 62,
"neededNearbyBlocks": [
"minecraft:chiseled_deepslate",
"minecraft:cobbled_deepslate_wall",
"minecraft:cracked_deepslate_bricks",
"minecraft:cracked_deepslate_tiles",
"minecraft:deepslate_brick_slab",
"minecraft:deepslate_brick_stairs",
"minecraft:deepslate_brick_wall",
"minecraft:deepslate_bricks",
"minecraft:deepslate_tile_slab",
"minecraft:deepslate_tile_stairs",
"minecraft:deepslate_tile_wall",
"minecraft:deepslate_tiles",
"minecraft:polished_basalt",
"minecraft:polished_deepslate",
"minecraft:polished_deepslate_slab",
"minecraft:polished_deepslate_wall"
"#cobblemon:ancient_city_blocks"
]
}
}
@@ -1,13 +0,0 @@
{
"condition": {
"neededNearbyBlocks": [
"cobblemon:black_apricorn",
"cobblemon:blue_apricorn",
"cobblemon:green_apricorn",
"cobblemon:pink_apricorn",
"cobblemon:red_apricorn",
"cobblemon:white_apricorn",
"cobblemon:yellow_apricorn"
]
}
}
@@ -1,55 +0,0 @@
{
"condition": {
"neededNearbyBlocks": [
"minecraft:blue_orchid",
"minecraft:cornflower",
"aether_redux:pink_prismatic_petals",
"aether_redux:mixed_prismatic_petals",
"aether_redux:teal_prismatic_petals",
"biomesoplenty:blue_hydrangea",
"biomesoplenty:blue_hydrangea_bottom",
"biomesoplenty:blue_hydrangea_top",
"biomesoplenty:icy_iris",
"blue_skies:moonlit_bloom",
"blue_skies:nightcress",
"botania:blue_double_flower",
"botania:blue_floating_flower",
"botania:blue_mystical_flower",
"botania:blue_shiny_flower",
"botania:cyan_double_flower",
"botania:cyan_floating_flower",
"botania:cyan_mystical_flower",
"botania:cyan_shiny_flower",
"botania:floating_hydroangeas",
"botania:floating_labellia",
"botania:floating_manastar",
"botania:floating_marimorphosis",
"botania:floating_marimorphosis_chibi",
"botania:floating_spectrolus",
"botania:floating_tangleberrie",
"botania:floating_tangleberrie_chibi",
"botania:hydroangeas",
"botania:hydroangeas_motif",
"botania:labellia",
"botania:light_blue_double_flower",
"botania:light_blue_floating_flower",
"botania:light_blue_mystical_flower",
"botania:light_blue_shiny_flower",
"botania:manastar",
"botania:marimorphosis",
"botania:marimorphosis_chibi",
"botania:spectrolus",
"botania:tangleberrie",
"botania:tangleberrie_chibi",
"etcetera:bouquet",
"goodending:pastel_wildflowers",
"goodending:twilight_wildflowers",
"mythicbotany:aquapanthus",
"mythicbotany:aquapanthus_floating",
"mythicbotany:raindeletia",
"mythicbotany:raindeletia_floating",
"outer_end:azure_bud",
"wilderwild:blue_giany_glory_of_the_snow"
]
}
}
@@ -5,126 +5,7 @@
},
"anticondition": {
"neededBaseBlocks": [
"#minecraft:animals_spawnable_on",
"#minecraft:crystal_sound_blocks",
"#minecraft:base_stone_nether",
"#minecraft:base_stone_overworld",
"#minecraft:coal_ores",
"#minecraft:copper_ores",
"#minecraft:coral_blocks",
"#minecraft:diamond_ores",
"#minecraft:dirt",
"#minecraft:dirt_like",
"#minecraft:emerald_ores",
"#minecraft:sculk_replaceable",
"#minecraft:gold_ores",
"#minecraft:grass",
"#minecraft:gravel",
"#minecraft:ice",
"#minecraft:iron_ores",
"#minecraft:lapis_ores",
"#minecraft:logs",
"#minecraft:nylium",
"#minecraft:redstone_ores",
"#minecraft:sand",
"#minecraft:snow",
"#minecraft:terracotta",
"#minecraft:valid_spawn",
"#c:adamantite_ores",
"#c:aetherium_ores",
"#c:aluminum_ores",
"#c:amethyst_blocks",
"#c:amethyst_ores",
"#c:ancient_debris",
"#c:antimony_ores",
"#c:aquarium_ores",
"#c:asterite_ores",
"#c:asteroid_asterite_ores",
"#c:banglum_ores",
"#c:basalt",
"#c:bauxite_ores",
"#c:bone_blocks",
"#c:carmot_ores",
"#c:certus_quartz_ores",
"#c:cinnabar_ores",
"#c:cobalt_ores",
"#c:coral_blocks",
"#c:dirt",
"#c:end_stones",
"#c:galaxium_ores",
"#c:galena_ores",
"#c:gravel",
"#c:galena_ores",
"#c:kyber_ores",
"#c:lead_ores",
"#c:lignite_coal_ores",
"#c:logs",
"#c:lunum_ores",
"#c:lutetium_ores",
"#c:manganese_ores",
"#c:meteor_metite_ores",
"#c:metite_ores",
"#c:midas_gold_ores",
"#c:moon_lunum_ores",
"#c:mozanite_ores",
"#c:mythril_ores",
"#c:natural_stones",
"#c:netherrack",
"#c:nether_mycelium",
"#c:nickel_ores",
"#c:nikolite_ores",
"#c:ores",
"#c:orichalcum_ores",
"#c:osmium_ores",
"#c:palladium_ores",
"#c:peridot_ores",
"#c:platinum_ores",
"#c:prometheum_ores",
"#c:pyrite_ores",
"#c:quadrillum_ores",
"#c:quartz_ores",
"#c:raw_antimony_ores",
"#c:raw_copper_ores",
"#c:raw_gold_ores",
"#c:raw_iridium_ores",
"#c:raw_iron_ores",
"#c:raw_lead_ores",
"#c:raw_nickel_ores",
"#c:raw_platinum_ores",
"#c:raw_silver_ores",
"#c:raw_tin_ores",
"#c:raw_titanium_ores",
"#c:raw_tungsten_ores",
"#c:raw_uranium_ores",
"#c:red_sandstones",
"#c:ruby_ores",
"#c:runite_ores",
"#c:salt_ores",
"#c:sand",
"#c:sandstone",
"#c:sandstones",
"#c:sapphire_ores",
"#c:sheldonite_ores",
"#c:silver_ores",
"#c:sodalite_ores",
"#c:sphalerite_ores",
"#c:starrite_ores",
"#c:stellum_ores",
"#c:stone",
"#c:stormyx_ores",
"#c:sulfur_ores",
"#c:tantalite_ores",
"#c:terracotta_blocks",
"#c:tin_ores",
"#c:titanium_ores",
"#c:topaz_ores",
"#c:truesilver_ores",
"#c:tungsten_ores",
"#c:unobtainium_ores",
"#c:ur_ores",
"#c:uranium_ores",
"#c:vermiculite_ores",
"#c:zinc_ores"
"#cobblemon:natural"
]
}
}
@@ -5,12 +5,7 @@
],
"minY": 62,
"neededNearbyBlocks": [
"minecraft:chiseled_sandstone",
"minecraft:cut_sandstone",
"minecraft:orange_terracotta",
"minecraft:sandstone",
"minecraft:sandstone_slab",
"minecraft:sandstone_stairs"
"#cobblemon:desert_pyramid_blocks"
]
},
"anticondition": {
@@ -9,11 +9,7 @@
"minecraft:purpur_pillar"
],
"neededNearbyBlocks": [
"minecraft:end_stone_bricks",
"minecraft:purpur_block",
"minecraft:purpur_pillar",
"minecraft:purpur_slab",
"minecraft:purpur_stairs"
"#cobblemon:end_city_blocks"
]
}
}
@@ -1,32 +0,0 @@
{
"condition": {
"neededNearbyBlocks": [
"#minecraft:flowers",
"#c:flowers",
"aether_redux:pink_prismatic_petals",
"aether_redux:mixed_prismatic_petals",
"aether_redux:teal_prismatic_petals",
"deep_aether:aerlavender",
"deep_aether:enchanted_blossom",
"deep_aether:golden_flower",
"deep_aether:radiant_orchid",
"deep_aether:tall_aerlavender",
"etcetera:bouquet",
"mythicbotany:aquapanthus",
"mythicbotany:aquapanthus_floating",
"mythicbotany:exoblaze",
"mythicbotany:exoblaze_floating",
"mythicbotany:feysythia",
"mythicbotany:feysythia_floating",
"mythicbotany:hellebore",
"mythicbotany:hellebore_floating",
"mythicbotany:petrunia",
"mythicbotany:petrunia_floating",
"mythicbotany:raindeletia",
"mythicbotany:raindeletia_floating",
"mythicbotany:wither_aconite",
"mythicbotany:wither_aconite_floating",
"twilightforest:thorn_rose"
]
}
}
@@ -1,12 +0,0 @@
{
"condition": {
"biomes": [
"#cobblemon:is_freshwater"
]
},
"anticondition": {
"biomes": [
"#cobblemon:is_freezing"
]
}
}

Some files were not shown because too many files have changed in this diff Show More