Merge branch 'advancing-advancements-returns-in-1.8' into 'main'

Advancing Advancements into 1.8

See merge request cable-mc/cobblemon!2223
This commit is contained in:
Polymeta
2026-04-29 08:27:14 +00:00
1330 changed files with 6008 additions and 2511 deletions
+21
View File
@@ -52,6 +52,7 @@
- The lush shipwreck cove structure itself has been slightly cleaned up to be less noisy with the blocks it is built out of.
- All shipwreck coves' spawners have been adjusted to give compatible mobs enchanted iron or diamond armour and weapons while in its ominous state. The armour given to the mobs will also use the automaton trim. We upped the difficulty because it was too easy now that your Pokémon can fight for you.
- One TM of the elemental hyper beams has been added as guaranteed loot to the main treasure chest in every shipwreck cove. (Magma cove gets blast burn, lush cove gets frenzy plant, and submerged cove gets hydro cannon)
- Added 7 new advancements
### New rideable Pokémon
- Drampa
@@ -146,6 +147,26 @@
### Changes
- Dragonite's mailbag cosmetic can now also be obtained with a chest in the cosmetic slot
- Sharp Beak can now be crafted
- Metal Alloy can now be crafted
- Ability Capsules can now be brewed
- The following items can now be obtained by brushing the following Pokemon:
- Pink Wool - Wigglytuff
- White Wool - Swablu, Altaria
- Shed Shell - Ekans, Arbok, Dratini, Dragonair, Dunsparce, Treecko, Grovyle, Sceptile, Seviper, Scraggy, Scrafty, Helioptile, Heliolisk, Salandit, Salazzle, Sobble, Drizzile, Inteleon, Silicoblra, Sandaconda, Toxel, Toxtricity, Orthworm, Dudunsparce
- Phantom Membrane - Dreepy, Drakloak, Dragapult
- The following items can now be obtained by evolving the following Pokemon into any of their evolutions:
- Turtle Scute - Squirtle, Wartortle, Turtwig, Grotle, Tirtouga, Chewtle
- Shed Shell - Metapod, Kakuna, Ekans, Paras, Venonat, Krabby, Scyther, Kabuto, Dratini, Dragonair, Ledyba, Spinarak, Yanma, Pineco, Dunsparce, GLigar, Pupitar, Treecko, Grovyle, Silcoon, Cascoon, Surskit, Nincada, Trapinch, Vibrava, Corphish, Anorith, Bagon, Shelgon, Kricketot, Burmy, Combee, Skorupi, Swadloon, Whirlipede, Dwebble, Scraggy, Karrablast, Joltik, Larvesta, Spewpa, Clauncher, Helioptile, Charjabug, Crabrawler, Cutiefly, Dewpider, Salandit, Wimpod, Poipole, Sobble, Drizzile, Dottler, Silicobra, Toxel, Sizzlipede, Snom, Tarountula, Nymble, Rellor
- Saccharine Leaves now drop Tart, Sweet, or Syrupy Apples, depending on their honey coating stage, instead of vanilla Apples
- Fixed the height of the Tumblestone Bud items when held in hand, placed on head, viewed in a GUI, and placed in an Item Frame
- Refactored all advancements, removing several deemed unnecessary. Due to this refactor, all previously obtained advancements will be reset besides the root (for picking a starter Pokemon). We are sorry for the inconvience, but it makes the tab cleaner and makes future advancements simpler.
### Fixes
- Adjusted Croagunk's walkspeed
- Fixed Blitzle's base scale being `1` rather than the intended `0.8`
- Fixed Magnezone's emissive layer for the shiny having the wrong name, thus displaying wrongly
- Fixed Litleo not blinking
- Restructured Botany Pots integration folder structure
- Decrease the default pastured mon wander radius to 32.
- Factor in the weight of Pokémon when calculating pushing forces between hitboxes.
@@ -8,7 +8,7 @@
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.block.entity.TMShelfBlockEntity;
import com.cobblemon.mod.common.block.entity.DiscShelfBlockEntity;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Holder;
import net.minecraft.sounds.SoundEvent;
@@ -29,7 +29,7 @@ public abstract class NoteBlockMixin {
private void cobblemon$triggerTMShelfSequencer(BlockState state, Level level, BlockPos pos, int type, int data, CallbackInfoReturnable<Boolean> cir) {
final BlockPos shelfPos = pos.below();
final BlockEntity blockEntity = level.getBlockEntity(shelfPos);
if (!(blockEntity instanceof TMShelfBlockEntity tmShelfBlockEntity)) {
if (!(blockEntity instanceof DiscShelfBlockEntity discShelfBlockEntity)) {
return;
}
@@ -43,7 +43,7 @@ public abstract class NoteBlockMixin {
final Holder<SoundEvent> holder = instrument.getSoundEvent();
soundEvent = holder.value();
}
tmShelfBlockEntity.onNoteBlockPulse(level, pos, soundEvent);
discShelfBlockEntity.onNoteBlockPulse(level, pos, soundEvent);
}
// Suppress vanilla note-block playback while it is on top of a TM Shelf.
@@ -33,7 +33,7 @@ object CobblemonBlockEntities : PlatformRegistry<Registry<BlockEntityType<*>>, R
val LECTERN: BlockEntityType<LecternBlockEntity> = this.create("lectern", BlockEntityType.Builder.of(::LecternBlockEntity, CobblemonBlocks.LECTERN).build(null))
@JvmField
val TM_SHELF: BlockEntityType<TMShelfBlockEntity> = this.create("tm_shelf", BlockEntityType.Builder.of(::TMShelfBlockEntity, CobblemonBlocks.TM_SHELF).build(null))
val DISC_SHELF: BlockEntityType<DiscShelfBlockEntity> = this.create("disc_shelf", BlockEntityType.Builder.of(::DiscShelfBlockEntity, CobblemonBlocks.DISC_SHELF).build(null))
@JvmField
val BERRY = this.create("berry", BlockEntityType.Builder.of(::BerryBlockEntity, *CobblemonBlocks.berries().values.toTypedArray()).build(null))
@@ -702,7 +702,7 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, ResourceKey<Registry<
val LECTERN = create("lectern", LecternBlock(BlockBehaviour.Properties.of().mapColor(MapColor.WOOD).instrument(NoteBlockInstrument.BASS).sound(SoundType.WOOD).strength(2.5F).ignitedByLava().lightLevel { if (it.getValue(LecternBlock.EMIT_LIGHT) as Boolean) 13 else 0 }))
@JvmField
val TM_SHELF = create("tm_shelf", TMShelfBlock(BlockBehaviour.Properties.of().mapColor(MapColor.WOOD).instrument(NoteBlockInstrument.BASS).sound(SoundType.METAL).strength(2.5F)))
val DISC_SHELF = create("disc_shelf", DiscShelfBlock(BlockBehaviour.Properties.of().mapColor(MapColor.WOOD).instrument(NoteBlockInstrument.BASS).sound(SoundType.METAL).strength(2.5F)))
@JvmField
val DISPLAY_CASE = create("display_case", DisplayCaseBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.DISPLAY_CASE_SOUNDS).noOcclusion().pushReaction(PushReaction.BLOCK).mapColor(MapColor.STONE).strength(0.3F).requiresCorrectToolForDrops()))
@@ -460,7 +460,7 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, ResourceKey<Registry<It
@JvmField
val TM_MACHINE = blockItem("tm_machine", CobblemonBlocks.TM_MACHINE)
@JvmField
val TM_SHELF = blockItem("tm_shelf", CobblemonBlocks.TM_SHELF)
val DISC_SHELF = blockItem("disc_shelf", CobblemonBlocks.DISC_SHELF)
@JvmField
val PASTURE = blockItem("pasture", CobblemonBlocks.PASTURE)
@JvmField
@@ -1524,41 +1524,41 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, ResourceKey<Registry<It
// Type Gems
@JvmField
val NORMAL_GEM = this.create("normal_gem", itemNameBlockItem("normal_gem", CobblemonBlocks.TYPE_GEM_CLUSTER_NORMAL))
val NORMAL_GEM = this.create("normal_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_NORMAL))
@JvmField
val FIRE_GEM = this.create("fire_gem", itemNameBlockItem("fire_gem", CobblemonBlocks.TYPE_GEM_CLUSTER_FIRE))
val FIRE_GEM = this.create("fire_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_FIRE))
@JvmField
val WATER_GEM = this.create("water_gem", itemNameBlockItem("water_gem", CobblemonBlocks.TYPE_GEM_CLUSTER_WATER))
val WATER_GEM = this.create("water_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_WATER))
@JvmField
val GRASS_GEM = this.create("grass_gem", itemNameBlockItem("grass_gem", CobblemonBlocks.TYPE_GEM_CLUSTER_GRASS))
val GRASS_GEM = this.create("grass_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_GRASS))
@JvmField
val ELECTRIC_GEM = this.create("electric_gem", itemNameBlockItem("electric_gem", CobblemonBlocks.TYPE_GEM_CLUSTER_ELECTRIC))
val ELECTRIC_GEM = this.create("electric_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_ELECTRIC))
@JvmField
val ICE_GEM = this.create("ice_gem", itemNameBlockItem("ice_gem", CobblemonBlocks.TYPE_GEM_CLUSTER_ICE))
val ICE_GEM = this.create("ice_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_ICE))
@JvmField
val FIGHTING_GEM = this.create("fighting_gem", itemNameBlockItem("fighting_gem", CobblemonBlocks.TYPE_GEM_CLUSTER_FIGHTING))
val FIGHTING_GEM = this.create("fighting_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_FIGHTING))
@JvmField
val POISON_GEM = this.create("poison_gem", itemNameBlockItem("poison_gem", CobblemonBlocks.TYPE_GEM_CLUSTER_POISON))
val POISON_GEM = this.create("poison_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_POISON))
@JvmField
val GROUND_GEM = this.create("ground_gem", itemNameBlockItem("ground_gem", CobblemonBlocks.TYPE_GEM_CLUSTER_GROUND))
val GROUND_GEM = this.create("ground_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_GROUND))
@JvmField
val FLYING_GEM = this.create("flying_gem", itemNameBlockItem("flying_gem", CobblemonBlocks.TYPE_GEM_CLUSTER_FLYING))
val FLYING_GEM = this.create("flying_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_FLYING))
@JvmField
val PSYCHIC_GEM = this.create("psychic_gem", itemNameBlockItem("psychic_gem", CobblemonBlocks.TYPE_GEM_CLUSTER_PSYCHIC))
val PSYCHIC_GEM = this.create("psychic_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_PSYCHIC))
@JvmField
val BUG_GEM = this.create("bug_gem", itemNameBlockItem("bug_gem", CobblemonBlocks.TYPE_GEM_CLUSTER_BUG))
val BUG_GEM = this.create("bug_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_BUG))
@JvmField
val ROCK_GEM = this.create("rock_gem", itemNameBlockItem("rock_gem", CobblemonBlocks.TYPE_GEM_CLUSTER_ROCK))
val ROCK_GEM = this.create("rock_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_ROCK))
@JvmField
val GHOST_GEM = this.create("ghost_gem", itemNameBlockItem("ghost_gem", CobblemonBlocks.TYPE_GEM_CLUSTER_GHOST))
val GHOST_GEM = this.create("ghost_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_GHOST))
@JvmField
val DRAGON_GEM = this.create("dragon_gem", itemNameBlockItem("dragon_gem", CobblemonBlocks.TYPE_GEM_CLUSTER_DRAGON))
val DRAGON_GEM = this.create("dragon_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_DRAGON))
@JvmField
val DARK_GEM = this.create("dark_gem", itemNameBlockItem("dark_gem", CobblemonBlocks.TYPE_GEM_CLUSTER_DARK))
val DARK_GEM = this.create("dark_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_DARK))
@JvmField
val STEEL_GEM = this.create("steel_gem", itemNameBlockItem("steel_gem", CobblemonBlocks.TYPE_GEM_CLUSTER_STEEL))
val STEEL_GEM = this.create("steel_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_STEEL))
@JvmField
val FAIRY_GEM = this.create("fairy_gem", itemNameBlockItem("fairy_gem", CobblemonBlocks.TYPE_GEM_CLUSTER_FAIRY))
val FAIRY_GEM = this.create("fairy_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_FAIRY))
//@JvmField
//val BINDING_SOIL = blockItem("binding_soil", CobblemonBlocks.BINDING_SOIL)
@@ -81,6 +81,9 @@ object CobblemonCriteria : PlatformRegistry<Registry<CriterionTrigger<*>>, Resou
@JvmField
val PLANT_TUMBLESTONE = this.create("plant_tumblestone", SimpleCriterionTrigger(PlantTumblestoneCriterion.CODEC))
@JvmField
val PLANT_TYPE_GEM = this.create("plant_type_gem", SimpleCriterionTrigger(PlantTypeGemCriterion.CODEC))
val RIDING_STAT_BOOST = this.create("riding_stat_boost", SimpleCriterionTrigger(RidingStatBoostCriterion.CODEC))
@JvmField
@@ -0,0 +1,35 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.advancement.criterion
import com.cobblemon.mod.common.block.TypeGemClusterBlock
import com.cobblemon.mod.common.block.TypeGemCoreBlock
import com.mojang.serialization.Codec
import com.mojang.serialization.codecs.RecordCodecBuilder
import net.minecraft.advancements.critereon.ContextAwarePredicate
import net.minecraft.core.BlockPos
import net.minecraft.server.level.ServerPlayer
import java.util.*
class PlantTypeGemContext(val pos: BlockPos, val block: TypeGemClusterBlock)
class PlantTypeGemCriterion(
playerCtx: Optional<ContextAwarePredicate>
): SimpleCriterionCondition<PlantTypeGemContext>(playerCtx) {
companion object {
val CODEC: Codec<PlantTypeGemCriterion> = RecordCodecBuilder.create { it.group(
ContextAwarePredicate.CODEC.optionalFieldOf("player").forGetter(PlantTypeGemCriterion::playerCtx)
).apply(it, ::PlantTypeGemCriterion) }
}
override fun matches(player: ServerPlayer, context: PlantTypeGemContext): Boolean {
return player.level().getBlockState(context.pos).block is TypeGemCoreBlock
}
}
@@ -8,7 +8,7 @@
package com.cobblemon.mod.common.block
import com.cobblemon.mod.common.block.entity.TMShelfBlockEntity
import com.cobblemon.mod.common.block.entity.DiscShelfBlockEntity
import com.mojang.serialization.MapCodec
import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
@@ -30,9 +30,9 @@ import net.minecraft.world.Containers
import net.minecraft.world.phys.BlockHitResult
import net.minecraft.world.phys.shapes.VoxelShape
class TMShelfBlock(properties: Properties) : BaseEntityBlock(properties) {
class DiscShelfBlock(properties: Properties) : BaseEntityBlock(properties) {
companion object {
val CODEC: MapCodec<TMShelfBlock> = simpleCodec(::TMShelfBlock)
val CODEC: MapCodec<DiscShelfBlock> = simpleCodec(::DiscShelfBlock)
val FACING: DirectionProperty = HorizontalDirectionalBlock.FACING
val SLOT_OCCUPIED_PROPERTIES = (0 until 14).map {
BooleanProperty.create("slot_${it}_occupied")
@@ -49,7 +49,7 @@ class TMShelfBlock(properties: Properties) : BaseEntityBlock(properties) {
override fun codec() = CODEC
override fun newBlockEntity(pos: BlockPos, state: BlockState): BlockEntity {
return TMShelfBlockEntity(pos, state)
return DiscShelfBlockEntity(pos, state)
}
override fun createBlockStateDefinition(builder: StateDefinition.Builder<Block, BlockState>) {
@@ -67,7 +67,7 @@ class TMShelfBlock(properties: Properties) : BaseEntityBlock(properties) {
state: BlockState, level: Level, pos: BlockPos,
player: Player, hit: BlockHitResult
): InteractionResult {
val entity = level.getBlockEntity(pos) as? TMShelfBlockEntity ?: return InteractionResult.PASS
val entity = level.getBlockEntity(pos) as? DiscShelfBlockEntity ?: return InteractionResult.PASS
return entity.handleUseWithoutItem(state, level, pos, player, hit)
}
@@ -75,21 +75,21 @@ class TMShelfBlock(properties: Properties) : BaseEntityBlock(properties) {
stack: ItemStack, state: BlockState, level: Level, pos: BlockPos,
player: Player, hand: InteractionHand, hit: BlockHitResult
): ItemInteractionResult {
val entity = level.getBlockEntity(pos) as? TMShelfBlockEntity ?: return ItemInteractionResult.SKIP_DEFAULT_BLOCK_INTERACTION
val entity = level.getBlockEntity(pos) as? DiscShelfBlockEntity ?: return ItemInteractionResult.SKIP_DEFAULT_BLOCK_INTERACTION
return entity.handleUseItem(stack, state, level, pos, player, hit)
}
override fun hasAnalogOutputSignal(state: BlockState) = true
override fun getAnalogOutputSignal(state: BlockState, level: Level, pos: BlockPos): Int {
val entity = level.getBlockEntity(pos) as? TMShelfBlockEntity
val entity = level.getBlockEntity(pos) as? DiscShelfBlockEntity
return entity?.items?.count { !it.isEmpty }?.coerceIn(0, 14) ?: 0
}
override fun onRemove(state: BlockState, level: Level, pos: BlockPos, newState: BlockState, movedByPiston: Boolean) {
if (!state.`is`(newState.block)) {
if (!level.isClientSide && !movedByPiston) {
val entity = level.getBlockEntity(pos) as? TMShelfBlockEntity
val entity = level.getBlockEntity(pos) as? DiscShelfBlockEntity
if (entity != null) {
for (index in entity.items.indices) {
val stack = entity.items[index]
@@ -94,14 +94,14 @@ class TypeGemClusterBlock(
.setValue(STUNTED, false)
}
override fun isRandomlyTicking(state: BlockState): Boolean = state.getValue(SHOULD_GROW)
public override fun isRandomlyTicking(state: BlockState): Boolean = state.getValue(SHOULD_GROW)
override fun randomTick(state: BlockState, level: ServerLevel, pos: BlockPos, random: RandomSource) {
advanceGrowth(state, level, pos, random)
}
fun advanceGrowth(state: BlockState, level: LevelAccessor, pos: BlockPos, random: RandomSource) {
if (!state.getValue(SHOULD_GROW)) return
if (!gemClusterCanGrow(state, level, pos)) return
val currentStage = state.getValue(STAGE)
@@ -179,6 +179,14 @@ class TypeGemClusterBlock(
}
}
fun gemClusterCanGrow(state: BlockState, level: LevelReader, pos: BlockPos): Boolean {
if (!state.getValue(SHOULD_GROW)) return false
val supportPos = pos.relative(state.getValue(FACING).opposite)
val supportBlock = level.getBlockState(supportPos).block
return CobblemonBlocks.typeGemBlocks().containsValue(supportBlock) || (supportBlock == CobblemonBlocks.TYPE_GEM_CORE) // Cannot grow if not on any gem blocks
}
override fun getDrops(state: BlockState, params: LootParams.Builder): List<ItemStack> {
val drops = super.getDrops(state, params)
@@ -186,14 +194,14 @@ class TypeGemClusterBlock(
val blockItem = stack.item as? BlockItem ?: continue
if (blockItem.block !is TypeGemClusterBlock) continue
val itemPath = BuiltInRegistries.ITEM.getKey(stack.item).path
if (!itemPath.startsWith("type_gem_cluster_")) continue
if (!itemPath.endsWith("_gem_cluster")) continue
stack.set(
DataComponents.BLOCK_STATE,
BlockItemStateProperties.EMPTY
.with(STAGE, state.getValue(STAGE))
.with(SHOULD_GROW, false)
.with(STUNTED, state.getValue(STUNTED))
.with(STUNTED, false)
)
stack.set(
DataComponents.CUSTOM_MODEL_DATA,
@@ -248,9 +256,9 @@ class TypeGemClusterBlock(
}
override fun canSurvive(state: BlockState, level: LevelReader, pos: BlockPos): Boolean {
val supportPos = pos.relative(state.getValue(FACING).opposite)
val supportBlock = level.getBlockState(supportPos).block
return CobblemonBlocks.typeGemBlocks().containsValue(supportBlock) || (supportBlock == CobblemonBlocks.TYPE_GEM_CORE)
val direction = state.getValue(FACING)
val supportPos = pos.relative(direction.opposite)
return level.getBlockState(supportPos).isFaceSturdy(level, supportPos, direction)
}
override fun propagatesSkylightDown(state: BlockState, level: net.minecraft.world.level.BlockGetter, pos: BlockPos): Boolean = true
@@ -266,4 +274,23 @@ class TypeGemClusterBlock(
super.createBlockStateDefinition(builder)
builder.add(FACING, SHOULD_GROW, STAGE, STUNTED)
}
override fun getCloneItemStack(level: LevelReader, pos: BlockPos, state: BlockState): ItemStack {
val stack = super.getCloneItemStack(level, pos, state)
val itemPath = BuiltInRegistries.ITEM.getKey(stack.item).path
if (itemPath.endsWith("_gem_cluster")) {
stack.set(
DataComponents.BLOCK_STATE,
BlockItemStateProperties.EMPTY
.with(STAGE, state.getValue(STAGE))
.with(SHOULD_GROW, false)
.with(STUNTED, false)
)
stack.set(
DataComponents.CUSTOM_MODEL_DATA,
CustomModelData(state.getValue(STAGE))
)
}
return stack
}
}
@@ -10,7 +10,7 @@ package com.cobblemon.mod.common.block.entity
import com.cobblemon.mod.common.CobblemonBlockEntities
import com.cobblemon.mod.common.CobblemonItems
import com.cobblemon.mod.common.block.TMShelfBlock
import com.cobblemon.mod.common.block.DiscShelfBlock
import com.cobblemon.mod.common.item.interactive.TechnicalMachineItem
import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
@@ -36,7 +36,7 @@ import net.minecraft.world.level.gameevent.GameEvent
import java.util.OptionalInt
import kotlin.math.pow
class TMShelfBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(CobblemonBlockEntities.TM_SHELF, pos, state), WorldlyContainer {
class DiscShelfBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(CobblemonBlockEntities.DISC_SHELF, pos, state), WorldlyContainer {
val items: NonNullList<ItemStack> = NonNullList.withSize(14, ItemStack.EMPTY)
var lastInteractedSlot: Int = -1
private val accessibleSlots = IntArray(14) { it }
@@ -56,7 +56,9 @@ class TMShelfBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(Cobblem
}
items[slot] = stack.copyWithCount(1)
stack.shrink(1)
if (!player.isCreative) {
stack.shrink(1)
}
lastInteractedSlot = slot
updateBlockState(level, pos)
markUpdated()
@@ -81,8 +83,8 @@ class TMShelfBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(Cobblem
}
private fun updateBlockState(level: Level, pos: BlockPos) {
val newState = TMShelfBlock.SLOT_OCCUPIED_PROPERTIES.fold(blockState) { acc, prop ->
val index = TMShelfBlock.SLOT_OCCUPIED_PROPERTIES.indexOf(prop)
val newState = DiscShelfBlock.SLOT_OCCUPIED_PROPERTIES.fold(blockState) { acc, prop ->
val index = DiscShelfBlock.SLOT_OCCUPIED_PROPERTIES.indexOf(prop)
acc.setValue(prop, !items[index].isEmpty)
}
level.setBlock(pos, newState, 3)
@@ -91,7 +93,7 @@ class TMShelfBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(Cobblem
}
private fun getHitSlot(hit: BlockHitResult, state: BlockState): OptionalInt {
val facing = state.getValue(TMShelfBlock.FACING)
val facing = state.getValue(DiscShelfBlock.FACING)
if (hit.direction != facing) {
return OptionalInt.empty()
}
@@ -436,7 +436,7 @@ object CobblemonClient {
this.implementation.registerBlockEntityRenderer(CobblemonBlockEntities.LECTERN, ::LecternBlockEntityRenderer)
this.implementation.registerBlockEntityRenderer(CobblemonBlockEntities.CAMPFIRE, ::CampfireBlockEntityRenderer)
this.implementation.registerBlockEntityRenderer(CobblemonBlockEntities.POKE_SNACK, ::PokeSnackBlockEntityRenderer)
this.implementation.registerBlockEntityRenderer(CobblemonBlockEntities.TM_SHELF, ::TMShelfBlockEntityRenderer)
this.implementation.registerBlockEntityRenderer(CobblemonBlockEntities.DISC_SHELF, ::DiscShelfBlockEntityRenderer)
}
private fun registerEntityRenderers() {
@@ -8,7 +8,7 @@
package com.cobblemon.mod.common.client.render.block
import com.cobblemon.mod.common.block.entity.TMShelfBlockEntity
import com.cobblemon.mod.common.block.entity.DiscShelfBlockEntity
import com.cobblemon.mod.common.CobblemonItems
import com.cobblemon.mod.common.client.render.color.TechnicalMachineItemColorProvider
import com.cobblemon.mod.common.util.cobblemonResource
@@ -29,8 +29,8 @@ import net.minecraft.world.level.BlockAndTintGetter
import net.minecraft.world.level.block.HorizontalDirectionalBlock
import org.joml.Matrix4f
class TMShelfBlockEntityRenderer(ctx: BlockEntityRendererProvider.Context) :
BlockEntityRenderer<TMShelfBlockEntity> {
class DiscShelfBlockEntityRenderer(ctx: BlockEntityRendererProvider.Context) :
BlockEntityRenderer<DiscShelfBlockEntity> {
private val slotWidthPixels = 6
private val slotHeightPixels = 2
@@ -44,16 +44,16 @@ class TMShelfBlockEntityRenderer(ctx: BlockEntityRendererProvider.Context) :
private val tmOverlayDepthOffset = -0.0002f
private val slotBrightnessMultiplier = 0.65f
private val tmBaseTexture = cobblemonResource("textures/block/tm_shelf/technical_machine_base.png")
private val tmOverlayTexture = cobblemonResource("textures/block/tm_shelf/technical_machine_overlay.png")
private val tmBaseTexture = cobblemonResource("textures/block/disc_shelf/technical_machine_base.png")
private val tmOverlayTexture = cobblemonResource("textures/block/disc_shelf/technical_machine_overlay.png")
override fun render(
entity: TMShelfBlockEntity,
partialTicks: Float,
poseStack: PoseStack,
buffer: MultiBufferSource,
light: Int,
overlay: Int
entity: DiscShelfBlockEntity,
partialTicks: Float,
poseStack: PoseStack,
buffer: MultiBufferSource,
light: Int,
overlay: Int
) {
val facing = entity.blockState.getValue(HorizontalDirectionalBlock.FACING)
val rotation = when (facing) {
@@ -188,6 +188,6 @@ class TMShelfBlockEntityRenderer(ctx: BlockEntityRendererProvider.Context) :
private fun getItemTexture(itemStack: ItemStack): ResourceLocation {
val id = BuiltInRegistries.ITEM.getKey(itemStack.item)
return cobblemonResource("textures/block/tm_shelf/${id.path}.png")
return cobblemonResource("textures/block/disc_shelf/${id.path}.png")
}
}
@@ -25,7 +25,9 @@ import com.cobblemon.mod.common.api.events.battles.BattleVictoryEvent
import com.cobblemon.mod.common.api.events.pokemon.*
import com.cobblemon.mod.common.api.events.pokemon.evolution.EvolutionCompleteEvent
import com.cobblemon.mod.common.block.TumblestoneBlock
import com.cobblemon.mod.common.block.TypeGemClusterBlock
import com.cobblemon.mod.common.item.TumblestoneItem
import net.minecraft.world.item.BlockItem
import com.cobblemon.mod.common.platform.events.ServerPlayerEvent
import com.cobblemon.mod.common.api.storage.player.PlayerInstancedDataStoreTypes
import com.cobblemon.mod.common.platform.events.PlatformEvents
@@ -37,6 +39,7 @@ import java.util.*
object AdvancementHandler : EventHandler {
override fun registerListeners() {
PlatformEvents.RIGHT_CLICK_BLOCK.subscribe(Priority.LOWEST, ::onTumbleStonePlaced)
PlatformEvents.RIGHT_CLICK_BLOCK.subscribe(Priority.LOWEST, ::onTypeGemClusterPlaced)
POKEMON_CAPTURED.subscribe(Priority.LOWEST, ::onCapture)
BATTLE_VICTORY.subscribe(Priority.LOWEST, ::onWinBattle)
EVOLUTION_COMPLETE.subscribe(Priority.LOWEST, ::onEvolve)
@@ -195,6 +198,12 @@ object AdvancementHandler : EventHandler {
}
}
fun onTypeGemClusterPlaced(event: ServerPlayerEvent.RightClickBlock) {
val item = event.player.getItemInHand(event.hand).item as? BlockItem ?: return
val block = item.block as? TypeGemClusterBlock ?: return
CobblemonCriteria.PLANT_TYPE_GEM.trigger(event.player, PlantTypeGemContext(event.pos, block))
}
fun startRiding(event: RidePokemonEvent.Post) {
CobblemonCriteria.RIDING_STAT_BOOST.trigger(event.player, RidingStatBoostContext(event.pokemon))
}
@@ -0,0 +1,39 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.item
import com.cobblemon.mod.common.CobblemonSounds
import net.minecraft.sounds.SoundEvents
import net.minecraft.sounds.SoundSource
import net.minecraft.world.InteractionResult
import net.minecraft.world.item.Item
import net.minecraft.world.item.context.UseOnContext
import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.DirectionalBlock
class GemItem(settings: Properties, val block: Block): Item(settings) {
override fun useOn(context: UseOnContext): InteractionResult {
if (context.player == null) return InteractionResult.FAIL
val state = context.level.getBlockState(context.clickedPos)
val world = context.level
val pos = context.clickedPos
val direction = context.clickedFace
if (state.isFaceSturdy(world, pos, direction)) {
if (!world.getBlockState(pos.relative(direction)).isAir) return InteractionResult.FAIL
context.itemInHand.consume(1, context.player)
world.setBlockAndUpdate(pos.relative(direction), block.defaultBlockState().setValue(DirectionalBlock.FACING, direction))
world.playSound(null, pos, CobblemonSounds.TYPE_GEM_CLUSTER_SOUNDS.placeSound, SoundSource.BLOCKS)
return InteractionResult.SUCCESS
}
return InteractionResult.FAIL
}
}
@@ -12,9 +12,11 @@ import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.CobblemonItemComponents
import com.cobblemon.mod.common.CobblemonItems
import com.cobblemon.mod.common.api.riding.stats.RidingStat
import com.cobblemon.mod.common.block.TypeGemClusterBlock
import com.cobblemon.mod.common.item.AprijuiceItem
import com.cobblemon.mod.common.item.components.RideBoostsComponent
import com.cobblemon.mod.common.util.cobblemonResource
import net.minecraft.core.component.DataComponents
import net.minecraft.core.registries.BuiltInRegistries
import net.minecraft.network.chat.Component
import net.minecraft.resources.ResourceKey
@@ -23,8 +25,11 @@ import net.minecraft.world.item.CreativeModeTab
import net.minecraft.world.item.CreativeModeTab.DisplayItemsGenerator
import net.minecraft.world.item.CreativeModeTab.ItemDisplayParameters
import net.minecraft.world.item.CreativeModeTab.Output
import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Items
import net.minecraft.world.item.component.BlockItemStateProperties
import net.minecraft.world.item.component.CustomModelData
import net.minecraft.world.level.ItemLike
@Suppress("unused", "UNUSED_PARAMETER")
@@ -240,16 +245,76 @@ object CobblemonItemGroups {
entries.accept(CobblemonItems.DARK_GEM)
entries.accept(CobblemonItems.STEEL_GEM)
entries.accept(CobblemonItems.FAIRY_GEM)
gemClusterEntries(entries, CobblemonItems.TYPE_GEM_CLUSTER_NORMAL)
gemClusterEntries(entries, CobblemonItems.TYPE_GEM_CLUSTER_FIRE)
gemClusterEntries(entries, CobblemonItems.TYPE_GEM_CLUSTER_WATER)
gemClusterEntries(entries, CobblemonItems.TYPE_GEM_CLUSTER_GRASS)
gemClusterEntries(entries, CobblemonItems.TYPE_GEM_CLUSTER_ELECTRIC)
gemClusterEntries(entries, CobblemonItems.TYPE_GEM_CLUSTER_ICE)
gemClusterEntries(entries, CobblemonItems.TYPE_GEM_CLUSTER_FIGHTING)
gemClusterEntries(entries, CobblemonItems.TYPE_GEM_CLUSTER_POISON)
gemClusterEntries(entries, CobblemonItems.TYPE_GEM_CLUSTER_GROUND)
gemClusterEntries(entries, CobblemonItems.TYPE_GEM_CLUSTER_FLYING)
gemClusterEntries(entries, CobblemonItems.TYPE_GEM_CLUSTER_PSYCHIC)
gemClusterEntries(entries, CobblemonItems.TYPE_GEM_CLUSTER_BUG)
gemClusterEntries(entries, CobblemonItems.TYPE_GEM_CLUSTER_ROCK)
gemClusterEntries(entries, CobblemonItems.TYPE_GEM_CLUSTER_GHOST)
gemClusterEntries(entries, CobblemonItems.TYPE_GEM_CLUSTER_DRAGON)
gemClusterEntries(entries, CobblemonItems.TYPE_GEM_CLUSTER_DARK)
gemClusterEntries(entries, CobblemonItems.TYPE_GEM_CLUSTER_STEEL)
gemClusterEntries(entries, CobblemonItems.TYPE_GEM_CLUSTER_FAIRY)
entries.accept(CobblemonItems.TYPE_GEM_CORE)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_NORMAL)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_FIRE)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_WATER)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_ELECTRIC)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_GRASS)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_ICE)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_FIGHTING)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_POISON)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_GROUND)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_FLYING)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_PSYCHIC)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_BUG)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_ROCK)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_GHOST)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_DRAGON)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_DARK)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_STEEL)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_FAIRY)
}
private fun gemClusterEntries(entries: Output, clusterItem: Item) {
for (i in TypeGemClusterBlock.STAGE.possibleValues) {
val stack = ItemStack(clusterItem)
stack.set(
DataComponents.BLOCK_STATE,
BlockItemStateProperties.EMPTY
.with(TypeGemClusterBlock.STAGE, i)
.with(TypeGemClusterBlock.SHOULD_GROW, false)
.with(TypeGemClusterBlock.STUNTED, false)
)
stack.set(
DataComponents.CUSTOM_MODEL_DATA,
CustomModelData(i)
)
entries.accept(stack)
}
}
private fun blockEntries(displayContext: ItemDisplayParameters, entries: Output) {
entries.accept(CobblemonItems.RESTORATION_TANK)
entries.accept(CobblemonItems.FOSSIL_ANALYZER)
entries.accept(CobblemonItems.MONITOR)
entries.accept(CobblemonItems.DAMAGED_MONITOR)
entries.accept(CobblemonItems.PC)
entries.accept(CobblemonItems.HEALING_MACHINE)
entries.accept(CobblemonItems.PASTURE)
entries.accept(CobblemonItems.TM_MACHINE)
entries.accept(CobblemonItems.DISC_SHELF)
entries.accept(CobblemonItems.HABITAT_BLOCK)
entries.accept(CobblemonItems.GILDED_CHEST)
entries.accept(CobblemonItems.YELLOW_GILDED_CHEST)
@@ -312,8 +377,8 @@ object CobblemonItemGroups {
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_NORMAL)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_FIRE)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_WATER)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_ELECTRIC)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_GRASS)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_ELECTRIC)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_ICE)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_FIGHTING)
entries.accept(CobblemonItems.TYPE_GEM_BLOCK_POISON)
@@ -392,7 +457,6 @@ object CobblemonItemGroups {
entries.accept(CobblemonItems.WATER_STONE_ORE)
entries.accept(CobblemonItems.DEEPSLATE_WATER_STONE_ORE)
entries.accept(CobblemonItems.HABITAT_BLOCK)
entries.accept(CobblemonItems.DAWN_STONE_BLOCK)
entries.accept(CobblemonItems.DUSK_STONE_BLOCK)
entries.accept(CobblemonItems.FIRE_STONE_BLOCK)
@@ -890,6 +954,7 @@ object CobblemonItemGroups {
private fun opBlocksInjections(injector: Injector) {
injector.putLast(CobblemonItems.NPC_EDITOR)
injector.putLast(CobblemonItems.HABITAT_BLOCK)
}
/**
@@ -0,0 +1,8 @@
{
"variants": {
"facing=north": { "model": "cobblemon:block/disc_shelf" },
"facing=south": { "model": "cobblemon:block/disc_shelf", "y": 180 },
"facing=west": { "model": "cobblemon:block/disc_shelf", "y": 270 },
"facing=east": { "model": "cobblemon:block/disc_shelf", "y": 90 }
}
}
@@ -1,8 +0,0 @@
{
"variants": {
"facing=north": { "model": "cobblemon:block/tm_shelf" },
"facing=south": { "model": "cobblemon:block/tm_shelf", "y": 180 },
"facing=west": { "model": "cobblemon:block/tm_shelf", "y": 270 },
"facing=east": { "model": "cobblemon:block/tm_shelf", "y": 90 }
}
}
@@ -992,6 +992,7 @@
"block.cobblemon.campfire_pot_white": "White Campfire Pot",
"block.cobblemon.campfire_pot_yellow": "Yellow Campfire Pot",
"block.cobblemon.tm_machine": "TM Machine",
"block.cobblemon.disc_shelf": "Disc Shelf",
"block.cobblemon.hearty_grain_bale": "Hearty Grain Bale",
"block.cobblemon.tatami_block": "Tatami",
"block.cobblemon.tatami_mat": "Tatami Mat",
@@ -2783,129 +2784,127 @@
"cobblemon.config.ui.starters": "Starters",
"advancements.cobblemon.root": "The World of Cobblemon!",
"advancements.cobblemon.root.description": "Choose a starter Pokémon and set out on a new adventure",
"advancements.cobblemon.obtain_leftovers": "Reduce, Reuse, Recycle!",
"advancements.cobblemon.obtain_leftovers.description": "Keep the leftovers after eating an apple",
"advancements.cobblemon.any_plant": "Mother Nature's Bounty",
"advancements.cobblemon.any_plant.description": "Hope you've got a green thumb!",
"advancements.cobblemon.root.description": "Choose a starter Pokémon and set out on a new adventure",
"advancements.cobblemon.root_agriculture": "Mother Nature's Bounty",
"advancements.cobblemon.root_agriculture.description": "Hope you've got a green thumb!",
"advancements.cobblemon.harvest_apricorn": "Is it a Fruit or is it a Nut?",
"advancements.cobblemon.harvest_apricorn.description": "Right-click to harvest a fully-grown Apricorn",
"advancements.cobblemon.harvest_apricorn_seed": "Doing my Part",
"advancements.cobblemon.harvest_apricorn_seed.description": "Occasionally, Apricorns will drop an Apricorn seed. Use one to plant a new tree",
"advancements.cobblemon.bone_meal_apricorn": "No need for a Watering Can",
"advancements.cobblemon.bone_meal_apricorn.description": "Use bone meal to accelerate Apricorn growth",
"advancements.cobblemon.rainbow_apricorns": "Reapriforestation",
"advancements.cobblemon.rainbow_apricorns.description": "Plant an Apricorn tree of every kind",
"advancements.cobblemon.craft_poke_ball": "The First of Many",
"advancements.cobblemon.craft_poke_ball.description": "Using four of the same Apricorn and a Copper Ingot, craft your first Poké Ball",
"advancements.cobblemon.craft_base_balls": "A Full Palette",
"advancements.cobblemon.craft_base_balls.description": "Craft all seven of the basic colored Poké Balls",
"advancements.cobblemon.craft_apricorn_balls": "Kurt would be Proud",
"advancements.cobblemon.craft_apricorn_balls.description": "Craft all seven of the original Apricorn Balls",
"advancements.cobblemon.craft_all_balls": "Poké Ball Maniac",
"advancements.cobblemon.craft_all_balls.description": "Craft one of every Poké Ball in the game",
"advancements.cobblemon.first_catch": "A New Friend!",
"advancements.cobblemon.first_catch.description": "Use a Poké Ball and catch your first Pokémon",
"advancements.cobblemon.full_party": "Full House",
"advancements.cobblemon.full_party.description": "Catch more Pokémon and make a full party of 6",
"advancements.cobblemon.first_evolution": "Hard Work and Dedication",
"advancements.cobblemon.first_evolution.description": "Meet a Pokémon's evolution requirements and evolve them from the party menu",
"advancements.cobblemon.first_battle_victory": "Where's my Victory Music?",
"advancements.cobblemon.first_battle_victory.description": "Go head-to-head against another trainer and come out on top",
"advancements.cobblemon.first_shiny_catch": "Lucky Color",
"advancements.cobblemon.first_shiny_catch.description": "Catch your first Shiny Pokémon",
"advancements.cobblemon.healing_machine": "Healing Power",
"advancements.cobblemon.healing_machine.description": "Wait long enough for a Healing Machine to charge, and then heal your party",
"advancements.cobblemon.obtain_leek": "There's a Leek in the Boat!",
"advancements.cobblemon.obtain_leek.description": "Obtain a Medicinal Leek, a wild crop that grows in freshwater",
"advancements.cobblemon.medicinal_brew": "Local Apothecary",
"advancements.cobblemon.medicinal_brew.description": "Brew a Medicinal Leek to create the basis for your healing needs",
"advancements.cobblemon.brew_potion": "You Cannot Handle My Potions",
"advancements.cobblemon.brew_potion.description": "Brew an Oran Berry into Medicinal Brew to create a Potion",
"advancements.cobblemon.brew_full_restore": "Champion's Choice",
"advancements.cobblemon.brew_full_restore.description": "Follow the brewing tree and create a Full Restore with a Lum Berry and Max Potion",
"advancements.cobblemon.brew_all": "Double Double Toil & Trouble",
"advancements.cobblemon.brew_all.description": "Brew every possible item using Medicinal Brew",
"advancements.cobblemon.obtain_mint": "Minty Fresh",
"advancements.cobblemon.obtain_mint.description": "Obtain a Nature Mint, a wild crop that grows high in the mountains",
"advancements.cobblemon.obtain_all_mints": "A Big Commit-mint",
"advancements.cobblemon.obtain_all_mints.description": "Obtain all 6 colors of Nature Mint and gain access to a full array of natures",
"advancements.cobblemon.plant_all_apricorn_sprouts": "Reapriforestation",
"advancements.cobblemon.plant_all_apricorn_sprouts.description": "Plant an Apricorn Sprout of every color",
"advancements.cobblemon.obtain_revival_herb": "Herb your Enthusiasm",
"advancements.cobblemon.obtain_revival_herb.description": "Obtain a Revival Herb, a wild crop that grows in lush caves",
"advancements.cobblemon.use_revive": "Live to fight another day!",
"advancements.cobblemon.use_revive.description": "Use a Revive, Max Revive, or Revival Herb to revive a fainted Pokémon",
"advancements.cobblemon.obtain_big_root": "The Root of Basic Healing",
"advancements.cobblemon.obtain_big_root.description": "Obtain a Big Root, a wild crop that grows in dirt caves close to the surface",
"advancements.cobblemon.craft_remedy": "Basic Healing",
"advancements.cobblemon.craft_remedy.description": "Craft a Remedy, an early-game healing item that can be crafted into stronger forms",
"advancements.cobblemon.use_healing_machine": "Healing Power",
"advancements.cobblemon.use_healing_machine.description": "Wait long enough for a Healing Machine to charge, and then heal your party",
"advancements.cobblemon.obtain_berry": "Very Berry",
"advancements.cobblemon.obtain_berry.description": "Obtain any Berry, wild crops that grow on the surface and have many uses",
"advancements.cobblemon.obtain_mutated_berry": "An Unexpected Result",
"advancements.cobblemon.obtain_mutated_berry.description": "Plant Berry Trees of different types next to each other and witness Mutation in action",
"advancements.cobblemon.obtain_all_berries": "Oops, all Berries!",
"advancements.cobblemon.obtain_all_berries.description": "Obtain one of every Berry in Cobblemon",
"advancements.cobblemon.use_pasture": "Free Roam: Enabled",
"advancements.cobblemon.use_pasture.description": "Craft a Pasture Block and allow your friends to wander",
"advancements.cobblemon.catch_all_vivillon": "Aspiring Vivillionaire",
"advancements.cobblemon.catch_all_vivillon.description": "Obtain all patterns of Vivillon...",
"advancements.cobblemon.catch_all_vivillon_but_actually": "True Vivillionaire",
"advancements.cobblemon.catch_all_vivillon_but_actually.description": "Obtain the rest",
"advancements.cobblemon.evolve_veevees": "Valued Veevees",
"advancements.cobblemon.evolve_veevees.description": "Evolve Eevee into 8 different forms",
"advancements.cobblemon.evolve_shedinja": "Ghost in the Shell",
"advancements.cobblemon.evolve_shedinja.description": "Have an extra Poké Ball in your inventory and obtain a Shedinja",
"advancements.cobblemon.trade_pokemon": "Take Good Care!",
"advancements.cobblemon.trade_pokemon.description": "Trade a Pokémon with another Trainer",
"advancements.cobblemon.trade_shelmet_karrablast": "I'd like to report a theft!",
"advancements.cobblemon.trade_shelmet_karrablast.description": "Trade a Shelmet and Karrablast",
"advancements.cobblemon.max_level_baby": "Darwin? Who's That?",
"advancements.cobblemon.max_level_baby.description": "Take a first-stage Pokémon capable of evolution up to level 100",
"advancements.cobblemon.use_candy": "Sweet Tooth",
"advancements.cobblemon.use_candy.description": "Use any XP Candy on a Pokémon",
"advancements.cobblemon.own_zangoose_seviper": "Begrudging Partners",
"advancements.cobblemon.own_zangoose_seviper.description": "Have a Zangoose and Seviper in your party at the same time",
"advancements.cobblemon.obtain_fossil": "Consult the Fossil",
"advancements.cobblemon.obtain_fossil.description": "Discover a fossil buried deep in the time-worn ground",
"advancements.cobblemon.evolve_gholdengo_netherite": "Cover thee in Debris",
"advancements.cobblemon.evolve_gholdengo_netherite.description": "Evolve a Gimmighoul into a fully netherite-coated Gholdengo",
"advancements.cobblemon.resurrect_pokemon": "Life Finds a Way",
"advancements.cobblemon.resurrect_pokemon.description": "Obtain a Fossil Pokémon from a Resurrection Machine",
"advancements.cobblemon.resurrect_galar_fossil": "Didn't Stop to Think",
"advancements.cobblemon.resurrect_galar_fossil.description": "Resurrect a Fossil Pokémon made from a Fossilized Bird or Fish and Fossilized Drake or Dino",
"advancements.cobblemon.obtain_tumblestone": "The Rolling Stone",
"advancements.cobblemon.obtain_tumblestone.description": "Safely extract a Tumblestone from suspicious sand or gravel",
"advancements.cobblemon.grow_tumblestone": "Tumbling Down",
"advancements.cobblemon.grow_tumblestone.description": "Place a Tumblestone near Lava or Magma to grow it over time",
"advancements.cobblemon.craft_ancient_balls": "A True Antiquarian",
"advancements.cobblemon.craft_ancient_balls.description": "Utilize Tumblestones to craft all fifteen Ancient Balls",
"advancements.cobblemon.craft_rod": "New Angles for Angling",
"advancements.cobblemon.craft_rod.description": "Unlock new ways to fish by creating a Poké Rod at a Smithing Table",
"advancements.cobblemon.use_all_berry_bait": "Some Berry Good Lures",
"advancements.cobblemon.use_all_berry_bait.description": "Reel in a Pokémon with one of each of the different berries attached to your Poké Rod",
"advancements.cobblemon.craft_master_rod": "This will affect the Whiscash Population",
"advancements.cobblemon.craft_master_rod.description": "Craft a Poké Rod using a Master Ball",
"advancements.cobblemon.craft_pokedex": "Researcher Recruit",
"advancements.cobblemon.craft_pokedex.description": "Craft a Pokédex out of Apricorns, Iron, Copper, and any glowing powder",
"advancements.cobblemon.ride_pokemon": "Pokémon Jockey!",
"advancements.cobblemon.ride_pokemon.description": "Ride a Pokémon for the first time",
"advancements.cobblemon.use_mint": "Not a big Commit-mint",
"advancements.cobblemon.use_mint.description": "Change a Pokémon's stat alignment with a nature mint",
"advancements.cobblemon.place_campfire_pot": "We Need To Cook",
"advancements.cobblemon.place_campfire_pot.description": "Place down a Campfire Pot on a lit Campfire",
"advancements.cobblemon.brew_medicinal_brew": "Local Apothecary",
"advancements.cobblemon.brew_medicinal_brew.description": "Brew a Medicinal Leek to create the basis for your pharmaceutical needs",
"advancements.cobblemon.brew_potion": "You Cannot Handle My Potions",
"advancements.cobblemon.brew_potion.description": "Brew an Oran Berry into Medicinal Brew to create a Potion",
"advancements.cobblemon.brew_full_restore": "Champion's Choice",
"advancements.cobblemon.brew_full_restore.description": "Follow the brewing tree and create a Full Restore with a Lum Berry and Max Potion",
"advancements.cobblemon.brew_all_potions": "Double Double Toil & Trouble",
"advancements.cobblemon.brew_all_potions.description": "Create every possible item using Medicinal Brew",
"advancements.cobblemon.use_exp_candy": "Sweet Tooth",
"advancements.cobblemon.use_exp_candy.description": "Use any XP Candy on a Pokémon",
"advancements.cobblemon.use_iv_candy": "Souped-Up Stats",
"advancements.cobblemon.use_iv_candy.description": "Use any candy that alters the potential of Individual Values on a Pokémon",
"advancements.cobblemon.cook_all_regional_delicacies": "Culinary World Tour",
"advancements.cobblemon.cook_all_regional_delicacies.description": "Cook up every Regional Delicacy",
"advancements.cobblemon.cook_all_ev_mochi": "Mochi Mochi!",
"advancements.cobblemon.cook_all_ev_mochi.description": "Cook every flavor of mochi, a tasty snack that can manipulate a Pokémon's Effort Values",
"advancements.cobblemon.cook_snack": "A Luring Aroma",
"advancements.cobblemon.cook_snack.description": "Bake a Poké Snack, a delicious cake that can attract certain Pokémon based on the berries used",
"advancements.cobblemon.use_poke_bait": "That's Bait",
"advancements.cobblemon.use_poke_bait.description": "Prepare a custom Poké Bait in a Campfire Pot and use it to reel in a Pokémon",
"advancements.cobblemon.max_ride_stats": "Star Pokéathlete",
"advancements.cobblemon.max_ride_stats.description": "Max out all five of a Pokémon's ride stats by feeding it flavored Aprijuice\nDifferent flavor profiles raise different stats",
"advancements.cobblemon.cook_poke_snack": "A Luring Aroma",
"advancements.cobblemon.cook_poke_snack.description": "Bake a Poké Snack, a delicious cake that can attract certain Pokémon based on the berries used",
"advancements.cobblemon.root_battle": "Where's my Victory Music?",
"advancements.cobblemon.root_battle.description": "Go head-to-head against another trainer and come out on top",
"advancements.cobblemon.root_catching": "The First of Many",
"advancements.cobblemon.root_catching.description": "Using four of the same Apricorn and a Copper Ingot, craft your first Poké Ball",
"advancements.cobblemon.craft_basic_balls": "A Full Palette",
"advancements.cobblemon.craft_basic_balls.description": "Craft all seven of the basic colored Poké Balls",
"advancements.cobblemon.craft_apricorn_balls": "Kurt would be Proud",
"advancements.cobblemon.craft_apricorn_balls.description": "Craft all seven of the original Apricorn Balls",
"advancements.cobblemon.craft_ancient_balls": "A True Antiquarian",
"advancements.cobblemon.craft_ancient_balls.description": "Utilize Tumblestones to craft all fifteen Ancient Balls",
"advancements.cobblemon.craft_all_balls": "Poké Ball Maniac",
"advancements.cobblemon.craft_all_balls.description": "Craft one of every Poké Ball in the game",
"advancements.cobblemon.first_catch": "A New Friend!",
"advancements.cobblemon.first_catch.description": "Use a Poké Ball and catch your first Pokémon",
"advancements.cobblemon.first_shiny_catch": "Lucky Color",
"advancements.cobblemon.first_shiny_catch.description": "Catch your first Shiny Pokémon",
"advancements.cobblemon.first_alpha_catch": "Follow the Leader",
"advancements.cobblemon.first_alpha_catch.description": "Catch an Alpha Pokémon",
"advancements.cobblemon.catch_alpha_wailord": "Call me Ishmael!",
"advancements.cobblemon.catch_alpha_wailord.description": "Reel in an Alpha Wailord",
"advancements.cobblemon.full_party": "Full House",
"advancements.cobblemon.full_party.description": "Catch more Pokémon and make a full party of 6",
"advancements.cobblemon.use_pasture": "Free Roam: Enabled",
"advancements.cobblemon.use_pasture.description": "Craft a Pasture Block and allow your friends to wander",
"advancements.cobblemon.interact_with_pokemon": "Home on the Range",
"advancements.cobblemon.interact_with_pokemon.description": "Use one of your many tools to procure resources from your Pokémon",
"advancements.cobblemon.ride_pokemon": "Pokémon Jockey!",
"advancements.cobblemon.ride_pokemon.description": "Ride a Pokémon for the first time",
"advancements.cobblemon.max_ride_stats": "Star Pokéathlete",
"advancements.cobblemon.max_ride_stats.description": "Max out all five of a Pokémon's ride stats by feeding it flavored Aprijuice\nDifferent flavor profiles raise different stats",
"advancements.cobblemon.first_evolution": "Hard Work and Dedication",
"advancements.cobblemon.first_evolution.description": "Meet a Pokémon's evolution requirements and evolve them from the party menu",
"advancements.cobblemon.max_level_baby": "Darwin? Who's That?",
"advancements.cobblemon.max_level_baby.description": "Take a first-stage Pokémon capable of evolution up to level 100",
"advancements.cobblemon.evolve_shedinja": "Ghost in the Shell",
"advancements.cobblemon.evolve_shedinja.description": "Have an extra Poké Ball in your inventory and obtain a Shedinja",
"advancements.cobblemon.evolve_gholdengo_netherite": "Cover thee in Debris",
"advancements.cobblemon.evolve_gholdengo_netherite.description": "Evolve a Gimmighoul into a fully netherite-coated Gholdengo",
"advancements.cobblemon.trade_pokemon": "Take Good Care!",
"advancements.cobblemon.trade_pokemon.description": "Trade a Pokémon with another Trainer",
"advancements.cobblemon.trade_shelmet_karrablast": "I'd like to report a theft!",
"advancements.cobblemon.trade_shelmet_karrablast.description": "Trade a Shelmet and Karrablast",
"advancements.cobblemon.slather_saccharine": "Just a Smackerel",
"advancements.cobblemon.slather_saccharine.description": "Smear a bottle of honey on the log of a Saccharine tree and entice certain Pokémon to appear",
"advancements.cobblemon.craft_rod": "New Angles for Angling",
"advancements.cobblemon.craft_rod.description": "Unlock new ways to fish by creating a Poké Rod at a Smithing Table",
"advancements.cobblemon.craft_master_rod": "This will affect the Whiscash Population",
"advancements.cobblemon.craft_master_rod.description": "Craft a Poké Rod using a Master Ball",
"advancements.cobblemon.use_poke_bait": "That's Bait",
"advancements.cobblemon.use_poke_bait.description": "Prepare a custom Poké Bait in a Campfire Pot and use it to reel in a Pokémon",
"advancements.cobblemon.craft_pokedex": "Researcher Recruit",
"advancements.cobblemon.craft_pokedex.description": "Craft a Pokédex out of Apricorns, Iron, Copper, and any glowing powder",
"advancements.cobblemon.collect_all_vivillon": "Aspiring Vivillionaire",
"advancements.cobblemon.collect_all_vivillon.description": "Obtain all patterns of Vivillon...",
"advancements.cobblemon.collect_all_vivillon_full": "True Vivillionaire",
"advancements.cobblemon.collect_all_vivillon_full.description": "...and obtain the rest",
"advancements.cobblemon.root_geological": "Interesting Stones",
"advancements.cobblemon.root_geological.description": "You can find all sorts of things buried in the underground",
"advancements.cobblemon.obtain_fossil": "Consult the Fossil",
"advancements.cobblemon.obtain_fossil.description": "Discover a fossil buried deep in the time-worn ground",
"advancements.cobblemon.resurrect_pokemon": "Life Finds a Way",
"advancements.cobblemon.resurrect_pokemon.description": "Obtain a Fossil Pokémon from a Resurrection Machine",
"advancements.cobblemon.resurrect_galar_fossil": "Didn't Stop to Think",
"advancements.cobblemon.resurrect_galar_fossil.description": "Resurrect a Fossil Pokémon made from a Fossilized Bird or Fish and Fossilized Drake or Dino",
"advancements.cobblemon.obtain_tumblestone": "The Rolling Stone",
"advancements.cobblemon.obtain_tumblestone.description": "Safely extract a Tumblestone from suspicious sand or gravel",
"advancements.cobblemon.plant_tumblestone": "Tumbling Down",
"advancements.cobblemon.plant_tumblestone.description": "Place a Tumblestone near Lava or Magma to grow it over time",
"advancements.cobblemon.plant_type_gem": "They're Minerals!",
"advancements.cobblemon.plant_type_gem.description": "Use a Deepslate Crystal Core's energy to grow a Type Gem",
"advancements.cobblemon.craft_tm": "Show Me Your Moves",
"advancements.cobblemon.craft_tm.description": "Craft a TM at a TM Machine",
"advancements.cobblemon.obtain_ancient_tm": "Records of the Past",
"advancements.cobblemon.obtain_ancient_tm.description": "Collect a powerful, ancient technique, either from ruins or an alpha",
"advancements.cobblemon.register_all_tms": "Collector's Discography",
"advancements.cobblemon.register_all_tms.description": "Register all possible moves to the TM Machine",
"advancements.cobblemon.construct_note_block_sequencer": "The Power of Science is Amazing",
"advancements.cobblemon.construct_note_block_sequencer.description": "Create an audio sequencer out of a Note Block and a Disc Shelf",
"advancements.cobblemon.download_porygon": "Technical Difficulties",
"advancements.cobblemon.download_porygon.description": "You wouldn't download a Porygon",
"cobblemon.battle.crash": "A battle error has occurred. If playing single-player, report this to the mod team. Otherwise, report this to the servers administrator.",
"cobblemon.battle.damage_dealt": "%1$s took %2$s damage!",
@@ -3,10 +3,10 @@
"parent": "block/block",
"ambientocclusion": false,
"textures": {
"0": "cobblemon:block/tm_shelf_front",
"1": "cobblemon:block/tm_shelf_side",
"2": "cobblemon:block/tm_shelf_top",
"particle": "cobblemon:block/tm_shelf_side"
"0": "cobblemon:block/functional/disc_shelf_front",
"1": "cobblemon:block/functional/disc_shelf_side",
"2": "cobblemon:block/functional/disc_shelf_top",
"particle": "cobblemon:block/functional/disc_shelf_side"
},
"elements": [
{
@@ -1,6 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "cobblemon:block/type_gems/deepslate_core"
"all": "cobblemon:block/type_gems/deepslate_crystal_core"
}
}
@@ -2,6 +2,6 @@
"parent": "minecraft:block/cross", "ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_large_bug"
"cross": "cobblemon:block/type_gems/large_bug_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_large_dark"
"cross": "cobblemon:block/type_gems/large_dark_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_large_dragon"
"cross": "cobblemon:block/type_gems/large_dragon_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_large_electric"
"cross": "cobblemon:block/type_gems/large_electric_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_large_fairy"
"cross": "cobblemon:block/type_gems/large_fairy_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_large_fighting"
"cross": "cobblemon:block/type_gems/large_fighting_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_large_fire"
"cross": "cobblemon:block/type_gems/large_fire_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_large_flying"
"cross": "cobblemon:block/type_gems/large_flying_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_large_ghost"
"cross": "cobblemon:block/type_gems/large_ghost_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_large_grass"
"cross": "cobblemon:block/type_gems/large_grass_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_large_ground"
"cross": "cobblemon:block/type_gems/large_ground_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_large_ice"
"cross": "cobblemon:block/type_gems/large_ice_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_large_normal"
"cross": "cobblemon:block/type_gems/large_normal_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_large_poison"
"cross": "cobblemon:block/type_gems/large_poison_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_large_psychic"
"cross": "cobblemon:block/type_gems/large_psychic_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_large_rock"
"cross": "cobblemon:block/type_gems/large_rock_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_large_steel"
"cross": "cobblemon:block/type_gems/large_steel_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_large_water"
"cross": "cobblemon:block/type_gems/large_water_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_medium_bug"
"cross": "cobblemon:block/type_gems/medium_bug_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_medium_dark"
"cross": "cobblemon:block/type_gems/medium_dark_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_medium_dragon"
"cross": "cobblemon:block/type_gems/medium_dragon_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_medium_electric"
"cross": "cobblemon:block/type_gems/medium_electric_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_medium_fairy"
"cross": "cobblemon:block/type_gems/medium_fairy_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_medium_fighting"
"cross": "cobblemon:block/type_gems/medium_fighting_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_medium_fire"
"cross": "cobblemon:block/type_gems/medium_fire_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_medium_flying"
"cross": "cobblemon:block/type_gems/medium_flying_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_medium_ghost"
"cross": "cobblemon:block/type_gems/medium_ghost_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_medium_grass"
"cross": "cobblemon:block/type_gems/medium_grass_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_medium_ground"
"cross": "cobblemon:block/type_gems/medium_ground_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_medium_ice"
"cross": "cobblemon:block/type_gems/medium_ice_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_medium_normal"
"cross": "cobblemon:block/type_gems/medium_normal_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_medium_poison"
"cross": "cobblemon:block/type_gems/medium_poison_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_medium_psychic"
"cross": "cobblemon:block/type_gems/medium_psychic_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_medium_rock"
"cross": "cobblemon:block/type_gems/medium_rock_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_medium_steel"
"cross": "cobblemon:block/type_gems/medium_steel_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_medium_water"
"cross": "cobblemon:block/type_gems/medium_water_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_small_bug"
"cross": "cobblemon:block/type_gems/small_bug_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_small_dark"
"cross": "cobblemon:block/type_gems/small_dark_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_small_dragon"
"cross": "cobblemon:block/type_gems/small_dragon_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_small_electric"
"cross": "cobblemon:block/type_gems/small_electric_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_small_fairy"
"cross": "cobblemon:block/type_gems/small_fairy_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_small_fighting"
"cross": "cobblemon:block/type_gems/small_fighting_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_small_fire"
"cross": "cobblemon:block/type_gems/small_fire_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_small_flying"
"cross": "cobblemon:block/type_gems/small_flying_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_small_ghost"
"cross": "cobblemon:block/type_gems/small_ghost_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_small_grass"
"cross": "cobblemon:block/type_gems/small_grass_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_small_ground"
"cross": "cobblemon:block/type_gems/small_ground_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_small_ice"
"cross": "cobblemon:block/type_gems/small_ice_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_small_normal"
"cross": "cobblemon:block/type_gems/small_normal_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_small_poison"
"cross": "cobblemon:block/type_gems/small_poison_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_small_psychic"
"cross": "cobblemon:block/type_gems/small_psychic_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_small_rock"
"cross": "cobblemon:block/type_gems/small_rock_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_small_steel"
"cross": "cobblemon:block/type_gems/small_steel_gem_bud"
}
}
@@ -3,6 +3,6 @@
"ambientocclusion": false,
"gui_light": "front",
"textures": {
"cross": "cobblemon:block/type_gems/type_gem_bud_small_water"
"cross": "cobblemon:block/type_gems/small_water_gem_bud"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "cobblemon:item/advancements/mark_alpha"
}
}
@@ -2,5 +2,10 @@
"parent": "minecraft:item/generated",
"textures": {
"layer0": "cobblemon:block/tumblestone/black_tumblestone_cluster"
},
"display": {
"head": {
"translation": [ 0, 14, -5 ]
}
}
}
@@ -3,24 +3,35 @@
"textures": {
"layer0": "cobblemon:block/type_gems/bug_gem_cluster"
},
"display": {
"head": {
"translation": [ 0, 14, -5 ]
}
},
"overrides": [
{
"predicate": {
"custom_model_data": 0
},
"model": "cobblemon:item/type_gem_bud_small_bug"
"model": "cobblemon:item/small_bug_gem_bud"
},
{
"predicate": {
"custom_model_data": 1
},
"model": "cobblemon:item/type_gem_bud_medium_bug"
"model": "cobblemon:item/medium_bug_gem_bud"
},
{
"predicate": {
"custom_model_data": 2
},
"model": "cobblemon:item/type_gem_bud_large_bug"
"model": "cobblemon:item/large_bug_gem_bud"
},
{
"predicate": {
"custom_model_data": 3
},
"model": "cobblemon:item/bug_gem_cluster"
}
]
}
@@ -3,24 +3,35 @@
"textures": {
"layer0": "cobblemon:block/type_gems/dark_gem_cluster"
},
"display": {
"head": {
"translation": [ 0, 14, -5 ]
}
},
"overrides": [
{
"predicate": {
"custom_model_data": 0
},
"model": "cobblemon:item/type_gem_bud_small_dark"
"model": "cobblemon:item/small_dark_gem_bud"
},
{
"predicate": {
"custom_model_data": 1
},
"model": "cobblemon:item/type_gem_bud_medium_dark"
"model": "cobblemon:item/medium_dark_gem_bud"
},
{
"predicate": {
"custom_model_data": 2
},
"model": "cobblemon:item/type_gem_bud_large_dark"
"model": "cobblemon:item/large_dark_gem_bud"
},
{
"predicate": {
"custom_model_data": 3
},
"model": "cobblemon:item/dark_gem_cluster"
}
]
}
@@ -0,0 +1,3 @@
{
"parent": "cobblemon:block/disc_shelf"
}
@@ -3,24 +3,35 @@
"textures": {
"layer0": "cobblemon:block/type_gems/dragon_gem_cluster"
},
"display": {
"head": {
"translation": [ 0, 14, -5 ]
}
},
"overrides": [
{
"predicate": {
"custom_model_data": 0
},
"model": "cobblemon:item/type_gem_bud_small_dragon"
"model": "cobblemon:item/small_dragon_gem_bud"
},
{
"predicate": {
"custom_model_data": 1
},
"model": "cobblemon:item/type_gem_bud_medium_dragon"
"model": "cobblemon:item/medium_dragon_gem_bud"
},
{
"predicate": {
"custom_model_data": 2
},
"model": "cobblemon:item/type_gem_bud_large_dragon"
"model": "cobblemon:item/large_dragon_gem_bud"
},
{
"predicate": {
"custom_model_data": 3
},
"model": "cobblemon:item/dragon_gem_cluster"
}
]
}
@@ -3,24 +3,35 @@
"textures": {
"layer0": "cobblemon:block/type_gems/electric_gem_cluster"
},
"display": {
"head": {
"translation": [ 0, 14, -5 ]
}
},
"overrides": [
{
"predicate": {
"custom_model_data": 0
},
"model": "cobblemon:item/type_gem_bud_small_electric"
"model": "cobblemon:item/small_electric_gem_bud"
},
{
"predicate": {
"custom_model_data": 1
},
"model": "cobblemon:item/type_gem_bud_medium_electric"
"model": "cobblemon:item/medium_electric_gem_bud"
},
{
"predicate": {
"custom_model_data": 2
},
"model": "cobblemon:item/type_gem_bud_large_electric"
"model": "cobblemon:item/large_electric_gem_bud"
},
{
"predicate": {
"custom_model_data": 3
},
"model": "cobblemon:item/electric_gem_cluster"
}
]
}
@@ -3,24 +3,35 @@
"textures": {
"layer0": "cobblemon:block/type_gems/fairy_gem_cluster"
},
"display": {
"head": {
"translation": [ 0, 14, -5 ]
}
},
"overrides": [
{
"predicate": {
"custom_model_data": 0
},
"model": "cobblemon:item/type_gem_bud_small_fairy"
"model": "cobblemon:item/small_fairy_gem_bud"
},
{
"predicate": {
"custom_model_data": 1
},
"model": "cobblemon:item/type_gem_bud_medium_fairy"
"model": "cobblemon:item/medium_fairy_gem_bud"
},
{
"predicate": {
"custom_model_data": 2
},
"model": "cobblemon:item/type_gem_bud_large_fairy"
"model": "cobblemon:item/large_fairy_gem_bud"
},
{
"predicate": {
"custom_model_data": 3
},
"model": "cobblemon:item/fairy_gem_cluster"
}
]
}
@@ -3,24 +3,35 @@
"textures": {
"layer0": "cobblemon:block/type_gems/fighting_gem_cluster"
},
"display": {
"head": {
"translation": [ 0, 14, -5 ]
}
},
"overrides": [
{
"predicate": {
"custom_model_data": 0
},
"model": "cobblemon:item/type_gem_bud_small_fighting"
"model": "cobblemon:item/small_fighting_gem_bud"
},
{
"predicate": {
"custom_model_data": 1
},
"model": "cobblemon:item/type_gem_bud_medium_fighting"
"model": "cobblemon:item/medium_fighting_gem_bud"
},
{
"predicate": {
"custom_model_data": 2
},
"model": "cobblemon:item/type_gem_bud_large_fighting"
"model": "cobblemon:item/large_fighting_gem_bud"
},
{
"predicate": {
"custom_model_data": 3
},
"model": "cobblemon:item/fighting_gem_cluster"
}
]
}
@@ -3,24 +3,35 @@
"textures": {
"layer0": "cobblemon:block/type_gems/fire_gem_cluster"
},
"display": {
"head": {
"translation": [ 0, 14, -5 ]
}
},
"overrides": [
{
"predicate": {
"custom_model_data": 0
},
"model": "cobblemon:item/type_gem_bud_small_fire"
"model": "cobblemon:item/small_fire_gem_bud"
},
{
"predicate": {
"custom_model_data": 1
},
"model": "cobblemon:item/type_gem_bud_medium_fire"
"model": "cobblemon:item/medium_fire_gem_bud"
},
{
"predicate": {
"custom_model_data": 2
},
"model": "cobblemon:item/type_gem_bud_large_fire"
"model": "cobblemon:item/large_fire_gem_bud"
},
{
"predicate": {
"custom_model_data": 3
},
"model": "cobblemon:item/fire_gem_cluster"
}
]
}
@@ -3,24 +3,35 @@
"textures": {
"layer0": "cobblemon:block/type_gems/flying_gem_cluster"
},
"display": {
"head": {
"translation": [ 0, 14, -5 ]
}
},
"overrides": [
{
"predicate": {
"custom_model_data": 0
},
"model": "cobblemon:item/type_gem_bud_small_flying"
"model": "cobblemon:item/small_flying_gem_bud"
},
{
"predicate": {
"custom_model_data": 1
},
"model": "cobblemon:item/type_gem_bud_medium_flying"
"model": "cobblemon:item/medium_flying_gem_bud"
},
{
"predicate": {
"custom_model_data": 2
},
"model": "cobblemon:item/type_gem_bud_large_flying"
"model": "cobblemon:item/large_flying_gem_bud"
},
{
"predicate": {
"custom_model_data": 3
},
"model": "cobblemon:item/flying_gem_cluster"
}
]
}
@@ -3,24 +3,35 @@
"textures": {
"layer0": "cobblemon:block/type_gems/ghost_gem_cluster"
},
"display": {
"head": {
"translation": [ 0, 14, -5 ]
}
},
"overrides": [
{
"predicate": {
"custom_model_data": 0
},
"model": "cobblemon:item/type_gem_bud_small_ghost"
"model": "cobblemon:item/small_ghost_gem_bud"
},
{
"predicate": {
"custom_model_data": 1
},
"model": "cobblemon:item/type_gem_bud_medium_ghost"
"model": "cobblemon:item/medium_ghost_gem_bud"
},
{
"predicate": {
"custom_model_data": 2
},
"model": "cobblemon:item/type_gem_bud_large_ghost"
"model": "cobblemon:item/large_ghost_gem_bud"
},
{
"predicate": {
"custom_model_data": 3
},
"model": "cobblemon:item/ghost_gem_cluster"
}
]
}
@@ -3,24 +3,35 @@
"textures": {
"layer0": "cobblemon:block/type_gems/grass_gem_cluster"
},
"display": {
"head": {
"translation": [ 0, 14, -5 ]
}
},
"overrides": [
{
"predicate": {
"custom_model_data": 0
},
"model": "cobblemon:item/type_gem_bud_small_grass"
"model": "cobblemon:item/small_grass_gem_bud"
},
{
"predicate": {
"custom_model_data": 1
},
"model": "cobblemon:item/type_gem_bud_medium_grass"
"model": "cobblemon:item/medium_grass_gem_bud"
},
{
"predicate": {
"custom_model_data": 2
},
"model": "cobblemon:item/type_gem_bud_large_grass"
"model": "cobblemon:item/large_grass_gem_bud"
},
{
"predicate": {
"custom_model_data": 3
},
"model": "cobblemon:item/grass_gem_cluster"
}
]
}
@@ -3,24 +3,35 @@
"textures": {
"layer0": "cobblemon:block/type_gems/ground_gem_cluster"
},
"display": {
"head": {
"translation": [ 0, 14, -5 ]
}
},
"overrides": [
{
"predicate": {
"custom_model_data": 0
},
"model": "cobblemon:item/type_gem_bud_small_ground"
"model": "cobblemon:item/small_ground_gem_bud"
},
{
"predicate": {
"custom_model_data": 1
},
"model": "cobblemon:item/type_gem_bud_medium_ground"
"model": "cobblemon:item/medium_ground_gem_bud"
},
{
"predicate": {
"custom_model_data": 2
},
"model": "cobblemon:item/type_gem_bud_large_ground"
"model": "cobblemon:item/large_ground_gem_bud"
},
{
"predicate": {
"custom_model_data": 3
},
"model": "cobblemon:item/ground_gem_cluster"
}
]
}
@@ -3,24 +3,35 @@
"textures": {
"layer0": "cobblemon:block/type_gems/ice_gem_cluster"
},
"display": {
"head": {
"translation": [ 0, 14, -5 ]
}
},
"overrides": [
{
"predicate": {
"custom_model_data": 0
},
"model": "cobblemon:item/type_gem_bud_small_ice"
"model": "cobblemon:item/small_ice_gem_bud"
},
{
"predicate": {
"custom_model_data": 1
},
"model": "cobblemon:item/type_gem_bud_medium_ice"
"model": "cobblemon:item/medium_ice_gem_bud"
},
{
"predicate": {
"custom_model_data": 2
},
"model": "cobblemon:item/type_gem_bud_large_ice"
"model": "cobblemon:item/large_ice_gem_bud"
},
{
"predicate": {
"custom_model_data": 3
},
"model": "cobblemon:item/ice_gem_cluster"
}
]
}
@@ -1,6 +1,11 @@
{
"parent": "minecraft:item/generated",
"parent": "item/amethyst_bud",
"textures": {
"layer0": "cobblemon:block/tumblestone/large_budding_black_tumblestone"
},
"display": {
"fixed": {
"translation": [ 0, 4, 0 ]
}
}
}
@@ -1,6 +1,11 @@
{
"parent": "minecraft:item/generated",
"parent": "item/amethyst_bud",
"textures": {
"layer0": "cobblemon:block/tumblestone/large_budding_sky_tumblestone"
},
"display": {
"fixed": {
"translation": [ 0, 4, 0 ]
}
}
}
@@ -1,6 +1,11 @@
{
"parent": "minecraft:item/generated",
"parent": "item/amethyst_bud",
"textures": {
"layer0": "cobblemon:block/tumblestone/large_budding_tumblestone"
},
"display": {
"fixed": {
"translation": [ 0, 4, 0 ]
}
}
}
@@ -0,0 +1,11 @@
{
"parent": "item/amethyst_bud",
"textures": {
"layer0": "cobblemon:block/type_gems/large_bug_gem_bud"
},
"display": {
"fixed": {
"translation": [ 0, 4, 0 ]
}
}
}
@@ -0,0 +1,11 @@
{
"parent": "item/amethyst_bud",
"textures": {
"layer0": "cobblemon:block/type_gems/large_dark_gem_bud"
},
"display": {
"fixed": {
"translation": [ 0, 4, 0 ]
}
}
}
@@ -0,0 +1,11 @@
{
"parent": "item/amethyst_bud",
"textures": {
"layer0": "cobblemon:block/type_gems/large_dragon_gem_bud"
},
"display": {
"fixed": {
"translation": [ 0, 4, 0 ]
}
}
}
@@ -0,0 +1,11 @@
{
"parent": "item/amethyst_bud",
"textures": {
"layer0": "cobblemon:block/type_gems/large_electric_gem_bud"
},
"display": {
"fixed": {
"translation": [ 0, 4, 0 ]
}
}
}
@@ -0,0 +1,11 @@
{
"parent": "item/amethyst_bud",
"textures": {
"layer0": "cobblemon:block/type_gems/large_fairy_gem_bud"
},
"display": {
"fixed": {
"translation": [ 0, 4, 0 ]
}
}
}
@@ -0,0 +1,11 @@
{
"parent": "item/amethyst_bud",
"textures": {
"layer0": "cobblemon:block/type_gems/large_fighting_gem_bud"
},
"display": {
"fixed": {
"translation": [ 0, 4, 0 ]
}
}
}
@@ -0,0 +1,11 @@
{
"parent": "item/amethyst_bud",
"textures": {
"layer0": "cobblemon:block/type_gems/large_fire_gem_bud"
},
"display": {
"fixed": {
"translation": [ 0, 4, 0 ]
}
}
}
@@ -0,0 +1,11 @@
{
"parent": "item/amethyst_bud",
"textures": {
"layer0": "cobblemon:block/type_gems/large_flying_gem_bud"
},
"display": {
"fixed": {
"translation": [ 0, 4, 0 ]
}
}
}

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