CustomOres Advanced Custom Ore Generation for Minecraft 1.21.4+ ⭐ Create Unique Veins ⭐ Particles & Glow ⭐ Full Control ⭐
(Replace above with an actual banner image!)
Overview CustomOres is a powerful Minecraft server plugin designed to give administrators complete control over custom ore vein generation. Create, manage, and customize a variety of ore veins, each with unique properties such as materials, generation conditions, drop tables, required tools, particle effects, and even glowing outlines to make them stand out!
Whether you want to add rare, new resources to your survival world, create special event ores, or finely tune the existing ore distribution, CustomOres provides the tools you need.
Unparalleled Customization: Define every aspect of your ores, from their appearance to their behavior.
Engaging Gameplay: Introduce new challenges and rewards for your players.
Performance Conscious: Designed with server performance in mind (though always test in your environment).
Easy to Use: Configure via intuitive commands or detailed YAML files.
Visually Appealing: Make your custom ores pop with particles and glowing effects.
(Replace with actual screenshots/GIFs!)
Features
Create Custom Ore Veins:
Define ore vein names and their base block material (e.g., a custom textured block or an existing one like Diamond Ore).
Use items in hand to easily set materials.
Precise Generation Control:
Specify target worlds for generation.
Set density (chunks) and vein size.
Configure Y-level ranges (min/max height) for underground generation.
Choose to generate on the surface (`OnGround: true/false`).
Define specific blocks ores can generate on if on the surface (e.g., `GRASS_BLOCK`, `SAND`).
Set XY coordinate regions for generation (`setregion`).
Specify which existing blocks your custom ores can replace (e.g., `STONE`, `DEEPSLATE`).
Custom Drops & Mining:
Define multiple custom item drops per ore, each with its own drop chance.
Restrict mining to specific tools (e.g., only a Netherite Pickaxe can mine "Superium Ore").
Set automatic generation (`spawn: true/false`) for each ore type.
Configure respawn cooldowns for mined veins.
Force generate specific ores at coordinates.
Clear all custom ores or ores of a specific type.
Regenerate all defined ore veins.
Reload plugin configuration without a server restart.
List all ore configurations and view detailed info for specific ores.
Configuration:
Manage everything through in-game commands or by directly editing YAML configuration files.
`config.yml`: Main plugin settings (e.g., debug mode).
`ores.yml`: Detailed configurations for each custom ore type.
`messages.yml`: Customize all player-facing messages (supports multi-language).
`debugmessage.yml`: Customize debug messages.
`minecraft_lang.yml`: For item/material name translations.
Dependencies
Java 17 or higher
Paper API 1.20.1-1.21.5 (or compatible Spigot/Bukkit versions)
No other plugin dependencies are required for core functionality.
Commands Main command:
/ro (alias for /customores - configurable)
Permission for all commands: `customores.admin` (Example, actual permissions might vary based on `plugin.yml`)
Ore Management:
Code (Text):
/ro create <oreName>
/ro delete <oreName>
/ro list
/ro info <oreName>
/ro reload
Place the `.jar` file into your server's `plugins` folder.
Restart or load the plugin using your server's plugin manager.
The plugin will generate default configuration files in `plugins/CustomOres/`.
Configure permissions for your staff.
Basic Usage Example: Creating a New Ore
Create the ore config: `/ro create MyShinyOre`
Hold the block you want it to look like (e.g., an Iron Ore block) and type: `/ro setMaterial MyShinyOre`
Set its world: `/ro setWorld MyShinyOre world`
Set its density (e.g., 5-10 veins per 16x16 chunk area, approximately): `/ro setDensity MyShinyOre 5,10`
Set its vein size: `/ro setSize MyShinyOre 4`
Set Y-level generation: `/ro setDeepY MyShinyOre 0,60`
Set what it drops (e.g., a diamond with 100% chance): `/ro setDrops MyShinyOre DIAMOND 100` (Note: For custom items, you might need to use serialized item data or a translation key. Refer to `ItemSerializer.java` or `ItemNameTranslator.java` concepts mentioned in the README for advanced item definitions.)
Hold a diamond pickaxe and set it as the required tool: `/ro setTools MyShinyOre`
(Optional) Add some flair: `/ro setParticle MyShinyOre FLAME 10 SPHERE`
(Optional) Make it glow red: `/ro setGlow MyShinyOre false 32 #FF0000 true`
Configuration Example (ores.yml)
Code (YAML):
# ores.yml MyShinyOre:
Material: # The block material for this ore # This would be serialized item data if set via /ro setMaterial # Example: # serialized-item: "==" World: world
Density: - 5
# Min density - 10
# Max density Size: 4
OnGround: false
OnGroundBlocks: # Blocks it can spawn on if OnGround is true - GRASS_BLOCK
deepY: # Underground Y-level range - 0
# Min Y - 60
# Max Y OreItem: # Items dropped when mined drop1:
chance: 100
# 100% chance # serialized-item: "==" (e.g., for a Diamond) # For simple items, it might store material name like: material: DIAMOND
amount: 1
tools: # Tools required to mine (list of serialized items) # - serialized-item: "==" (e.g., for a Diamond Pickaxe) Cooldown: 5
# 5 minutes respawn cooldown Spawn: true
# Automatically generate Particle:
Type: FLAME
Count: 10
Shape: SPHERE
RefreshRate: 20
# ticks DisplayDistance: 16.0
HeightOffset: 0.5
Enabled: true
Glow:
SeeThrough: false
DisplayDistance: 32.0
Color: '
#FF0000' # Red Enabled: true
Scale: 1.0
BlockLight: 0
# No extra block light SkyLight: 0
# No extra sky light Region: # Optional XY generation bounding box minX: -1000
minZ: -1000
maxX: 1000
maxZ: 1000
ReplaceMaterials: # Blocks this ore can replace - STONE
- DEEPSLATE
- DIRT
- GRAVEL