Reference
Custom arena maps, mob head textures for the combat HUD, and the addon policy for distributing Craftics addons.
Custom Arena Maps
An arena is a schematic with a few marker blocks in it. Craftics ships a set for every biome, and you can replace any of them, or supply arenas for a biome of your own, without writing code. Putting the file in the right folder under the right name is all it takes.
There is a worked example. The Example_Arena_Addon folder in the repository is a ready-made data pack that replaces three Plains arenas, a script that tells you what Craftics will make of any .schem before you start the game, and a walkthrough of everything on this page.
Step 1: Build the arena
Build in a creative world that has Craftics and WorldEdit installed. An arena is three things: a flat floor to fight on, scenery around it, and marker blocks that tell Craftics where the floor is. The floor layer is the layer of blocks the fighters stand on. Every marker goes in that layer, replacing a floor block, not on top of it.
Step 2: Place the markers
The Arena Corner Marker (craftics:arena_corner) draws the arena. It is in the Craftics creative tab, or run /give @s craftics:arena_corner. How many you place decides what you get.
| Markers | Arena |
|---|---|
| Two Arena Corner Markers | A rectangle. Put them on two opposite corner tiles. Both tiles are part of the arena, so markers nine blocks apart give a 9 by 9 arena. |
| Three or more Arena Corner Markers | Any shape. Walk the outline and place one at each corner, in any order. The markers are the border: the arena is the tiles strictly inside the line they draw. A marker may be hidden under the floor, up to two blocks down, or lie in the floor with a wall built on top of it: the floor is the height most of the arena can be stood on. A marker that is not a corner, part way along a straight edge or inside the shape, is set aside (four at most), so a room built from cells can have one at every cell corner. |
| Gold block (optional) | Where player 1 starts. It goes in the floor layer, inside the arena. Without one, Craftics uses the middle column one row in from the camera on a rectangle, and the tile nearest the middle on any other shape. |
Craftics removes every marker and patches the hole with the block most common around it, so none of them shows in the finished arena.
- Straight-edged shapes (an L, a T, a plus), where every edge runs north-south or east-west, are traced exactly. They always have an even number of corners.
- Shapes with diagonal edges work when they bulge outward everywhere (an octagon, a hexagon, a diamond). A shape that has diagonals and also bends inward will not come out right.
- The camera sits at a marker on the west side of the arena and looks at the middle. On a rectangle that is the western of the two markers, so choose the diagonal that puts a marker where you want the camera. To see an arena from another side, turn the build before you save it. Keep tall scenery away from that corner.
- Markers at different heights are tolerated. A rectangle uses the higher of its two markers as the floor. A shape uses the height most of its markers agree on.
Diamond and emerald blocks are the old markers. Earlier arenas mark the two corners of a rectangle with a diamond block and an emerald block. They still load and do not need converting, and a diamond block placed among Arena Corner Markers still sets the camera corner. Use the Arena Corner Marker for anything new.
Numbered arenas and boss rooms
A biome's ordinary levels use numbered files, and its last level, the boss, uses boss.schem. The two are treated differently, so decide which one you are building first.
Numbered arena (1.schem, 2.schem, ...) | Boss room (boss.schem) | |
|---|---|---|
| Floor inside the arena | Repainted with the biome's floor_blocks. Water, lava and gaps are kept. | Kept exactly as built. |
| Blocks standing on that floor | Removed. Carpets are kept. The biome's obstacle_blocks are scattered instead. | Kept. They become obstacles. |
| Around the arena | A ring of concrete is laid as a border. | Nothing is added. |
| Edge of the schematic | The outer 4 blocks are cut into a slope. | Kept exactly as built. |
A numbered arena is terrain: you supply the shape, the water and the scenery, and Craftics dresses the floor to match the biome. A boss room is yours block for block, which also means its edges have to look finished on their own. Trial chamber arenas are kept as built too.
In both kinds, everything two or more blocks above the floor is cleared inside the arena, apart from cobwebs, so keep roofs, branches and tall pillars outside it. Craftics also adds lamp posts around every arena, in the blocks of the biome's environment, and on rectangular arenas the environment's usual scatter (tall grass on Plains, cactus in the Desert, and so on).
What a block means
After the arena is placed, Craftics reads each tile from the blocks that are left. This matters most in a boss room, where everything you built is still there.
| In the arena | Becomes |
|---|---|
| A block standing on the floor | An obstacle. Fences, walls and glass panes count. |
| Stairs or a bottom slab on the floor | A step. Full blocks beside a step become a raised platform you can walk onto. |
| Stairs or a bottom slab on a raised platform | A second step. Full blocks beside it become a second floor. Three floors up is the limit. |
| A cobweb on the floor, or one block up | A web trap. |
| Water in the floor layer, one block deep | Shallow water. Walkable, and it soaks you. |
| Water two or more blocks deep | Deep water. Nobody can enter it. |
| Lava or a magma block in the floor layer | A lava tile. |
| Powder snow in the floor layer | A powder snow tile. |
| A gap in the floor with ground one block down | A pit you can walk through. |
| A gap with nothing under it | A void tile. Nobody can walk onto it, and anything knocked in falls to its death. |
Step 3: Save it
- Select the whole build, including the scenery and the ground under it:
//pos1and//pos2 - Copy:
//copy - Save:
//schem save plains_1
That writes config/worldedit/schematics/plains_1.schem in the game folder. Any tool that saves Sponge .schem files, version 2 or 3, works.
Step 4: Put it where Craftics looks
There are three places. The first two are loose files in the game folder, which is .minecraft or your launcher's instance folder in single player, and the folder the server is started from on a server. The third is a data pack.
| Where | Files | Good for |
|---|---|---|
config/worldedit/schematics/ | plains_1.schem to plains_10.schem, plains_boss.schem | Testing. This is where WorldEdit already saved it. |
craftics_arenas/plains/ | 1.schem to 10.schem, boss.schem | Keeping arenas apart from your other schematics. |
A data pack: data/craftics/arenas/plains/ | 1.schem to 10.schem, boss.schem | Sharing, and anything tied to one world. |
- Number from 1 with no gaps. Craftics stops at the first missing number, so
1,2,4is read as two arenas. - Levels cycle through the files. Level 1 of a biome uses
1.schem, level 2 uses2.schem, and it wraps round when it runs out. The last level is the boss and usesboss.schem. - Loose files replace the whole set. If Craftics finds any loose numbered file for a biome, loose files are the only numbered arenas that biome uses. Boss files are counted separately, so adding only
plains_boss.schemleaves the numbered arenas alone. - A data pack folder counts as loose files. A zipped data pack replaces file by file. A zip holding only
1.schemreplaces arena 1 and leaves the built-in 2, 3 and 4 in the rotation. - Blocks from other mods load as air for anyone without that mod, and a hole in the floor is a void tile. A loose arena that needs a missing mod is skipped and the built-in ones are used.
Biome IDs for Arena Folders
| Overworld | Nether | End |
|---|---|---|
| plains | nether_wastes | outer_end_islands |
| forest | soul_sand_valley | end_city |
| desert | crimson_forest | chorus_grove |
| jungle | warped_forest | dragons_nest |
| river | basalt_deltas | |
| mountain | ||
| snowy | ||
| cave | ||
| deep_dark |
Trial chambers use trial_chamber and trial_chamber_ominous. The Pale Garden is a single file, forest/pale_garden.schem. outer_end_islands ignores loose files, so use a data pack for it.
A biome you add yourself keeps its arenas under its own namespace. See Arenas for a biome.
Shipping arenas in a mod jar. The same data/.../arenas/ layout works inside a jar, but only use it for biomes your mod adds. To replace a built-in arena, ship a data pack: when two mods provide the same file there is no telling which one wins, and a world's data pack always does.
Vanilla structure files. For a biome with no .schem arenas at all, Craftics also reads structures saved with a structure block, at data/<namespace>/structure/arenas/<biome>/1.nbt (boss_1.nbt for the boss). Schematics are looked for first, so a structure file cannot replace a built-in arena, and a structure block is limited to 48 blocks a side.
Step 5: Rebuild and test
An arena is built the first time a level is entered on an island and reused after that, so an island that has already seen the old arena keeps it until you ask:
/craftics rebuild_arenas plains
This rebuilds every arena of that biome on your island from the files as they are now. It is for operators unless the server config opens it up, and it refuses while anyone on the island is in a run. Loose files are read fresh each time. If you changed a data pack while the world was running, run /reload first. /craftics skip_level wins the current fight, which is the quick way to step through a biome and see each arena in turn.
Then read logs/latest.log. A good load looks like this:
ArenaBuilder: resolved biomeId='plains' isBoss=false ...
Found 2 disk .schem candidate(s) for biome 'plains': [...]
Structure 1.schem marker scan: diamond=false, emerald=false, corners=2, spawns=[true,false,false,false]
Arena built. origin=..., size=9x9, playerStart=GridPos[x=4, z=1], polygon=false
An arena from a zipped data pack is reported as Loading bundled arena: craftics:arenas/plains/1.schem, the same wording as a built-in one.
Troubleshooting
| What you see | Why, and what to do |
|---|---|
| The old arena is still there | Arenas are reused once built. Run /craftics rebuild_arenas <biome>. |
| Nothing changed even after a rebuild | Check the file name and folder, and that the numbering starts at 1 with no gaps. The log says which file was loaded. |
| Every level now uses one arena | Loose files replace the whole set. Add more numbered files, or ship a zipped data pack to replace a single arena. |
| The floor was repainted and the decorations are gone | That is what happens to a numbered arena. Keep decorations outside the arena, or build a boss room. |
The log says has no arena corner markers | No markers were found, so Craftics guessed a floor and laid the biome's default grid. Put the markers in the floor layer and include them in the selection you save. |
| The arena is one tile smaller all round than expected | With three or more markers they are the border, not part of the floor. Move them out a tile, or use two for a rectangle. |
| Players start in a strange place | The gold block has to be in the floor layer and inside the arena. |
| The camera faces the wrong way | It sits at a marker on the west side. Turn the build and save it again. |
| There are holes in the floor | Either gaps you left, or blocks from a mod that is not installed. The log names the missing mod. |
Tips
- Keep the whole schematic under about 110 blocks wide and long and 100 tall.
- For a numbered arena, keep the arena at least 4 blocks in from every edge of the schematic so the slope does not cut into it, and keep scenery 2 blocks clear of the arena so the border and lamp posts have room.
- The built-in arenas start at about 9 by 9 tiles. The largest boss rooms are a little over 20 by 20.
- The size comes from the markers, not from the biome's
gridvalues. Those only size an arena that has no schematic. - Add atmosphere outside the arena: lanterns, campfires, ruins, trees.
Mob Head Textures
The combat HUD displays a small head icon for every enemy and ally in the arena. Craftics ships 80+ vanilla mob heads and auto-discovers textures for modded mobs at runtime, so no code changes are needed to add heads for new mobs.
Resolution Order
When the HUD requests a head for entity type somemod:bigwolf, MobHeadTextures.get() checks three sources in order:
- Hardcoded vanilla map: ~80 built-in entries for all vanilla mobs. Always checked first.
- Runtime registration: entries added via the Java API (see below). Checked second.
- Resource auto-discovery: probes the loaded resource manager for a PNG at two path conventions (see below). Results are cached until
/reload.
If none of the three sources return a texture, the HUD falls back to a colored square with the mob's first initial.
Resource Pack Method (No Code)
Drop a 16×16 PNG at one of these two paths inside any resource pack:
| Convention | Path | Use Case |
|---|---|---|
| Craftics namespace | assets/craftics/textures/mob_heads/{modid}/{mobname}.png |
Resource packs shipping heads for any modded mob under Craftics' namespace |
| Mod namespace | assets/{modid}/textures/mob_heads/{mobname}.png |
A mod shipping its own head texture in its own namespace |
For a mob with entity type alexsmobs:bone_serpent, the auto-discovery probes:
assets/craftics/textures/mob_heads/alexsmobs/bone_serpent.png (Craftics namespace)
assets/alexsmobs/textures/mob_heads/bone_serpent.png (mod namespace)
Run /reload or toggle the resource pack and the head appears on the combat HUD immediately, with no client restart required.
Java API Method (Mod Code)
Addon mods can register head textures explicitly during client initialization:
import com.crackedgames.craftics.client.MobHeadTextures;
import net.minecraft.util.Identifier;
// In your ClientModInitializer.onInitializeClient():
MobHeadTextures.register(
"somemod:bigwolf",
Identifier.of("somemod", "textures/hud/bigwolf_head.png")
);
Runtime-registered entries take priority over auto-discovery but not over the built-in vanilla map.
Cache and Reload
Auto-discovered textures are cached after the first lookup. The cache is cleared automatically whenever /reload runs or resource packs change (via a SimpleSynchronousResourceReloadListener registered in CrafticsClient), so new or updated PNGs are picked up without restarting the client.
Addon Policy
Allowed
- Addons via API (weapons, equipment, armor sets, trims, events, enchantments, biomes, enemies, AI)
- Datapacks (arenas, loot, biome configs)
- Resource packs retexturing Craftics content
- Modpacks on CurseForge/Modrinth with credit
- Videos, streams, reviews (no permission needed)
Not Allowed
- Redistributing Craftics outside modpack launchers
- Copying source code into your projects
- Re-uploading without permission