- 252
- 0
Всем привет, еще раз. перед тем как задать этот вопрос я полазил в учебниках, и в исходном коде minecraft!
В учебнике для создания генерации руды. создается новый класс в него пишут коды для генерации
В исходном коде minecraft генерация производится в самом блоке, я смотрел у редстоуна.
Но что мне делать не могу понять, вот краш, из краша понимаю что ему что то не хватает или он что то не может найти, в данном случае это ----> Caused by: java.lang.NoSuchMethodError: net.minecraft.client.Minecraft.func_71410_x()Lnet/minecraft/client/Minecraft;
Вот код для генерации, одного блока всего у меня 2 блока.
P.s
С уважением, IvanTur.
В учебнике для создания генерации руды. создается новый класс в него пишут коды для генерации
В исходном коде minecraft генерация производится в самом блоке, я смотрел у редстоуна.
Но что мне делать не могу понять, вот краш, из краша понимаю что ему что то не хватает или он что то не может найти, в данном случае это ----> Caused by: java.lang.NoSuchMethodError: net.minecraft.client.Minecraft.func_71410_x()Lnet/minecraft/client/Minecraft;
Код:
---- Minecraft Crash Report ----
// Sorry :(
Time: 15.04.16 22:32
Description: There was a severe problem during mod loading that has caused the game to fail
cpw.mods.fml.common.LoaderException: java.lang.NoSuchMethodError: net.minecraft.client.Minecraft.func_71410_x()Lnet/minecraft/client/Minecraft;
at cpw.mods.fml.common.LoadController.transition(LoadController.java:163)
at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:559)
at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:243)
at net.minecraft.client.Minecraft.startGame(Minecraft.java:522)
at net.minecraft.client.Minecraft.run(Minecraft.java:942)
at net.minecraft.client.main.Main.main(Main.java:164)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
at GradleStart.main(Unknown Source)
Caused by: java.lang.NoSuchMethodError: net.minecraft.client.Minecraft.func_71410_x()Lnet/minecraft/client/Minecraft;
at uristqwerty.gui_craftguide.theme.ThemeManager.reload(ThemeManager.java:83)
at uristqwerty.CraftGuide.client.CraftGuideClient.preInit(CraftGuideClient.java:47)
at uristqwerty.CraftGuide.CraftGuide.preInit(CraftGuide.java:63)
at uristqwerty.CraftGuide.CraftGuide_FML.preInit(CraftGuide_FML.java:47)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
at com.google.common.eventbus.EventBus.post(EventBus.java:275)
at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
at com.google.common.eventbus.EventBus.post(EventBus.java:275)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:556)
... 12 more
Вот код для генерации, одного блока всего у меня 2 блока.
Код:
package ru.ewokmod;
import java.util.Random;
import cpw.mods.fml.common.IWorldGenerator;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.feature.WorldGenMinable;
public class BlockMalachiteGenerator implements IWorldGenerator {
@Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator,
IChunkProvider chunkProvider)
{
switch(world.provider.dimensionId)
{
case -1: generateNether(world, random, chunkX * 16, chunkZ * 16); break;
case 0: generateOverworld(world, random, chunkX * 16, chunkZ * 16); break;
case 1: generateEnd(world, random, chunkX * 16, chunkZ * 16); break;
}
}
private void generateEnd(World world, Random random, int x, int z)
{
int Xcoord = x + random.nextInt(16);
int Ycoord = 10 + random.nextInt(128);
int Zcoord = z + random.nextInt(16);
(new WorldGenMinable(Main.BlockMalachite, 1, 15, Blocks.end_stone)).generate(world, random, Xcoord, Ycoord, Zcoord);
}
private void generateOverworld(World world, Random random, int x, int z)
{
this.addOreSpawn(Main.BlockMalachite, world, random, x, z, 16, 16, 4 + random.nextInt(3), 10, 15, 50);
}
private void generateNether(World world, Random random, int x, int z)
{
int Xcoord = x + random.nextInt(16);
int Ycoord = 10 + random.nextInt(128);
int Zcoord = z + random.nextInt(16);
(new WorldGenMinable(Main.BlockMalachite, 1, 15, Blocks.netherrack)).generate(world, random, Xcoord, Ycoord, Zcoord);
}
/**
* Добавляет генерацию руды в Minecraft. Просто воспользуйтесь этим методом для регистрации генерируемых руд.
* @param block Блок, который хотите генерировать
* @param world Мир (не измерение), в котором этот блок должен генерироваться
* @param random Случайное число для получения координат генерации блока
* @param blockXPos Число для того, чтобы было пустое место по координатам X для метода генерации (использует кварцевая руда)
* @param blockZPos Число для того, чтобы было пустое место по координатам Z для метода генерации (использует кварцевая руда)
* @param maxX Число, которое настроит максимальную X координату для генерации руды на оси X на чанк
* @param maxZ Число, которое настроит максимальную Z координату для генерации руды на оси Z на чанк
* @param maxVeinSize Максимальное число блоков руды в одной жиле
* @param chancesToSpawn Шанс генерации блоков на чанк
* @param minY Минимальная координата Y на которой руда может сгенерироваться
* @param maxY Максимальная координата Y на которой руда может сгенерироваться
*/
public void addOreSpawn(Block block, World world, Random random, int blockXPos, int blockZPos, int maxX, int maxZ,
int maxVeinSize, int chancesToSpawn, int minY, int maxY)
{
int maxPossY = minY + (maxY - 1);
assert maxY > minY : "Максимальная Y должна быть больше минимальной";
assert maxX > 0 && maxX <= 16 : "addOreSpawn: Максимальная X должна быть больше 0 и меньше 16";
assert minY > 0 : "addOreSpawn: Минимальная Y должна быть больше 0";
assert maxY < 256 && maxY > 0 : "addOreSpawn: Максимальная Y должна быть меньше 256 и больше 0";
assert maxZ > 0 && maxZ <= 16 : "addOreSpawn: Максимальная Z должна быть больше 0 и меньше 16";
int diffBtwnMinMaxY = maxY - minY;
for (int x = 20; x < chancesToSpawn; x++)
{
int posX = blockXPos + random.nextInt(maxX);
int posY = minY + random.nextInt(diffBtwnMinMaxY);
int posZ = blockZPos + random.nextInt(maxZ);
(new WorldGenMinable(block, maxVeinSize)).generate(world, random, posX, posY, posZ);
}
}
}
С уважением, IvanTur.