서문
species JSON에는 각 포켓몬과 여러 폼에 대한 모든 데이터가 들어 있습니다. 종 파일은 시각적 요소를 제외한 포켓몬의 모든 것이라고 볼 수 있습니다. 기술, 특성, 폼, 크기, 진화 등 포켓몬 하나에 필요한 수많은 정보가 이 단일 파일에 담깁니다. Cobblemon은 이미 1,017마리 포켓몬에 대한 대부분의 데이터를 포함하고 있습니다.
커스텀 포켓몬을 만드는 일은 새 종 파일을 만드는 것만큼 단순합니다. 기존 포켓몬의 종 파일을 가져와 이름만 바꿔도 되고, 처음부터 새 파일을 만들어도 됩니다. 새 종 파일을 만들 때는 Cobblemon Fakemon Generator 사용을 강력히 권장합니다.
종 파일
종 파일에는 게임 안에서 포켓몬이 작동하도록 만드는 여러 시스템과 연결된 방대한 데이터가 들어 있습니다. 일부 속성은 이름만 봐도 이해하기 쉽지만, 그렇지 않은 속성도 있습니다. 이 섹션에서는 종 파일과 연결된 다양한 시스템을 이해하는 데 도움이 되는 정보와 링크를 제공합니다.
유용한 정보
아래에는 유용한 링크와 자료를 정리했습니다. 모드의 작동 방식과 포켓몬 전반의 메커니즘을 이해하는 데 도움이 됩니다.
종 파일을 구할 수 있는 곳
- The Cobblemon Gitlab - Cobblemon의 소스 코드가 호스팅되는 곳입니다. 해당 링크에서 모든 포켓몬의 종 파일을 찾을 수 있으며, 파일은 세대별 폴더에 정리되어 있습니다.
공식 포켓몬 데이터를 찾을 수 있는 곳
- Bulbagarden - 게임과 애니메이션의 포켓몬 정보를 모두 다루는 사이트입니다. 각 포켓몬에 대한 다양한 참고 자료를 찾을 수 있습니다.
- 포켓몬 Database - 포켓몬에 관한 여러 정보를 제공하지만, 특히 능력치 정보에 초점을 둔 사이트입니다. 이 데이터 중 상당수는 종 파일에 적힌 내용과 같거나 비슷합니다.
- Serebii - 포켓몬 관련 정보가 가장 많은 사이트 중 하나입니다. Serebii는 정확한 데이터와 함께 각 매체 등장 모습의 이미지 참고 자료를 제공합니다.
행동 및 AI 정보
- 행동 위키 문서 - 이 위키 문서는 포켓몬에 작성할 수 있는 여러 행동 속성을 나열하고 설명합니다. 이 속성들은 포켓몬의 AI 행동을 지정합니다. 직접 만들기 어렵다면 비슷한 포켓몬의 행동 코드 블록을 복사해 사용할 수도 있습니다.
폼, 특징, 외형 요소
- 리전 폼 - 리전 폼을 설정하는 방법을 다루는 튜토리얼로 연결됩니다. 리전 폼은 보통 능력치가 다르며, 이 튜토리얼에서 설정 방법을 확인할 수 있습니다.
- 여러 시각 폼 - 토대부기의 서로 다른 나무처럼 여러 시각적 폼을 만드는 방법을 다루는 튜토리얼로 연결됩니다. 이런 폼은 보통 기본 폼과 같은 능력치를 유지하며, 이 튜토리얼에서 설정 방법을 확인할 수 있습니다.
- 종 특징 - 종 특징에 관한 위키 문서입니다. 특징은 “외형 요소”를 만들어 내며, 외형 요소를 통해 포켓몬의 다양한 시각적 폼을 구현할 수 있습니다.
진화
- The Cobblemon Gitlab - 진화를 만들 때는 기존 포켓몬의 진화 데이터를 틀로 사용하는 것을 권장합니다. 기존 진화 방식은 각 포켓몬의 종 파일에 작성되어 있습니다.
- Cobblemon Fakemon Generator - Fakemon 생성기를 사용해 진화 방식도 생성할 수 있습니다. 새 종 파일을 만들 때 필요한 진화 방식을 함께 제공합니다.
- 진화 조건 From the Cobblemon Gitlab - 참고할 수 있는 모든 진화 조건 코드 파일이 들어 있는 GitLab 폴더로 연결됩니다. 이 방식들은 각각 최소 한 마리 이상의 공식 포켓몬이 사용합니다. 같은 진화 방식을 재현하려면 해당 포켓몬의 종 파일을 찾아보는 것을 권장합니다.
어깨 효과
어깨 효과는 특정 포켓몬을 어깨에 올렸을 때 플레이어에게 특별한 버프를 부여합니다. 1.4 버전에서는 추후 재조정을 위해 어깨 효과가 제거되었지만, 데이터팩을 통해 효과 데이터를 적용할 수는 있습니다. 1.4 버전 기준으로 어깨에 올릴 수 있는 포켓몬 중 종 파일에 어깨 효과 데이터가 들어 있는 포켓몬은 없습니다.
포켓몬에 어깨 효과 데이터를 적용하려면 아래 코드 블록을 포함하고 원하는 효과로 바꾸면 됩니다.
- 효과 목록은 마인크래프트 위키에서 확인할 수 있습니다. 실제 적용 결과는 상황에 따라 달라질 수 있습니다.
"shoulderEffects": [
{
"type": "potion_effect",
"effect": "minecraft:slow_falling",
"amplifier": 0,
"ambient": true,
"showParticles": false,
"showIcon": false
}
]
버전 1.3 shoulder effects:
hastewater_breathingspeedslow_falling
기술과 습득 방식
종 파일의 이 섹션은 포켓몬이 배울 수 있는 기술을 결정합니다. 기술 습득 방식은 4가지가 있으며, 현재 구현된 것은 level 습득 하나뿐입니다.
공식 게임의 모든 기술은 Cobblemon에 포함되어 있어야 합니다. 기술이 올바르게 읽히려면 기술 목록의 정확한 형식으로 작성해야 합니다. 콜론 왼쪽에는 습득 방식, 오른쪽에는 기술 이름을 적습니다. 두 단어 이상으로 된 기술 이름은 하나의 “단어”로 붙여 써야 하며, 공백, 밑줄, 쉼표, 하이픈을 포함할 수 없습니다. 또한 모두 소문자로 유지해야 합니다.
각 방식과 이름 형식 예시:
"5:quickattack": 레벨 - 이렇게 하면 포켓몬이 레벨 5에quick attack을 배웁니다. 숫자는 해당 기술을 배우는 레벨을 정합니다."egg:thunder": 교배기 - 이렇게 하면 포켓몬이 부모 중 하나로부터thunder를 유전받습니다. 교배가 구현되면 알에서 깨어날 때 이 기술을 알고 있게 됩니다."tm:thunderbolt": 기술머신 - 이렇게 하면 기술머신이 구현되었을 때 포켓몬이thunderbolt기술머신을 사용할 수 있습니다."tutor:10000000voltthunderbolt": 기술 가르침 - 이렇게 하면 기술 가르침이 구현되었을 때 포켓몬이 가르침을 통해10,000,000 Volt Thunderbolt를 배울 수 있습니다.
아이템 드롭
Cobblemon의 드롭은 바닐라 드롭과 다르게 작동합니다. 먼저 목표 드롭 수량을 설정하고, 나열된 항목을 굴려 그 수량을 채우려 합니다. 어떤 항목이 확률 검사를 통과하면 목표 수량에 1로 계산됩니다. 목표 수량에 도달하면 모든 항목을 다 읽지 않았더라도 더 이상 드롭을 굴리지 않습니다. 항목을 모두 확인했는데 목표 수량에 도달하지 못해도 굴림을 멈춥니다. 굴림이 끝나면 확률 검사를 통과한 모든 드롭이 포켓몬이 쓰러진 위치에 떨어집니다.
드롭 코드 블록 예시:
- 수량이 1로 설정되어 있고 항목도 1개뿐이므로, 이 항목 하나만 드롭 굴림에 사용됩니다.
- 달콤한열매 항목에는 확률 값이 적혀 있지 않으므로 기본값인 100%가 적용됩니다.
- 이 설정은 식스테일이 100% 확률로 열매 2-3개를 드롭하게 만듭니다.
"drops": {
"amount": "1",
"entries": [
{
"item": "minecraft:sweet_berries",
"quantityRange": "2-3"
}
]
},
히트박스와 기본 스케일
포켓몬 모델의 크기와 히트박스는 종 파일에서 제어합니다. 값을 바꾼 뒤 결과를 확인하려면 메인 메뉴에서 싱글플레이 월드를 다시 불러와야 합니다. /reload 명령어는 Cobblemon 데이터팩에 적용되지 않습니다. Cobblemon 데이터팩을 새로고침하는 올바른 방법은 월드를 다시 불러오는 것입니다.
baseScale은 포켓몬의 크기를 키우거나 줄입니다. 값이 1이면 Blockbench의 크기와 1:1 비율로 모델이 표시됩니다.hitbox에는 변경할 수 있는 값이 3개 있지만, 보통은 히트박스의height와width만 바꾸면 됩니다. 게임 안에서는F3+B를 눌러 엔티티의 히트박스를 표시할 수 있습니다.- Height는 포켓몬이 몇 블록 높이인지 나타냅니다.
- 히트박스 width가 1이면 포켓몬을 중심으로 히트박스 너비가 마인크래프트 블록 1개만큼 됩니다. Width는 지름에 가깝지만, 마인크래프트에서는 모든 것이 큐브이니 너무 깊게 생각하지 않아도 됩니다.
키와 몸무게
포켓몬 도감이 구현되면 사용할 키와 몸무게 값입니다. 키 단위는 데시미터, 몸무게 단위는 헥토그램입니다. 이 값을 10으로 나누면 각각 미터와 킬로그램 단위가 됩니다.
height는 큰 기능을 하지는 않으며, 포켓몬 도감에서도 오해를 부를 때가 많습니다. 어떤 경우에는 땅에서부터의 거리를 뜻하고, 어떤 경우에는 포켓몬의 길이를 뜻합니다.weight는 헤비봄버처럼 몸무게 기반 기술의 피해량을 결정합니다. 이 값을 반드시 헥토그램 단위로 설정해야 하며, 그렇지 않으면 해당 기술이 의도치 않은 피해량을 낼 수 있습니다.
성별
성별은 maleRatio 속성으로 관리합니다.
- 이 속성은 0과 1 사이의 소수 값을 가지며, 포켓몬이 수컷으로 스폰될 확률을 나타냅니다.
- 예를 들어 값이
0.1이면 수컷으로 스폰될 확률이 10%입니다.
- 예를 들어 값이
- 특수 값
-1은 성별이 없는 포켓몬에 사용됩니다.
조명 데이터
조명 데이터는 널리 쓰이는 동적 조명 모드와의 호환성을 제공합니다. 포켓몬에 밝기 레벨을 지정하고, 육상이나 수중 또는 양쪽 모두에서만 빛을 내도록 설정할 수 있습니다.
lightLevel- 포켓몬이 내는 밝기 레벨입니다. 범위는 0부터 15까지입니다.liquidGlowMode- 액체 안이나 육상에서 효과가 적용되는지를 정합니다. 선택지는LAND,UNDERWATER,BOTH입니다.
lightingData 코드 블록 예시:
- 이 데이터가 지정된 포켓몬은 육상에 있을 때 밝기 레벨 14의 빛을 냅니다.
"lightingData": {
"lightLevel": 14,
"liquidGlowMode": "LAND"
}
종 파일 구성 설명
이 문서 작성자 기준으로 식스테일은 가장 자세하게 구성된 species 파일 중 하나입니다. 그래서 식스테일은 species 파일의 여러 섹션을 설명하기에 좋은 예시가 됩니다. 위에 나열된 자료를 참고하면서 아래에 작성된 데이터와 비교해 볼 수 있습니다. 밑줄이 있는 텍스트에 마우스를 올리면 더 자세한 정보를 볼 수 있습니다.
{
"implemented": true,
"name": "Vulpix",
"nationalPokedexNumber": 37,
"primaryType": "fire",
"abilities": [
"flashfire",
"h:drought"
],
"baseStats": {
"hp": 38,
"attack": 41,
"defence": 40,
"special_attack": 50,
"special_defence": 65,
"speed": 65
},
"behaviour": {
"resting": {
"canSleep": true,
"willSleepOnBed": true,
"depth": "normal",
"light": "0-4"
}
},
"catchRate": 190,
"maleRatio": 0.25,
"shoulderMountable": false,
"forms": [
{
"name": "Alola",
"primaryType": "ice",
"abilities": [
"snowcloak",
"h:snowwarning"
],
"baseStats": {
"hp": 38,
"attack": 41,
"defence": 40,
"special_attack": 50,
"special_defence": 65,
"speed": 65
},
"catchRate": 190,
"maleRatio": 0.25,
"baseExperienceYield": 60,
"baseFriendship": 50,
"evYield": {
"hp": 0,
"attack": 0,
"defence": 0,
"special_attack": 0,
"special_defence": 0,
"speed": 1
},
"experienceGroup": "medium_fast",
"eggCycles": 20,
"eggGroups": [
"field"
],
"moves": [
"1:powdersnow",
"1:tailwhip",
"4:disable",
"7:roar",
"8:iceshard",
"9:babydolleyes",
"12:spite",
"16:icywind",
"18:payback",
"20:confuseray",
"23:feintattack",
"24:aurorabeam",
"26:hex",
"28:extrasensory",
"32:icebeam",
"34:safeguard",
"36:imprison",
"40:mist",
"44:auroraveil",
"47:captivate",
"48:sheercold",
"52:grudge",
"56:blizzard",
"egg:agility",
"egg:babydolleyes",
"egg:charm",
"egg:disable",
"egg:encore",
"egg:extrasensory",
"egg:flail",
"egg:freezedry",
"egg:howl",
"egg:hypnosis",
"egg:moonblast",
"egg:powerswap",
"egg:roar",
"egg:secretpower",
"egg:spite",
"egg:tailslap",
"tm:agility",
"tm:attract",
"tm:auroraveil",
"tm:blizzard",
"tm:bodyslam",
"tm:charm",
"tm:confide",
"tm:darkpulse",
"tm:dig",
"tm:doubleteam",
"tm:drainingkiss",
"tm:encore",
"tm:endure",
"tm:facade",
"tm:foulplay",
"tm:frostbreath",
"tm:frustration",
"tm:hail",
"tm:hex",
"tm:hiddenpower",
"tm:icebeam",
"tm:icywind",
"tm:imprison",
"tm:irontail",
"tm:payback",
"tm:powerswap",
"tm:protect",
"tm:psychup",
"tm:raindance",
"tm:rest",
"tm:return",
"tm:roar",
"tm:round",
"tm:safeguard",
"tm:sleeptalk",
"tm:snore",
"tm:substitute",
"tm:swagger",
"tm:swift",
"tm:tailslap",
"tm:toxic",
"tm:weatherball",
"tm:zenheadbutt",
"tutor:aquatail",
"tutor:aurorabeam",
"tutor:babydolleyes",
"tutor:blizzard",
"tutor:celebrate",
"tutor:confuseray",
"tutor:covet",
"tutor:darkpulse",
"tutor:dazzlinggleam",
"tutor:dig",
"tutor:facade",
"tutor:foulplay",
"tutor:headbutt",
"tutor:healbell",
"tutor:icebeam",
"tutor:iceshard",
"tutor:icywind",
"tutor:irontail",
"tutor:mist",
"tutor:painsplit",
"tutor:powdersnow",
"tutor:protect",
"tutor:reflect",
"tutor:rest",
"tutor:roar",
"tutor:roleplay",
"tutor:snore",
"tutor:spite",
"tutor:substitute",
"tutor:tackle",
"tutor:tailwhip",
"tutor:toxic",
"tutor:zenheadbutt"
],
"labels": [
"gen7",
"alola_regional"
],
"aspects": [
"alolan"
],
"height": 6,
"weight": 99,
"evolutions": [
{
"id": "vulpix_ninetales",
"variant": "item_interact",
"result": "ninetales form=alola",
"consumeHeldItem": false,
"learnableMoves": [
"dazzlinggleam"
],
"requirements": [],
"requiredContext": "cobblemon:ice_stone"
}
],
"cannotDynamax": false,
"battleOnly": false
}
],
"features": [
"alolan"
],
"baseExperienceYield": 60,
"experienceGroup": "medium_fast",
"eggCycles": 20,
"eggGroups": [
"field"
],
"drops": {
"amount": "1",
"entries": [
{
"item": "minecraft:sweet_berries",
"quantityRange": "2-3"
}
]
},
"moves": [
"1:ember",
"1:tailwhip",
"4:disable",
"7:roar",
"8:quickattack",
"9:babydolleyes",
"12:spite",
"16:incinerate",
"18:payback",
"20:confuseray",
"23:feintattack",
"24:willowisp",
"26:hex",
"28:extrasensory",
"28:flameburst",
"32:flamethrower",
"36:imprison",
"40:firespin",
"44:safeguard",
"47:captivate",
"48:inferno",
"52:grudge",
"56:fireblast",
"egg:babydolleyes",
"egg:captivate",
"egg:disable",
"egg:energyball",
"egg:extrasensory",
"egg:feintattack",
"egg:flail",
"egg:flamecharge",
"egg:flareblitz",
"egg:heatwave",
"egg:hex",
"egg:howl",
"egg:hypnosis",
"egg:memento",
"egg:powerswap",
"egg:psychup",
"egg:roar",
"egg:secretpower",
"egg:spite",
"egg:tailslap",
"tm:agility",
"tm:attract",
"tm:bodyslam",
"tm:captivate",
"tm:confide",
"tm:darkpulse",
"tm:dig",
"tm:doubleteam",
"tm:encore",
"tm:endure",
"tm:energyball",
"tm:facade",
"tm:fireblast",
"tm:firespin",
"tm:flamecharge",
"tm:flamethrower",
"tm:flareblitz",
"tm:foulplay",
"tm:frustration",
"tm:heatwave",
"tm:hex",
"tm:hiddenpower",
"tm:imprison",
"tm:incinerate",
"tm:irontail",
"tm:mysticalfire",
"tm:naturalgift",
"tm:overheat",
"tm:payback",
"tm:powerswap",
"tm:protect",
"tm:psychup",
"tm:rest",
"tm:return",
"tm:roar",
"tm:round",
"tm:safeguard",
"tm:secretpower",
"tm:sleeptalk",
"tm:snore",
"tm:substitute",
"tm:sunnyday",
"tm:swagger",
"tm:swift",
"tm:tailslap",
"tm:toxic",
"tm:weatherball",
"tm:willowisp",
"tm:zenheadbutt",
"tutor:attract",
"tutor:bide",
"tutor:bodyslam",
"tutor:burningjealousy",
"tutor:charm",
"tutor:confuseray",
"tutor:covet",
"tutor:curse",
"tutor:darkpulse",
"tutor:dig",
"tutor:disable",
"tutor:doubleedge",
"tutor:doubleteam",
"tutor:ember",
"tutor:endure",
"tutor:facade",
"tutor:feintattack",
"tutor:fireblast",
"tutor:firespin",
"tutor:flail",
"tutor:flamethrower",
"tutor:foulplay",
"tutor:frustration",
"tutor:headbutt",
"tutor:heatwave",
"tutor:hiddenpower",
"tutor:hypnosis",
"tutor:irontail",
"tutor:mimic",
"tutor:ominouswind",
"tutor:painsplit",
"tutor:protect",
"tutor:quickattack",
"tutor:rage",
"tutor:reflect",
"tutor:rest",
"tutor:return",
"tutor:roar",
"tutor:roleplay",
"tutor:safeguard",
"tutor:skullbash",
"tutor:sleeptalk",
"tutor:snore",
"tutor:spite",
"tutor:substitute",
"tutor:sunnyday",
"tutor:swagger",
"tutor:swift",
"tutor:tackle",
"tutor:tailwhip",
"tutor:takedown",
"tutor:toxic",
"tutor:willowisp",
"tutor:zenheadbutt"
],
"labels": [
"gen1",
"kanto_regional"
],
"pokedex": [
"cobblemon.species.vulpix.desc"
],
"evolutions": [
{
"id": "vulpix_ninetales",
"variant": "item_interact",
"result": "ninetales",
"consumeHeldItem": false,
"learnableMoves": [],
"requirements": [],
"requiredContext": "cobblemon:fire_stone"
}
],
"baseScale": 0.7,
"hitbox": {
"width": 0.9,
"height": 1.1,
"fixed": false
},
"baseFriendship": 50,
"evYield": {
"hp": 0,
"attack": 0,
"defence": 0,
"special_attack": 0,
"special_defence": 0,
"speed": 1
},
"height": 6,
"weight": 99,
"aspects": [],
"cannotDynamax": false
}
Addon Creation
튜토리얼
커스텀 포켓몬 만들기 모델 만들기 커스텀 스폰 만들기 발광 텍스처 애니메이션 텍스처 Texture Replacement 애니메이션 교체 리전 폼여러 시각 Variants 애니메이션에 소리 추가하기
Asset Files
데이터 Files
종 종 특징 종 특징 할당 종 추가 스폰 Detail Presets 스폰 Pool 월드 화석 Datapackable Move Effects
Properties