Creator · Jahrome907
Last updated · Sep 6, 2026
Design and implement automated tests for current Minecraft 26.x or legacy 1.21.x mods and plugins using JUnit, MockBukkit, NeoForge Game Tests, or Fabric Game Tests. Use for test code and test execution, not release publishing or gameplay implementation.
Sandbox only
Install targets
Codex install prompt
Install the "minecraft-testing" agent skill from https://github.com/Jahrome907/minecraft-agent-skills/tree/main/.agents/skills/minecraft-testing. Read its SKILL.md or equivalent instructions first, install only the files needed for this workspace, and summarize any required setup before using it. Skill purpose: Design and implement automated tests for current Minecraft 26.x or legacy 1.21.x mods and plugins using JUnit, MockBukkit, NeoForge Game Tests, or Fabric Game Tests. Use for test code and test execution, not release publishing or gameplay implementation. After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {"event_id":"install_<unique-id>","skill_slug":"jahrome907-minecraft-testing","task":"Install minecraft-testing","agent":"codex","outcome":"success","install_used":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes.Supply asset profile
Code review, repo analysis, testing, CI, GitHub, DevOps, and developer workflow skills.
Scenario
GitHub automation
I need my agent to triage GitHub issues, review pull requests, and summarize repository changes.
Agent fit
Claude Code + CLI + Codex
Codex, Claude Code, Cursor, CLI, or custom agents.
Install
Ready
npx skills add Jahrome907/minecraft-agent-skills --skill minecraft-testing
Maintenance
fresh
1d since push
Risk
Needs review
Permission surface may require sandboxing
GitHub quality
129
68/100 Quality · 74/100 Trust
Coverage tags
Review notes
Permission surface may require sandboxing · The SKILL.md excerpt is truncated, so the full content could not be reviewed, but the visible portions are clear and well-structured.
Agent adoption scorecard
These scores combine public repository metadata, OpenAgentSkill review signals, maintenance freshness, and install readiness. They are a shortlist signal, not a replacement for human review.
Quality
PromisingUseful candidate, but compare it with alternatives before adopting.
Trust
Sandbox onlyUseful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.
Audit
Needs reviewA machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
OpenAgentSkill Trust Score v5
Run only in a sandbox and compare close alternatives before using it for real work.
Stars
129 GitHub stars
Repo activity
129 stars, 9 forks
Maintenance
1d since push
License
MIT
Install
npx skills add Jahrome907/minecraft-agent-skills --skill minecraft-testing
Install safety
Agent-readable metadata
Use this block or the embedded JSON to decide whether an agent should install this skill, choose an alternative, or ask for human review first.
Suited tasks
Suited agents
Install decision
Trust and risk
Outcome loop
Install command
npx skills add Jahrome907/minecraft-agent-skills --skill minecraft-testingDo not use when
Alternative
175.1K Stars
npx skills add anthropics/skills --skill frontend-design
Alternative
85.2K Stars
npx skills add Leonxlnx/taste-skill --skill design-taste-frontend
Alternative
1.8K Stars
npx skills add Alisa0808/vox-director --skill vox-director
Alternative
175.1K Stars
npx skills add anthropics/skills --skill canvas-design
Agent safety v2
Sparse or mixed signals. Useful for discovery, but not for autonomous installation.
Test manually in an isolated workspace and compare against safer alternatives.
high
Skill metadata references terminal, CLI, shell, subprocess, or command execution workflows.
medium
Skill likely fetches remote pages, APIs, repositories, or external services.
medium
Skill may read or write project files, documents, generated artifacts, or local workspace state.
Agent resolve plan
The Resolve API returns the selected skill, alternatives, safety policy, audit notes, install target, and copy-paste prompt an agent can follow without scraping this page.
Open JSON
/api/agent/resolve?task=Use%20minecraft-testing%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Resolve text
/api/agent/resolve?task=Use%20minecraft-testing%20for%20an%20agent%20workflow&agent=codex&max_risk=medium&format=text
Install handoff
/api/skills/jahrome907-minecraft-testing/install
Agent should check
Copy prompt
Task: Use minecraft-testing in this workspace.
Resolve first: https://www.openagentskill.com/api/agent/resolve?task=Use%20minecraft-testing%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Review install handoff: https://www.openagentskill.com/api/skills/jahrome907-minecraft-testing/install
Install command: npx skills add Jahrome907/minecraft-agent-skills --skill minecraft-testing
Before running it, summarize audit warnings, required permissions, and the fallback skill if install is risky.Agent handoff
Use the public install endpoint to fetch the command, safety checklist, target prompts, and canonical links for this skill.
Install handoff
/api/skills/jahrome907-minecraft-testing/install
LLM text format
/api/skills/jahrome907-minecraft-testing/install?format=text
Find alternatives
/api/skills/search?q=minecraft-testing&limit=3
Agent prompt
Use minecraft-testing for this task. Review https://www.openagentskill.com/api/skills/jahrome907-minecraft-testing/install, then install with: npx skills add Jahrome907/minecraft-agent-skills --skill minecraft-testingRegistry metadata
This page exposes the same decision, trust, audit, use-case, and install signals through the Registry API, so agents can rank this skill without scraping the UI.
Manifest
/api/registry/manifest/jahrome907-minecraft-testing
LLM text
/api/registry/manifest/jahrome907-minecraft-testing?format=text
Install alias
/api/registry/install/jahrome907-minecraft-testing
Recommend
/api/registry/recommend?task=Use%20minecraft-testing%20in%20an%20agent%20workflow&limit=3
Agent fit
Workflow automation
Platforms
Claude Code
Audit report
A machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
Agent decision cockpit
Prototype with this skill first; keep a fallback candidate ready.
Role in stack
Fallback candidate
Primary fit
Workflow automation
Trust label
Prototype first
Install path
Command ready
Use when
Evidence
review first
Implementation path
Trust profile
Useful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.
GitHub adoption
INFO129 GitHub stars
Stars/forks activity
CHECK129 stars, 9 forks; issue activity unavailable in current metadata
Recent maintenance
PASS1d since push
License clarity
PASSMIT
Good signals
Review before install
Recommended action
Run only in a sandbox and compare close alternatives before using it for real work.
Quality profile
Useful candidate, but compare it with alternatives before adopting.
Workflow fit
Automate repeated work
I need my agent to automate a repeated workflow across tools and files.
Operate web apps
I need my agent to control a browser, fill forms, and verify web app workflows.
Manage repositories
I need my agent to triage GitHub issues, review pull requests, and summarize repository changes.
Workflow fit
Operate and verify web apps
A workflow for agents that navigate products, fill forms, take screenshots, and verify real user flows across web applications.
Turn skills into distribution
A workflow for turning newly indexed skills into SEO briefs, social drafts, comparison pages, and reusable publishing workflows.
Inspect, patch, and verify code
A workflow for software agents that inspect repositories, review pull requests, generate tests, and turn findings into shippable patches.
Alternative shortlist
Similar skills that may fit this task.
Guidance for distinctive, intentional UI design, typography, visual direction, and non-template-like product interfaces.
Design and implementation guidance for distinctive landing pages, portfolios, product demos, and purposeful redesigns.
Turn one topic into a narrated Vox-style paper-collage explainer or ad video, from script through captions.
Create original visual art, posters, PNG assets, and PDF documents through a clear design philosophy.
--- name: minecraft-testing description: "Design and implement automated tests for current Minecraft 26.x or legacy 1.21.x mods and plugins using JUnit, MockBukkit, NeoForge Game Tests, or Fabric Game Tests. Use for test code and test execution, not release publishing or gameplay implementation." ---
# Minecraft Testing Skill
## Testing Strategies Overview
| Approach | Best For | Requires Game? | |----------|---------|----------------| | **JUnit 5** (pure unit tests) | Logic, data structures, NBT serialization | No | | **MockBukkit** | Bukkit/Paper plugin events, commands, inventory | No (mocked server) | | **NeoForge GameTests** | In-game block/entity/world interaction | Yes (test environment) | | **Fabric GameTests** | In-game block/entity/world interaction | Yes (test environment) | | **Integration server** | Full plugin/mod lifecycle | Yes (dedicated test server) |
Use Java 25 for current 26.x projects. Keep legacy 1.21.x examples on Java 21 and Forge 1.20.1 on Java 17. Do not combine source layouts or APIs across lanes.
### Routing Boundaries - `Use when`: the task is designing or implementing automated tests (unit, mock, gametest, CI test jobs) for Minecraft projects. - `Do not use when`: the task is implementing gameplay features rather than testing them (`minecraft-modding`, `minecraft-plugin-dev`, `minecraft-datapack`). - `Do not use when`: the task is release automation or publishing pipelines (`minecraft-ci-release`).
## Bundled References And Helpers
- Layout guide: `references/test-layouts.md` - Fixture/layout validator: `./scripts/validate-test-layout.sh --root <project>`
Use the validator before copying a test layout into a real project. It checks visible static dependencies, metadata, and literal structure references. It does not compile the project or prove a Game Test can run.
---
## Unit Testing (JUnit 5 — No Minecraft)
### JUnit Platform task ```kotlin tasks.test { useJUnitPlatform() testLogging { events("passed", "skipped", "failed") } } ```
For Fabric code that needs loader setup, use Fabric Loader JUnit rather than assuming ordinary JUnit initialized Minecraft:
```groovy dependencies { testImplementation "net.fabricmc:fabric-loader-junit:${project.loader_version}" }
test { useJUnitPlatform() } ```
When a unit test reaches registry-dependent Minecraft classes, initialize only the required bootstrap in test setup. The current Fabric guide uses `SharedConstants.tryDetectVersion()` and `Bootstrap.bootStrap()` for that case.
### Example pure unit test ```java import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*;
class CooldownManagerTest {
@Test void cooldown_tracksPlayersIndependently() { var manager = new CooldownManager(500L); // 500ms cooldown manager.startCooldown("steve"); assertTrue(manager.isOnCooldown("steve")); assertFalse(manager.isOnCooldown("notExisting")); }
@Test void cooldown_throwsIllegalArgument_onNegativeDuration() { assertThrows(IllegalArgumentException.class, () -> new CooldownManager(-1L)); } } ```
---
## MockBukkit (Paper/Bukkit Plugin Tests)
### `build.gradle.kts` ```kotlin repositories { maven("https://repo.papermc.io/repository/maven-public/") mavenCentral() }
dependencies { compileOnly("io.papermc.paper:paper-api:26.2.build.+") testImplementation("org.junit.jupiter:junit-jupiter:6.1.3") testImplementation("org.mockbukkit.mockbukkit:mockbukkit-v26.2:4.116.1") testRuntimeOnly("org.junit.platform:junit-platform-launcher") }
tasks.test { useJUnitPlatform() } ```
### Setup / teardown pattern ```java import org.mockbukkit.mockbukkit.MockBukkit; import org.mockbukkit.mockbukkit.ServerMock; import org.mockbukkit.mockbukkit.entity.PlayerMock; import org.junit.jupiter.api.*;
class MyPluginTest {
private static ServerMock server; private static MyPlugin plugin;
@BeforeAll static void setUp() { // Start mock Bukkit server and load your plugin server = MockBukkit.mock(); plugin = MockBukkit.load(MyPlugin.class); }
@AfterAll static void tearDown() { MockBukkit.unmock(); } } ```
### Testing events ```java @Test void playerJoin_getsWelcomeMessage() { PlayerMock player = server.addPlayer("Steve"); player.simulateJoin(); // fires PlayerJoinEvent
// Assert the player received the expected message component player.assertSaid("Welcome, Steve!"); // Or for Adventure components: assertTrue(player.nextMessage().contains("Welcome")); }
@Test void onBlockBreak_cancelledForNonOp() { PlayerMock player = server.addPlayer(); player.setOp(false);
Block block = player.getWorld().getBlockAt(0, 64, 0); block.setType(Material.STONE); BlockBreakEvent event = new BlockBreakEvent(block, player); server.getPluginManager().callEvent(event);
assertTrue(event.isCancelled(), "Non-op should not be able to break blocks"); } ```
### Testing commands ```java @Test void mypluginInfo_returnsVersion() { PlayerMock player = server.addPlayer("Admin"); player.setOp(true);
boolean result = server.dispatchCommand(player, "myplugin info");
assertTrue(result); player.assertSaid("Version: " + plugin.getDescription().getVersion()); }
@Test void mypluginReload_requiresOp() { PlayerMock player = server.addPlayer("NonOp"); player.setOp(false);
server.dispatchCommand(player, "myplugin reload");
player.assertSaid("No permission."); } ```
### Testing inventory / items ```java @Test void giveKitCommand_givesPlayerItems() { PlayerMock player = server.addPlayer(); server.dispatchCommand(player, "kit starter"); // Check inventory assertTrue(player.getInventory().contains(Material.STONE_SWORD)); assertTrue(player.getInventory().contains(Material.BREAD, 16)); } ```
### Testing scheduler tasks ```java @Test void repeatingTask_firesAfterDelay() { PlayerMock player = server.addPlayer(); // Execute 40 ticks worth of scheduled tasks server.getScheduler().performTicks(40L); // Assert expected side effect happened assertEquals(2, plugin.getTaskCount()); } ```
### Testing Folia-safe scheduler abstractions
MockBukkit does not emulate Folia's region-threaded runtime. The safe pattern is to wrap scheduling behind your own interface and unit test the abstraction boundary.
```java interface SchedulerFacade { void runPlayerTask(Player player, Runnable task); void runAsync(Runnable task); }
@Test void playerTask_delegatesThroughFacade() { List<String> calls = new ArrayList<>(); SchedulerFacade facade = new SchedulerFacade() { @Override public void runPlayerTask(Player player, Runnable task) { calls.add("player"); task.run(); }
@Override public void runAsync(Runnable task) { calls.add("async"); task.run(); } };
facade.runPlayerTask(server.addPlayer(), () -> calls.add("ran")); assertEquals(List.of("player", "ran"), calls); } ```
### Testing PDC ```java import java.util.ArrayList; import org.bukkit.damage.DamageSource; import org.bukkit.damage.DamageType; import org.bukkit.entity.LivingEntity;
@Test void pdcKillCount_incrementsOnKill() { PlayerMock player = server.addPlayer(); NamespacedKey key = new NamespacedKey(plugin, "kills");
// EntityDeathEvent requires a living victim and an explicit damage source. LivingEntity victim = (LivingEntity) server.addMockEntity(EntityType.ZOMBIE); DamageSource damageSource = DamageSource.builder(DamageType.GENERIC) .withCausingEntity(player) .withDirectEntity(player) .build(); EntityDeathEvent deathEvent = new EntityDeathEvent( victim, damageSource, new ArrayList<>(), 0 ); server.getPluginManager().callEvent(deathEvent);
int kills = player.getPersistentDataContainer() .getOrDefault(key, PersistentDataType.INTEGER, 0); assertEquals(1, kills); } ```
This dispatches a synthetic death event. For player attribution, the listener under test should read `event.getDamageSource().getCausingEntity()`; test actual combat attribution separately on a real server.
### Testing item or chunk PDC writes ```java @Test void itemPdc_roundTripsCustomId() { NamespacedKey key = new NamespacedKey(plugin, "custom_id"); ItemStack item = new ItemStack(Material.STICK);
item.editMeta(meta -> meta.getPersistentDataContainer().set( key, PersistentDataType.STRING, "wand" ));
String value = item.getItemMeta().getPersistentDataContainer() .get(key, PersistentDataType.STRING); assertEquals("wand", value); } ```
---
## Current NeoForge Game Tests (26.x)
NeoForge 1.21.5 and later uses data-driven test environments and test instances, not the old `@GameTestHolder` method-registration API. Store resources under `data/<namespace>/test_environment/` and `data/<namespace>/test_instance/`. A `test_instance` selects its environment, structure, timing, and either a registered function or a block-based test.
```json { "environment": "minecraft:default", "structure": "examplemod:example_structure", "max_ticks": 200, "setup_ticks": 0, "required": true, "type": "minecraft:function", "function": "examplemod:example_function" } ```
Register the `Consumer<GameTestHelper>` with a `DeferredRegister` for the current `BuiltInRegistries.TEST_FUNCTION` registry, then attach that register to the mod event bus. The function below makes the JSON reference above usable. Use `RegisterGameTestsEvent` only when registering environments and test instances in code instead of data files. Keep the referenced structure in `data/<namespace>/structure/<path>.nbt` and mark success explicitly.
```java import java.util.function.Consumer; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.gametest.framework.GameTestHelper; import net.minecraft.world.level.block.Blocks; import net.neoforged.bus.api.IEventBus; import net.neoforged.fml.common.Mod; import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister;
@Mod(ExampleGameTests.MOD_ID) public final class ExampleGameTests { public static final String MOD_ID = "examplemod"; private static final DeferredRegister<Consumer<GameTestHelper>> TEST_FUNCTIONS = DeferredRegister.create(BuiltInRegistries.TEST_FUNCTION, MOD_ID); public static final DeferredHolder<Consumer<GameTestHelper>, Consumer<GameTestHelper>> EXAMPLE_FUNCTION = TEST_FUNCTIONS.register( "example_function", () -> ExampleGameTests::exampleTest );
public ExampleGameTests(IEventBus modBus) { TEST_FUNCTIONS.register(modBus); }
public static void exampleTest(GameTestHelper helper) { helper.assertBlockPresent(Blocks.AIR, 0, 0, 0); helper.succeed(); } } ```
Run `./gradlew runGameTestServer`; the server exits with the count of required failed tests. This command is for a real project, not this skills repository.
---
## Current Fabric Game Tests (26.x)
Use Fabric Loom's dedicated Game Test source set. Configure it in the existing `fabricApi` block and keep its metadata and code under `src/gametest`, separate from ordinary unit tests.
```groovy fabricApi { configureTests { createSourceSet = true modId = "example-mod-test-${project.name}" enableGameTests = true enableClientGameTests = true eula = true } } ```
Place `fabric.mod.json` in `src/gametest/resources/` and register server tests under `fabric-gametest`; use `fabric-client-gametest` for client tests. Implement server methods with Fabric's `net.fabricmc.fabric.api.gametest.v1.GameTest` and, when setup is needed before a method runs, `CustomTestMethodInvoker`.
```java package com.example.mymod;
imp
Source provenance
Decision snapshot
recent repository activity
Audit
Install and adoption review
Agent-proven evidence
Outcome reports after resolve, review, install, and one narrow run.
No agent outcome data yet. The first agent run can report success, setup needs, risk blocks, failure, or not-relevant through /api/agent/outcome.
Install
Free and open source. Review the report before installing into production agents.
Growth loop
Scenario-led draft for minecraft-testing, ready for a manual X post.
A practical pick for design or creative work: minecraft-testing: Design and implement automated tests for current Minecraft 26.x or legacy 1.21.x mods and plugins using JUnit, MockBukkit,... 129 stars https://www.openagentskill.com/skills/jahrome907-minecraft-testing?ref=x
Listing + install path for minecraft-testing: https://www.openagentskill.com/skills/jahrome907-minecraft-testing?ref=x Install: npx skills add Jahrome907/minecraft-agent-skills --skill minecraft-testing
Listing source
This listing was indexed from public sources and is not marked official until a maintainer claim is approved.
Attribution links to the public repository or creator profile. Creators can claim the listing to update ownership signals.
Claim this skillOwner claim
This Registry indexed listing is attributed to Jahrome907 but is not marked official yet. Claim it to add a verified owner signal and make future launch, install, and audit updates easier to trust.
Creator backlink kit
Show the canonical listing, current trust and audit signals, and real Agent-Proven evidence where developers evaluate the repository.
[](https://www.openagentskill.com/skills/jahrome907-minecraft-testing?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/jahrome907-minecraft-testing?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/jahrome907-minecraft-testing/audit)
[](https://www.openagentskill.com/skills/jahrome907-minecraft-testing?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)Jahrome907
@jahrome907
Share whether this skill looks useful for your agent workflow. Aggregated feedback improves rankings over time.
Sandbox only
Frontend Design
Guidance for distinctive, intentional UI design, typography, visual direction, and non-template-like product interfaces.
175.1K StarsTaste Skill: Anti-Slop Frontend
Design and implementation guidance for distinctive landing pages, portfolios, product demos, and purposeful redesigns.
85.2K StarsVox Director
Turn one topic into a narrated Vox-style paper-collage explainer or ad video, from script through captions.
1.8K StarsCanvas Design
Create original visual art, posters, PNG assets, and PDF documents through a clear design philosophy.
175.1K StarsPermission surface
shell or command execution, filesystem or document access
Agent outcomes
No agent outcome data yet
Docs
Strong README/SKILL.md context
Risk summary
Install readiness