当前位置: 首页 > 知识库问答 >
问题:

在一个锻造雷霆模型中修改怪物繁殖率(1.16)

焦同
2023-03-14

我对改装《我的世界》是新手,我想知道如何改变暴民产卵率。例如,假设我们想产生大量的Enderman。

到目前为止,我已经在net中找到了设置繁殖频率的代码。我的世界。世界生物群落默认生物景观。java

public static void withHostileMobs(MobSpawnInfo.Builder builder) {
   ...
   builder.withSpawner(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
   ...
}

这意味着在大多数生物群落中,尽管很少产卵(10是体重,爬行动物和蜘蛛有100)。

我知道这个DefaultBiome然后被BiomeMaker使用。javamakeGiantTaigaBiomemakeBirchForestBiome等。我的结论是,我需要改变生物群落以改变产卵率。

我可以使用生物注册伪造注册来访问生物群落。生物群落。我在这里看到两种方法:

  1. 完全替换生物群落图。不幸的是,它的注册方法是私有,因此我无法添加新的生物群落来取代现有的生物群落。我在这里还读到,移除它们显然是不可能的

大多数在线解决方案(1,2)似乎建议以下方案,可悲的是,这些方案在当前的1.16.4中不再有效:

ModLoader.addSpawn(YOURENTITY.class, 25, 1, 3);
EntityRegistry.addSpawn(...)

任何帮助将不胜感激。

共有1个答案

狄峰
2023-03-14

不要试图使用mixin修改现有的Minecraft包——这被称为coremoding,并且由于各种原因而不被接受。1.16的正确方法是订阅BiomeLoadingEvent,然后在加载所有BioMe后对其进行修补:

1.16

@Mod("example")
public class ExampleMod
{
    public ExampleMod() {
        MinecraftForge.EVENT_BUS.register(this);
    }

    @SubscribeEvent(priority = EventPriority.HIGH)
    public void onBiomeLoadingEvent(BiomeLoadingEvent event) {
        List<MobSpawnInfo.Spawners> spawns = 
            event.getSpawns().getSpawner(EntityClassification.MONSTER);

        // Remove existing Enderman spawn information
        spawns.removeIf(e -> e.type == EntityType.ENDERMAN);

        // Make Enderman spawns more frequent and add Blaze spawns in all biomes
        spawns.add(new MobSpawnInfo.Spawners(EntityType.BLAZE, 200, 1, 4));
        spawns.add(new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 200, 1, 4));
    }
}

1.15(可能也适用于1.14、1.13、1.12等)

@Mod("example")
public class ExampleMod
{
    public ExampleMod() {
        ForgeRegistries.BIOMES.forEach(biome -> {
            List<Biome.SpawnListEntry> spawns = biome.getSpawns(EntityClassification.MONSTER);
            spawns.removeIf(e -> e.entityType == EntityType.ENDERMAN);
            spawns.add(new Biome.SpawnListEntry(EntityType.BLAZE, 200, 1, 4));
            spawns.add(new Biome.SpawnListEntry(EntityType.ENDERMAN, 200, 1, 4));
        });
    }
}

编辑:请注意,InControl智能驭享可用于实现类似效果,无需编码。

 类似资料:
  • 我正在创建一个带有自定义项目的mod,我想让该项目可穿戴,但我不知道如何。这是我的Mod项目代码。

  • 我编码了一个伪造的minecraft 1.12 mod,但是当试图游戏制作物品时,它不起作用。 以下是JSON文件: 你能帮助我吗?谢谢;)

  • 所以我试图安装锻造api(Minecraft 1.10.2)来开发一个mod,我在使用锻造格拉德尔时遇到了问题。每次我用"bash gradlew setupDecompWorkspace"运行它,我都会得到这个错误: 失败:生成失败,出现异常。 > 无法解析de.oceanlabs。mcp:mcp:1.10。2.要求:com。你的名字。modid:forge-1:1.0无法解析de.oceanl

  • 问题内容: 因为我通常不会在Django项目中进行模型的前期设计,所以最终会大量修改模型,从而每次都删除测试数据库(因为“ syncdb”永远不会为您自动更改表)。我的工作流程位于下面,很想听听您的工作流程。任何想法欢迎。 修改模型。 删除测试数据库。(对我来说总是一个简单的sqlite数据库。) 运行“ syncdb”。 通过代码生成一些测试数据。 转到1。 有关此问题的第二个问题。如果您的工作

  • 我的问题是,当我开始游戏时,我的资源都没有加载。我使用IntelliJ版本2021.2.2和1.12.2 Minecraft锻造MDK版本14.23.5.2855,我知道IntelliJ是问题所在,但我发现这个问题就是这个解决方案 但是这个解决方案已经不起作用了,因为在Gradle 4.9版中,已经被弃用了,我不知道该怎么办了。我的源代码可以在我的GitHub上找到。注意:问题不在于我是如何添加资

  • 我遇到了一个项目块渲染问题,因为当我放置块时,它会正确渲染,但当我拿着它时,它缺少纹理/模型。 我看到的图片在链接中:http://i.stack.imgur.com/atq1L.png 我已经检查了很多次,控制台中没有错误消息,JSON格式似乎没有任何问题,代码中似乎也没有问题。 *顺便说一下,block类的代码并不太重要,因为它只是一个扩展*block的类。类,然后给super添加材料。石 以