본문으로 건너뛰기
버전: v1.4.0

변경 기록

1.4.0 — 2026-10-30​

  • 클라이언트에서 모든 로더가 게임의 첫 프레임 이전 로딩 화면과 똑같이 생긴 하나의 초기 로딩 창을 함께 띄웁니다. macOS는 아직 지원하지 않으며 -Dpoly.earlyWindow=off로 끌 수 있습니다.
  • NeoForge 26.2와 함께 쓰는 Fabric 모드: 리소스 조건, 충돌 보고서 정보, NeoForge 훅 기반 블록 및 아이템 모듈이 로드되어 더 많은 Fabric 모드가 실행됩니다. 인기 Fabric 모드 묶음에서 47개가 로드(이전 40개)됩니다.
  • Forgified Fabric API가 설치되었을 때 중첩된 로더 플러그인으로 인해 NeoForge가 시작 시 멈추던 문제가 해결됩니다.
  • Forge 환경: Fabric API 유체 및 아이템 훅은 실제로 실행되는 곳에서만 적용되며, Forge 옆의 fabric-biome-api-v1 등 일부 모드는 나중에 실패하는 대신 미리 제외됩니다.

1.3.0 — 2026-10-28​

  • 어느 로더로 실행해도 로딩 화면이 Poly 모드 로더의 것이 되고, Minecraft의 모습은 그대로입니다. Forge·NeoForge 초기 창은 모루·여우 자리에 회전하는 Poly 금색 큐브를 보여 주고, 게임의 로딩 화면은 Mojang 로고와 진행 막대를 그대로 두고 Poly 큐브와 이름, 로더별 모드 수를 덧그립니다.
  • 게임 창 제목이 어느 로더에서든 첫 화면부터 Minecraft* Poly <Minecraft 버전>입니다.
  • Minecraft 26.1·26.1.2: Forge 모드와 함께 쓰는 Fabric 모드가 더는 게임을 멈추지 않습니다. 인기 모드 묶음에서 다른 로더의 모드가 각각 76개, 83개 로드됩니다.

1.2.5 — 2026-10-28​

  • Minecraft 26.3: Fabric·Quilt 모드를 NeoForge·Forge 모드와 한 게임에서 다시 쓸 수 있습니다. 1.2.4에서는 이런 게임이 시작하거나 불러오는 중에 멈췄습니다.
  • Minecraft 26.3, Forge와 함께: Fabric API의 레지스트리 동기화와 그것이 필요한 모드가 로드됩니다. 블록을 더하는 Fabric 모드가 게임을 멈추지 않고, Fabric API가 있을 때 데이터 팩도 크래시 없이 읽습니다.
  • Forge와 함께일 때 26.2에서 Puzzles Lib의 Fabric 판(과 그것이 필요한 모드)이 다시 로드됩니다.
  • Forge·NeoForge 옆에서 실행할 수 없는 모드는 게임을 멈추는 대신 게임 시작 전에 이유와 함께 빠집니다.

1.2.4 — 2026-10-27​

  • 1.2.2에서 생긴 버그 세 가지를 고쳤습니다. JEI, Kotlin for Forge, Lithium, MoreCulling 같은 NeoForge 모드가 다시 로드되고, Fabric API를 넣은 Fabric 전용 서버가 다시 시작되며, Forge·NeoForge와 함께일 때 Fabric API의 엔티티 속성 기능이 동작합니다.
  • Fabric 모드와 NeoForge 모드를 함께 쓸 때 JEI의 MezzConfig 때문에 서버가 멈추지 않습니다.
  • Minecraft 26.3: 이름이 바뀐 렌더링 클래스를 쓰는 Fabric 모드(AppleSkin, Cloth Config, GeckoLib, YACL 등)가 서버에서 더 이상 빠지지 않습니다.
  • 설치 프로그램은 이제 모든 시스템에서 .jar 하나입니다(Java 17 이상). Windows .exe는 없어졌습니다.

1.2.3 — 2026-10-26​

  • 로딩 화면 텍스트 깨짐 현상 수정: Minecraft 26.1, 26.2, 26.3 커스텀 Poly 로딩 오버레이에서 발생하던 폰트 렌더링 및 문자 깨짐 오류를 표준 Component literal 및 ChatFormatting 색상 코드로 수정하여 깨짐 없이 선명하게 렌더링되도록 개선했습니다.
  • 오류 발생 시 GitHub Issues 바로 연결: 오류 발생 화면 및 버그 리포트 링크를 공식 GitHub Issues 페이지로 직접 연결하여 신속하고 투명하게 문제를 접수/추적할 수 있도록 개선했습니다.
  • NeoForge 환경 Fabric API 호환 적응점 확대: NeoForge 환경에서 클라이언트 화면, 컨테이너 메뉴, 데이터 어태치먼트 훅을 위한 주입점 대체 규칙(NeoForgeInjectionPoints)을 추가하여 호환성을 한층 더 강화했습니다.

1.2.2 — 2026-10-26​

  • Poly 전용 독자 로딩 화면(PolyLoadingOverlay): Minecraft 26.1, 26.2, 26.3 전 버전에 걸쳐 타 로더 화면을 대체하는 다크 테마(#0E131F) 커스텀 로딩 화면을 탑재했습니다.
  • 실시간 로더별 모드 수 오버레이: 로딩 화면 상단에 로더별(Fabric, Forge, NeoForge, Quilt, Poly) 모드 수를 실시간으로 집계 표시합니다.
  • 타 로더 고유 UI 및 모드 수 표기 차단: Forge 및 NeoForge 조기 로딩 윈도우를 끄고 타이틀 화면에서 "(X mods loaded)" 등의 서드파티 모드 카운트를 완전히 제거했습니다.
  • Forge 및 NeoForge 환경에서의 Fabric API 호환성 대폭 강화: fabric-item-api-v1, fabric-registry-sync-v0, fabric-content-registries-v0, fabric-data-generation-api-v1, fabric-entity-events-v1, fabric-object-builder-api-v1 등 다수 모듈 호환 지원.
  • 브랜드 정체성 및 사이트 신뢰성 보강: 명칭을 "Poly"로 일원화하고, 런처가 아닌 인게임 바이트코드 로더 정체성을 명시하였으며 보안 검증 체계를 강화했습니다.

1.2.1 — 2026-10-25​

  • 설치 프로그램 창 오른쪽 위에 언어 메뉴가 생겼습니다. English와 한국어를 언제든 바꿀 수 있고, 입력한 값은 그대로 남습니다.

1.2.0 — 2026-10-25​

  • Minecraft 26.3을 지원합니다. Poly 모드는 다시 빌드하지 않고 26.3에서 실행되며, 기본 키 바인딩도 그대로입니다. 26.3은 키보드를 SDL로 읽고, Poly 모드 로더가 키 코드를 바꿔 줍니다(KeyCodes의 값은 그대로). 26.3에 없는 키는 키 없이 시작합니다(POLY-CLIENT-008).
  • 26.3에서 Forge 모드는 Forge 26.3-66.1.0, NeoForge 모드는 NeoForge 26.3.0.98로 실행됩니다. 26.3에서 Fabric·Quilt·Forge·NeoForge 모드는 호환성 테스트 모드로 확인했고, 인기 모드 실행 확인은 아직 하지 않았습니다.
  • 모드 하나에 여러 Minecraft 버전용 데이터와 리소스를 담을 수 있습니다. 게임이 자기 팩에 하듯 모드의 pack.mcmeta 오버레이를 읽습니다. 26.3은 데이터 형식 몇 가지(worldgen/feature, 노이즈 설정의 material_rule)를 바꾸고 셰이더를 #include와 모든 입출력의 layout(location = N)으로 컴파일하므로, 그런 파일을 든 모드는 26.3 오버레이가 필요합니다. pack.mcmeta를 읽지 못하면 POLY-RESOURCE-010입니다.
  • Poly 모드 로더가 Mozilla Public License 2.0을 따르는 오픈소스가 되었습니다.

1.1.0 — 2026-10-25​

  • 이제 Minecraft 26.1, 26.1.2, 26.2에서 NeoForge 모드를 Forge 모드처럼 Fabric·Quilt 모드와 한 게임에서 쓸 수 있습니다. 하나의 Mixin이 모든 로더를 맡고, Fabric 모드는 NeoForge의 레지스트리가 열린 채로 시작합니다. 클라이언트에서 Fabric 모드 약 60개와 NeoForge 모드 약 50개가 저장된 월드에 들어가 플레이하고 저장한 뒤 나오며, 게임 테스트 서버, 전용 서버, 플레이 단계까지 가는 네트워크 접속도 통과합니다. Quilt 모드와 NeoForge 모드는 게임 테스트 서버에서 함께 확인했습니다.
  • MinecraftForge 모드와 NeoForge 모드를 함께 쓰는 것만 아직 안 됩니다. 이때는 Forge가 실행되고 NeoForge 모드는 이유와 함께 빠집니다(POLY-COMPAT-221).
  • NeoForge 패치와 맞지 않는 Fabric 주입은 실행하지 않고 알립니다(POLY-COMPAT-138). 대부분 NeoForge가 같은 일을 직접 하는 곳의 Fabric API입니다.
  • Fabric용과 NeoForge·Forge용으로 따로 만든 같은 모드는, 빌드마다 모드 ID 표기가 달라도 한 번만 실행됩니다. NeoForge·Forge 빌드가 실행되고 다른 빌드는 빠집니다(POLY-COMPAT-139). 전에는 Cloth Config의 두 빌드 때문에 클라이언트가 멈췄습니다. 두 빌드가 대부분 같은 코드이면, 빠진 빌드가 필요한 모드는 남은 빌드로 실행됩니다(NeoForge의 Cloth Config로 Better Shulker Boxes, Forge의 Fusion으로 FusionFix).
  • 클라이언트에서 NeoForge·Fabric API와 함께일 때 게임을 멈추던 문제를 고쳤습니다: 모드 초기화 뒤 Registry is already frozen, 게임 렌더러가 시작될 때 ClassCastException, 월드에 들어갈 때 Failed to encode packet ... minecraft:register, 접속하고 약 2초 뒤 Unknown addon으로 끊김, 월드를 그리다가 Conflicting default methods.
  • NeoForge 모드의 Mixin 설정이, 대상 하나가 일찍 로드되었다고 통째로 빠지지 않습니다. 그 클래스로의 mixin만 건너뜁니다(POLY-COMPAT-220). 26.2에서 Iris·Fabric 모드와 함께일 때 Lithium의 mixin이 적용되고, 통합 서버가 더는 멈추지 않습니다.
  • 새 코드: POLY-COMPAT-220, 221, 222, 223. 오류 코드를 보세요.

1.0.0 — 2026-10-24​

  • 첫 정식 버전입니다. Minecraft 26.1, 26.1.2, 26.2에서 Fabric, Forge, NeoForge, Quilt 모드를 모두 완전히 지원합니다. 로더마다 실제 인기 모드로 클라이언트, 게임 테스트 서버, 전용 서버, 설치한 프로필에서 확인했습니다.
  • 이제 NeoForge 모드는 옵션 없이 기본으로 NeoForge 자신의 로더로 실행됩니다(26.1은 NeoForge 26.1.0.19-beta, 26.1.1은 26.1.1.15-beta, 26.1.2는 26.1.2.122, 26.2는 26.2.0.93). NeoForge에 필요한 파일은 처음 시작할 때 받습니다. 클라이언트에서 인기 NeoForge 모드를 넣고 저장된 월드를 플레이하고 저장한 뒤 나오며(26.2는 Sodium, Iris를 포함한 54개), 설치한 서버도 mods/의 NeoForge 모드를 실행합니다.
  • Fabric, Forge, Quilt 모드는 한 게임에 섞어 쓸 수 있습니다. NeoForge 모드는 아직 Fabric·Quilt 모드와 한 게임에서 실행되지 않으며, 이때는 이유와 함께 빠집니다(POLY-COMPAT-216).
  • 타이틀 화면에 "NeoForge 모드" 줄이 생겼습니다. FancyMenu처럼 타이틀 화면의 브랜딩을 직접 그리는 모드가 있어도 나옵니다. 로그에도 NeoForge 모드 수가 따로 나옵니다.
  • Sodium의 NeoForge 빌드가 이제 NeoForge에서처럼 로드되어, 클라이언트에서 Iris, Sodium Extra, Reese's Sodium Options가 Sodium을 찾습니다.
  • 모드를 준비하는 도중 NeoForge 실행이 멈출 수 있던 문제를 고쳤습니다.

0.2.0-beta.3 — 2026-10-24​

  • Minecraft 26.1, 26.1.2, 26.2에서 Quilt 모드를 완전히 지원합니다. 버전마다 Modrinth의 Quilt 전용 빌드 전체로 클라이언트, 게임 테스트 서버, 전용 서버에서 확인했고, Forge 모드와 함께 넣은 경우와 실제 Quilt Loader의 결과도 비교했습니다. 설치한 서버와 런처 프로필에서도 Quilt 모드가 실행됩니다. Quilt 표준 라이브러리(QSL)가 필요한 모드는 여전히 이유와 함께 빠집니다. QSL은 26.x 판이 없기 때문입니다.
  • Quilt Loader를 요구하는 Quilt용 Fabric 모드(Better Shulker Boxes, F34 등)가 이제 Quilt Loader에서처럼 로드됩니다.
  • Mixin 라이브러리 자신이 거부하는 Mixin을 가진 Fabric·Quilt 모드는 이제 게임 시작 전에 이유와 함께 빠집니다(POLY-COMPAT-140). 전에는 Even Better Moon and Sun 같은 모드 때문에 클라이언트가 월드에 들어가지 못했습니다.
  • 서버의 Fabric API 클라이언트 모듈처럼 다른 쪽 전용이라 빠진 중첩 모드만으로는 더 이상 "일부만 동작함" 경고(POLY-COMPAT-124)를 내지 않습니다. Fabric Loader와 Quilt Loader도 그쪽에서는 이 모듈을 빼기 때문입니다.

0.2.0-beta.2 — 2026-10-24​

  • Quilt 모드(실험, Minecraft 26.2): 이제 quilt.mod.json을 Quilt Loader 규칙대로 읽고, Quilt 모드를 Quilt Loader API, Mixin, access widener와 함께 Fabric 모드·Poly 모드 옆에서 실행합니다. Simple Voice Chat의 Quilt 빌드로 확인했습니다. Quilt 표준 라이브러리(QSL)가 필요한 모드는 이유와 함께 빠집니다. QSL은 Minecraft 26.x 판이 없기 때문입니다.
  • NeoForge 미리보기(여전히 실험이고 기본값은 꺼짐): NeoForge가 거부할 NeoForge 모드는 실행 전체를 멈추는 대신 이유와 함께 빠집니다. Kotlin for Forge나 YACL이 필요한 모드, Lithium 같은 실제 모드가 더 실행됩니다.
  • 타이틀 화면과 로그에 Quilt 모드 수가 따로 표시됩니다.

0.2.0-beta.1 — 2026-10-24​

  • 베타: Minecraft 26.1, 26.1.2, 26.2에서 MinecraftForge 모드를 완전히 지원합니다. 실제 인기 Forge 모드로 클라이언트, 게임 테스트 서버, 전용 서버, 설치한 프로필에서 확인했습니다.
  • NeoForge 미리보기(실험, 기본값은 꺼짐): -Dpoly.neoforge=on을 주면 Poly 모드 로더가 NeoForge 자신의 로더(NeoForge 26.2.0.93)를 실행해 NeoForge 모드를 로드합니다. 켜지 않으면 지금처럼 NeoForge 모드는 빠집니다.

0.1.0-alpha.18 — 2026-10-23​

  • Forge·Fabric·Poly 모드가 서로를 봅니다. Forge 모드는 FML ModList로 Fabric·Poly 모드를, Fabric 모드는 FabricLoader로 Forge 모드를, Poly 모드는 새 ModContext.mods()로 모든 로더의 모드를 확인합니다. 그래서 Physics Mod(Forge)와 Sodium(Fabric)을 함께 넣어도 블록 파편과 래그돌이 제대로 나옵니다.
  • Fabric API와 Forge를 함께 넣으면 조합이 다시 됩니다(남는 아이템마다 실패했음). 리소스 조건 뒤의 Fabric 데이터가 더는 데이터 팩 로딩을 멈추지 않고, Fabric의 블록 부수기 이벤트가 실행됩니다.
  • 타이틀 화면 왼쪽 아래, 게임 버전 위에 로더별로 로드한 모드 수가 나옵니다("Poly 모드: 2개", "Fabric 모드: 14개", "Forge 모드: 3개"). 게임 언어를 따르며 지금은 영어와 한국어가 있습니다. Forge 모드가 있으면 Forge의 브랜딩 줄 위에 나옵니다.
  • Forge와 함께 쓸 때 Fabric API가 더 많이 동작합니다. 네트워킹·레시피 API의 서버 연결 접근, fabric:remove로 항목을 빼는 태그 파일(Forge의 remove와 함께), 데이터 생성의 발전 과제 빌더가 됩니다. Fabric API의 기본 속성 변경(FabricDefaultAttributeRegistry.MODIFY)은 Forge와 함께 여전히 동작하지 않지만, 이제 ClassCastException으로 멈추지 않고 이유를 알려 줍니다.
  • 시험에서 Minecraft 26.1에서도 Forge와 Fabric 모드가 함께 실행되고, 26.1 Forge 클라이언트와 26.1.2용으로 설치한 서버도 실행됩니다.

0.1.0-alpha.17 — 2026-10-23​

  • Sodium(Fabric)과 Physics Mod 같은 Forge 모드를 함께 넣으면 첫 화면에서 튕기던 문제를 고쳤습니다.
  • Fabric 모드가 연결하는 게임 메서드를 Forge가 바꿨을 때, Forge가 매개변수만 더한 경우에는 그 연결을 맞춰 줍니다. 더 이상 같은 클래스에 붙는 다른 모드의 변경까지 사라지지 않습니다.
  • 시험에서 Minecraft 26.1에서도 Forge 모드 묶음이 함께 실행됩니다(월드 생성, 게임 테스트, 저장).

0.1.0-alpha.16 — 2026-10-23​

  • 이제 설치한 Poly 모드 로더에서 Forge 모드가 실행됩니다. mods/에 Forge 모드를 넣으면 설치 프로그램이 만든 런처 프로필과 서버가 실행합니다. 시험에서는 클라이언트가 Forge 테스트 모드와 Fabric 모드를 함께 넣고 월드에 들어갔고, 설치한 서버가 Forge 모드를 실행했습니다.
  • Forge 모드를 넣고 처음 시작하면 Forge 파일(약 50MB)을 Forge 서버에서 받습니다. Forge 모드가 없으면 달라지는 것이 없습니다.
  • 이전 설치 프로그램으로 설치한 프로필과 서버는 Forge 모드를 실행하지 못합니다. 이 버전으로 다시 설치하세요.
  • Forge 지원은 아직 실험 단계입니다.

0.1.0-alpha.15 — 2026-10-23​

  • PolyLoader의 이름이 Poly 모드 로더(Poly Mod Loader)로 바뀌었습니다. 설치 파일은 PolyModLoader-<버전>.exe/.jar, 런처 프로필은 **Poly Mod Loader <Minecraft 버전>**이고, 릴리스는 github.com/xyrz47-spec/Poly-Mod-Loader에 있습니다.
  • 이전 설치 프로그램이 만든 프로필은 새 프로필 옆에 그대로 남습니다. 필요 없으면 런처에서 지우세요.
  • 이전 dev.polyloader SDK로 만든 모드는 새 SDK로 다시 빌드해야 합니다.
  • 시험 환경에서 Forge 모드가 클라이언트와 Minecraft 26.1에서도 실행됩니다. 설치한 Poly 모드 로더에서 Forge 모드를 실행하는 것은 다음 단계입니다.

0.1.0-alpha.14 — 2026-10-23​

  • 이제 Forge 모드와 Fabric 모드를 한 게임에서 함께 실행합니다. Minecraft 26.2 서버 시험에서 Fabric API를 포함한 인기 Fabric 모드 91개가 Forge 모드와 함께 실행되었고, 월드 생성과 저장까지 되었습니다.
  • Fabric 모드가 Forge도 바꾼 게임 부분을 바꾸면, Poly 모드 로더가 가능한 경우 Forge 쪽 위치로 옮기고, 그렇지 않으면 그 모드의 어느 부분이 Forge에서 실행되지 않는지 로그에 남깁니다. 게임이 멈추지 않습니다.
  • 같은 모드를 Fabric용과 Forge용으로 둘 다 넣으면 Forge용이 실행됩니다.
  • 클라이언트의 Forge는 아직 진행 중입니다.

0.1.0-alpha.13 — 2026-10-23​

  • 이제 Poly 모드 로더로 Minecraft 26.2 서버에서 실제 Forge 모드가 실행됩니다. 인기 Forge 모드 38개로 시험한 결과 30개가 로드되고 월드 생성과 저장까지 됩니다. 나머지 8개는 클라이언트 전용이거나 다른 Minecraft 버전용이라 Poly 모드 로더가 빼고 이유를 로그에 남깁니다.
  • Windows에서 Forge가 설정 파일을 만든 직후 모드가 그 파일을 저장하면 실패하던 문제(AccessDeniedException)를 고쳤습니다.
  • 클라이언트의 Forge, 그리고 Forge 모드와 Fabric 모드를 함께 실행하는 것은 아직 진행 중입니다.

0.1.0-alpha.12 — 2026-10-23​

  • 이제 Forge 모드가 Forge에서처럼 access transformer와 Mixin을 쓸 수 있습니다. Forge 지원은 아직 진행 중이고, Forge 모드와 Fabric 모드를 함께 실행하는 것은 아직 안 됩니다.

0.1.0-alpha.11 — 2026-10-22​

  • 이제 Minecraft 26.1과 26.2에서 Fabric 모드를 완전히 지원합니다. 인기 Fabric 모드(26.2는 Sodium, Iris, Lithium 등 138개)를 함께 넣고 월드를 플레이하고 저장한 뒤 나올 수 있고, 전용 서버도 시작됩니다. 테스트에서 빠진 모드는 Fabric Loader도 실행하지 않는 경우뿐이었습니다.
  • CustomSkinLoader와 veinminer가 동작하고, collective가 서버에서도 로드됩니다.

0.1.0-alpha.10 — 2026-10-22​

  • 설치 프로그램 창을 정리했습니다. 이름과 입력 칸이 줄 맞춰 있고, 클라이언트·서버를 바꾸거나 "고급 설정"을 열어도 창 크기가 그대로입니다.
  • Poly 모드가 Fabric 모드의 초기화가 끝날 때를 기다릴 수 있습니다(LifecycleEvents.MODS_INITIALIZED). 생명주기와 스레드

0.1.0-alpha.9 — 2026-10-22​

  • 설치 프로그램으로 전용 서버를 설치합니다. "서버"와 폴더를 고르면 Mojang 서버를 받고 run.bat, run.sh, polymodloader-server.jar를 만듭니다. Minecraft EULA 동의는 직접 합니다. 설치 안내

0.1.0-alpha.8 — 2026-10-22​

  • Forge 모드가 이제 Poly 모드 로더 위에서 실행됩니다(테스트 환경). Forge가 모드를 만들고 설정 이벤트를 실행하고 아이템을 등록하며, 같은 게임에서 Poly 모드도 함께 동작합니다. 설치한 Poly 모드 로더에서 Forge 모드가 로드되는 것은 아직입니다.

0.1.0-alpha.7 — 2026-10-22​

  • 설치 프로그램을 단순하게 바꿨습니다. Minecraft 버전, 게임 메모리, 설치 버튼만 보이고 나머지는 "고급 설정"에 있습니다.
  • MinecraftForge 자체가 이제 Poly 모드 로더 위에서 시작됩니다(테스트 환경). Forge가 로드되고 월드를 만들고 게임 테스트를 통과합니다. 설치한 Poly 모드 로더에서 Forge 모드가 로드되는 것은 아직입니다.

0.1.0-alpha.6 — 2026-10-22​

  • Forge 모드를 위한 기반 작업: Forge가 전제로 하는 Java 모듈 구성을 Poly 모드 로더가 만들 수 있게 됐습니다. Forge 모드는 아직 실행되지 않고, 플레이어에게 바뀌는 점은 없습니다.

0.1.0-alpha.5 — 2026-10-22​

  • 설치 프로그램에서 게임 메모리를 정합니다. 최대(-Xmx)와 시작(-Xms) 메모리를 런처 프로필에 씁니다. PC에 맞는 최대 메모리를 미리 골라 둡니다. 설치 안내
  • 설치가 끝나면 설치 여부를 알림으로 알려 주고, 설치 프로그램은 저절로 닫힙니다. 알림을 누르면 mods 폴더가 열립니다.
  • 웹사이트 문장을 짧은 줄로 나눠 읽기 쉽게 했고, 페이지를 옮길 때 부드러운 전환 효과를 넣었습니다.

0.1.0-alpha.4 — 2026-10-22​

  • Mixin을 쓰는 Fabric 모드가 실행됩니다. Fabric Loader와 같은 방식입니다. Mixin·MixinExtras, class tweaker의 인터페이스 주입, Fabric의 진입점 실행 시점을 그대로 따릅니다. 호환성
  • 26.2용 인기 Fabric 모드 52개 중 클라이언트에서 42개, 전용 서버에서 28개가 로드됩니다(나머지는 대부분 클라이언트 전용). Fabric API 모듈 44개도 모두 로드됩니다.
  • Sodium, Iris, Lithium을 포함한 Fabric 모드 137개를 함께 넣고 클라이언트에서 월드에 들어갈 수 있습니다. 실제 전용 서버는 99개로 시작됩니다.
  • getGameInstance나 class tweaker의 enum 확장(extend-enum)을 쓰는 Fabric 모드도 이제 로드됩니다. 이제 Fabric Loader 공개 API를 빠짐없이 제공합니다.
  • NeoForge·Forge 모드는 아직 실행되지 않습니다. Forge 지원 작업을 시작했습니다.
  • 다운로드 페이지에서 빌드마다 바뀐 점을 볼 수 있습니다.

0.1.0-alpha.3 — 2026-10-22 (첫 공개 릴리스)​

  • Minecraft 26.1, 26.1.1, 26.1.2를 26.2와 함께 지원합니다. 설치 프로그램에서 설치할 버전을 고릅니다.
  • Poly 모드 로더 소스 없이 모드 개발: SDK가 이 사이트의 Maven 저장소에 있습니다. 모드 템플릿을 다운로드하고 initPolyMod를 실행하세요. 모드 템플릿 받기
  • Native API: 이벤트 우선순위와 결정 결과, 상호작용 이벤트(블록·아이템·엔티티 사용, 공격), 취소할 수 있는 블록 부수기·설치, 서버·월드·리스폰·엔티티 수명 주기 이벤트, 태그, 모드 창작 탭, 아이템 툴팁. 이벤트, 태그와 창작 탭
  • class tweaker(access widener)를 쓰는 Fabric 모드도, 그 밖에 빠진 기능이 없으면 로드됩니다. 호환성
  • 웹사이트: 영어·한국어, 다운로드 페이지, 모드 개발자 페이지.
  • 고친 문제: 리스폰한 플레이어의 엔티티 데이터(EntityDataKey)가 사라지던 문제, 플레이어에게 EntityEvents.DIED가 발생하지 않던 문제.

0.1.0-alpha.2 — 2026-10-21 (공개하지 않음, 내용은 0.1.0-alpha.3에 포함)​

설치 프로그램과 첫 Poly 모드 튜토리얼 (2026-10-21)​

  • 플레이어용 설치 프로그램(PolyModLoader-<버전>.exe, .jar)이 Minecraft Launcher에 Poly 모드 로더 프로필을 추가합니다. 설치 안내
  • Native API로 만든 모드를 Poly 모드라고 부릅니다
  • 첫 Poly 모드 만들기를 자라는 크리스털 모드 Crystal Garden으로 다시 썼습니다
  • 런처 프로필로 실행할 때 게임 jar를 찾지 못하면 POLY-BOOTSTRAP-006으로 알립니다
  • 라이선스: PolyLoader Non-Commercial License 1.0

서버 틱·힙·GC 측정 (2026-10-21)​

  • :poly-bootstrap:tickBenchmark: 바닐라와 Poly 모드 로더를 같은 부하로 번갈아 실행해 서버 틱 시간 p50/p95/p99, 50ms 초과 비율, 피크 힙, GC를 비교합니다. 결과는 "유의한 차이 없음"입니다 (성능)
  • 측정용 에이전트 tools/tick-probe

변환 엔진: 순서 계약, call-site 변경, 접근 확대, 캐시 상한 (2026-10-21)​

  • 같은 메서드를 고치는 규칙은 after가 하나의 순서를 정하면 함께 적용됩니다(시작 훅·반환 훅은 선언 순서대로 실행) (설계 결정 ADR-0013)
  • 새 동작: 메서드 안의 특정 호출을 정적 훅으로 바꾸는 call-site 변경
  • 접근 확대(Fabric access widener와 같은 뜻: accessible, extendable, mutable). poly.mod.json 스키마의 accessWidenings
  • 변환 캐시 크기 상한(기본 256 MiB, -Dpoly.transformCacheMaxMegabytes)

셰이더 텍스처·모드 유니폼, 상태별 블록 모델 (2026-10-21)​

  • 모드 셰이더 파이프라인에 텍스처(ShaderPipelineDefinition.Builder.texture, Sampler0~3)와 텍스처 좌표(VertexSink.vertex(x, y, z, u, v, argb)). 그리기와 카메라
  • 모드 유니폼(Builder.uniform, ShaderUniform): std140 블록 ModUniforms, 매 프레임 렌더 스레드에서 값을 올림, 잘못된 값은 POLY-CLIENT-007
  • 블록 엔티티 그리기의 상태별 블록 모델(BlockEntityCanvas.block(BlockStateView, …), defaultState), 상태 사본 BlockStateView.with
  • 고친 문제: 깨끗한 체크아웃(build/ 없음)에서 버전 모듈 컴파일이 실패하던 문제

이름 변경: Poly 모드 로더 (2026-10-21)​

  • 프로젝트 이름을 Void Mod Loader(VML)에서 Poly 모드 로더로 바꿨습니다. 패키지 dev.polymodloader, 모듈 poly-*, 메타데이터 poly.mod.json, 오류 코드 POLY-*(번호와 의미는 그대로), 모드 ID poly, 보고서 폴더 .poly/. 전체 대응표는 설계 결정 ADR-0012

문서 사이트와 API 레퍼런스 (2026-10-21)​

  • site/를 Docusaurus 3 문서 사이트로 바꿨습니다. 시작하기, Native API, 테스트, 레퍼런스, 기여 섹션, Minecraft 버전별 문서 드롭다운, 오프라인 검색(한국어 포함), 버전 값을 한 곳(site/src/versionInfo.js)에서 관리
  • API 레퍼런스: ./gradlew apiReference가 공개 API의 Javadoc에서 패키지별 페이지를 만듦(모든 타입과 멤버의 시그니처·설명·인자·반환값·예외)

여러 Minecraft 버전 지원 구조 (2026-10-21)​

  • 지원 버전 목록 gradle/minecraft-versions.properties(버전, 기본 버전, 버전별 Java). 버전 카탈로그의 minecraft 항목은 없앰
  • 버전마다 어댑터·게임 계층 모듈을 목록에서 자동으로 포함하고, 버전별 jar와 Java로 컴파일
  • -PpolyMinecraft=<버전>으로 실행·검증 버전 선택. 모드 프로젝트는 gradle.properties의 polyMinecraft
  • ./gradlew newMinecraftVersion -Pfrom=<버전> -Pto=<새 버전>: 가장 가까운 버전의 모듈을 복사하고 이름을 바꿈. ./gradlew minecraftVersions: 지원 버전 목록
  • poly.mod.json의 "minecraft"가 와일드카드(26.*)와 범위(>=26.2 <27)를 받음. Native 예제와 템플릿은 26.*
  • 버전 어댑터가 여러 핫픽스 버전을 맡을 수 있음(GameVersionAdapter.gameVersions())
  • 결정 기록: ADR-0011

Native API 4단계 (2026-10-20)​

  • 묶음 A: 엔티티 데이터 옵션(추적자 동기화, 버전·마이그레이션), 모든 종류 파일의 리로드 리스너(onDataFiles/onAssetFiles), PlayerEvents.LOGIN_CHECK, 월드 백업 개수 제한(max-backups-per-world)
  • 묶음 B: 블록 모양·충돌 모양(BlockShape, 상태별·방향별), 나는 몹과 헤엄치는 몹(flying, swimming: 길찾기·이동 제어·배회 목표), 몹 모델 키프레임 애니메이션(KeyframeAnimation, ALWAYS/WHILE_MOVING/ON_DEMAND, MobView.playAnimation)
  • 묶음 C: 코드 배치 기능(feature, FeaturePlacement), 노이즈 지형에 끼우는 코드 density function(densityFunction), 코드 구조물(structure, StructureDefinition)과 생성 팩의 configured/placed feature·structure·structure_set
  • 묶음 D: 월드에 그리기(worldPainter: 선·상자·점·글자·셰이더 사각형), 블록 엔티티 그리기의 블록 모델(BlockEntityCanvas.block)과 셰이더 사각형, 모드 코어 셰이더 파이프라인(shaderPipeline)
  • 묶음 E: 접속 준비 단계의 교환(configurationExchange: 서버 요청, 클라이언트 답, 서버 검사와 거절, 대기 시간)
  • 고친 문제:
    • custom_goal_seeks_glow_block 게임 테스트가 약 10번에 1번 실패하던 문제(목표 블록이 탐색 반경 끝에 있었음)
    • addFeature로 바꾼 바이옴을 쓰는 노이즈 차원에서 기능 배치 중 게임이 멈추던 문제(생성기의 기능 색인을 다시 만듦)

Native API 3단계 (2026-10-19)​

  • 콘텐츠 심화: 이름 블록 속성(choice), 상태별 빛, 칸 배치 메뉴와 진행 막대, 아이템 데이터 컴포넌트와 실제 스택 참조(ItemStackRef), 투사체, 자연 스폰
  • 게임플레이: 몹별 AI 목표(AiGoal, MobView), 속도·방향·중력·탑승 API와 조종 가능한 탈것 몹, 피해량 수정(MODIFY_DAMAGE), 발전 과제 트리거와 부여·취소
  • 월드: 코드 바이옴(생성 팩에 기록), 코드 지형 생성기(TerrainGenerator), 청크 강제 로드, 청크 로드·언로드 이벤트, biomeAt. 생성 팩 버전을 내용 해시로 정함
  • 클라이언트 그리기: 몹 상자 모델과 부품 애니메이션, 블록 엔티티 그리기(아이템·글자), 모드 파티클 종류, 시야각 이벤트·시점 전환, 모드 후처리 셰이더, 동적 텍스처와 HudCanvas.drawTexture
  • 리소스·네트워크·운영: 데이터·에셋 리로드 리스너, 엔티티 데이터(저장·리스폰 유지·본인 동기화), 저장소 버전·마이그레이션·클라이언트 동기화, 블록 엔티티 데이터 버전, 권한 노드·공급자, 클라이언트 접속·퇴장 이벤트와 leaveWorld, 모드가 바뀐 월드의 자동 백업, 게임 테스트 공간 TestArea
  • 고친 문제: 모드 블록 상태가 게임의 상태 번호 표에 들어가지 않아 클라이언트로 보낼 수 없던 문제(1단계부터 있던 결함)

Native API 2단계 (2026-10-19)​

  • 블록 상태 속성, 블록 엔티티(데이터·틱·동기화), 상자형 인벤토리, 월드 저장소, 작업 예약, WorldEvents.READY
  • 몹 타입(AI 목표·속성·생성 알·렌더러), 상태 효과, 게임 규칙, 사운드, 파티클, 피해 취소·사망 이벤트
  • 모드 팩에 KnownPack을 표시해 데이터 레지스트리(월드 생성·차원·피해 유형)를 안정 상태로 사용. 바이옴 기능 추가, 차원 이동
  • 모드 화면(Screen)과 위젯, ModContext.configDirectory()
  • 변환 엔진: 원시형 반환 메서드의 RETURN_IF_NON_NULL

Native API 1단계 (2026-10-19)​

  • Native API(poly-game-api, 모두 PREVIEW): 블록·아이템·음식·창작 탭, 월드·엔티티·플레이어 뷰, 플레이어·블록·클라이언트 이벤트, 명령어, 네트워크 페이로드 채널, 키 바인딩, HUD 레이어, 게임 내 테스트
  • 모드 jar의 assets/·data/를 필수 리소스·데이터 팩으로 자동 추가
  • 게임 계층 poly-game-v26_2: Minecraft 26.2 jar에 컴파일되고 게임 클래스로더가 로드(ADR-0010)
  • 변환 동작 추가: InvokeHookAtHead(인수 전달, 취소·조기 반환), InvokeHookBeforeReturn(인수·반환값 전달, 매개변수 재할당 시 거부)
  • Gradle: poly.minecraft-compile 플러그인, 모드 프로젝트용 gameTests 작업, 모드 플러그인에 FabricMC 저장소 추가(템플릿에서 polyRuntime을 해석하지 못하던 문제 수정)
  • 예제 native-showcase-mod, 템플릿에 아이템·게임 테스트 예시

0.1.0-alpha.1 — 2026-10-19 (개발자 미리보기)​

Minecraft 26.2 / Java 25 대상 첫 미리보기입니다. 모든 공개 API는 PREVIEW입니다.

  • 부트스트랩, 변환 클래스로더, 로딩 파이프라인(검색 → 메타데이터 → 의존성 → 시스템 충돌 → 변환 계획 → 시스템 등록 → 엔트리포인트 → 게임 → 종료)
  • poly.mod.json 스키마 1: 엔트리포인트, 의존성, 충돌, 권한(capabilities), 시스템 교체, 변환 선언
  • 시스템 교체 poly:game_brand, 서버 생명주기 이벤트
  • 변환 엔진: 사전 계획, descriptor·바이트코드 사전조건, 충돌 거부, 진입 후크, 해시 기반 캐시
  • 로더 브리지: Fabric 엔트리포인트 실행(Experimental), Fabric·NeoForge·Forge 기능별 진단
  • 개발 도구: dev.polymodloader.mod Gradle 플러그인, 모드 템플릿, 실제 게임 검증 작업, 혼합 로더 행렬, 시작 시간 벤치마크

원본은 Poly 모드 로더 저장소의 CHANGELOG.md입니다.

커피 한 잔 후원하기