Files
claudeandClaude Opus 5.5 4083791944 Phase 9: reproducible builds, balance from the server, spark check, play feedback
Build: every tool pinned (JDK, packwiz, Gradle plugins, Python packages), exports
normalised, tools/check_reproducible.py proves two clean builds are byte-identical.

Server-side balance: a server can load config/cobblesurvival/datapack.zip in place of
the jar's data, /reload applies it, tools/server_update.py packages it and refuses
when a client change is needed. JEI drop pages are sent by the server. Code-held
balance numbers moved to tuning/server.json.

Performance: spark in the pack (server only), tools/perf_test.py with fake players
whose chunks really are active, docs/performance.md.

Adrian's feedback: default keys R, U, J, §; drop pages link to Cobblemon Info and show
real chances; bosses only hurt in battles; battle XP halved; channels between the
islands low level; temperature ×3 with insulation doubled; hazards start at once; no
item dots on the map; a wild attack starts a battle; the starter only faints; quest
book on join with a basics page and an HMs page; regional forms obtainable.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 16:26:30 +01:00

128 lines
4.0 KiB
JSON

{
"lastSavedVersion": "1.8.4",
"maxPokemonLevel": 100,
"maxPokemonFriendship": 255,
"announceDropItems": true,
"defaultDropItemMethod": "on-entity",
"dropAfterDeathAnimation": false,
"ambientPokemonCryTicks": 1080,
"defaultKeyItems": [],
"defaultBoxCount": 40,
"pokemonSaveIntervalSeconds": 30,
"storageFormat": "nbt",
"preventCompletePartyDeposit": false,
"mongoDBConnectionString": "mongodb://localhost:27017",
"mongoDBDatabaseName": "cobblemon",
"maxVerticalCorrectionBlocks": 64,
"minimumLevelRangeMax": 10,
"enableSpawning": true,
"worldSpawningBlocklist": [],
"minimumDistanceBetweenEntities": 8.0,
"maxNearbyBlocksHorizontalRange": 4,
"maxNearbyBlocksVerticalRange": 2,
"maxVerticalSpace": 8,
"spawningZoneDiameter": 8,
"spawningZoneHeight": 16,
"ticksBetweenSpawnAttempts": 20.0,
"minimumSpawningZoneDistanceFromPlayer": 16.0,
"maximumSpawningZoneDistanceFromPlayer": 64.0,
"maximumSpawnsPerPass": 8,
"exportSpawnConfig": false,
"savePokemonToWorld": true,
"exportStarterConfig": false,
"autoUpdateShowdown": true,
"defaultFleeDistance": 32.0,
"allowExperienceFromPvP": true,
"experienceShareMultiplier": 0.5,
"awardExperienceToFaintedPokemon": false,
"awardExperienceOnBattleLoss": false,
"luckyEggMultiplier": 1.5,
"allowSpectating": true,
"experienceMultiplier": 1.0,
"predationChance": 0.05,
"pokemonPerChunk": 1.0,
"pokeSnackPokemonPerChunk": 2.0,
"passiveStatuses": {
"cobblemon:poison": "180-300",
"cobblemon:poisonbadly": "180-300",
"cobblemon:paralysis": "180-300",
"cobblemon:frozen": "180-300",
"cobblemon:sleep": "180-300",
"cobblemon:burn": "180-300"
},
"infiniteHealerCharge": false,
"maxHealerCharge": 6.0,
"secondsToChargeHealingMachine": 3600.0,
"defaultFaintTimer": 1000000000,
"faintAwakenHealthPercent": 0.2,
"healPercent": 0.0,
"healTimer": 60,
"baseApricornTreeGenerationChance": 0.1,
"displayEntityLevelLabel": true,
"displayEntityNameLabel": true,
"displayNameForUnknownPokemon": false,
"displayEntityLabelsWhenCrouchingOnly": false,
"shoulderMountArmorOffsetBlacklist": [],
"shinyRate": 8192.0,
"fossilMachineAlphaChance": 20,
"fossilMachineShinyChance": 100,
"honeySlatherAlphaChance": 100,
"honeySlatherShinyChance": 4000,
"shinyNoticeParticlesDistance": 24.0,
"captureCalculator": "cobblemon",
"playerDamagePokemon": true,
"pokemonIntrinsicSizeMin": 0.95,
"pokemonIntrinsicSizeMax": 1.05,
"babyPokemonLevelDuration": 9,
"babyPokemonSizeMultiplier": 0.9,
"minimumRidingScale": 0.75,
"appleLeftoversChance": 0.025,
"maxRootsInArea": 9,
"bigRootPropagationChance": 0.5,
"energyRootChance": 0.25,
"maxDynamaxLevel": 10,
"teraTypeRate": 20.0,
"defaultPasturedPokemonLimit": 16,
"pastureBlockUpdateTicks": 40,
"pastureMaxWanderDistance": 32,
"pastureMaxPerChunk": 4.0,
"maxInsertedFossilItems": 2,
"walkingInBattleAnimations": false,
"battleWildMaxDistance": 12.0,
"tradeMaxDistance": 12.0,
"battlePvPMaxDistance": 32.0,
"battleSpectateMaxDistance": 64.0,
"maxPokedexScanningDetectionRange": 10.0,
"unlockAllMoveDexMovesByDefault": false,
"infiniteTmUses": false,
"hideUnimplementedPokemonInThePokedex": false,
"summaryPokemonFollowCursor": true,
"partyPortraitAnimations": "NEVER_ANIMATE",
"pcProfileAnimations": "ANIMATE_SELECTED",
"summaryProfileAnimations": "ANIMATE_SELECTED",
"animateBattleTiles": false,
"thirdPersonViewBobbing": true,
"invertPitch": false,
"invertYaw": false,
"xAxisSensitivity": 1.0,
"yAxisSensitivity": 1.0,
"swapXAndYAxes": false,
"disableRoll": false,
"displayControlSeconds": 0,
"infiniteRideStamina": false,
"rememberRidingCamera": false,
"enableInFlightDismounting": false,
"enableDebugKeys": false,
"despawnerNearDistance": 32.0,
"despawnerFarDistance": 96.0,
"despawnerMinAgeTicks": 600,
"despawnerMaxAgeTicks": 3600,
"monitorAlphaRate": 40,
"monitorShinyRate": 200,
"typeGemMaxConnected": 16,
"typeGemMinGrowth": 8,
"typeGemGrowthChance": 0.1,
"typeGemInitialExpansionCycles": 100,
"typeGemTickChance": 1.0
}