Отключение генерации vanilla руд

Версия Minecraft
1.7.10
14
0
Здравствуйте.
Подскажите как отключить генерацию vanilla руд (coal ore, iron ore, gold ore, diamond ore, emerald ore, lapis ore, redstone ore).
Заранее спасибо.
 
Решение
Java:
    @SubscribeEvent
    public void onGenerateMinable(GenerateMinable event) {
        if(CFG_OreSpawn.disableDirtGen && event.type == GenerateMinable.EventType.DIRT)
        {
          event.setResult(Result.DENY);
        }
        
        if(CFG_OreSpawn.disableGravelGen && event.type == GenerateMinable.EventType.GRAVEL)
        {
          event.setResult(Result.DENY);
        }
        if(CFG_OreSpawn.disableCoalGen && event.type == GenerateMinable.EventType.COAL)
        {
          event.setResult(Result.DENY);
        }
        if(CFG_OreSpawn.disableIronGen && event.type == GenerateMinable.EventType.IRON)
        {
          event.setResult(Result.DENY);
        }
        if(CFG_OreSpawn.disableGoldGen && event.type ==...
7,099
324
1,510
Зарегать свой генератор, заменяющий руды на камень. Либо хуками отредактировать ванильный генератор
 
5,018
47
783
О, ну это очень легко.
Смотри, для начала регаешь свой генератор, после чего последовательно пробегаешься несколькими циклами(для каждой руды) по каждому генерирующимуся чанку и проверяешь на свою руду - если наткнулся, заменяешь этот блок на воздух, а воздух - на камень. После того как сгенерировалось, нужно еще раз пройтись циклом и проверить каждый блок камня в чанке на соответсвие что он - камень. Ну и все. Делов-то)
 
Java:
    @SubscribeEvent
    public void onGenerateMinable(GenerateMinable event) {
        if(CFG_OreSpawn.disableDirtGen && event.type == GenerateMinable.EventType.DIRT)
        {
          event.setResult(Result.DENY);
        }
        
        if(CFG_OreSpawn.disableGravelGen && event.type == GenerateMinable.EventType.GRAVEL)
        {
          event.setResult(Result.DENY);
        }
        if(CFG_OreSpawn.disableCoalGen && event.type == GenerateMinable.EventType.COAL)
        {
          event.setResult(Result.DENY);
        }
        if(CFG_OreSpawn.disableIronGen && event.type == GenerateMinable.EventType.IRON)
        {
          event.setResult(Result.DENY);
        }
        if(CFG_OreSpawn.disableGoldGen && event.type == GenerateMinable.EventType.GOLD)
        {
          event.setResult(Result.DENY);
        }
        if(CFG_OreSpawn.disableLapisGen && event.type == GenerateMinable.EventType.LAPIS)
        {
          event.setResult(Result.DENY);
        }
        if(CFG_OreSpawn.disableRedstoneGen && event.type == GenerateMinable.EventType.REDSTONE)
        {
          event.setResult(Result.DENY);
        }
        if(CFG_OreSpawn.disableQuartzGen && event.type == GenerateMinable.EventType.QUARTZ)
        {
          event.setResult(Result.DENY);
        }
        if(CFG_OreSpawn.disableDiamondGen && event.type == GenerateMinable.EventType.DIAMOND)
        {
          event.setResult(Result.DENY);
        }

регаешь

MinecraftForge.ORE_GEN_BUS.register(Твой класс события);

Может я и ошибаюсь, заходил пробовал руды нету
 
14
0
регаешь

MinecraftForge.ORE_GEN_BUS.register(Твой класс события);

Может я и ошибаюсь, заходил пробовал руды нету
Не понимаю.
Я создал новый класс и вставил в него твой код, как этот класс подключить к главному? И какие именно импорты подключать в файле отключения?
 
14
0
Криво написал ну
Дошло, исправил, но ошибка всё равно осталась, прав.
Ошибка в "CFG_OreSpawn", он просит создать класс с таким именем. Но когда я его создаю он выдаёт ошибку на следующем "disableCoalGen".
1)
CFG_OreSpawn cannot be resolved to a variable
Просит создать класс с названием CFG_OreSpawn
2) Я создал этот класс или написал название уже существующего.
disableCoalGen невозможно разрешить, или это не поле
Просит создать поле или константу.
Созданное поле выглядит так: "private static boolean disableCoalGen;"
 
CFG_OreSpawn это класс конфига в котором есть переменная disableCoalGen
мне просто с кофигом надо было удобнее
если тебе с ним то смотри темы по созданию него
а так
убираешь CFG_OreSpawn.disableCoalGen && и останется event.type == GenerateMinable.EventType.COAL


Java:
        if(CFG_OreSpawn.disableCoalGen && event.type == GenerateMinable.EventType.COAL)
        {
          event.setResult(Result.DENY);
        }
 
14
0
Всё работает без ошибок, но запустив игру, создав новый мир и полетав по миру я нашёл таки уголь. Что то пошло не так...

Java:
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.eventhandler.Event.Result;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable;

public class RemovalVanillaOre {
   
    @SubscribeEvent
    public void onGenerateMinable(GenerateMinable event) {
        if(event.type == GenerateMinable.EventType.COAL)
        {
          event.setResult(Result.DENY);
        }
        if(event.type == GenerateMinable.EventType.IRON)
        {
          event.setResult(Result.DENY);
        }
        if(event.type == GenerateMinable.EventType.GOLD)
        {
          event.setResult(Result.DENY);
        }
        if(event.type == GenerateMinable.EventType.LAPIS)
        {
          event.setResult(Result.DENY);
        }
        if(event.type == GenerateMinable.EventType.REDSTONE)
        {
          event.setResult(Result.DENY);
        }
        if(event.type == GenerateMinable.EventType.QUARTZ)
        {
          event.setResult(Result.DENY);
        }
        if(event.type == GenerateMinable.EventType.DIAMOND)
        {
          event.setResult(Result.DENY);
        }
    }
   
   @EventHandler
    public void init(FMLInitializationEvent event)
    {
        MinecraftForge.ORE_GEN_BUS.register(new RemovalVanillaOre());
    }
}
 
Ну хз я после таких изменений заного карту создаю на старой карте это можно долго веселиться )))))
15 минут бесился на карте с динамитом выкапывая котлованы в разных биомах ванили не нашел
 
Последнее редактирование:
3,005
192
592
@EventHandler
public void init(FMLInitializationEvent event)
{
MinecraftForge.ORE_GEN_BUS.register(new RemovalVanillaOre());
}
Конкретно вот эта часть кода даже не была обработана. Следовательно эвент даже не работает.
Если нужно отключить все генерации, то зачем на каждый тип проверка, когда можно сразу сетать результ?
 
Сверху