我如何给玩家一个随机的方块?谢谢! (Minecraft Forge Modding 1.15)

问题描述 投票:0回答:1

我希望玩家每次持有基岩块时都会得到一个随机块(仅作为示例,稍后我想做一些更酷的事情)。我编码为当玩家持有基岩块时会发生某种情况。但我不知道如何随机分配播放器...谢谢您的帮助!

代码:

           package com.kelbig.mod.events;

import com.kelbig.mod.FirstMod;

import net.minecraft.entity.LivingEntity;
import net.minecraft.item.Items;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.client.event.FOVUpdateEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus;



@Mod.EventBusSubscriber (modid = FirstMod.MOD_ID, bus = Bus.FORGE)
public class RightClickBlock {  


    @SubscribeEvent 
    public static void on(FOVUpdateEvent event) {



        if(player.getHeldItemMainhand().getItem() == Items.BEDROCK) 
        {           
                        event.setNewfov(event.getFov() * 1.3F); 
                 }       

}
java eclipse minecraft minecraft-forge
1个回答
0
投票

Item::getItemById似乎使用项目注册表来获取项目。已注册的Item似乎存储在迭代器中。 Block具有类似的注册表。我们可以使用的。

类似的方法可能起作用:

Iterator<Block> itemIterator = Registry.BLOCK.iterator(); // Gets the registry iterator
List<Block> itemList = new ArrayList<>();

for (Iterator<Block> it = itemIterator; it.hasNext(); ) // Iterates through registry iterator
{
    itemList.add(it.next()); // Adds each element to a List (easier to get a random element from)
}

Random rand = new Random();
Block randomBlock = itemList.get(rand.nextInt(itemList.size())); // Chooses a random element from the List of Blocks

然后您可以使用Block做各种事情。要以Item格式获取它,请执行Item itemFromRandomBlock = randomBlock.asItem()

未经测试。我对1.15改装不太熟悉,但是看起来可以使用。

© www.soinside.com 2019 - 2024. All rights reserved.