Удалить генерацию блока

Версия Minecraft
1.7.10
608
5
15
Как можно удалить генерацию блока?
 
Решение
Agravaine написал(а):
Вот, тут отлично все рассказано - http://www.minecraftforge.net/forum/index.php?topic=21625.0.

Код:
	public void event1(OreGenEvent.GenerateMinable event)
	{
		System.out.println("+");
	}
	
	public void event2(PopulateChunkEvent.Pre event)
	{
		System.out.println("+");
	}


Ни один из ивентов не срабатывает, а вариант с генератором очень медленный.

Попробую код из ивента врезать в код генератора, может выйдет...

А в геймрегистри список генераторов пуст, видимо он работает только для модов, а ванильные отдельно.


Отлично, всё работает без потерь производительности.

Код:
	@Override
	public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider...
608
5
15
GenerateMinable (pre и post гены в том-же клссе), ReplaceBiomeBlocks, GetVillageBlockID не работают.
Так-же пытался в ReplaceBiomeBlocks итератить список блоков (это должен быть массив блоков в чанке), но при замене камня, заменялись все блоки, а при замене всех блоков кроме воздуха, заменялся воздух и ещё какие-то блоки странным образом. В общем тоже не получилось.

Попробую по совету Agravaine изменить список генераторов.

Так-же пришла в голову мысль заменять текстуру руд, подменять дроп и удалять крафты. Только вот с редстоуном может быть проблема, ведь он начинает светиться, когда его затронешь...
 
608
5
15
Agravaine написал(а):
Вот, тут отлично все рассказано - http://www.minecraftforge.net/forum/index.php?topic=21625.0.

Код:
	public void event1(OreGenEvent.GenerateMinable event)
	{
		System.out.println("+");
	}
	
	public void event2(PopulateChunkEvent.Pre event)
	{
		System.out.println("+");
	}


Ни один из ивентов не срабатывает, а вариант с генератором очень медленный.

Попробую код из ивента врезать в код генератора, может выйдет...

А в геймрегистри список генераторов пуст, видимо он работает только для модов, а ванильные отдельно.


Отлично, всё работает без потерь производительности.

Код:
	@Override
	public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider)
	{		
		if(world.provider.dimensionId == 0)
		{
			Chunk chunk = world.getChunkFromChunkCoords(chunkX, chunkZ);

			for(ExtendedBlockStorage storage : chunk.getBlockStorageArray())
			{
				if(storage != null)
				{
					for(int x = 0; x < 16; x++)
					{
						for(int z = 0; z < 16; z++)
						{
							for(int y = 0; y < 16; y++)
							{
	                            if(storage.getBlockByExtId(x, y, z) == Blocks.stone)
	                            {
	                            	storage.func_150818_a(x, y, z, Blocks.brick_block);
	                            }
							}
						}
					}
				}
			}
		}
	}

Видимо проблема world.getBlock и последующем world.setBlock в том, что приходится каждый раз доставать чанк и ящик с блоками.

Тут так-же отличный пример оптимизации для карьеров и подобных вещей.
 
608
5
15
Agravaine написал(а):
Хей, так эти ивенты надо регать в MinecraftForge.ORE_GEN_BUS, а не в обычный.
Ааааа, позже проверю :D


Кстати, мне кажется или нельзя убрать пометку "решено"?


GetVillageBlockID так и не заработал, так-что я решил остановится на своём варианте, так-как не вижу разницы делая это в ивенте популяции.
 
Сверху