gpt4 book ai didi

java - 我怎样才能给玩家一个随机 block ?谢谢! (我的世界 Forge 模组 1.15)

转载 作者:行者123 更新时间:2023-12-01 16:53:08 26 4
gpt4 key购买 nike

我希望玩家每次持有基岩 block 时都会获得一个随机 block (只是一个例子,稍后我想做更酷的事情)我编码它是当玩家持有基岩 block 时会发生一些事情。但我不知道如何给玩家一个随机 block ...感谢您的帮助!

代码:

           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);
}

}

最佳答案

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

像这样的东西可能会起作用:

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

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

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

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

这未经测试。我对 1.15 retrofit 不太熟悉,但看起来它会起作用。

关于java - 我怎样才能给玩家一个随机 block ?谢谢! (我的世界 Forge 模组 1.15),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61648085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com