Перейти к содержимому
Mineforgian

Only Server Gunpack

Conveniently and quickly manage TACZ's gunpacks via the server, while preventing clients from easily obtaining the source files

Загрузки
245
Подписчики
1
Обновлён
27 июня 2026 г.
Лицензия
All-Rights-Reserved

Опубликован 26 июня 2026 г.

OSG — Online Server Gunpacks

Server-side TACZ gunpack distribution. Zero setup for players — join and play. Pure in-memory, nothing touches disk.


✨ What problem does this solve?

Protect gunpack authors' art assets + hassle-free server management. Packs live on the server, players do nothing. Versions are always in sync. No more "I installed it but it's not showing up". Players load into memory on join, cleared on disconnect — authors' assets are protected from copying.


🆚 Comparison

🗂️ Manual ⚡ OSG
Player setup Download & install each pack Zero — join and play
Updates Everyone re-downloads Replace once on server
Security Files exposed on disk In-memory + encrypted transport
Consistency Version mismatches cause bugs Server-enforced

🎯 Features

Feature Description
Server digital signature Client rejects fake servers, anti-phishing
🔄 Forced version sync Update once on server, everyone gets it — no more "I installed it"
🧹 Zero maintenance Players install nothing. Adding a new pack requires no server-wide announcement
No TACZ modification Just feeds resources to TACZ in-memory
🧠 Bonus protection Pure memory, players can't copy files — anti-piracy comes for free
📦 Any format Folders or zips (zip is better)
All TACZ packs Except encrypted ones

🔧 How It Works

TACZ loads gunpacks through Forge's RepositorySource interface — it scans the tacz/ folder, wraps each pack as a PathPackResources, and hands them to Minecraft's resource system.

OSG does the exact same thing, but the files come from memory instead of disk:

  1. Server scans server_gunpacks/ → sends packs to clients over the network
  2. Client assembles them in RAM → provides them as PackResources through the same RepositorySource interface
  3. TACZ sees them exactly like local files — no difference. No Mixin. No patch. And the player never gets the raw file.

Think of it as clicking "Done" on the resource pack prompt, but everything stays in RAM.


📥 Installation

Side What to do
🖥️ Server Install OSG, put packs in server_gunpacks/
💻 Client Install OSG. That's it.

💡 Tip: Put frequently updated packs, or packs you don't want players copying, in server_gunpacks/. Stable base packs can stay local — saves bandwidth and hassle.


📋 Requirements

Minecraft 1.20.1

Forge 47.3+

TACZ 1.1.8


⌨️ Commands

Command Description
/osg status Show loaded packs
/osg reload Server-side hot reload (connected players need to rejoin)

❌ Not Supported

⚠️ Encrypted packs (Arcana, etc.) — use their original loader. OSG does not decrypt.


❓ FAQ

🔄 How do I update packs?

Replace files in server_gunpacks/, run /osg reload. Connected players keep the old version; new joiners get the update. Packs loaded via the API cannot be hot-updated.

⚖️ Is this copyright infringement?

OSG is a neutral transport tool. Technical facts:

  • No modification — CRC32 integrity ensures byte-level fidelity. The tool does not alter any gunpack data.
  • In-memory loading — Pack data is loaded into memory and cleared on disconnect. No permanent copies are created.

⚠️ Important: A neutral tool does not guarantee legality. Server owners must verify they have the right to distribute the packs they configure. Distributing unlicensed copyrighted material may still constitute infringement. Strongly recommend only distributing original or explicitly authorized packs.

💾 Does this use a lot of memory?

No — and it was already being used.

TACZ loads all gunpack files into memory regardless of whether they come from the local tacz/ folder or through OSG. The memory usage is exactly the same. OSG just skips the "write to disk, then read into memory" step — zero extra overhead.

Data is cleared on disconnect and does not stay resident.

🎨 How does this benefit gunpack authors?

OSG does not change your copyright. Your art assets remain fully yours.

  • Players never access raw files (in-memory, cleared on disconnect) — your models, textures, and sounds cannot be casually copied and spread.
  • Server-side version management means no compatibility issues from outdated local copies.

This isn't about pushing a new order — just giving creators who want to protect their work an option they didn't have before.

🛡️ How does this prevent version mismatch bugs?

All players load the exact same pack data from the server. No one can accidentally use an outdated local copy, because there are no local copies. "I installed it but it's not showing up" becomes a thing of the past.

📌 Minecraft 1.21?

Will follow when TACZ updates to 1.21.


🔒 Security

OSG protects gunpacks end-to-end with near-zero performance cost.

💡 Pack authors: to protect your work from unauthorized copying, have server owners distribute through OSG — players have no direct access to the raw files.


🔌 Developer API

If your mod has its own pack loading logic (decryption, custom formats, etc.), hand the unpacked data to OSG — no disk write needed:

ExternalPackRegistry.register(() -> {
    Map<String, byte[]> files = prepareFiles();
    return List.of(new ExternalPack("pack_id", "namespace", files));
});

📜 License

Current (Beta): Source code — all rights reserved. Compiled jar — free to redistribute. Modification and redistribution prohibited.

After stable release: Will be open-sourced under GPL v3, with the following exception:

Encryption Layer Exception: Server owners may modify the encryption/obfuscation code (com.hxwi1.ssg.util.*) for security purposes and distribute the modified jar to their own players without disclosing the source of those specific modifications. All other modifications remain subject to GPL v3. Public redistribution of modified versions (not server-specific) still requires full source disclosure.

⚠️ OSG's transport encryption prevents network eavesdropping (packet capture yields ciphertext only). To be clear: no client-side software can prevent a user from modifying their own client to extract data — this is a fundamental limitation of all locally-running software, not specific to OSG or its license.


🙏 Credits

Built on the excellent work of the TACZ team.


❗❗ Disclaimer

By installing this mod, you agree to the following terms (items marked with * apply only during beta; the official release is governed by GPL v3):

  • This mod does not collect or modify any data, and contains no gunpack content.
  • Server owners are solely responsible for the gunpack content they distribute.
  • Distributing copyrighted gunpacks without authorization is prohibited. Respect gunpack authors.
  • Any form of cracking, reverse engineering, or illegal memory extraction is prohibited. Transport encryption exists to protect content; session keys are randomly generated.
  • *Modification and redistribution are strictly prohibited. The modifying party bears full liability for any legal disputes, malware injection, or security issues caused by modified versions. The original author reserves the right to pursue infringement claims.
  • Players should only download OSG from official channels (Modrinth/GitHub). Modified versions obtained elsewhere are not affiliated with this project.
  • API Terms — see below.
🔌 API Terms (click to expand)

ExternalPackRegistry is a server-side extension interface provided by OSG. By using this interface, you confirm and agree:

  1. Responsibility Split — Mod developers maintain interface code; server owners ensure copyright compliance of gunpack content. OSG is a data channel and does not participate in content selection. Everyone owns their part, nobody crosses lines.
  2. Infringement Handling — If copyright disputes arise over gunpack content, responsibility belongs to the server owner who configured that content (whether loaded directly from server_gunpacks/ or passed through ExternalPackRegistry). The OSG author may provide technical logs to help trace the source and support a healthy community ecosystem.
  3. Technical Boundary — OSG receives already-decrypted data and has no visibility into or control over the mod's decryption process, the server owner's content choices, or whether the decrypted data contains infringing material. This isn't shifting blame — it's an honest description of the technical boundary.

Ченджлог

1.1.0-secalgoБета1.20.1 · 27 июня 2026 г.

1.1.0-secalgo — 2026-06-28

Security Fix

  • Shuffle table and XOR mask are now encrypted inside the RSA payload rather than sent as plaintext in InitPacket
  • Removed ClientAdapterRegistry / IClientPackAdapter — client-side plugin API was an attack vector
  • All cryptographic materials are now per-session random with zero hardcoded constants — source code is safe to open-source

1.1.0-netsafefixБета1.20.1 · 27 июня 2026 г.

1.1.0-netsafefix — 2026-06-27

Security Fix

  • Removed ClientAdapterRegistry / IClientPackAdapter — client-side plugin API was an attack vector allowing other mods to intercept decrypted gunpack files

1.1.0Бета1.20.1 · 27 июня 2026 г.

1.1.0 — 2026-06-27

New Features

  • RSA-2048 asymmetric handshake — client sends public key, server encrypts AES session key; MITM cannot decrypt even with full code access
  • Server digital signature — SHA256withRSA signature on InitPacket; client rejects packets from fake servers
  • Random key shuffle — per-session byte permutation on top of XOR mask; attacker needs both mask AND permutation to recover key
  • Download overlay — vanilla dirt background with two-line progress display, hides HUD until download completes
  • Real-time speed & progress — shows pack count, total percentage, MB/s speed, and received/total size
  • Client freeze on join — player is invulnerable + frozen until gunpack download and reload complete
  • i18n — all user-facing text in language files (zh_cn / en_us)

Changes

  • Default maxPackSizeMB raised from 100 → 500
  • Chunk send interval increased from 20ms → 50ms to reduce server thread load
  • Chunks now sent directly from async thread without player.getServer().execute()
  • Sequential pack delivery: client requests first pack, server sends rest via ACK flow
  • SendGeneration counter prevents stale concurrent transfers

Fixes

  • FileToIdConverter crash from non-standard file extensions in gunpacks
  • Double-reload after download completion
  • Resend state loss on CRC32 mismatch
  • PlayerLoggedOutEvent firing in singleplayer
1.0.0Бета1.20.1 · 26 июня 2026 г.

1.0.0 — 2026-06-27

Initial release.

Features

  • Server-side gunpack distribution — packs are scanned from server_gunpacks/, streamed to clients on join, and loaded entirely in memory
  • AES-256/GCM encrypted transport — per-session random key, per-chunk random IV; packet capture yields ciphertext only
  • Key masking — encryption key is XOR-masked before transmission
  • Resumable transfer — interrupted downloads resume without restarting
  • CRC32 integrity — chunk-level and full-pack checksum verification
  • Zero local footprint — gunpack data never touches the client filesystem, auto-cleared on disconnect
  • No Mixin — plugs into Forge's standard RepositorySource and PackResources APIs; zero conflicts with other mods
  • Sequential pack delivery — packs are sent one at a time with ACK flow to avoid network congestion
  • Anti-collision sending — per-player send generation counter prevents stale transfers
  • Priority override — server packs load at Pack.Position.TOP, taking precedence over any local duplicates
  • External pack provider API — other server mods can register packs programmatically via ExternalPackRegistry
  • Client adapter API — client mods can hook post-download processing via ClientAdapterRegistry
  • Commands: /osg status and /osg reload
  • i18n — English and Simplified Chinese translations

Server Config

[gunpack_paths]
    gunpackDirectory = "server_gunpacks"

[transfer]
    maxPackSizeMB = 100
    chunkSizeBytes = 1048064
    transferTimeoutSeconds = 120
    requireAckBeforeJoin = true

Requirements

  • Minecraft 1.20.1
  • Forge 47.3+
  • TACZ 1.1.8

Known Limitations

  • Encrypted packs (e.g. Arcana) are not supported — use their native loader
  • Reload may cause a brief client freeze while TACZ processes resources — this is expected

Комментарии

Загружаем…