Вы используете устаревший браузер
Ваш браузер устарел, и поэтому некоторые важные функции этого сайта могут не работать. Пожалуйста, обновитесь то более современного браузера. :(
Как сделать генерацию структур
НЕ могли бы вы мне по подробней рассказать.
#3 | 6 марта 2014 - 21:39
Создаешь класс, extends WorldGenerator. Я не помню правда, но он вроде абстрактный, по-этому заставит тебя создать булев метод generate. В нем уже и пишешь структуру.
Затем в своем генераторе пишешь new Class_Strukturi().generate(..args..);
Вот и все.
P.S В гугле куча туториалов.
Делаю моды на заказ. Очень качественно и недорого! Писать в Вконтакт c пометкой 'Заказ мода'.
#4 | 6 марта 2014 - 23:41
#5 | 7 марта 2014 - 03:29
Я имел ввиду мой первый вопрос. Про генерацию структур и блоков только в определенном биоме.
#6 | 7 марта 2014 - 15:58
Я так понимаю вот это генератор?
Или нужно то, что саму структуру генерирует?
import java.util.Random;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.chunk.IChunkProvider;
import cpw.mods.fml.common.IWorldGenerator;
public class CHAESgen implements IWorldGenerator
{
@Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider)
{
switch(world.provider.dimensionId)
{
case 0: generateSurface(random, chunkX*16, chunkZ*16, world);
break;
}
}
private void generateSurface(Random random, int chunkX, int chunkZ, World world)
{
for(int k = 0; k < 80; k++)
{
int xCoord = chunkX + random.nextInt(16);
int yCoord = random.nextInt(64);
int zCoord = chunkZ + random.nextInt(16);
new StructurGen().generate(world, random, zCoord, zCoord, zCoord);
}
}
}
if(worldObj.getBiomeGenForCoords(x, y) == BiomeGenBase.desert){}
И что такое worldObj?
#8 | 9 марта 2014 - 22:18
Блин, ну мир же это, мир! Тяжело понять что-ли?
Сделай так и все:
private void generateSurface(Random random, int chunkX, int chunkZ, World world){
if(world.getBiomeGenForCoords(chunkX, chunkZ) == BiomeGenBase.desert){
for(int k = 0; k < 80; k++){
int xCoord = chunkX + random.nextInt(16);
int yCoord = random.nextInt(64);
int zCoord = chunkZ + random.nextInt(16);
new StructurGen().generate(world, random, zCoord, zCoord, zCoord);
}
}
}
Делаю моды на заказ. Очень качественно и недорого! Писать в Вконтакт c пометкой 'Заказ мода'.
#9 | 9 марта 2014 - 23:27
А если я хочу свой биом то надо будет изменить так
if(world.getBiomeGenForCoords(chunkX, chunkZ) == aBase.ronland)
#10 | 10 марта 2014 - 14:35
package AsdIC2mod.Biomes;
import java.util.Random;
import AsdIC2mod.Base;
import AsdIC2mod.Biomes.worldobj.Kusti;
import AsdIC2mod.Biomes.worldobj.StructurGen;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.chunk.IChunkProvider;
import cpw.mods.fml.common.IWorldGenerator;
public class CHAESgen implements IWorldGenerator{
@Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
switch(world.provider.dimensionId)
{
case 0: generate(random, chunkX*16, chunkZ*16, world);
break;
}
}
private void generate (Random random, int chunkX, int chunkZ, World world){
{
for(int k = 0; k < 110; k++)
{
int xCoord = chunkX + random.nextInt(16);
int yCoord = random.nextInt(150);
int zCoord = chunkZ + random.nextInt(16);
new StructurGen().generate(world, random, xCoord, yCoord, zCoord);
}
for(int k = 0; k < 110; k++)
{
int xCoord = chunkX + random.nextInt(16);
int yCoord = random.nextInt(150);
int zCoord = chunkZ + random.nextInt(16);
new Kusti().generate(world, random, xCoord, yCoord, zCoord);
}
}
}
}
Вот лог http://rghost.ru/52977465
вот класс
package AsdIC2mod.Biomes.worldobj;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.world.World;
import net.minecraft.world.gen.feature.WorldGenerator;
public class Kusti extends WorldGenerator
{
@Override
public boolean generate(World world, Random random, int x, int y, int z)
{
{
if(world.getBlockId(x, y, z) == 0 || world.getBlockMaterial(x, y, z) == Material.water || world.getBlockMaterial(x, y, z) == Material.lava)
{
return false;
}
int bl1 = Block.sand.blockID;
//Base0
world.setBlock(x, y, z, 32);
world.setBlock(x, y-1, z, bl1);
return true;
}
}
}
Причем если генерировать структуры по отдельности, то все работает.
package AsdIC2mod.Biomes;
import java.util.Random;
import AsdIC2mod.Base;
import AsdIC2mod.Biomes.worldobj.Kusti;
import AsdIC2mod.Biomes.worldobj.StructurGen;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.chunk.IChunkProvider;
import cpw.mods.fml.common.IWorldGenerator;
public class CHAESgen implements IWorldGenerator{
@Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
switch(world.provider.dimensionId)
{
case 0: generate(random, chunkX*16, chunkZ*16, world);
break;
}
}
private void generate (Random random, int chunkX, int chunkZ, World world){
{
for(int k = 0; k < 110; k++)
{
int xCoord = chunkX + random.nextInt(16);
int yCoord = random.nextInt(150);
int zCoord = chunkZ + random.nextInt(16);
new StructurGen().generate(world, random, xCoord, yCoord, zCoord);
}
}
}
}
Ругается на строки:
CHAESgen(это и есть генератор)
22 new StructurGen().generate(world, random, xCoord, yCoord, zCoord);
18 case 0: generate(random, chunkX*16, chunkZ*16, world);
StrukturGen(структура)
32 world.setBlock(x, y, z, bl2);
Ругается только на первую в списке прописанную структуру, но если генерировать только одну, то все прекрасно работает.
По поводу биома. Я создал тестовый биом, с минимумом настроек:
package AsdIC2mod.Biomes;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.biome.BiomeGenOcean;
import net.minecraft.world.gen.feature.WorldGenDesertWells;
import net.minecraft.world.gen.feature.WorldGenVines;
public class Apobio extends BiomeGenBase {
public Apobio (int par1) {
super(par1);
this.biomeName = "PostApoc";
this.topBlock = (byte)Block.stone.blockID;
this.setColor(1456435);
}
}
Зарегистрировал его:
GameRegistry.addBiome(new Apobio(30));
Но как бы я не старался, я не могу его добавить в
if(world.getBiomeGenForCoords(chunkX, chunkZ) == Apobio.Apobio)
#12 | 11 марта 2014 - 12:06
#13 | 11 марта 2014 - 15:40
А смысл писать, если лень ?
#14 | 11 марта 2014 - 15:53
Я начал писать, но устал.
#15 | 11 марта 2014 - 16:17
#16 | 11 марта 2014 - 16:25
#17 | 11 марта 2014 - 17:09
#18 | 11 марта 2014 - 17:24
если честно, не люблю транслит.
#19 | 11 марта 2014 - 18:04
Тогда почему по отдельности он генерирует?
#20 | 11 марта 2014 - 18:06
Статистика форума
Сейчас онлайн: 22
- Создано тем
- 13921
- Написано сообщений
- 844725
- Пользователей
- 373810
- Новый участник
- proilaman
Администраторы | Главные редакторы | Модератор | Дедушки | Журналисты | HENTAI BOY | Goldфаги | Журналисты-олдфаги | ТруЪ Олдфаги-с | ТруЪ Плагинщик | Олдфаги | true Художник | Модератор бездны | Картоделы | XXXL ПХЛ | Просто хорошие люди | Посетители | Новички
Последние сообщения с форума
Название темы | Автор | Статистика | Последнее сообщение |
---|---|---|---|
Крутой сервер 1.20.4 Тема в разделе: Игры |
Ytenok | Просмотров: 24 Ответов: 0 |
Автор: Ytenok |
Помогите со сборкой на версии 1.7.10 Тема в разделе: Ваши вопросы по Minecraft |
Zelsovich8321 | Просмотров: 125 Ответов: 3 |
Автор: egg2003 |
Майнкрафт сериал про средневековье Тема в разделе: Проекты |
LourKeK_YT | Просмотров: 139 Ответов: 0 |
Автор: LourKeK_YT |
Видео/Стримы канал Ritterydam Тема в разделе: Флудильня |
ritterydam | Просмотров: 110773 Ответов: 530 |
Автор: ritterydam |
Моды на терминатора для forge Тема в разделе: Ваши вопросы по Minecraft |
Prikalel | Просмотров: 178 Ответов: 0 |
Автор: Prikalel |