Mineuniverse
Log in Register
Mods

Xiyu's Lucky Block

A highly customizable lucky block module provides a lucky block API for making attachments and a convenient method for customizing data packages.
by mai_xiyu
Download Claim this project
1,378 downloads
0 likes
Updated Jul 6, 2026
0 hypes
Ores and Resources Utility & QoL

Lucky Block Mod

Discord

Features

  1. Event Handler Module

    • Allows users to define various events in lucky_functions.json file to trigger when lucky blocks are mined
  2. Loot Handler Module

    • Supports obtaining items from any loot table in any data pack
  3. Structure Module

    • Supports loading and generating structures from any data pack
  4. Data Pack Support

  5. Example Block

    • Provides example lucky blocks
    • Lucky value range: 0-200
    • Higher numbers are more likely to trigger lucky effects

API Documentation

Creating Custom Lucky Blocks

  1. Extend Base Lucky Block Class
public class CustomLuckyBlock extends BaseLuckyBlock {
    public CustomLuckyBlock() {
        super(); // Use default properties
    }
}
  1. Customize Block Properties
public class CustomLuckyBlock extends BaseLuckyBlock {
    public CustomLuckyBlock() {
        super(Properties.of()
            .strength(1.0f)
            .sound(SoundType.WOOD)
            // Other properties...
        );
    }
}
  1. Custom Break Effect
@Override
protected void onLuckyBlockBreak(Level level, BlockPos pos, BlockState state, Player player) {
    if (level instanceof ServerLevel serverLevel) {
        // Get lucky value
        int luckyValue = state.getValue(LUCKY);

        // Load and execute effects
        List<LuckyFunctionConfig> configs = LuckyConfigLoader.loadLuckyFunctions(serverLevel, luckyValue);
        if (!configs.isEmpty()) {
            LuckyFunctionConfig config = configs.get(level.random.nextInt(configs.size()));
            JsonObject effect = config.getRandomEffect();
            if (effect != null) {
                executeEffect(new Effect(effect), serverLevel, pos, player, luckyValue);
            }
        }
    }
}

Overridable Methods

  • onLuckyBlockBreak(Level level, BlockPos pos, BlockState state, Player player): Handle block break event
  • onRedStoneActivate(ServerLevel level, BlockPos pos, BlockState state): Handle redstone activation event
  • executeEffect(Effect effect, ServerLevel level, BlockPos pos, @Nullable Player player, int luckyValue): Execute effects

Lucky Value Description

  • Range: 0-200
  • Get method: state.getValue(LUCKY)
  • Default generation: Randomly generates value 0-200 when placed

Trigger Methods

  1. Break Trigger

    • Triggers effect when player breaks the block
  2. Redstone Trigger

    • Triggers effect when receiving redstone signal

Usage Instructions

Configuration File Format

{
  "lucky_functions": [
    {
      "id": "luckyblocks:spawn_items",
      "enabled": true,
      "items": [
        {
          "loot_table": "minecraft:chests/simple_dungeon",
          "enabled": true,
          "count": 1
        },
        {
          "loot_table": "minecraft:chests/desert_pyramid",
          "enabled": false
        }
      ]
    },
    {
      "id": "luckyblocks:spawn_structure",
      "enabled": true,
      "structures": [
        {
          "structure": "minecraft:village/plains/houses/plains_small_house_1",
          "enabled": true,
          "rotation": "NONE"
        }
      ]
    }
  ],
  "unlucky_functions": [
    {
      "id": "luckyblocks:explosion",
      "enabled": true,
      "effects": [
        {
          "power": 4,
          "enabled": true,
          "fire": false
        },
        {
          "power": 8,
          "fire": true,
          "enabled": false
        }
      ]
    },
    {
      "id": "luckyblocks:spawn_mob",
      "enabled": true,
      "mobs": [
        {
          "type": "minecraft:creeper",
          "enabled": true,
          "charged": true,
          "count": 1
        },
        {
          "type": "minecraft:zombie",
          "enabled": true,
          "baby": true,
          "equipment": {
            "mainhand": "minecraft:diamond_sword"
          }
        }
      ]
    }
  ]
}

Configuration Description

  1. Function Structure

    • Each function has a unique id and enabled status
    • Functions can contain multiple sub-functions, each can be enabled/disabled individually
  2. Built-in Functions

    • spawn_items: Generate items (from loot tables)
      • loot_table: Loot table path
      • count: Generation count
    • spawn_structure: Generate structures
      • structure: Structure path
      • rotation: Rotation direction (NONE, CLOCKWISE_90, CLOCKWISE_180, COUNTERCLOCKWISE_90)
    • explosion: Create explosions
      • power: Explosion power
      • fire: Whether to create fire
    • spawn_mob: Spawn entities
      • type: Entity type
      • count: Spawn count
      • charged: Whether charged (Creeper specific)
      • baby: Whether baby
      • equipment: Equipment configuration
  3. Sub-function Configuration

    • Each sub-function must have an enabled property
    • Can include additional properties specific to the function
    • Supports condition configuration and random weights (to be implemented)

Data Pack Customization

WIKI-DataPack

luckyblocks-1.20.1-1.0.1.jar
MC Client, 1.20.1, Forge, Server
Release 2025-02-02 Get

More from mai_xiyu

Spartan Weaponry Unofficial
87,764
Spartan Shields Unofficial
84,829
Hour clock 24
586
OneKeyMiner Chainable Visuals
5,305
CreativePlus
372
I want to spin
340

You Might Also Like

No More Pop-ups
A Minecraft mod to remove in-game pop-ups
996,708
Exit Confirmation
Often accidentally closed Minecraft? This mod might help!
99,067
NoDynamicFps
Adds an option to disable Vanilla's Dynamic FPS implementation
99,004
Liberty's Villagers
Quality of Life and AI improvements for Villagers
9,968,428
Naruto Enhanced Extension || AHZNB's Naruto ShinobiCraft Addon
Some practical functions
9,980
Wildex Bestiary
In-game bestiary that automatically tracks all creatures you encounter, including modded mobs.
9,937