Tags
Creators
Details
Licensed LGPL-2.1-only
Published 2 years ago
Updated 2 months ago
All versions
2.2.2
Release
XenoFactions 2.2.22 months ago 226
Uploaded by
Compatibility
Minecraft: Java Edition
1.7.10
Platform
Forge
Supported environments
Client and server
Changes
Pull request: secure and distribute Wall Art controllers
- Made Wall Art configuration opening server-authoritative and restricted it to the controller's UUID owner, with localized denial feedback.
- Added the missing Wall Art block display name and a localized
/xwallartconfirmation. - Added the permission-free
/xwallartplayer command, including safe item dropping when the inventory is full.
Pull request: fix Wall Art collision and wall orientation
- Made Wall Art non-colliding like vanilla 1.7.10 vines while retaining its thin metadata-oriented selection and ray-trace bounds.
- Derived the controller's supporting-wall facing from the clicked horizontal face, rejected vertical attachment, and stopped player yaw from overwriting placement metadata.
- Added clicked-side support validation, centralized placement/support direction mapping, and replaced invalid metadata's full-cube bounds with a safe thin panel.
Pull request: synchronize Wall Art controller visibility
- Invalidated cached client block geometry when synchronized Wall Art image, facing, or display dimensions change, so configured controllers disappear and cleared controllers reappear immediately.
- Explicitly synchronized newly placed Wall Art tile metadata after server-side ownership and facing initialization.
- Preserved hash-driven controller visibility, thin interaction and inventory geometry, and the existing tile renderer and server update path.
Pull request: fix Wall Art block rendering
- Hid configured Wall Art controller geometry while preserving the downloaded-image TESR and the logical block's interaction bounds.
- Added a dedicated Forge 1.7.10 block renderer for metadata-oriented thin fallback panels in the world.
- Rendered the Wall Art inventory item as a fixed, thin vertical panel using its neutral fallback texture.
Pull request: re-audit Wall Art importing against ImageFrame
- Added an independent Wall Art source policy with correct Postimages page/CDN defaults, bounded source dimensions and bytes, manual redirect limits, and separate success/failure cooldowns.
- Added bounded HTML image-page resolution for secure OpenGraph metadata and a limited image fallback, while revalidating every resolved URL and redirect with the existing SSRF protections.
- Switched Wall Art requests to a browser-compatible user agent, retained byte-level PNG/JPEG verification and memory-efficient source subsampling, and improved actionable HTTP, resolver, timeout, size, and decode errors.
- Refactored the asynchronous import lifecycle and all Wall Art-specific source files for readable Java, accurate in-progress/cooldown messages, short failure retries, sanitized diagnostics, and main-thread-only world updates.
Pull request: fix Wall Art image importing
- Separated bounded Wall Art source downloads and source-dimension safety checks from the much smaller custom faction flag import limits.
- Added metadata-first PNG/JPEG decoding with source subsampling so normal high-resolution photographs are efficiently scaled into the selected 128x128 through 640x640 Wall Art canvas.
- Improved direct HTTPS image handling with byte-based format detection, query-safe parsed-host validation, per-redirect SSRF checks, bounded streamed downloads, image-oriented request headers, and clearer errors for HTML or unsupported payloads.
- Retained server-worker processing, final-image hashing, bounded PNG storage and transfer, and the existing HTTPS host whitelist.
Pull request: fix Wall Art block and configuration GUI
- Centered and restored the Wall Art URL, display-size, and download controls by separating display dimensions from the inherited GUI screen dimensions.
- Preserved URL text and selected dimensions across GUI resizing, and added an inline prompt for empty submissions.
- Replaced the missing fallback texture reference with the existing neutral concrete panel texture while retaining dynamic image rendering.
- Made wall-mounted controllers drop when their supporting wall is removed using Forge 1.7.10 side-solid checks.
Pull request: fix Forge 1.7.10 Wall Art compilation
- Updated Wall Art support checks to use Forge 1.7.10
ForgeDirectionvalues for each neighboring wall face. - Removed the unreferenced legacy image-placement helper that still wrote deleted URL, name, and string-owner fields directly into Wall Art tile entities.
- Preserved the server-authoritative Wall Art service, metadata-only tile entities, and the
wall_image_blockregistry identity.
Pull request: fix development runClient identities
- Restored GTNH's blank-name
Developer<random numbers>behavior for default development clients. - Assigned one fresh random UUID during each Gradle invocation before the run task finalizes its properties, while retaining validated independent
devUsernameanddevUuidoverrides. - Kept
runClientidentity logging read-only so task execution no longer attempts to mutate finalized Gradle properties.
Pull request: isolate faction saves and randomize development players
- Reset all faction, membership, diplomacy, claim, cooldown, protection, and overlay runtime state at the logical-server overworld lifecycle boundary, while retaining one shared database across dimensions.
- Bound cached faction data and auxiliary JSON persistence to the active save so a new or reopened world cannot inherit another world's state.
- Give each
runClientexecution a validated random development username and UUID by default, while preserving independentdevUsernameanddevUuidoverrides.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:5XIaYcvL:jPpViJYa"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:5XIaYcvL:jPpViJYa"
}

