mirror of
https://gitlab.com/cable-mc/cobblemon.git
synced 2026-10-28 21:08:53 -04:00
Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4980ffc151 | ||
|
|
fb7d2a96b3 | ||
|
|
f6d3071a44 | ||
|
|
73f27ec732 |
No files matched your search
+5
-18
@@ -1,28 +1,15 @@
|
||||
# Changelog
|
||||
## [1.8.5 (MONTH xth, 2026)](#1-8-5)
|
||||
## [1.8.x (MONTH xth, 2026)](#1-8-x)
|
||||
|
||||
### Additions
|
||||
|
||||
### Particles
|
||||
|
||||
### Cries added/updated for the following Pokémon
|
||||
|
||||
### Model updates for the following Pokémon
|
||||
|
||||
### Animation updates for the following Pokémon
|
||||
|
||||
### Changes
|
||||
|
||||
### Fixes
|
||||
|
||||
### Developer
|
||||
|
||||
### Molang & Datapacks
|
||||
- Added a `loot_table` drop entry type.
|
||||
- Accepts an `id` field, pointing to a vanilla loot table.
|
||||
- All base mod Pokémon have been moved to this new system.
|
||||
- Added the `cobblemon:biome` and `cobblemon:pokemon_properties` loot conditions.
|
||||
- `cobblemon:biome` returns true if the biome of death matches the `biome` field.
|
||||
- `cobblemon:pokemon_properties` returns true if the Pokémon matches the `properties` field.
|
||||
|
||||
### Localization
|
||||
### Particles
|
||||
|
||||
### Localization
|
||||
- Updated translations for:
|
||||
@@ -16,7 +16,6 @@ import com.cobblemon.mod.common.api.drop.CommandDropEntry
|
||||
import com.cobblemon.mod.common.api.drop.DropEntry
|
||||
import com.cobblemon.mod.common.api.drop.EvolutionItemDropEntry
|
||||
import com.cobblemon.mod.common.api.drop.ItemDropEntry
|
||||
import com.cobblemon.mod.common.api.drop.LootTableDropEntry
|
||||
import com.cobblemon.mod.common.api.events.CobblemonEvents
|
||||
import com.cobblemon.mod.common.api.events.CobblemonEvents.DATA_SYNCHRONIZED
|
||||
import com.cobblemon.mod.common.api.habitats.HabitatPools
|
||||
@@ -91,7 +90,6 @@ import com.cobblemon.mod.common.events.EntityCallbackHandler
|
||||
import com.cobblemon.mod.common.events.PokedexHandler
|
||||
import com.cobblemon.mod.common.events.ServerTickHandler
|
||||
import com.cobblemon.mod.common.events.StatHandler
|
||||
import com.cobblemon.mod.common.loot.CobblemonLootItemConditions
|
||||
import com.cobblemon.mod.common.net.messages.client.settings.ServerSettingsPacket
|
||||
import com.cobblemon.mod.common.permission.LaxPermissionValidator
|
||||
import com.cobblemon.mod.common.platform.events.PlatformEvents
|
||||
@@ -227,12 +225,10 @@ object Cobblemon {
|
||||
implementation.registerEntitySubPredicates()
|
||||
implementation.registerMobEffects()
|
||||
DispenserBehaviorRegistry.registerDispenserBehaviors()
|
||||
CobblemonLootItemConditions.touch()
|
||||
|
||||
DropEntry.register("command", CommandDropEntry::class.java)
|
||||
DropEntry.register("item", ItemDropEntry::class.java, isDefault = true)
|
||||
DropEntry.register("evolution", EvolutionItemDropEntry::class.java)
|
||||
DropEntry.register("loot_table", LootTableDropEntry::class.java)
|
||||
|
||||
ExperienceGroups.registerDefaults()
|
||||
CaptureCalculators.registerDefaults()
|
||||
|
||||
@@ -42,6 +42,10 @@ import com.cobblemon.mod.common.client.net.npc.OpenNPCEditorHandler
|
||||
import com.cobblemon.mod.common.client.net.orientation.ClientboundUpdateOrientationHandler
|
||||
import com.cobblemon.mod.common.client.net.pasture.ClosePastureHandler
|
||||
import com.cobblemon.mod.common.client.net.pasture.OpenPastureHandler
|
||||
import com.cobblemon.mod.common.client.net.pasture.UpdatePastureRangeHandler
|
||||
import com.cobblemon.mod.common.net.messages.client.pasture.UpdatePastureRangePacket
|
||||
import com.cobblemon.mod.common.net.messages.server.pasture.AdjustPastureRangePacket
|
||||
import com.cobblemon.mod.common.net.serverhandling.pasture.AdjustPastureRangeHandler
|
||||
import com.cobblemon.mod.common.client.net.pasture.PokemonPasturedHandler
|
||||
import com.cobblemon.mod.common.client.net.pasture.PokemonUnpasturedHandler
|
||||
import com.cobblemon.mod.common.client.net.pasture.UpdatePastureConflictFlagHandler
|
||||
@@ -473,6 +477,7 @@ object CobblemonNetwork {
|
||||
|
||||
// Pasture
|
||||
list.add(PacketRegisterInfo(OpenPasturePacket.ID, OpenPasturePacket::decode, OpenPastureHandler))
|
||||
list.add(PacketRegisterInfo(UpdatePastureRangePacket.ID, UpdatePastureRangePacket::decode, UpdatePastureRangeHandler))
|
||||
list.add(PacketRegisterInfo(ClosePasturePacket.ID, ClosePasturePacket::decode, ClosePastureHandler))
|
||||
list.add(PacketRegisterInfo(PokemonPasturedPacket.ID, PokemonPasturedPacket::decode, PokemonPasturedHandler))
|
||||
list.add(PacketRegisterInfo(PokemonUnpasturedPacket.ID, PokemonUnpasturedPacket::decode, PokemonUnpasturedHandler))
|
||||
@@ -591,6 +596,7 @@ object CobblemonNetwork {
|
||||
|
||||
// Pasture
|
||||
list.add(PacketRegisterInfo(PasturePokemonPacket.ID, PasturePokemonPacket::decode, PasturePokemonHandler))
|
||||
list.add(PacketRegisterInfo(AdjustPastureRangePacket.ID, AdjustPastureRangePacket::decode, AdjustPastureRangeHandler))
|
||||
list.add(PacketRegisterInfo(UnpasturePokemonPacket.ID, UnpasturePokemonPacket::decode, UnpasturePokemonHandler))
|
||||
list.add(PacketRegisterInfo(UnpastureAllPokemonPacket.ID, UnpastureAllPokemonPacket::decode, UnpastureAllPokemonHandler))
|
||||
list.add(PacketRegisterInfo(SetPastureConflictPacket.ID, SetPastureConflictPacket::decode, SetPastureConflictHandler))
|
||||
|
||||
+11
-2
@@ -15,11 +15,13 @@ import com.cobblemon.mod.common.api.ai.asVariables
|
||||
import com.cobblemon.mod.common.api.ai.config.task.WanderTaskConfig.Companion.WANDER
|
||||
import com.cobblemon.mod.common.api.molang.MoLangFunctions.asMostSpecificMoLangValue
|
||||
import com.cobblemon.mod.common.api.npc.configuration.MoLangConfigVariable
|
||||
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
|
||||
import com.cobblemon.mod.common.util.asExpression
|
||||
import com.cobblemon.mod.common.util.mainThreadRuntime
|
||||
import com.cobblemon.mod.common.util.resolveFloat
|
||||
import com.cobblemon.mod.common.util.withQueryValue
|
||||
import com.mojang.datafixers.util.Either
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.PathfinderMob
|
||||
import net.minecraft.world.entity.ai.behavior.BehaviorControl
|
||||
@@ -69,7 +71,14 @@ class AirWanderTaskConfig : SingleTaskConfig {
|
||||
|
||||
val rotVec = entity.getViewVector(0F)
|
||||
pathCooldown.setWithExpiry(true, 60L)
|
||||
val target = HoverRandomPos.getPos(entity, horizontalRange.resolveInt(runtime), verticalRange.resolveInt(runtime), rotVec.x, rotVec.y, 1.5707964f, minUpwardsMovement.resolveInt(runtime), minDownwardsMovement.resolveInt(runtime))
|
||||
val tethering = (entity as? PokemonEntity)?.tethering
|
||||
val horizontal = horizontalRange.resolveInt(runtime)
|
||||
val vertical = verticalRange.resolveInt(runtime)
|
||||
val minUpwards = minUpwardsMovement.resolveInt(runtime)
|
||||
val minDownwards = minDownwardsMovement.resolveInt(runtime)
|
||||
val target = (0 until 10).asSequence()
|
||||
.mapNotNull { HoverRandomPos.getPos(entity, horizontal, vertical, rotVec.x, rotVec.y, 1.5707964f, minUpwards, minDownwards) }
|
||||
.firstOrNull { tethering?.canRoamTo(BlockPos.containing(it)) != false }
|
||||
?: return@Trigger false
|
||||
walkTarget.set(WalkTarget(target, speedMultiplier.resolveFloat(runtime), 3))
|
||||
lookTarget.set(BlockPosTracker(target))
|
||||
@@ -78,4 +87,4 @@ class AirWanderTaskConfig : SingleTaskConfig {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+3
-1
@@ -17,6 +17,7 @@ import com.cobblemon.mod.common.api.ai.config.task.WanderTaskConfig.Companion.WA
|
||||
import com.cobblemon.mod.common.api.molang.MoLangFunctions.asMostSpecificMoLangValue
|
||||
import com.cobblemon.mod.common.api.npc.configuration.MoLangConfigVariable
|
||||
import com.cobblemon.mod.common.entity.ai.CobblemonWalkTarget
|
||||
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
|
||||
import com.cobblemon.mod.common.util.asExpression
|
||||
import com.cobblemon.mod.common.util.mainThreadRuntime
|
||||
import com.cobblemon.mod.common.util.resolveFloat
|
||||
@@ -95,6 +96,7 @@ class WaterWanderTaskConfig : SingleTaskConfig {
|
||||
attempts++
|
||||
target = BehaviorUtils.getRandomSwimmablePos(entity, horizontalRange.resolveInt(mainThreadRuntime), verticalRange.resolveInt(mainThreadRuntime))
|
||||
?: continue
|
||||
if ((entity as? PokemonEntity)?.tethering?.canRoamTo(BlockPos.containing(target)) == false) continue
|
||||
pos = BlockPos.containing(target).takeIf(wanderControl::isSuitable)
|
||||
}
|
||||
|
||||
@@ -143,4 +145,4 @@ class WaterWanderTaskConfig : SingleTaskConfig {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,14 +10,9 @@ package com.cobblemon.mod.common.api.drop
|
||||
|
||||
import com.cobblemon.mod.common.api.events.CobblemonEvents.LOOT_DROPPED
|
||||
import com.cobblemon.mod.common.api.events.drops.LootDroppedEvent
|
||||
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
|
||||
import com.cobblemon.mod.common.pokemon.Pokemon
|
||||
import com.cobblemon.mod.common.util.cobblemonResource
|
||||
import net.minecraft.core.registries.Registries
|
||||
import kotlin.random.Random
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf
|
||||
import net.minecraft.resources.ResourceKey
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
@@ -110,11 +105,7 @@ class DropTable {
|
||||
) {
|
||||
LOOT_DROPPED.postThen(
|
||||
event = LootDroppedEvent(this, player, entity, drops),
|
||||
ifSucceeded = {
|
||||
val pokemon = (entity as? PokemonEntity)?.pokemon?.species?.resourceIdentifier ?: return@postThen
|
||||
it.drops.forEach { it.drop(entity, world, pos, player) }
|
||||
// val lootKey = ResourceKey.create(Registries.LOOT_TABLE, cobblemonResource("pokemon/${pokemon}"))
|
||||
}
|
||||
ifSucceeded = { it.drops.forEach { it.drop(entity, world, pos, player) } }
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
package com.cobblemon.mod.common.api.drop
|
||||
|
||||
import net.minecraft.core.registries.Registries
|
||||
import net.minecraft.resources.ResourceKey
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.item.ItemEntity
|
||||
import net.minecraft.world.level.storage.loot.LootParams
|
||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets
|
||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParams
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
/**
|
||||
* A drop entry that points to a vanilla loot table.
|
||||
*/
|
||||
class LootTableDropEntry(
|
||||
override val percentage: Float,
|
||||
override val quantity: Int,
|
||||
override val maxSelectableTimes: Int,
|
||||
val id: ResourceLocation
|
||||
) : DropEntry {
|
||||
override fun drop(
|
||||
entity: LivingEntity?,
|
||||
world: ServerLevel,
|
||||
pos: Vec3,
|
||||
player: ServerPlayer?
|
||||
) {
|
||||
val key = ResourceKey.create(Registries.LOOT_TABLE, id)
|
||||
val playerEntity = player as? LivingEntity
|
||||
if (entity == null) return
|
||||
if (playerEntity != null) {
|
||||
val params = LootParams.Builder(world)
|
||||
.withParameter(LootContextParams.ATTACKING_ENTITY, playerEntity)
|
||||
.withParameter(LootContextParams.DAMAGE_SOURCE, playerEntity.damageSources().genericKill())
|
||||
.withParameter(LootContextParams.ORIGIN, pos)
|
||||
.withParameter(LootContextParams.THIS_ENTITY, entity)
|
||||
.create(LootContextParamSets.ENTITY)
|
||||
val drops = world.server.reloadableRegistries().getLootTable(key)
|
||||
.getRandomItems(params)
|
||||
for (stack in drops) {
|
||||
if (stack.isEmpty) continue
|
||||
|
||||
val itemEntity = ItemEntity(world, pos.x, pos.y, pos.z, stack)
|
||||
itemEntity.setDefaultPickUpDelay()
|
||||
world.addFreshEntity(itemEntity)
|
||||
}
|
||||
} else {
|
||||
val params = LootParams.Builder(world)
|
||||
.create(LootContextParamSets.EMPTY)
|
||||
val drops = world.server.reloadableRegistries().getLootTable(key)
|
||||
.getRandomItems(params)
|
||||
for (stack in drops) {
|
||||
if (stack.isEmpty) continue
|
||||
|
||||
val itemEntity = ItemEntity(world, pos.x, pos.y, pos.z, stack)
|
||||
itemEntity.setDefaultPickUpDelay()
|
||||
world.addFreshEntity(itemEntity)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,7 @@ object PastureLinkManager {
|
||||
fun getLinkByPlayer(player: ServerPlayer): PastureLink? {
|
||||
val link = getLinkByPlayerId(player.uuid)
|
||||
if (link != null) {
|
||||
if (!player.level().dimensionTypeRegistration().`is`(link.dimension) || !link.pos.closerToCenterThan(player.position(), 10.0)) {
|
||||
if (player.level().dimension().location() != link.dimension || !link.pos.closerToCenterThan(player.position(), 10.0)) {
|
||||
links.remove(player.uuid)
|
||||
return null
|
||||
}
|
||||
@@ -46,8 +46,8 @@ object PastureLinkManager {
|
||||
@JvmStatic
|
||||
fun removeAt(world: ServerLevel, pos: BlockPos) {
|
||||
links.removeIf { (uuid, pastureLink) ->
|
||||
val shouldRemove = world.dimensionTypeRegistration().`is`(pastureLink.dimension) && pastureLink.pos == pos
|
||||
uuid.getPlayer()?.sendPacket(ClosePasturePacket())
|
||||
val shouldRemove = world.dimension().location() == pastureLink.dimension && pastureLink.pos == pos
|
||||
if (shouldRemove) uuid.getPlayer()?.sendPacket(ClosePasturePacket())
|
||||
return@removeIf shouldRemove
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
* 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.api.pasture
|
||||
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.core.Direction
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf
|
||||
import kotlin.math.abs
|
||||
import kotlin.math.ceil
|
||||
import kotlin.math.floor
|
||||
|
||||
data class PastureRange(val north: Int, val east: Int, val south: Int, val west: Int) {
|
||||
fun isValid(maximum: Int): Boolean =
|
||||
listOf(north, east, south, west).all { it in 0..maximum } &&
|
||||
north.toLong() + south >= 8 && east.toLong() + west >= 8
|
||||
|
||||
operator fun get(direction: Direction): Int = when (direction) {
|
||||
Direction.NORTH -> north
|
||||
Direction.EAST -> east
|
||||
Direction.SOUTH -> south
|
||||
Direction.WEST -> west
|
||||
else -> error("Pasture range directions must be horizontal")
|
||||
}
|
||||
|
||||
fun adjusted(direction: Direction, amount: Int): PastureRange = when (direction) {
|
||||
Direction.NORTH -> copy(north = north + amount)
|
||||
Direction.EAST -> copy(east = east + amount)
|
||||
Direction.SOUTH -> copy(south = south + amount)
|
||||
Direction.WEST -> copy(west = west + amount)
|
||||
else -> this
|
||||
}
|
||||
|
||||
fun minPos(origin: BlockPos) = origin.offset(-west, 0, -north)
|
||||
fun maxPos(origin: BlockPos) = origin.offset(east, 0, south)
|
||||
|
||||
fun nearbyBlocks(origin: BlockPos, preferred: BlockPos, width: Double): Sequence<BlockPos> = sequence {
|
||||
val halfWidth = width / 2.0
|
||||
val minX = ceil(origin.x - west + halfWidth - 0.5).toInt()
|
||||
val maxX = floor(origin.x + east - halfWidth - 0.5).toInt()
|
||||
val minZ = ceil(origin.z - north + halfWidth - 0.5).toInt()
|
||||
val maxZ = floor(origin.z + south - halfWidth - 0.5).toInt()
|
||||
if (minX > maxX || minZ > maxZ) return@sequence
|
||||
|
||||
val centerX = preferred.x.coerceIn(minX, maxX)
|
||||
val centerZ = preferred.z.coerceIn(minZ, maxZ)
|
||||
for (distance in 0..16) {
|
||||
for (dx in -distance..distance) {
|
||||
val x = centerX + dx
|
||||
if (x !in minX..maxX) continue
|
||||
val dz = distance - abs(dx)
|
||||
val z = centerZ + dz
|
||||
if (z in minZ..maxZ) yield(BlockPos(x, origin.y, z))
|
||||
if (dz != 0 && centerZ - dz in minZ..maxZ) yield(BlockPos(x, origin.y, centerZ - dz))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun encode(buffer: RegistryFriendlyByteBuf) {
|
||||
buffer.writeVarInt(north)
|
||||
buffer.writeVarInt(east)
|
||||
buffer.writeVarInt(south)
|
||||
buffer.writeVarInt(west)
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val MAX_DISTANCE = 64
|
||||
|
||||
fun fromBounds(origin: BlockPos, min: BlockPos, max: BlockPos) = PastureRange(
|
||||
origin.z - min.z, max.x - origin.x, max.z - origin.z, origin.x - min.x
|
||||
)
|
||||
|
||||
fun decode(buffer: RegistryFriendlyByteBuf) = PastureRange(
|
||||
buffer.readVarInt(), buffer.readVarInt(), buffer.readVarInt(), buffer.readVarInt()
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -25,7 +25,6 @@ import com.cobblemon.mod.common.util.rotateShape
|
||||
import com.mojang.serialization.MapCodec
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.core.Direction
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.util.StringRepresentable
|
||||
@@ -283,11 +282,13 @@ class PastureBlock(settings: Properties): BaseEntityBlock(settings), SimpleWater
|
||||
pastureId = linkId,
|
||||
permissions = perms,
|
||||
limit = baseEntity.getMaxTethered(),
|
||||
tetheredPokemon = baseEntity.tetheredPokemon.mapNotNull { it.toDTO(player) }
|
||||
tetheredPokemon = baseEntity.tetheredPokemon.mapNotNull { it.toDTO(player) },
|
||||
range = baseEntity.getRange(),
|
||||
facing = state.getValue(HorizontalDirectionalBlock.FACING)
|
||||
)
|
||||
)
|
||||
|
||||
PastureLinkManager.createLink(player.uuid, PastureLink(linkId, pcId, ResourceLocation.tryParse(world.dimensionTypeRegistration().registeredName)!!, getBasePosition(state, pos), perms))
|
||||
PastureLinkManager.createLink(player.uuid, PastureLink(linkId, pcId, world.dimension().location(), getBasePosition(state, pos), perms))
|
||||
|
||||
world.playSoundServer(
|
||||
position = pos.bottomCenter,
|
||||
@@ -366,4 +367,4 @@ class PastureBlock(settings: Properties): BaseEntityBlock(settings), SimpleWater
|
||||
|
||||
return state
|
||||
}
|
||||
}
|
||||
}
|
||||
+167
-62
@@ -14,6 +14,7 @@ import com.cobblemon.mod.common.CobblemonBlocks
|
||||
import com.cobblemon.mod.common.CobblemonNetwork.sendPacket
|
||||
import com.cobblemon.mod.common.advancement.CobblemonCriteria
|
||||
import com.cobblemon.mod.common.api.pasture.PastureLinkManager
|
||||
import com.cobblemon.mod.common.api.pasture.PastureRange
|
||||
import com.cobblemon.mod.common.api.scheduling.afterOnServer
|
||||
import com.cobblemon.mod.common.api.text.italicise
|
||||
import com.cobblemon.mod.common.api.text.red
|
||||
@@ -39,7 +40,6 @@ import net.minecraft.core.Vec3i
|
||||
import net.minecraft.nbt.CompoundTag
|
||||
import net.minecraft.nbt.ListTag
|
||||
import net.minecraft.nbt.NbtUtils
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.tags.FluidTags
|
||||
@@ -48,32 +48,49 @@ import net.minecraft.world.entity.item.ItemEntity
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.level.Level
|
||||
import net.minecraft.world.level.block.Blocks
|
||||
import net.minecraft.world.level.block.HorizontalDirectionalBlock
|
||||
import net.minecraft.world.entity.ai.memory.MemoryModuleType
|
||||
import net.minecraft.world.level.block.entity.BlockEntity
|
||||
import net.minecraft.world.level.block.entity.BlockEntityTicker
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
import net.minecraft.world.level.entity.EntityTypeTest
|
||||
import net.minecraft.world.phys.AABB
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class PokemonPastureBlockEntity(pos: BlockPos, state: BlockState) :
|
||||
BlockEntity(CobblemonBlockEntities.PASTURE, pos, state) {
|
||||
open class Tethering(
|
||||
val minRoamPos: BlockPos,
|
||||
val maxRoamPos: BlockPos,
|
||||
var minRoamPos: BlockPos,
|
||||
var maxRoamPos: BlockPos,
|
||||
val playerId: UUID,
|
||||
val playerName: String,
|
||||
val tetheringId: UUID,
|
||||
val pokemonId: UUID,
|
||||
val pcId: UUID,
|
||||
val entityId: Int,
|
||||
val pasturePos: BlockPos
|
||||
var entityId: Int,
|
||||
val pasturePos: BlockPos,
|
||||
var entityUuid: UUID? = null,
|
||||
var lastEntityPos: BlockPos? = null,
|
||||
var respawnAt: Long = 0L,
|
||||
var healingAfterFaint: Boolean = false
|
||||
) {
|
||||
fun getPokemon(): Pokemon? {
|
||||
val srv = server() ?: return null
|
||||
val pc = Cobblemon.storage.getPC(pcId, srv.registryAccess())
|
||||
return pc[pokemonId]
|
||||
}
|
||||
val box = AABB(minRoamPos.toVec3d(), maxRoamPos.toVec3d())
|
||||
open fun canRoamTo(pos: BlockPos) = box.contains(pos.center)
|
||||
val box get() = AABB(minRoamPos.toVec3d(), maxRoamPos.toVec3d())
|
||||
fun canRoamTo(x: Double, z: Double) = x >= minRoamPos.x && x < maxRoamPos.x && z >= minRoamPos.z && z < maxRoamPos.z
|
||||
open fun canRoamTo(pos: BlockPos) = canRoamTo(pos.x + 0.5, pos.z + 0.5)
|
||||
|
||||
internal fun beginRecovery(now: Long, fainted: Boolean) {
|
||||
if (fainted && !healingAfterFaint) {
|
||||
healingAfterFaint = true
|
||||
respawnAt = now + FAINT_COOLDOWN
|
||||
} else if (respawnAt == 0L) {
|
||||
respawnAt = now + MISSING_ENTITY_COOLDOWN
|
||||
}
|
||||
}
|
||||
|
||||
fun toDTO(player: ServerPlayer): OpenPasturePacket.PasturePokemonDataDTO? {
|
||||
val pokemon = getPokemon() ?: return null
|
||||
@@ -97,6 +114,8 @@ class PokemonPastureBlockEntity(pos: BlockPos, state: BlockState) :
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val FAINT_COOLDOWN = 24000L
|
||||
private const val MISSING_ENTITY_COOLDOWN = 200L
|
||||
internal val TICKER = BlockEntityTicker<PokemonPastureBlockEntity> { world, _, _, blockEntity ->
|
||||
if (world.isClientSide) return@BlockEntityTicker
|
||||
blockEntity.ticksUntilCheck--
|
||||
@@ -134,6 +153,26 @@ class PokemonPastureBlockEntity(pos: BlockPos, state: BlockState) :
|
||||
|
||||
fun getMaxTethered() = Cobblemon.config.defaultPasturedPokemonLimit
|
||||
|
||||
fun getRange() = PastureRange.fromBounds(blockPos, minRoamPos, maxRoamPos)
|
||||
|
||||
fun setRange(range: PastureRange) {
|
||||
minRoamPos = range.minPos(blockPos).atY(minRoamPos.y)
|
||||
maxRoamPos = range.maxPos(blockPos).atY(maxRoamPos.y)
|
||||
tetheredPokemon.forEach { tethering ->
|
||||
tethering.minRoamPos = minRoamPos
|
||||
tethering.maxRoamPos = maxRoamPos
|
||||
tethering.getPokemon()?.entity?.let { entity ->
|
||||
if (entity.tethering?.tetheringId == tethering.tetheringId) {
|
||||
entity.tethering = tethering
|
||||
entity.navigation.stop()
|
||||
entity.brain.eraseMemory(MemoryModuleType.WALK_TARGET)
|
||||
entity.checkPastureTether()
|
||||
}
|
||||
}
|
||||
}
|
||||
setChanged()
|
||||
}
|
||||
|
||||
fun canAddPokemon(player: ServerPlayer, pokemon: Pokemon, maxPerPlayer: Int): Boolean {
|
||||
val forThisPlayer = tetheredPokemon.count { it.playerId == player.uuid }
|
||||
// Shouldn't be possible, client should've prevented it
|
||||
@@ -158,57 +197,61 @@ class PokemonPastureBlockEntity(pos: BlockPos, state: BlockState) :
|
||||
|
||||
|
||||
fun tether(player: ServerPlayer, pokemon: Pokemon, directionToBehind: Direction): Boolean {
|
||||
val tethering = Tethering(
|
||||
minRoamPos, maxRoamPos, player.uuid, player.gameProfile.name, UUID.randomUUID(),
|
||||
pokemon.uuid, Cobblemon.storage.getPC(player).uuid, -1, blockPos
|
||||
)
|
||||
if (!spawnPokemon(pokemon, tethering, directionToBehind)) return false
|
||||
pokemon.tetheringId = tethering.tetheringId
|
||||
pokemon.onChange()
|
||||
tetheredPokemon.add(tethering)
|
||||
tethering.toDTO(player)?.let { player.sendPacket(PokemonPasturedPacket(it)) }
|
||||
setChanged()
|
||||
CobblemonCriteria.PASTURE_USE.trigger(player, pokemon)
|
||||
return true
|
||||
}
|
||||
|
||||
private fun spawnPokemon(pokemon: Pokemon, tethering: Tethering, directionToBehind: Direction): Boolean {
|
||||
val world = level ?: return false
|
||||
val entity = PokemonEntity(world, pokemon = pokemon)
|
||||
entity.refreshDimensions()
|
||||
val width = entity.boundingBox.xsize
|
||||
|
||||
val idealPlace = blockPos.offset(directionToBehind.normal.multiply(ceil(width).toInt() + 1))
|
||||
var box = entity.getDimensions(Pose.STANDING).makeBoundingBox(idealPlace.center.subtract(0.0, 0.5, 0.0))
|
||||
|
||||
for (i in 0..5) {
|
||||
box = box.move(directionToBehind.normal.x.toDouble(), 0.0, directionToBehind.normal.z.toDouble())
|
||||
val fixedPosition = makeSuitableY(world, idealPlace.offset(directionToBehind.normal.multiply(i + 1)), entity, box)
|
||||
if (fixedPosition != null) {
|
||||
entity.setPos(fixedPosition.center.subtract(0.0, 0.5, 0.0))
|
||||
val pc = Cobblemon.storage.getPC(player)
|
||||
entity.beamMode = 2
|
||||
afterOnServer(seconds = 0.5F) {
|
||||
if(entity.pokemon.shiny) {
|
||||
SpawnSnowstormEntityParticlePacket(cobblemonResource("shiny_ring"), entity.id, listOf("shiny_particles", "middle"))
|
||||
.sendToPlayersAround(entity.x, entity.y, entity.z, 64.0, entity.level().dimension())
|
||||
}
|
||||
entity.after(seconds = SendOutPokemonHandler.SEND_OUT_DURATION) {
|
||||
entity.beamMode = 0
|
||||
}
|
||||
}
|
||||
if (world.addFreshEntity(entity)) {
|
||||
val tethering = Tethering(
|
||||
minRoamPos = minRoamPos,
|
||||
maxRoamPos = maxRoamPos,
|
||||
playerId = player.uuid,
|
||||
playerName = player.gameProfile.name,
|
||||
tetheringId = UUID.randomUUID(),
|
||||
pokemonId = pokemon.uuid,
|
||||
pcId = pc.uuid,
|
||||
entityId = entity.id,
|
||||
pasturePos = blockPos
|
||||
)
|
||||
pokemon.tetheringId = tethering.tetheringId
|
||||
tetheredPokemon.add(tethering)
|
||||
entity.tethering = tethering
|
||||
tethering.toDTO(player)?.let { player.sendPacket(PokemonPasturedPacket(it)) }
|
||||
setChanged()
|
||||
CobblemonCriteria.PASTURE_USE.trigger(player, pokemon)
|
||||
return true
|
||||
} else {
|
||||
Cobblemon.LOGGER.warn("Couldn't spawn pastured Pokémon for some reason")
|
||||
}
|
||||
break
|
||||
val position = findSpawnPosition(entity, tethering.lastEntityPos, directionToBehind) ?: return false
|
||||
entity.setPos(position)
|
||||
entity.beamMode = 2
|
||||
entity.tethering = tethering
|
||||
if (!world.addFreshEntity(entity)) return false
|
||||
tethering.entityId = entity.id
|
||||
tethering.entityUuid = entity.uuid
|
||||
tethering.lastEntityPos = entity.blockPosition()
|
||||
tethering.respawnAt = 0L
|
||||
afterOnServer(seconds = 0.5F) {
|
||||
if (!entity.isRemoved && entity.pokemon.shiny) {
|
||||
SpawnSnowstormEntityParticlePacket(cobblemonResource("shiny_ring"), entity.id, listOf("shiny_particles", "middle"))
|
||||
.sendToPlayersAround(entity.x, entity.y, entity.z, 64.0, entity.level().dimension())
|
||||
}
|
||||
entity.after(seconds = SendOutPokemonHandler.SEND_OUT_DURATION) {
|
||||
entity.beamMode = 0
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
fun findSpawnPosition(entity: PokemonEntity, preferred: BlockPos? = null, direction: Direction = blockState.getValue(HorizontalDirectionalBlock.FACING)): Vec3? {
|
||||
val world = level ?: return null
|
||||
val dimensions = entity.getDimensions(Pose.STANDING)
|
||||
val idealPlace = preferred ?: blockPos.offset(direction.normal.multiply(ceil(dimensions.width / 2.0).toInt() + 1))
|
||||
for (candidate in getRange().nearbyBlocks(blockPos, idealPlace, dimensions.width.toDouble())) {
|
||||
if (!world.hasChunkAt(candidate)) continue
|
||||
val box = dimensions.makeBoundingBox(candidate.center.subtract(0.0, 0.5, 0.0))
|
||||
val fixedPosition = makeSuitableY(world, candidate, entity, box) ?: continue
|
||||
val position = fixedPosition.center.subtract(0.0, 0.5, 0.0)
|
||||
val spawnBox = dimensions.makeBoundingBox(position)
|
||||
if (world.noCollision(entity, spawnBox) &&
|
||||
world.getEntitiesOfClass(PokemonEntity::class.java, spawnBox) { it != entity }.isEmpty()) {
|
||||
return position
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
private fun togglePastureOn(on: Boolean) {
|
||||
@@ -289,6 +332,7 @@ class PokemonPastureBlockEntity(pos: BlockPos, state: BlockState) :
|
||||
}
|
||||
|
||||
fun checkPokemon() {
|
||||
val world = level as? ServerLevel ?: return
|
||||
val deadLinks = mutableListOf<UUID>()
|
||||
tetheredPokemon.forEach {
|
||||
val pokemon = it.getPokemon()
|
||||
@@ -296,6 +340,8 @@ class PokemonPastureBlockEntity(pos: BlockPos, state: BlockState) :
|
||||
deadLinks.add(it.pokemonId)
|
||||
} else if (pokemon.tetheringId == null || pokemon.tetheringId != it.tetheringId) {
|
||||
deadLinks.add(it.pokemonId)
|
||||
} else {
|
||||
checkDeployment(world, it, pokemon)
|
||||
}
|
||||
}
|
||||
deadLinks.forEach(::releasePokemon)
|
||||
@@ -303,6 +349,51 @@ class PokemonPastureBlockEntity(pos: BlockPos, state: BlockState) :
|
||||
setChanged()
|
||||
}
|
||||
|
||||
private fun checkDeployment(world: ServerLevel, tethering: Tethering, pokemon: Pokemon) {
|
||||
val now = world.gameTime
|
||||
if (pokemon.isFainted() && !tethering.healingAfterFaint) {
|
||||
tethering.beginRecovery(now, fainted = true)
|
||||
}
|
||||
val entity = (pokemon.entity ?: tethering.entityUuid?.let(world::getEntity) as? PokemonEntity)
|
||||
?.takeIf { !it.isRemoved && it.tethering?.tetheringId == tethering.tetheringId }
|
||||
if (entity != null) {
|
||||
tethering.entityUuid = entity.uuid
|
||||
tethering.lastEntityPos = entity.blockPosition()
|
||||
entity.tethering = tethering
|
||||
if (!tethering.healingAfterFaint) tethering.respawnAt = 0L
|
||||
return
|
||||
}
|
||||
// A Pokémon in an unloaded chunk is still deployed. Never create its replacement.
|
||||
val lastPosition = tethering.lastEntityPos
|
||||
if (lastPosition != null) {
|
||||
if (!world.hasChunkAt(lastPosition)) return
|
||||
}
|
||||
// The last saved position may predate a chunk crossing. Require the entire range
|
||||
// to be entity-ticking before deciding that its missing Pokémon has disappeared.
|
||||
for (chunkX in (minRoamPos.x shr 4)..(maxRoamPos.x shr 4)) {
|
||||
for (chunkZ in (minRoamPos.z shr 4)..(maxRoamPos.z shr 4)) {
|
||||
if (!world.isPositionEntityTicking(BlockPos(chunkX shl 4, blockPos.y, chunkZ shl 4))) return
|
||||
}
|
||||
}
|
||||
if (tethering.respawnAt == 0L) {
|
||||
tethering.beginRecovery(now, fainted = false)
|
||||
return
|
||||
}
|
||||
if (now < tethering.respawnAt) return
|
||||
if (tethering.healingAfterFaint) {
|
||||
pokemon.heal()
|
||||
if (pokemon.isFainted()) return
|
||||
tethering.healingAfterFaint = false
|
||||
}
|
||||
val radius = Cobblemon.config.pastureMaxWanderDistance.toDouble()
|
||||
val nearby = world.getEntitiesOfClass(PokemonEntity::class.java, AABB.ofSize(blockPos.toVec3d(), radius * 2, world.height.toDouble(), radius * 2)).size
|
||||
val chunkDiameter = (radius / 16) * 2
|
||||
if (nearby >= Cobblemon.config.pastureMaxPerChunk * chunkDiameter * chunkDiameter ||
|
||||
!spawnPokemon(pokemon, tethering, blockState.getValue(HorizontalDirectionalBlock.FACING))) {
|
||||
tethering.respawnAt = now + MISSING_ENTITY_COOLDOWN
|
||||
}
|
||||
}
|
||||
|
||||
fun onBroken() {
|
||||
if (level is ServerLevel) {
|
||||
tetheredPokemon.toList().forEach { releasePokemon(it.pokemonId) }
|
||||
@@ -312,7 +403,10 @@ class PokemonPastureBlockEntity(pos: BlockPos, state: BlockState) :
|
||||
|
||||
fun releasePokemon(pokemonId: UUID) {
|
||||
val tethering = tetheredPokemon.find { it.pokemonId == pokemonId } ?: return
|
||||
tethering.getPokemon()?.tetheringId = null
|
||||
tethering.getPokemon()?.let { pokemon ->
|
||||
pokemon.tetheringId = null
|
||||
pokemon.onChange()
|
||||
}
|
||||
tetheredPokemon.remove(tethering)
|
||||
setChanged()
|
||||
}
|
||||
@@ -320,7 +414,10 @@ class PokemonPastureBlockEntity(pos: BlockPos, state: BlockState) :
|
||||
fun releaseAllPokemon(playerId: UUID): List<UUID> {
|
||||
val unpastured = mutableListOf<UUID>()
|
||||
tetheredPokemon.filter { it.playerId == playerId }.forEach {
|
||||
it.getPokemon()?.tetheringId = null
|
||||
it.getPokemon()?.let { pokemon ->
|
||||
pokemon.tetheringId = null
|
||||
pokemon.onChange()
|
||||
}
|
||||
tetheredPokemon.remove(it)
|
||||
unpastured.add(it.pokemonId)
|
||||
}
|
||||
@@ -343,9 +440,7 @@ class PokemonPastureBlockEntity(pos: BlockPos, state: BlockState) :
|
||||
|
||||
private fun isPlayerViewing(player: ServerPlayer): Boolean {
|
||||
val pastureLink = PastureLinkManager.getLinkByPlayer(player)
|
||||
return pastureLink != null && pastureLink.pos == blockPos && pastureLink.dimension == ResourceLocation.tryParse(
|
||||
player.level().dimensionTypeRegistration().registeredName // todo (techdaan): confirm this is good
|
||||
)
|
||||
return pastureLink != null && pastureLink.pos == blockPos && pastureLink.dimension == player.level().dimension().location()
|
||||
}
|
||||
|
||||
override fun loadAdditional(nbt: CompoundTag, registryLookup: HolderLookup.Provider) {
|
||||
@@ -353,6 +448,9 @@ class PokemonPastureBlockEntity(pos: BlockPos, state: BlockState) :
|
||||
val list = nbt.getList(DataKeys.TETHER_POKEMON, CompoundTag.TAG_COMPOUND.toInt())
|
||||
this.ownerId = if (nbt.hasUUID(DataKeys.TETHER_OWNER_ID)) nbt.getUUID(DataKeys.TETHER_OWNER_ID) else null
|
||||
this.ownerName = nbt.getString(DataKeys.TETHER_OWNER_NAME).takeIf { it.isNotEmpty() } ?: ""
|
||||
this.minRoamPos = NbtUtils.readBlockPos(nbt, DataKeys.TETHER_MIN_ROAM_POS).orElse(minRoamPos)
|
||||
this.maxRoamPos = NbtUtils.readBlockPos(nbt, DataKeys.TETHER_MAX_ROAM_POS).orElse(maxRoamPos)
|
||||
tetheredPokemon.clear()
|
||||
for (tetheringNBT in list) {
|
||||
tetheringNBT as CompoundTag
|
||||
val tetheringId = tetheringNBT.getUUID(DataKeys.TETHERING_ID)
|
||||
@@ -365,17 +463,19 @@ class PokemonPastureBlockEntity(pos: BlockPos, state: BlockState) :
|
||||
minRoamPos = minRoamPos,
|
||||
maxRoamPos = maxRoamPos,
|
||||
playerId = playerId,
|
||||
playerName = ownerName,
|
||||
playerName = tetheringNBT.getString("PlayerName").ifEmpty { ownerName },
|
||||
tetheringId = tetheringId,
|
||||
pokemonId = pokemonId,
|
||||
pcId = pcId,
|
||||
entityId = entityId,
|
||||
pasturePos = blockPos
|
||||
pasturePos = blockPos,
|
||||
entityUuid = if (tetheringNBT.hasUUID("EntityUUID")) tetheringNBT.getUUID("EntityUUID") else null,
|
||||
lastEntityPos = NbtUtils.readBlockPos(tetheringNBT, "LastEntityPos").orElse(null),
|
||||
respawnAt = tetheringNBT.getLong("RespawnAt"),
|
||||
healingAfterFaint = tetheringNBT.getBoolean("HealingAfterFaint")
|
||||
)
|
||||
)
|
||||
}
|
||||
this.minRoamPos = NbtUtils.readBlockPos(nbt, DataKeys.TETHER_MIN_ROAM_POS).get()
|
||||
this.maxRoamPos = NbtUtils.readBlockPos(nbt, DataKeys.TETHER_MAX_ROAM_POS).get()
|
||||
}
|
||||
|
||||
override fun saveAdditional(nbt: CompoundTag, registryLookup: HolderLookup.Provider) {
|
||||
@@ -388,6 +488,11 @@ class PokemonPastureBlockEntity(pos: BlockPos, state: BlockState) :
|
||||
tetheringNBT.putUUID(DataKeys.POKEMON_UUID, tethering.pokemonId)
|
||||
tetheringNBT.putUUID(DataKeys.PC_ID, tethering.pcId)
|
||||
tetheringNBT.putInt(DataKeys.TETHERING_ENTITY_ID, tethering.entityId)
|
||||
tetheringNBT.putString("PlayerName", tethering.playerName)
|
||||
tethering.entityUuid?.let { tetheringNBT.putUUID("EntityUUID", it) }
|
||||
tethering.lastEntityPos?.let { tetheringNBT.put("LastEntityPos", NbtUtils.writeBlockPos(it)) }
|
||||
tetheringNBT.putLong("RespawnAt", tethering.respawnAt)
|
||||
tetheringNBT.putBoolean("HealingAfterFaint", tethering.healingAfterFaint)
|
||||
list.add(tetheringNBT)
|
||||
}
|
||||
nbt.put(DataKeys.TETHER_POKEMON, list)
|
||||
@@ -396,4 +501,4 @@ class PokemonPastureBlockEntity(pos: BlockPos, state: BlockState) :
|
||||
ownerId?.let { nbt.putUUID(DataKeys.TETHER_OWNER_ID, it) }
|
||||
nbt.putString(DataKeys.TETHER_OWNER_NAME, this.ownerName)
|
||||
}
|
||||
}
|
||||
}
|
||||
+8
-2
@@ -11,6 +11,8 @@ package com.cobblemon.mod.common.client.gui.pasture
|
||||
import com.cobblemon.mod.common.CobblemonNetwork
|
||||
import com.cobblemon.mod.common.CobblemonSounds
|
||||
import com.cobblemon.mod.common.api.pasture.PasturePermissions
|
||||
import com.cobblemon.mod.common.api.pasture.PastureRange
|
||||
import net.minecraft.core.Direction
|
||||
import com.cobblemon.mod.common.api.reactive.SettableObservable
|
||||
import com.cobblemon.mod.common.client.gui.pc.PCGUIConfiguration
|
||||
import com.cobblemon.mod.common.net.messages.client.pasture.OpenPasturePacket
|
||||
@@ -21,7 +23,9 @@ class PasturePCGUIConfiguration(
|
||||
val pastureId: UUID,
|
||||
val limit: Int,
|
||||
val pasturedPokemon: SettableObservable<List<OpenPasturePacket.PasturePokemonDataDTO>>,
|
||||
var permissions: PasturePermissions
|
||||
var permissions: PasturePermissions,
|
||||
var range: PastureRange,
|
||||
val facing: Direction
|
||||
) : PCGUIConfiguration(
|
||||
exitFunction = { it.closeNormally(unlink = true) },
|
||||
showParty = false,
|
||||
@@ -32,4 +36,6 @@ class PasturePCGUIConfiguration(
|
||||
}
|
||||
},
|
||||
canSelect = { pokemon -> !pokemon.isFainted() && pokemon.tetheringId == null }
|
||||
)
|
||||
) {
|
||||
var editingRange = false
|
||||
}
|
||||
+181
@@ -0,0 +1,181 @@
|
||||
/*
|
||||
* 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.client.gui.pasture
|
||||
|
||||
import com.cobblemon.mod.common.CobblemonSounds
|
||||
import com.cobblemon.mod.common.api.gui.blitk
|
||||
import com.cobblemon.mod.common.client.gui.pc.StorageWidget
|
||||
import com.cobblemon.mod.common.client.gui.summary.widgets.SoundlessWidget
|
||||
import com.cobblemon.mod.common.client.render.drawScaledText
|
||||
import com.cobblemon.mod.common.client.render.gui.PCBoxWallpaperRepository
|
||||
import com.cobblemon.mod.common.net.messages.server.pasture.AdjustPastureRangePacket
|
||||
import com.cobblemon.mod.common.util.cobblemonResource
|
||||
import com.cobblemon.mod.common.util.lang
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.resources.sounds.SimpleSoundInstance
|
||||
import net.minecraft.core.Direction
|
||||
|
||||
class PastureRangeWidget(x: Int, y: Int, private val configuration: PasturePCGUIConfiguration) :
|
||||
SoundlessWidget(x, y, StorageWidget.SCREEN_WIDTH, StorageWidget.SCREEN_HEIGHT, lang("ui.pasture.range")) {
|
||||
|
||||
private val rangeResource = cobblemonResource("textures/gui/pasture/pasture_range.png")
|
||||
private val glowResource = cobblemonResource("textures/gui/pc/wallpaper/basic/glow/wallpaper_basic_05.png")
|
||||
private val overlayResource = cobblemonResource("textures/gui/pc/pc_screen_overlay.png")
|
||||
private val infoResource = cobblemonResource("textures/gui/summary/summary_tab_icon_info.png")
|
||||
private val directions = listOf(configuration.facing, configuration.facing.clockWise, configuration.facing.opposite, configuration.facing.counterClockWise)
|
||||
private val arrowBounds = listOf(
|
||||
intArrayOf(75, 17, 103, 46), intArrayOf(116, 64, 152, 96),
|
||||
intArrayOf(75, 109, 103, 143), intArrayOf(26, 64, 62, 96)
|
||||
)
|
||||
// Centers of the numeral shadows in pasture_range.png, relative to its (85, 27) panel origin.
|
||||
private val numberPositions = listOf(89 to 37, 125 to 77, 89 to 114, 53 to 77)
|
||||
private var hoveredDirection: Direction? = null
|
||||
private var showInfo = false
|
||||
|
||||
private val infoButtonX get() = x + 5
|
||||
private val infoButtonY get() = y + 5
|
||||
|
||||
override fun renderWidget(context: GuiGraphics, mouseX: Int, mouseY: Int, delta: Float) {
|
||||
blitk(
|
||||
matrixStack = context.pose(), texture = PCBoxWallpaperRepository.defaultWallpaper,
|
||||
x = x, y = y, width = width, height = height
|
||||
)
|
||||
blitk(
|
||||
matrixStack = context.pose(), texture = rangeResource,
|
||||
x = x + 3, y = y + 3, width = width - 6, height = height - 6,
|
||||
uOffset = 88, vOffset = 30, textureWidth = 349, textureHeight = 205
|
||||
)
|
||||
blitk(
|
||||
matrixStack = context.pose(), texture = glowResource,
|
||||
x = x - 17, y = y - 17, width = 208, height = 189
|
||||
)
|
||||
blitk(matrixStack = context.pose(), texture = overlayResource, x = x, y = y, width = width, height = height)
|
||||
hoveredDirection = directionAt(mouseX.toDouble(), mouseY.toDouble())
|
||||
directions.indexOf(hoveredDirection).takeIf { it >= 0 }?.let { index ->
|
||||
renderArrowHighlight(context, index)
|
||||
}
|
||||
context.pose().pushPose()
|
||||
context.pose().translate(-0.5F, 0F, 0F)
|
||||
directions.forEachIndexed { index, direction ->
|
||||
val (numberX, numberY) = numberPositions[index]
|
||||
drawScaledText(context, text = net.minecraft.network.chat.Component.literal(configuration.range[direction].toString()),
|
||||
x = x + numberX + 1, y = y + numberY - 7, centered = true,
|
||||
colour = 0xFFFFFFFF.toInt())
|
||||
}
|
||||
context.pose().popPose()
|
||||
val infoHovered = mouseX in infoButtonX until infoButtonX + 12 && mouseY in infoButtonY until infoButtonY + 12
|
||||
context.fill(infoButtonX, infoButtonY, infoButtonX + 12, infoButtonY + 12,
|
||||
if (showInfo || infoHovered) 0xFFFFFFFF.toInt() else 0xFF91C5C9.toInt())
|
||||
context.fill(infoButtonX + 1, infoButtonY + 1, infoButtonX + 11, infoButtonY + 11, 0xFF006775.toInt())
|
||||
blitk(matrixStack = context.pose(), texture = infoResource,
|
||||
x = infoButtonX + 2, y = infoButtonY + 2, width = 8, height = 8)
|
||||
if (showInfo) {
|
||||
val options = Minecraft.getInstance().options
|
||||
val font = Minecraft.getInstance().font
|
||||
val increaseLines = font.split(lang("ui.pasture.range.increase", options.keyAttack.translatedKeyMessage), 120)
|
||||
val decreaseLines = font.split(lang("ui.pasture.range.decrease", options.keyUse.translatedKeyMessage), 120)
|
||||
val boxX = infoButtonX
|
||||
val boxY = y + 20
|
||||
val boxHeight = (increaseLines.size + decreaseLines.size) * 5 + 8
|
||||
context.fill(boxX, boxY, boxX + 66, boxY + boxHeight, 0xFF91C5C9.toInt())
|
||||
context.fill(boxX + 1, boxY + 1, boxX + 65, boxY + boxHeight - 1, 0xE0004C59.toInt())
|
||||
var lineY = boxY + 3
|
||||
for (line in increaseLines) {
|
||||
drawScaledText(context, text = line, x = boxX + 3, y = lineY, scaleX = 0.5F, scaleY = 0.5F,
|
||||
colour = 0xFFFFFFFF.toInt(), shadow = true)
|
||||
lineY += 5
|
||||
}
|
||||
lineY += 2
|
||||
for (line in decreaseLines) {
|
||||
drawScaledText(context, text = line, x = boxX + 3, y = lineY, scaleX = 0.5F, scaleY = 0.5F,
|
||||
colour = 0xFFFFFFFF.toInt(), shadow = true)
|
||||
lineY += 5
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun renderArrowHighlight(context: GuiGraphics, index: Int) {
|
||||
fun fill(left: Int, top: Int, right: Int, bottom: Int) {
|
||||
context.fill(x + left, y + top, x + right, y + bottom, 0x66FFFFFF)
|
||||
}
|
||||
// Trace the arrow faces in pasture_range.png; horizontal arrows have longer stems.
|
||||
// Keep their offset drop shadows visible instead of brightening the surrounding background.
|
||||
when (index) {
|
||||
0 -> {
|
||||
for (row in 0..14) {
|
||||
val halfWidth = 3 + minOf(row, 11)
|
||||
fill(89 - halfWidth, 17 + row, 89 + halfWidth, 18 + row)
|
||||
}
|
||||
fill(81, 32, 97, 41)
|
||||
}
|
||||
1, 3 -> {
|
||||
for (row in 0..26) {
|
||||
val tip = 141 + minOf(row, 11, 26 - row)
|
||||
if (index == 1) fill(137, 64 + row, tip, 65 + row)
|
||||
else fill(178 - tip, 64 + row, 41, 65 + row)
|
||||
}
|
||||
if (index == 1) fill(116, 72, 137, 83)
|
||||
else fill(41, 72, 62, 83)
|
||||
}
|
||||
2 -> {
|
||||
fill(81, 109, 97, 123)
|
||||
for (row in 0..14) {
|
||||
val halfWidth = 14 - maxOf(0, row - 3)
|
||||
fill(89 - halfWidth, 123 + row, 89 + halfWidth, 124 + row)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun directionAt(mouseX: Double, mouseY: Double): Direction? {
|
||||
val index = arrowBounds.indexOfFirst { (left, top, right, bottom) ->
|
||||
mouseX >= x + left && mouseX < x + right &&
|
||||
mouseY >= y + top && mouseY < y + bottom
|
||||
}
|
||||
return directions.getOrNull(index)
|
||||
}
|
||||
|
||||
private fun adjust(direction: Direction, increase: Boolean): Boolean {
|
||||
AdjustPastureRangePacket(configuration.pastureId, direction, increase).sendToServer()
|
||||
return true
|
||||
}
|
||||
|
||||
override fun mouseClicked(pMouseX: Double, pMouseY: Double, pButton: Int): Boolean {
|
||||
if (pButton == 0 && pMouseX >= infoButtonX && pMouseX < infoButtonX + 12 &&
|
||||
pMouseY >= infoButtonY && pMouseY < infoButtonY + 12) {
|
||||
showInfo = !showInfo
|
||||
Minecraft.getInstance().soundManager.play(SimpleSoundInstance.forUI(CobblemonSounds.PC_CLICK, 1F))
|
||||
return true
|
||||
}
|
||||
val direction = directionAt(pMouseX, pMouseY) ?: return false
|
||||
val options = Minecraft.getInstance().options
|
||||
return when {
|
||||
options.keyAttack.matchesMouse(pButton) -> adjust(direction, true)
|
||||
options.keyUse.matchesMouse(pButton) -> adjust(direction, false)
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
|
||||
override fun mouseScrolled(mouseX: Double, mouseY: Double, scrollX: Double, scrollY: Double): Boolean {
|
||||
val direction = directionAt(mouseX, mouseY) ?: return false
|
||||
if (scrollY == 0.0) return false
|
||||
return adjust(direction, scrollY > 0)
|
||||
}
|
||||
|
||||
override fun keyPressed(pKeyCode: Int, pScanCode: Int, pModifiers: Int): Boolean {
|
||||
val direction = hoveredDirection ?: return false
|
||||
val options = Minecraft.getInstance().options
|
||||
return when {
|
||||
options.keyAttack.matches(pKeyCode, pScanCode) -> adjust(direction, true)
|
||||
options.keyUse.matches(pKeyCode, pScanCode) -> adjust(direction, false)
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
}
|
||||
+31
-1
@@ -20,7 +20,9 @@ import com.cobblemon.mod.common.net.messages.server.pasture.UnpastureAllPokemonP
|
||||
import com.cobblemon.mod.common.util.cobblemonResource
|
||||
import com.cobblemon.mod.common.util.lang
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.sounds.SoundManager
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.client.gui.components.Button
|
||||
|
||||
class PastureWidget(
|
||||
val storageWidget: StorageWidget,
|
||||
@@ -32,6 +34,8 @@ class PastureWidget(
|
||||
|
||||
companion object {
|
||||
private val baseResource = cobblemonResource("textures/gui/pasture/pasture_panel.png")
|
||||
private val buttonResource = cobblemonResource("textures/gui/pasture/pasture_button.png")
|
||||
private val gearResource = cobblemonResource("textures/gui/pasture/pasture_range_gear.png")
|
||||
}
|
||||
|
||||
private val recallButton = RecallButton(
|
||||
@@ -42,6 +46,14 @@ class PastureWidget(
|
||||
UnpastureAllPokemonPacket(pasturePCGUIConfiguration.pastureId).sendToServer()
|
||||
}
|
||||
|
||||
private val rangeButton = object : Button(x + 6, y + 174, 27, 17, lang("ui.pasture.range"), {
|
||||
storageWidget.pcGui.setPastureRangeEditing(!pasturePCGUIConfiguration.editingRange)
|
||||
}, DEFAULT_NARRATION) {
|
||||
override fun playDownSound(soundManager: SoundManager) {
|
||||
storageWidget.pcGui.playSound(CobblemonSounds.PC_CLICK)
|
||||
}
|
||||
}
|
||||
|
||||
val pastureScrollList = PasturePokemonScrollList(
|
||||
listX = x + 6,
|
||||
listY = y + 31,
|
||||
@@ -70,11 +82,29 @@ class PastureWidget(
|
||||
pastureScrollList.render(context, mouseX, mouseY, delta)
|
||||
|
||||
recallButton.render(context, mouseX, mouseY, delta)
|
||||
rangeButton.message = lang(if (pasturePCGUIConfiguration.editingRange) "ui.pasture.storage" else "ui.pasture.range")
|
||||
val buttonX = rangeButton.x
|
||||
val buttonY = rangeButton.y
|
||||
val highlighted = pasturePCGUIConfiguration.editingRange || rangeButton.isMouseOver(mouseX.toDouble(), mouseY.toDouble())
|
||||
blitk(matrixStack = context.pose(), texture = buttonResource, x = buttonX, y = buttonY,
|
||||
width = 23, height = 17, textureWidth = 70, textureHeight = 34)
|
||||
blitk(matrixStack = context.pose(), texture = buttonResource, x = buttonX + 23, y = buttonY,
|
||||
width = 4, height = 17, uOffset = 66, textureWidth = 70, textureHeight = 34)
|
||||
if (highlighted) context.fill(buttonX + 2, buttonY + 2, buttonX + 26, buttonY + 15, 0x88FFFFFF.toInt())
|
||||
val gearSize = 11
|
||||
val gearX = buttonX + (rangeButton.width - gearSize) / 2
|
||||
val gearY = buttonY + (rangeButton.height - gearSize) / 2
|
||||
if (highlighted) blitk(matrixStack = context.pose(), texture = gearResource,
|
||||
x = gearX + 1, y = gearY + 1, width = gearSize, height = gearSize,
|
||||
red = 0.2F, green = 0.2F, blue = 0.2F)
|
||||
blitk(matrixStack = context.pose(), texture = gearResource,
|
||||
x = gearX, y = gearY, width = gearSize, height = gearSize)
|
||||
}
|
||||
|
||||
override fun mouseClicked(pMouseX: Double, pMouseY: Double, pButton: Int): Boolean {
|
||||
if (rangeButton.mouseClicked(pMouseX, pMouseY, pButton)) return true
|
||||
if (recallButton.isHovered(pMouseX, pMouseY)) recallButton.mouseClicked(pMouseX, pMouseY, pButton)
|
||||
if (pastureScrollList.isHovered(pMouseX, pMouseY)) pastureScrollList.mouseClicked(pMouseX, pMouseY, pButton)
|
||||
return super.mouseClicked(pMouseX, pMouseY, pButton)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,7 @@ import com.cobblemon.mod.common.client.CobblemonClient
|
||||
import com.cobblemon.mod.common.client.CobblemonResources
|
||||
import com.cobblemon.mod.common.client.gui.CobblemonRenderable
|
||||
import com.cobblemon.mod.common.client.gui.ExitButton
|
||||
import com.cobblemon.mod.common.client.gui.pasture.PasturePCGUIConfiguration
|
||||
import com.cobblemon.mod.common.client.gui.TypeIcon
|
||||
import com.cobblemon.mod.common.client.gui.summary.Summary
|
||||
import com.cobblemon.mod.common.client.gui.summary.Summary.Companion.iconCosmeticItemResource
|
||||
@@ -140,7 +141,10 @@ class PCGUI(
|
||||
// Add Exit Button
|
||||
this.addRenderableWidget(
|
||||
ExitButton(pX = x + 320, pY = y + 186) {
|
||||
if (::wallpaperWidget.isInitialized && wallpaperWidget.visible) {
|
||||
if (storageWidget.editingPastureRange) {
|
||||
setPastureRangeEditing(false)
|
||||
playSound(CobblemonSounds.PC_CLICK)
|
||||
} else if (::wallpaperWidget.isInitialized && wallpaperWidget.visible) {
|
||||
wallpaperWidget.visible = false
|
||||
configuration.showParty = true
|
||||
for (button in optionButtons) button.highlighted = false
|
||||
@@ -158,7 +162,7 @@ class PCGUI(
|
||||
pX = x + 220,
|
||||
pY = y + 16,
|
||||
forward = true
|
||||
) { storageWidget.box += 1 }
|
||||
) { if (!storageWidget.editingPastureRange) storageWidget.box += 1 }
|
||||
)
|
||||
|
||||
// Add Backwards Button
|
||||
@@ -167,7 +171,7 @@ class PCGUI(
|
||||
pX = x + 117,
|
||||
pY = y + 16,
|
||||
forward = false
|
||||
) { storageWidget.box -= 1 }
|
||||
) { if (!storageWidget.editingPastureRange) storageWidget.box -= 1 }
|
||||
)
|
||||
|
||||
// Add Filter Widget
|
||||
@@ -197,6 +201,8 @@ class PCGUI(
|
||||
storageWidget = storageWidget
|
||||
)
|
||||
this.addRenderableWidget(boxNameWidget)
|
||||
filterWidget.active = !storageWidget.editingPastureRange
|
||||
boxNameWidget.active = !storageWidget.editingPastureRange
|
||||
|
||||
// Initialise box options if not pasture
|
||||
if (storageWidget.pastureWidget == null) {
|
||||
@@ -711,17 +717,28 @@ class PCGUI(
|
||||
}
|
||||
}
|
||||
|
||||
fun setPastureRangeEditing(editing: Boolean) {
|
||||
val pasture = configuration as? PasturePCGUIConfiguration ?: return
|
||||
pasture.editingRange = editing
|
||||
filterWidget.active = !editing
|
||||
boxNameWidget.active = !editing
|
||||
focused = null
|
||||
storageWidget.resetSelected()
|
||||
}
|
||||
|
||||
override fun mouseClicked(mouseX: Double, mouseY: Double, button: Int): Boolean {
|
||||
// Trigger child component function as they will need to check the entire screen click area
|
||||
if (::boxNameWidget.isInitialized) boxNameWidget.mouseClicked(mouseX, mouseY, button)
|
||||
if (::boxNameWidget.isInitialized && !storageWidget.editingPastureRange) boxNameWidget.mouseClicked(mouseX, mouseY, button)
|
||||
return super.mouseClicked(mouseX, mouseY, button)
|
||||
}
|
||||
|
||||
override fun mouseScrolled(mouseX: Double, mouseY: Double, amount: Double, verticalAmount: Double): Boolean {
|
||||
if (storageWidget.editingPastureRange &&
|
||||
storageWidget.pastureRangeWidget?.mouseScrolled(mouseX, mouseY, amount, verticalAmount) == true) return true
|
||||
storageWidget.pastureWidget?.let { pasture ->
|
||||
if (pasture.pastureScrollList.isHovered) pasture.pastureScrollList.mouseScrolled(mouseX, mouseY, amount, verticalAmount)
|
||||
}
|
||||
if (storageWidget.isHovered && mouseX < (storageWidget.x + StorageWidget.SCREEN_WIDTH)) this.storageWidget.box -= verticalAmount.toInt()
|
||||
if (!storageWidget.editingPastureRange && storageWidget.isHovered && mouseX < (storageWidget.x + StorageWidget.SCREEN_WIDTH)) this.storageWidget.box -= verticalAmount.toInt()
|
||||
if (::wallpaperWidget.isInitialized && wallpaperWidget.isHovered) wallpaperWidget.mouseScrolled(mouseX, mouseY, amount, verticalAmount)
|
||||
|
||||
val infoBoxX = ((width - BASE_WIDTH) / 2) + 9
|
||||
@@ -744,6 +761,11 @@ class PCGUI(
|
||||
}
|
||||
|
||||
override fun keyPressed(keyCode: Int, scanCode: Int, modifiers: Int): Boolean {
|
||||
if (storageWidget.editingPastureRange) {
|
||||
if (keyCode != InputConstants.KEY_ESCAPE &&
|
||||
storageWidget.pastureRangeWidget?.keyPressed(keyCode, scanCode, modifiers) == true) return true
|
||||
if (keyCode == InputConstants.KEY_RIGHT || keyCode == InputConstants.KEY_LEFT) return true
|
||||
}
|
||||
val boxNameFocused = this::boxNameWidget.isInitialized && boxNameWidget.isFocused
|
||||
val filterFocused = this::filterWidget.isInitialized && filterWidget.isFocused
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.cobblemon.mod.common.client.CobblemonClient
|
||||
import com.cobblemon.mod.common.client.CobblemonResources
|
||||
import com.cobblemon.mod.common.client.gui.pasture.PasturePCGUIConfiguration
|
||||
import com.cobblemon.mod.common.client.gui.pasture.PastureWidget
|
||||
import com.cobblemon.mod.common.client.gui.pasture.PastureRangeWidget
|
||||
import com.cobblemon.mod.common.client.gui.summary.widgets.SoundlessWidget
|
||||
import com.cobblemon.mod.common.client.render.drawScaledText
|
||||
import com.cobblemon.mod.common.client.render.gui.PCBoxWallpaperRepository
|
||||
@@ -74,6 +75,9 @@ class StorageWidget(
|
||||
private val releaseNoButton: ReleaseConfirmButton
|
||||
|
||||
var pastureWidget: PastureWidget? = null
|
||||
val pastureRangeWidget = (pcGui.configuration as? PasturePCGUIConfiguration)?.let { PastureRangeWidget(x, y, it) }
|
||||
val editingPastureRange: Boolean
|
||||
get() = (pcGui.configuration as? PasturePCGUIConfiguration)?.editingRange == true
|
||||
|
||||
var displayConfirmRelease = false
|
||||
var screenLoaded = false
|
||||
@@ -218,6 +222,11 @@ class StorageWidget(
|
||||
}
|
||||
|
||||
override fun renderWidget(context: GuiGraphics, mouseX: Int, mouseY: Int, delta: Float) {
|
||||
if (editingPastureRange) {
|
||||
pastureRangeWidget?.render(context, mouseX, mouseY, delta)
|
||||
pastureWidget?.render(context, mouseX, mouseY, delta)
|
||||
return
|
||||
}
|
||||
val matrices = context.pose()
|
||||
// Party Label
|
||||
if (pcGui.configuration.showParty) {
|
||||
@@ -340,6 +349,10 @@ class StorageWidget(
|
||||
}
|
||||
|
||||
override fun mouseClicked(pMouseX: Double, pMouseY: Double, pButton: Int): Boolean {
|
||||
if (editingPastureRange) {
|
||||
return pastureRangeWidget?.mouseClicked(pMouseX, pMouseY, pButton) == true ||
|
||||
pastureWidget?.mouseClicked(pMouseX, pMouseY, pButton) == true
|
||||
}
|
||||
if (displayConfirmRelease) {
|
||||
if (releaseYesButton.isHovered(pMouseX, pMouseY)) releaseYesButton.mouseClicked(pMouseX, pMouseY, pButton)
|
||||
if (releaseNoButton.isHovered(pMouseX, pMouseY)) releaseNoButton.mouseClicked(pMouseX, pMouseY, pButton)
|
||||
|
||||
+2
@@ -23,6 +23,8 @@ object OpenPastureHandler : ClientNetworkPacketHandler<OpenPasturePacket> {
|
||||
pastureId = packet.pastureId,
|
||||
limit = packet.limit,
|
||||
permissions = packet.permissions,
|
||||
range = packet.range,
|
||||
facing = packet.facing,
|
||||
pasturedPokemon = SettableObservable(packet.tetheredPokemon)
|
||||
)
|
||||
|
||||
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* 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.client.net.pasture
|
||||
|
||||
import com.cobblemon.mod.common.CobblemonSounds
|
||||
import com.cobblemon.mod.common.api.net.ClientNetworkPacketHandler
|
||||
import com.cobblemon.mod.common.client.gui.pasture.PasturePCGUIConfiguration
|
||||
import com.cobblemon.mod.common.client.gui.pc.PCGUI
|
||||
import com.cobblemon.mod.common.net.messages.client.pasture.UpdatePastureRangePacket
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.client.resources.sounds.SimpleSoundInstance
|
||||
|
||||
object UpdatePastureRangeHandler : ClientNetworkPacketHandler<UpdatePastureRangePacket> {
|
||||
override fun handle(packet: UpdatePastureRangePacket, client: Minecraft) {
|
||||
val configuration = (client.screen as? PCGUI)?.configuration as? PasturePCGUIConfiguration ?: return
|
||||
if (configuration.pastureId != packet.pastureId) return
|
||||
configuration.range = packet.range
|
||||
client.soundManager.play(SimpleSoundInstance.forUI(CobblemonSounds.PC_CLICK, 1F))
|
||||
}
|
||||
}
|
||||
@@ -117,7 +117,6 @@ import net.minecraft.core.BlockPos
|
||||
import net.minecraft.core.Direction
|
||||
import net.minecraft.core.component.DataComponents
|
||||
import net.minecraft.core.registries.BuiltInRegistries
|
||||
import net.minecraft.core.registries.Registries
|
||||
import net.minecraft.nbt.CompoundTag
|
||||
import net.minecraft.nbt.NbtOps
|
||||
import net.minecraft.nbt.NbtUtils
|
||||
@@ -133,7 +132,6 @@ import net.minecraft.network.protocol.game.DebugPackets
|
||||
import net.minecraft.network.syncher.EntityDataAccessor
|
||||
import net.minecraft.network.syncher.EntityDataSerializers
|
||||
import net.minecraft.network.syncher.SynchedEntityData
|
||||
import net.minecraft.resources.ResourceKey
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.server.level.ServerEntity
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
@@ -168,14 +166,12 @@ import net.minecraft.world.item.Items
|
||||
import net.minecraft.world.level.Level
|
||||
import net.minecraft.world.level.LightLayer
|
||||
import net.minecraft.world.level.block.Blocks
|
||||
import net.minecraft.world.level.block.HorizontalDirectionalBlock
|
||||
import net.minecraft.world.level.block.SuspiciousEffectHolder
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
import net.minecraft.world.level.gameevent.GameEvent
|
||||
import net.minecraft.world.level.material.EmptyFluid
|
||||
import net.minecraft.world.level.material.FluidState
|
||||
import net.minecraft.world.level.pathfinder.PathType
|
||||
import net.minecraft.world.level.storage.loot.LootTable
|
||||
import net.minecraft.world.phys.AABB
|
||||
import net.minecraft.world.phys.Vec3
|
||||
import java.util.*
|
||||
@@ -245,12 +241,6 @@ open class PokemonEntity(
|
||||
|
||||
override val schedulingTracker = SchedulingTracker()
|
||||
|
||||
override fun getDefaultLootTable(): ResourceKey<LootTable?>? {
|
||||
println(cobblemonResource("pokemon/${this.pokemon.species.resourceIdentifier.path}"))
|
||||
// return ResourceKey.create(Registries.LOOT_TABLE, )
|
||||
return super.getDefaultLootTable()
|
||||
}
|
||||
|
||||
val form: FormData
|
||||
get() = pokemon.form
|
||||
val behaviour: FormPokemonBehaviour
|
||||
@@ -313,6 +303,7 @@ open class PokemonEntity(
|
||||
var drops: DropTable? = null
|
||||
|
||||
var tethering: PokemonPastureBlockEntity.Tethering? = null
|
||||
private var nextPastureReturnAttempt = 0
|
||||
|
||||
// TODO review if we still want this
|
||||
var queuedToDespawn = false
|
||||
@@ -747,34 +738,29 @@ open class PokemonEntity(
|
||||
|
||||
// Check to see if the entity needs recalled or repositioned if pastured.
|
||||
fun checkPastureTether() {
|
||||
// Teleport a pastured mon back to the pasture block if they are out of range
|
||||
if (this.tethering != null && !this.tethering!!.box.contains(this.x, this.y, this.z)) {
|
||||
|
||||
// Gather the ideal position (behind the pastureBlock)
|
||||
val pastureBlockPos = this.tethering!!.pasturePos
|
||||
val state = this.level().getBlockState(pastureBlockPos)
|
||||
|
||||
// Check to ensure we are working with a pastureblock here and it hasn't been broken
|
||||
if (state.block == CobblemonBlocks.PASTURE) {
|
||||
val direction = state.getValue(HorizontalDirectionalBlock.FACING)
|
||||
val width = this.boundingBox.xsize
|
||||
val tpPos = pastureBlockPos.offset(direction.normal.multiply(ceil(width).toInt() + 1)).center
|
||||
val heightAllowance = 4.0 // Allow spawning up to x blocks above the pastureBlock y level
|
||||
|
||||
// Attempt tp and recall if it fails
|
||||
if (!this.randomTeleport(tpPos.x, tpPos.y + heightAllowance, tpPos.z, false)) {
|
||||
// If the teleport was not successful then recall the mon
|
||||
this.tethering = null
|
||||
this.pokemon.recall()
|
||||
} else {
|
||||
// Stop any now invalid navigation post teleport
|
||||
this.navigation.stop()
|
||||
}
|
||||
} else {
|
||||
// If the block is destroyed or something else went wrong.
|
||||
this.tethering = null
|
||||
this.pokemon.recall()
|
||||
}
|
||||
val currentTethering = tethering ?: return
|
||||
val world = level() as? ServerLevel ?: return
|
||||
if (ticksLived == 1 && world.hasChunkAt(currentTethering.pasturePos)) {
|
||||
val pasture = world.getBlockEntity(currentTethering.pasturePos) as? PokemonPastureBlockEntity
|
||||
pasture?.tetheredPokemon?.find { it.tetheringId == currentTethering.tetheringId }?.let { tethering = it }
|
||||
}
|
||||
if (tethering!!.canRoamTo(x, z) || !world.hasChunkAt(currentTethering.pasturePos)) return
|
||||
navigation.stop()
|
||||
(moveControl as? PokemonMoveControl)?.apply { stop(); stopBanking() }
|
||||
brain.eraseMemory(MemoryModuleType.WALK_TARGET)
|
||||
deltaMovement = Vec3.ZERO
|
||||
if (ticksLived < nextPastureReturnAttempt) return
|
||||
val pasture = world.getBlockEntity(currentTethering.pasturePos) as? PokemonPastureBlockEntity
|
||||
val position = pasture?.findSpawnPosition(this, blockPosition())
|
||||
if (position != null) {
|
||||
teleportTo(position.x, position.y, position.z)
|
||||
nextPastureReturnAttempt = 0
|
||||
} else if (pasture == null) {
|
||||
tethering = null
|
||||
pokemon.recall()
|
||||
return
|
||||
} else {
|
||||
nextPastureReturnAttempt = ticksLived + 20
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1809,7 +1795,7 @@ open class PokemonEntity(
|
||||
removalObservable.emit(reason)
|
||||
this.brain.clearMemories()
|
||||
|
||||
if (reason.shouldDestroy() && pokemon.tetheringId != null) {
|
||||
if (reason.shouldDestroy() && pokemon.tetheringId != null && tethering == null) {
|
||||
pokemon.tetheringId = null
|
||||
}
|
||||
if (evolutionEntity != null) {
|
||||
|
||||
+20
-2
@@ -29,6 +29,7 @@ import net.minecraft.tags.FluidTags
|
||||
import net.minecraft.util.Mth
|
||||
import net.minecraft.world.entity.ai.attributes.Attributes
|
||||
import net.minecraft.world.entity.ai.control.MoveControl
|
||||
import net.minecraft.world.entity.ai.memory.MemoryModuleType
|
||||
import net.minecraft.world.level.material.FluidState
|
||||
import net.minecraft.world.level.pathfinder.PathType
|
||||
import net.minecraft.world.phys.AABB
|
||||
@@ -106,7 +107,14 @@ class PokemonMoveControl(val pokemonEntity: PokemonEntity) : MoveControl(pokemon
|
||||
|
||||
if (banking) {
|
||||
pokemonEntity.yRot += bankRightDegreesPerTick
|
||||
pokemonEntity.travel(Vec3(0.0, bankUpwardsBlocksPerTick.toDouble(), bankForwardBlocksPerTick.toDouble()).scale(mediumSpeed.toDouble()))
|
||||
val forward = bankForwardBlocksPerTick * mediumSpeed
|
||||
val tethering = pokemonEntity.tethering
|
||||
if (tethering?.canRoamTo(
|
||||
pokemonEntity.x - Mth.sin(pokemonEntity.yRot.toRadians()) * forward,
|
||||
pokemonEntity.z + Mth.cos(pokemonEntity.yRot.toRadians()) * forward
|
||||
) != false) {
|
||||
pokemonEntity.travel(Vec3(0.0, bankUpwardsBlocksPerTick.toDouble(), bankForwardBlocksPerTick.toDouble()).scale(mediumSpeed.toDouble()))
|
||||
}
|
||||
if (bankDurationTicks > 0) {
|
||||
bankDurationTicks--
|
||||
}
|
||||
@@ -280,6 +288,16 @@ class PokemonMoveControl(val pokemonEntity: PokemonEntity) : MoveControl(pokemon
|
||||
}
|
||||
}
|
||||
}
|
||||
val tethering = pokemonEntity.tethering
|
||||
val motion = mob.deltaMovement
|
||||
if (tethering?.canRoamTo(mob.x, mob.z) == true &&
|
||||
!tethering.canRoamTo(mob.x + motion.x, mob.z + motion.z)) {
|
||||
mob.navigation.stop()
|
||||
pokemonEntity.brain.eraseMemory(MemoryModuleType.WALK_TARGET)
|
||||
stop()
|
||||
stopBanking()
|
||||
mob.deltaMovement = Vec3(0.0, motion.y, 0.0)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -369,4 +387,4 @@ class PokemonMoveControl(val pokemonEntity: PokemonEntity) : MoveControl(pokemon
|
||||
strafeForwards = 0.0f
|
||||
strafeRight = 0.0f
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
package com.cobblemon.mod.common.loot
|
||||
|
||||
import com.cobblemon.mod.common.loot.conditions.BiomeLootItemCondition
|
||||
import com.cobblemon.mod.common.loot.conditions.PokemonPropertiesLootItemCondition
|
||||
import com.cobblemon.mod.common.util.cobblemonResource
|
||||
import net.minecraft.core.Registry
|
||||
import net.minecraft.core.registries.BuiltInRegistries
|
||||
import net.minecraft.world.level.storage.loot.predicates.LootItemConditionType
|
||||
|
||||
object CobblemonLootItemConditions {
|
||||
|
||||
@JvmField
|
||||
val POKEMON_PROPERTIES_CONDITION = Registry.register(
|
||||
BuiltInRegistries.LOOT_CONDITION_TYPE,
|
||||
cobblemonResource("pokemon_properties"),
|
||||
LootItemConditionType(PokemonPropertiesLootItemCondition.CODEC)
|
||||
)
|
||||
|
||||
@JvmField
|
||||
val BIOME_CONDITION = Registry.register(
|
||||
BuiltInRegistries.LOOT_CONDITION_TYPE,
|
||||
cobblemonResource("biome"),
|
||||
LootItemConditionType(BiomeLootItemCondition.CODEC)
|
||||
)
|
||||
|
||||
fun touch() = Unit
|
||||
|
||||
}
|
||||
-38
@@ -1,38 +0,0 @@
|
||||
package com.cobblemon.mod.common.loot.conditions
|
||||
|
||||
import com.cobblemon.mod.common.api.conditional.RegistryLikeCondition
|
||||
import com.cobblemon.mod.common.api.conditional.makeCodecForRegistryLikeCondition
|
||||
import com.cobblemon.mod.common.loot.CobblemonLootItemConditions
|
||||
import com.cobblemon.mod.common.util.toBlockPos
|
||||
import com.mojang.serialization.MapCodec
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder
|
||||
import net.minecraft.core.registries.Registries
|
||||
import net.minecraft.world.level.biome.Biome
|
||||
import net.minecraft.world.level.storage.loot.LootContext
|
||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParams
|
||||
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition
|
||||
import net.minecraft.world.level.storage.loot.predicates.LootItemConditionType
|
||||
|
||||
class BiomeLootItemCondition(
|
||||
val biome: RegistryLikeCondition<Biome>
|
||||
) : LootItemCondition {
|
||||
override fun getType(): LootItemConditionType {
|
||||
return CobblemonLootItemConditions.BIOME_CONDITION
|
||||
}
|
||||
|
||||
override fun test(t: LootContext): Boolean {
|
||||
val temp = biome.fits(t.level.getBiome(t.getParam(LootContextParams.ORIGIN).toBlockPos()))
|
||||
return temp
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val BIOME_CODEC = makeCodecForRegistryLikeCondition("biome", Registries.BIOME)
|
||||
|
||||
val CODEC: MapCodec<BiomeLootItemCondition> = RecordCodecBuilder.mapCodec { instance ->
|
||||
instance.group(
|
||||
BIOME_CODEC.fieldOf("biome")
|
||||
.forGetter(BiomeLootItemCondition::biome)
|
||||
).apply(instance, ::BiomeLootItemCondition)
|
||||
}
|
||||
}
|
||||
}
|
||||
-33
@@ -1,33 +0,0 @@
|
||||
package com.cobblemon.mod.common.loot.conditions
|
||||
|
||||
import com.cobblemon.mod.common.api.pokemon.PokemonProperties
|
||||
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
|
||||
import com.cobblemon.mod.common.loot.CobblemonLootItemConditions
|
||||
import com.mojang.serialization.MapCodec
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder
|
||||
import net.minecraft.world.level.storage.loot.LootContext
|
||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParams
|
||||
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition
|
||||
import net.minecraft.world.level.storage.loot.predicates.LootItemConditionType
|
||||
|
||||
class PokemonPropertiesLootItemCondition(
|
||||
val properties: PokemonProperties
|
||||
) : LootItemCondition {
|
||||
override fun getType(): LootItemConditionType {
|
||||
return CobblemonLootItemConditions.POKEMON_PROPERTIES_CONDITION
|
||||
}
|
||||
|
||||
override fun test(t: LootContext): Boolean {
|
||||
val pokemon = t.getParamOrNull(LootContextParams.THIS_ENTITY) as? PokemonEntity ?: return false
|
||||
return properties.matches(pokemon)
|
||||
}
|
||||
|
||||
companion object {
|
||||
val CODEC: MapCodec<PokemonPropertiesLootItemCondition> = RecordCodecBuilder.mapCodec { instance ->
|
||||
instance.group(
|
||||
PokemonProperties.CODEC.fieldOf("properties")
|
||||
.forGetter(PokemonPropertiesLootItemCondition::properties)
|
||||
).apply(instance, ::PokemonPropertiesLootItemCondition)
|
||||
}
|
||||
}
|
||||
}
|
||||
+6
-2
@@ -10,6 +10,7 @@ package com.cobblemon.mod.common.net.messages.client.pasture
|
||||
|
||||
import com.cobblemon.mod.common.api.net.NetworkPacket
|
||||
import com.cobblemon.mod.common.api.pasture.PasturePermissions
|
||||
import com.cobblemon.mod.common.api.pasture.PastureRange
|
||||
import com.cobblemon.mod.common.client.net.pasture.OpenPastureHandler
|
||||
import com.cobblemon.mod.common.entity.pokemon.PokemonBehaviourFlag
|
||||
import com.cobblemon.mod.common.net.IntSize
|
||||
@@ -19,6 +20,7 @@ import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.core.Direction
|
||||
|
||||
/**
|
||||
* Opens a pasture GUI using the provided data.
|
||||
@@ -28,7 +30,7 @@ import net.minecraft.resources.ResourceLocation
|
||||
* @author Hiroku
|
||||
* @since April 9th, 2023
|
||||
*/
|
||||
class OpenPasturePacket(val pcId: UUID, val pastureId: UUID, val limit: Int, val tetheredPokemon: List<PasturePokemonDataDTO>, val permissions: PasturePermissions) : NetworkPacket<OpenPasturePacket> {
|
||||
class OpenPasturePacket(val pcId: UUID, val pastureId: UUID, val limit: Int, val tetheredPokemon: List<PasturePokemonDataDTO>, val permissions: PasturePermissions, val range: PastureRange, val facing: Direction) : NetworkPacket<OpenPasturePacket> {
|
||||
class PasturePokemonDataDTO(
|
||||
val pokemonId: UUID,
|
||||
val playerId: UUID,
|
||||
@@ -95,7 +97,7 @@ class OpenPasturePacket(val pcId: UUID, val pastureId: UUID, val limit: Int, val
|
||||
dtos.add(PasturePokemonDataDTO.decode(buffer))
|
||||
}
|
||||
val permissions = PasturePermissions.decode(buffer)
|
||||
return OpenPasturePacket(pcId, pastureId, limit, dtos, permissions)
|
||||
return OpenPasturePacket(pcId, pastureId, limit, dtos, permissions, PastureRange.decode(buffer), buffer.readEnum(Direction::class.java))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,5 +112,7 @@ class OpenPasturePacket(val pcId: UUID, val pastureId: UUID, val limit: Int, val
|
||||
tethered.encode(buffer)
|
||||
}
|
||||
permissions.encode(buffer)
|
||||
range.encode(buffer)
|
||||
buffer.writeEnum(facing)
|
||||
}
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* 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.net.messages.client.pasture
|
||||
|
||||
import com.cobblemon.mod.common.api.net.NetworkPacket
|
||||
import com.cobblemon.mod.common.api.pasture.PastureRange
|
||||
import com.cobblemon.mod.common.util.cobblemonResource
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf
|
||||
import java.util.UUID
|
||||
|
||||
class UpdatePastureRangePacket(val pastureId: UUID, val range: PastureRange) : NetworkPacket<UpdatePastureRangePacket> {
|
||||
override val id = ID
|
||||
|
||||
override fun encode(buffer: RegistryFriendlyByteBuf) {
|
||||
buffer.writeUUID(pastureId)
|
||||
range.encode(buffer)
|
||||
}
|
||||
|
||||
companion object {
|
||||
val ID = cobblemonResource("update_pasture_range")
|
||||
fun decode(buffer: RegistryFriendlyByteBuf) = UpdatePastureRangePacket(
|
||||
buffer.readUUID(), PastureRange.decode(buffer)
|
||||
)
|
||||
}
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* 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.net.messages.server.pasture
|
||||
|
||||
import com.cobblemon.mod.common.api.net.NetworkPacket
|
||||
import com.cobblemon.mod.common.util.cobblemonResource
|
||||
import net.minecraft.core.Direction
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf
|
||||
import java.util.UUID
|
||||
|
||||
class AdjustPastureRangePacket(val pastureId: UUID, val direction: Direction, val increase: Boolean) : NetworkPacket<AdjustPastureRangePacket> {
|
||||
override val id = ID
|
||||
|
||||
override fun encode(buffer: RegistryFriendlyByteBuf) {
|
||||
buffer.writeUUID(pastureId)
|
||||
buffer.writeEnum(direction)
|
||||
buffer.writeBoolean(increase)
|
||||
}
|
||||
|
||||
companion object {
|
||||
val ID = cobblemonResource("adjust_pasture_range")
|
||||
fun decode(buffer: RegistryFriendlyByteBuf) = AdjustPastureRangePacket(
|
||||
buffer.readUUID(), buffer.readEnum(Direction::class.java), buffer.readBoolean()
|
||||
)
|
||||
}
|
||||
}
|
||||
+39
@@ -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.net.serverhandling.pasture
|
||||
|
||||
import com.cobblemon.mod.common.api.net.ServerNetworkPacketHandler
|
||||
import com.cobblemon.mod.common.api.pasture.PastureLinkManager
|
||||
import com.cobblemon.mod.common.api.pasture.PastureRange
|
||||
import com.cobblemon.mod.common.block.entity.PokemonPastureBlockEntity
|
||||
import com.cobblemon.mod.common.net.messages.client.pasture.UpdatePastureRangePacket
|
||||
import com.cobblemon.mod.common.net.messages.server.pasture.AdjustPastureRangePacket
|
||||
import net.minecraft.core.Direction
|
||||
import net.minecraft.server.MinecraftServer
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
|
||||
object AdjustPastureRangeHandler : ServerNetworkPacketHandler<AdjustPastureRangePacket> {
|
||||
override fun handle(packet: AdjustPastureRangePacket, server: MinecraftServer, player: ServerPlayer) {
|
||||
val link = PastureLinkManager.getLinkByPlayer(player) ?: return
|
||||
if (link.linkId != packet.pastureId || packet.direction.axis == Direction.Axis.Y) return
|
||||
val pasture = player.serverLevel().getBlockEntity(link.pos) as? PokemonPastureBlockEntity ?: return
|
||||
val range = pasture.getRange().adjusted(packet.direction, if (packet.increase) 1 else -1)
|
||||
if (!range.isValid(PastureRange.MAX_DISTANCE)) {
|
||||
UpdatePastureRangePacket(link.linkId, pasture.getRange()).sendToPlayer(player)
|
||||
return
|
||||
}
|
||||
pasture.setRange(range)
|
||||
for (viewer in player.serverLevel().players()) {
|
||||
val viewerLink = PastureLinkManager.getLinkByPlayer(viewer) ?: continue
|
||||
if (viewerLink.pos == link.pos && viewerLink.dimension == link.dimension) {
|
||||
UpdatePastureRangePacket(viewerLink.linkId, range).sendToPlayer(viewer)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1307,6 +1307,10 @@
|
||||
"cobblemon.ui.sort.discovered": "Sort by discovered status",
|
||||
"cobblemon.ui.pasture": "Pasture",
|
||||
"cobblemon.ui.pasture.recall_all": "Recall All",
|
||||
"cobblemon.ui.pasture.range": "Range",
|
||||
"cobblemon.ui.pasture.storage": "PC",
|
||||
"cobblemon.ui.pasture.range.increase": "%s / scroll up to increase",
|
||||
"cobblemon.ui.pasture.range.decrease": "%s / scroll down to decrease",
|
||||
"cobblemon.pasture.too_many_nearby": "There are too many Pokémon nearby.",
|
||||
"cobblemon.ui.interact.give.item": "Change held item",
|
||||
"cobblemon.ui.interact.give.cosmetic_item": "Change cosmetic item",
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 6.9 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 177 B |
@@ -1,112 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:snowball",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:sweet_berries",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 2,
|
||||
"max": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:never_melt_ice",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:occa_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/abomasnow"
|
||||
}
|
||||
@@ -1,85 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:ender_pearl",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:twisted_spoon",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.025
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:kasib_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.025
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/abra"
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:razor_claw",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:life_orb",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:roseli_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/absol"
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:shed_shell",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/accelgor"
|
||||
}
|
||||
@@ -1,111 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:iron_nugget",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:iron_sword",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:dusk_stone",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:ability_shield",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/aegislash"
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:bone",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:rocky_helmet",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/aerodactyl"
|
||||
}
|
||||
@@ -1,85 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:raw_iron",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:hard_stone",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:chople_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/aggron"
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:nanab_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.025
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:tag",
|
||||
"name": "cobblemon:apricorn_sprouts",
|
||||
"expand": true,
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.025
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/aipom"
|
||||
}
|
||||
@@ -1,85 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:ender_pearl",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:twisted_spoon",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:kasib_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/alakazam"
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:sugar",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:cake",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/alcremie"
|
||||
}
|
||||
@@ -1,121 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:cod",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 1,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:any_of",
|
||||
"terms": [
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "this",
|
||||
"predicate": {
|
||||
"flags": {
|
||||
"is_on_fire": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "direct_attacker",
|
||||
"predicate": {
|
||||
"equipment": {
|
||||
"mainhand": {
|
||||
"predicates": {
|
||||
"minecraft:enchantments": [
|
||||
{
|
||||
"enchantments": "#minecraft:smelts_loot"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"function": "minecraft:furnace_smelt"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:bone_meal",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:deep_sea_scale",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/alomomola"
|
||||
}
|
||||
@@ -1,122 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:white_wool",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:chicken",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 1,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:any_of",
|
||||
"terms": [
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "this",
|
||||
"predicate": {
|
||||
"flags": {
|
||||
"is_on_fire": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "direct_attacker",
|
||||
"predicate": {
|
||||
"equipment": {
|
||||
"mainhand": {
|
||||
"predicates": {
|
||||
"minecraft:enchantments": [
|
||||
{
|
||||
"enchantments": "#minecraft:smelts_loot"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"function": "minecraft:furnace_smelt"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:yache_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/altaria"
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:never_melt_ice",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/amaura"
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:nanab_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:tag",
|
||||
"name": "cobblemon:apricorn_sprouts",
|
||||
"expand": true,
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/ambipom"
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:red_mushroom",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:cheri_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/amoonguss"
|
||||
}
|
||||
@@ -1,95 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:mutton",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 2,
|
||||
"max": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:any_of",
|
||||
"terms": [
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "this",
|
||||
"predicate": {
|
||||
"flags": {
|
||||
"is_on_fire": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "direct_attacker",
|
||||
"predicate": {
|
||||
"equipment": {
|
||||
"mainhand": {
|
||||
"predicates": {
|
||||
"minecraft:enchantments": [
|
||||
{
|
||||
"enchantments": "#minecraft:smelts_loot"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"function": "minecraft:furnace_smelt"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:cheri_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/ampharos"
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:muscle_band",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:payapa_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/annihilape"
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:quick_claw",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/anorith"
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:sweet_apple",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 1,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:yache_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/appletun"
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:apple",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 1,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:yache_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.025
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/applin"
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:mystic_water",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:shed_shell",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:wepear_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/araquanid"
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:razor_fang",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:shed_shell",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/arbok"
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:big_root",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:grassy_seed",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:kebia_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/arboliva"
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:bone",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:rawst_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/arcanine"
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:bone",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:rawst_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/arcanine_hisui"
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [],
|
||||
"random_sequence": "cobblemon:pokemon/arceus"
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [],
|
||||
"random_sequence": "cobblemon:pokemon/archaludon"
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:feather",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/archen"
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:feather",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/archeops"
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:haban_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/arctibax"
|
||||
}
|
||||
@@ -1,96 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:bone",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:cod",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 1,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:any_of",
|
||||
"terms": [
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "this",
|
||||
"predicate": {
|
||||
"flags": {
|
||||
"is_on_fire": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "direct_attacker",
|
||||
"predicate": {
|
||||
"equipment": {
|
||||
"mainhand": {
|
||||
"predicates": {
|
||||
"minecraft:enchantments": [
|
||||
{
|
||||
"enchantments": "#minecraft:smelts_loot"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"function": "minecraft:furnace_smelt"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/arctovish"
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:bone",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:feather",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/arctozolt"
|
||||
}
|
||||
@@ -1,139 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:string",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:spider_eye",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:rotten_flesh",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:poison_barb",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:shed_shell",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/ariados"
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:quick_claw",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:shed_shell",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/armaldo"
|
||||
}
|
||||
@@ -1,163 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:charcoal_stick",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:auspicious_armor",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:rawst_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:charcoal",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:inverted",
|
||||
"term": {
|
||||
"condition": "minecraft:any_of",
|
||||
"terms": [
|
||||
{
|
||||
"condition": "cobblemon:biome",
|
||||
"biome": "#minecraft:is_nether"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:blaze_rod",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:all_of",
|
||||
"terms": [
|
||||
{
|
||||
"condition": "cobblemon:biome",
|
||||
"biome": "#minecraft:is_nether"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/armarouge"
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:misty_seed",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:kebia_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:fairy_feather",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/aromatisse"
|
||||
}
|
||||
@@ -1,85 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:raw_iron",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:hard_stone",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.025
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:chople_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.025
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/aron"
|
||||
}
|
||||
@@ -1,95 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:salmon",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 1,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:any_of",
|
||||
"terms": [
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "this",
|
||||
"predicate": {
|
||||
"flags": {
|
||||
"is_on_fire": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "direct_attacker",
|
||||
"predicate": {
|
||||
"equipment": {
|
||||
"mainhand": {
|
||||
"predicates": {
|
||||
"minecraft:enchantments": [
|
||||
{
|
||||
"enchantments": "#minecraft:smelts_loot"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"function": "minecraft:furnace_smelt"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:bone_meal",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/arrokuda"
|
||||
}
|
||||
@@ -1,123 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:feather",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 2,
|
||||
"max": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:chicken",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 1,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:any_of",
|
||||
"terms": [
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "this",
|
||||
"predicate": {
|
||||
"flags": {
|
||||
"is_on_fire": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "direct_attacker",
|
||||
"predicate": {
|
||||
"equipment": {
|
||||
"mainhand": {
|
||||
"predicates": {
|
||||
"minecraft:enchantments": [
|
||||
{
|
||||
"enchantments": "#minecraft:smelts_loot"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"function": "minecraft:furnace_smelt"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:never_melt_ice",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 1,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/articuno"
|
||||
}
|
||||
@@ -1,123 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:feather",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 2,
|
||||
"max": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:chicken",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 1,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:any_of",
|
||||
"terms": [
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "this",
|
||||
"predicate": {
|
||||
"flags": {
|
||||
"is_on_fire": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "direct_attacker",
|
||||
"predicate": {
|
||||
"equipment": {
|
||||
"mainhand": {
|
||||
"predicates": {
|
||||
"minecraft:enchantments": [
|
||||
{
|
||||
"enchantments": "#minecraft:smelts_loot"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"function": "minecraft:furnace_smelt"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:twisted_spoon",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 1,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/articuno_galar"
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:oran_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:fairy_feather",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/audino"
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:never_melt_ice",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/aurorus"
|
||||
}
|
||||
@@ -1,85 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:ice",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:never_melt_ice",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:aspear_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/avalugg"
|
||||
}
|
||||
@@ -1,85 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:ice",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:never_melt_ice",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:babiri_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/avalugg_hisui"
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:dragon_fang",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:haban_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/axew"
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [],
|
||||
"random_sequence": "cobblemon:pokemon/azelf"
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:kebia_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/azumarill"
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:kebia_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.025
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/azurill"
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:dragon_fang",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:dragon_scale",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:yache_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/bagon"
|
||||
}
|
||||
@@ -1,85 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:clay_ball",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:light_clay",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.025
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:colbur_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.025
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/baltoy"
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:phantom_membrane",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:spell_tag",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/banette"
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:rindo_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/barbaracle"
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:clay_ball",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:rindo_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.025
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/barboach"
|
||||
}
|
||||
@@ -1,95 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:salmon",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 1,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:any_of",
|
||||
"terms": [
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "this",
|
||||
"predicate": {
|
||||
"flags": {
|
||||
"is_on_fire": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "direct_attacker",
|
||||
"predicate": {
|
||||
"equipment": {
|
||||
"mainhand": {
|
||||
"predicates": {
|
||||
"minecraft:enchantments": [
|
||||
{
|
||||
"enchantments": "#minecraft:smelts_loot"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"function": "minecraft:furnace_smelt"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:bone_meal",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/barraskewda"
|
||||
}
|
||||
@@ -1,95 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:salmon",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 1,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:any_of",
|
||||
"terms": [
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "this",
|
||||
"predicate": {
|
||||
"flags": {
|
||||
"is_on_fire": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "direct_attacker",
|
||||
"predicate": {
|
||||
"equipment": {
|
||||
"mainhand": {
|
||||
"predicates": {
|
||||
"minecraft:enchantments": [
|
||||
{
|
||||
"enchantments": "#minecraft:smelts_loot"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"function": "minecraft:furnace_smelt"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:bone_meal",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/basculegion"
|
||||
}
|
||||
@@ -1,121 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:salmon",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 1,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:any_of",
|
||||
"terms": [
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "this",
|
||||
"predicate": {
|
||||
"flags": {
|
||||
"is_on_fire": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "direct_attacker",
|
||||
"predicate": {
|
||||
"equipment": {
|
||||
"mainhand": {
|
||||
"predicates": {
|
||||
"minecraft:enchantments": [
|
||||
{
|
||||
"enchantments": "#minecraft:smelts_loot"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"function": "minecraft:furnace_smelt"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:bone_meal",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:deep_sea_tooth",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/basculin"
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:bone",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/bastiodon"
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:haban_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.25
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/baxcalibur"
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:miracle_seed",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/bayleef"
|
||||
}
|
||||
@@ -1,122 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:snowball",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:cod",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:any_of",
|
||||
"terms": [
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "this",
|
||||
"predicate": {
|
||||
"flags": {
|
||||
"is_on_fire": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "direct_attacker",
|
||||
"predicate": {
|
||||
"equipment": {
|
||||
"mainhand": {
|
||||
"predicates": {
|
||||
"minecraft:enchantments": [
|
||||
{
|
||||
"enchantments": "#minecraft:smelts_loot"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"function": "minecraft:furnace_smelt"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:aspear_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/beartic"
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:bright_powder",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:shed_shell",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:pecha_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/beautifly"
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:poison_barb",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:shed_shell",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:pinap_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/beedrill"
|
||||
}
|
||||
@@ -1,123 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:ender_pearl",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:light_clay",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:colbur_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:chorus_fruit",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:all_of",
|
||||
"terms": [
|
||||
{
|
||||
"condition": "cobblemon:biome",
|
||||
"biome": "#cobblemon:is_end"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/beheeyem"
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:ender_pearl",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:metal_coat",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/beldum"
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:ochre_froglight",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:wepear_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/bellibolt"
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:absorb_bulb",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:pecha_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/bellossom"
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:big_root",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.025
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:pinap_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.025
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/bellsprout"
|
||||
}
|
||||
@@ -1,85 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:ice",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:never_melt_ice",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.025
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:aspear_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.025
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/bergmite"
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:chople_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/bewear"
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
{
|
||||
"type": "minecraft:generic",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:stick",
|
||||
"functions": [
|
||||
{
|
||||
"function": "set_count",
|
||||
"count": {
|
||||
"min": 0,
|
||||
"max": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "cobblemon:oran_berry",
|
||||
"functions": [
|
||||
{
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 1,
|
||||
"min": 0
|
||||
},
|
||||
"enchantment": "minecraft:looting",
|
||||
"function": "minecraft:enchanted_count_increase"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:random_chance",
|
||||
"chance": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"random_sequence": "cobblemon:pokemon/bibarel"
|
||||
}
|
||||
Loaded 100 of 2209 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user