{"id":25902115,"url":"https://github.com/4k1d3v/fieldforge-plugin","last_synced_at":"2026-05-03T23:35:07.014Z","repository":{"id":280309924,"uuid":"941450000","full_name":"4K1D3V/fieldforge-plugin","owner":"4K1D3V","description":"FieldForge is a Spigot 1.21.1 plugin that allows players to create and manage vector fields in Minecraft, manipulating entity movement with physics-based forces.","archived":false,"fork":false,"pushed_at":"2025-03-02T16:24:39.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-13T06:07:03.135Z","etag":null,"topics":["java","maven","minecraft","minecraft-plugin","nms","spigot","spigot-plugin"],"latest_commit_sha":null,"homepage":"https://ks.akii.pro","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/4K1D3V.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-02T10:19:45.000Z","updated_at":"2025-03-02T16:41:33.000Z","dependencies_parsed_at":"2025-03-02T17:39:32.517Z","dependency_job_id":null,"html_url":"https://github.com/4K1D3V/fieldforge-plugin","commit_stats":null,"previous_names":["4k1d3v/fieldforge-plugin"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/4K1D3V/fieldforge-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4K1D3V%2Ffieldforge-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4K1D3V%2Ffieldforge-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4K1D3V%2Ffieldforge-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4K1D3V%2Ffieldforge-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/4K1D3V","download_url":"https://codeload.github.com/4K1D3V/fieldforge-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4K1D3V%2Ffieldforge-plugin/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259592262,"owners_count":22881267,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","maven","minecraft","minecraft-plugin","nms","spigot","spigot-plugin"],"created_at":"2025-03-03T03:15:15.059Z","updated_at":"2026-05-03T23:35:06.983Z","avatar_url":"https://github.com/4K1D3V.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FieldForge\n\n**FieldForge** is a Spigot 1.21.1 plugin that allows players to create and manage vector fields in Minecraft, manipulating entity movement with physics-based forces. Built with industrial-level code, it leverages Net Minecraft Server (NMS) for performance, offers a rich API, and includes a user-friendly GUI and command system.\n\n## Features\n- **Vector Field Types**:\n  - **Radial**: Applies forces based on the inverse square law (attraction/repulsion).\n  - **Linear**: Pushes entities in a configurable direction.\n  - **Vortex**: Creates swirling motion with optional environmental effects (e.g., leaf particles).\n- **Customization**:\n  - Configurable particle effects, sounds, and force limits via `config.yml`.\n  - Toggleable visuals and active states.\n- **Field Management**:\n  - Create fields with optional duration (e.g., `/fieldforge create radial 2 5 10s`).\n  - Remove, list, and modify fields (strength) via commands or GUI.\n  - Persistence across server restarts in `fields.yml`.\n- **Ownership \u0026 Permissions**:\n  - Fields tied to players with creator UUIDs; admin override available.\n  - Granular permission nodes (e.g., `fieldforge.use`, `fieldforge.admin`).\n- **Performance**:\n  - NMS-powered entity movement and particle rendering for efficiency.\n  - Collision detection with a maximum force cap to prevent excessive effects.\n- **Events**:\n  - `FieldEnterEvent` and `FieldExitEvent` for integration with other plugins.\n- **GUI**:\n  - Interactive inventory interface (`/fieldforge gui`) to toggle, remove, or adjust field strength.\n- **API**:\n  - Extensible `FieldForgeAPI` for programmatic field creation and management.\n\n## Requirements\n- **Java**: 17\n- **Server**: Spigot 1.21.1\n- **Build Tool**: Maven\n\n## Installation\n1. **Clone the Repository**:\n   ```bash\n   git clone https://github.com/4K1D3V/FieldForge.git\n   cd FieldForge\n   ```\n2. **Build the Plugin**:\n   ```bash\n   mvn clean package\n   ```\n   - Output: `target/FieldForge-1.0.0-SNAPSHOT.jar`\n3. **Install on Server**:\n   - Copy the JAR to your Spigot server's `plugins/` folder.\n   - Start the server: `java -jar spigot-1.21.1.jar`.\n4. **Verify**:\n   - Check `latest.log` for \"FieldForge enabled successfully.\"\n\n## Usage\n### Commands\n- **`/fieldforge create \u003ctype\u003e \u003cstrength\u003e \u003crange\u003e [x y z] [duration]`**  \n  Creates a field (e.g., `/fieldforge create linear 1 10 0 1 0 5s` for a 5-second upward push).\n- **`/fieldforge remove \u003cindex\u003e`**  \n  Removes a field by its index.\n- **`/fieldforge list`**  \n  Lists your fields (all fields for admins).\n- **`/fieldforge reload`**  \n  Reloads `config.yml`.\n- **`/fieldforge modify strength \u003cindex\u003e \u003cvalue\u003e`**  \n  Adjusts field strength (e.g., `/fieldforge modify strength 0 3`).\n- **`/fieldforge toggle \u003cindex\u003e`**  \n  Toggles field visuals.\n- **`/fieldforge activate|deactivate \u003cindex\u003e`**  \n  Toggles field active state.\n- **`/fieldforge gui`**  \n  Opens the management GUI (requires `fieldforge.gui` permission).\n\n### Permissions\n- `fieldforge.use`: Basic command access (default: op).\n- `fieldforge.admin`: Manage all fields (default: op).\n- `fieldforge.gui`: Use the GUI (default: op).\n\n### GUI\n- **Open**: `/fieldforge gui`\n- **Actions**:\n  - **Left-click**: Toggle active state.\n  - **Right-click**: Remove field.\n  - **Shift+Left**: Increase strength by 1.\n  - **Shift+Right**: Decrease strength by 1.\n\n## Configuration\nEdit `plugins/FieldForge/config.yml`:\n```yaml\nvector-fields:\n  max-per-player: 3          # Max fields per player\n  default-range: 10          # Default range in blocks\n  particle-density: 0.5      # Particle spacing (lower = denser)\n  max-force: 5.0             # Max total force per entity\n  sound-effects:\n    radial: \"minecraft:entity.ender_eye.ambient\"\n    linear: \"minecraft:entity.ghast.shoot\"\n    vortex: \"minecraft:entity.wither.shoot\"\n  particle-types:\n    radial: \"ELECTRIC_SPARK\"\n    linear: \"SWEEP_ATTACK\"\n    vortex: \"SMOKE_NORMAL\"\n  environmental-effects:\n    vortex-leaves: true       # Vortex spawns leaf particles\n```\n\n## API\nIntegrate with FieldForge using the `FieldForgeAPI`:\n```java\nimport pro.akii.ks.core.fieldforge.api.FieldForgeAPI;\n\npublic class ExamplePlugin extends JavaPlugin {\n    @Override\n    public void onEnable() {\n        FieldForgeAPI api = getServer().getPluginManager().getPlugin(\"FieldForge\").getAPI();\n        // Create a 10-second radial field\n        api.createRadialField(getServer().getWorld(\"world\").getSpawnLocation(), 2, 5, 200, null);\n    }\n}\n```\nFull API methods are documented in `FieldForgeAPI.java`.\n\n## Troubleshooting\n- **No Effects**: Ensure you’re opped (`fieldforge.use`) and check `latest.log` for errors.\n- **NMS Errors**: Verify Spigot 1.21.1; adjust `NMSUtil.NMS_VERSION` if needed (e.g., `v1_21_R1`).\n- **Persistence Issues**: Ensure `fields.yml` world names match server worlds.\n- **Performance**: If TPS drops with many fields, increase particle render interval in `ParticleManager` (e.g., `% 10`).\n\n## Contributing\nWe welcome contributions! Follow these steps:\n1. **Fork the Repository**: Click \"Fork\" on GitHub.\n2. **Clone Your Fork**:\n   ```bash\n   git clone https://github.com/4K1D3V/FieldForge.git\n   ```\n3. **Create a Branch**:\n   ```bash\n   git checkout -b feature/your-feature\n   ```\n4. **Make Changes**: Implement your feature or fix.\n5. **Test**: Ensure functionality on Spigot 1.21.1.\n6. **Commit**:\n   ```bash\n   git commit -m \"Add your feature description\"\n   ```\n7. **Push**:\n   ```bash\n   git push origin feature/your-feature\n   ```\n8. **Pull Request**: Open a PR on GitHub with a detailed description.\n\n### Code Style\n- Use Javadoc for all public methods.\n- Follow Java naming conventions.\n- Maintain modularity and error handling.\n\n## License\nThis project is licensed under the MIT License. See [LICENSE](LICENSE) for details.\n\n## Credits\nDeveloped by [Kit](https://github.com/4K1D3V). Special thanks to the Spigot community for inspiration and support.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F4k1d3v%2Ffieldforge-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F4k1d3v%2Ffieldforge-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F4k1d3v%2Ffieldforge-plugin/lists"}