跳到正文

Xiyu’s Lucky Block

作者:Mai_xiyu

一个高度可自定义的幸运方块模块,提供用于制作附属的幸运方块 API 以及自定义数据包的便捷方法。

收藏

介绍

中文介绍正在准备中,下面暂时显示原文。

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

    • For detailed information, please refer to DATAPACK.md
  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

常见问题

Xiyu’s Lucky Block 支持哪些 Minecraft 版本?

Xiyu’s Lucky Block 支持 Minecraft Java 版 1.20.1,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。

Xiyu’s Lucky Block 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。

评论

登录后评论和评分

Mai_xiyu 的其他作品

查看全部 →