GoogleTan
Картошка :3
- 1,354
- 43
- 310
На версии 1.12.2 мне удалось научить край генерировать биомы, но у меня поднакопилось причин и я решила перелезть на 1.15.2. И тут даже есть биомы(THE_END, END_HIGHLANDS, END_MIDLANDS, SMALL_END_ISLANDS, END_BARRENS)! Я воодушевилась и решила попробовать проcто зарегать биом для края, но так не прокатило - его нету. Ну лады. Я просто земенила Край(да я поорудовала трансормерами чтоб это провернуть):
Это работает. Если я поменяю базовый блок в краю на тортик то так и будет:
Но заставить его давать нужнее мне биомы не смогла. Даже урезала списов до только моего. Так как то появляются ванильные биомы... Вообщем помощи вашей прошу
Java:
DimensionType.THE_END = DimensionType.register("the_end",
new DimensionType(2, "_end", "DIM1", EndBiomedDimension::new, false, FuzzedBiomeMagnifier.INSTANCE));
Но заставить его давать нужнее мне биомы не смогла. Даже урезала списов до только моего. Так как то появляются ванильные биомы... Вообщем помощи вашей прошу
Java:
public class EndBiomedDimension extends EndDimension
{
public EndBiomedDimension(World world, DimensionType type)
{
super(world, type);
}
@Override
public ChunkGenerator<?> createChunkGenerator()
{
EndGenerationSettings settings = new EndGenerationSettings();
settings.setDefaultBlock(Blocks.END_STONE.getDefaultState());
settings.setDefaultFluid(Blocks.AIR.getDefaultState());
settings.setSpawnPos(this.getSpawnCoordinate());
return new EndChunkGenerator(this.world, new EndBiomeProvider(new EndBiomeProviderSettings(world.getWorldInfo())), settings);
}
}
Java:
public class NewEndBiomeProvider extends BiomeProvider
{
private final SimplexNoiseGenerator generator;
private final SharedSeedRandom random;
private static final Set<Biome> biomes;
static
{
biomes = ImmutableSet.of(Biomes.THE_END, Biomes.END_HIGHLANDS, Biomes.END_MIDLANDS, Biomes.SMALL_END_ISLANDS, Biomes.END_BARRENS, PhoenixBiomes.UNDER.get());
}
public NewEndBiomeProvider(long seed)
{
super(ImmutableSet.of(PhoenixBiomes.UNDER.get()));
this.random = new SharedSeedRandom(seed);
this.random.skip(17292);
this.generator = new SimplexNoiseGenerator(this.random);
}
@Override
public Biome func_225526_b_(int x, int y, int z)
{
return PhoenixBiomes.UNDER.get();
/*
int real_x = x >> 2;
int real_z = z >> 2;
if ((long)real_x * (long)real_x + (long)real_z * (long)real_z <= 4096L)//если маин острав
{
return Biomes.THE_END;
}
else
{
float height = this.func_222365_c(real_x * 2 + 1, real_z * 2 + 1);
if (height > 40.0F)
{
return Biomes.END_HIGHLANDS;
}
else if(height >= 20)
{
return PhoenixBiomes.UNDER.get();
}
else if (height >= 0.0F)
{
return Biomes.END_MIDLANDS;
}
else
{
return height < -20.0F ? Biomes.SMALL_END_ISLANDS : Biomes.END_BARRENS;
}
}*/
}
@Override
public float func_222365_c(int x, int z) {
int real_x = x / 2;
int real_Z = z / 2;
int dop_x = x % 2;
int dop_z = z % 2;
float result = 100.0F - MathHelper.sqrt((float)(x * x + z * z)) * 8.0F;
result = MathHelper.clamp(result, -100.0F, 80.0F);
for(int i = -12; i <= 12; ++i)
{
for(int j = -12; j <= 12; ++j)
{
long currect_x = real_x + i;
long currect_z = real_Z + j;
if (currect_x * currect_x + currect_z * currect_z > 4096L && this.generator.getValue((double)currect_x, (double)currect_z) < -0.8999999761581421D)
{
float lvt_14_1_ = (MathHelper.abs((float)currect_z) * 3439.0F + MathHelper.abs((float)currect_z) * 147.0F) % 13.0F + 9.0F;
float lvt_15_1_ = (float)(dop_x - i * 2);
float lvt_16_1_ = (float)(dop_z - j * 2);
float lvt_17_1_ = 100.0F - MathHelper.sqrt(lvt_15_1_ * lvt_15_1_ + lvt_16_1_ * lvt_16_1_) * lvt_14_1_;
lvt_17_1_ = MathHelper.clamp(lvt_17_1_, -100.0F, 80.0F);
result = Math.max(result, lvt_17_1_);
}
}
}
return result;
}
}
Java:
public class UnderBiome extends Biome
{
public UnderBiome()
{
super((new Builder()).surfaceBuilder(SurfaceBuilder.DEFAULT, new SurfaceBuilderConfig(Blocks.OBSIDIAN.getDefaultState(), Blocks.CAKE.getDefaultState(), Blocks.GLASS_PANE.getDefaultState()))
.precipitation(RainType.NONE)
.category(Category.THEEND)
.depth(0.1F)
.scale(0.2F)
.temperature(0.5F)
.downfall(0.5F)
.waterColor(4159204)
.waterFogColor(329011)
.parent(null));
this.func_226711_a_(Feature.END_CITY.func_225566_b_(IFeatureConfig.NO_FEATURE_CONFIG));
DefaultBiomeFeatures.func_225489_aq(this);
this.addSpawn(EntityClassification.MONSTER, new SpawnListEntry(EntityType.ENDERMAN, 10, 4, 4));
}
@Override
public void decorate(GenerationStage.Decoration stage, ChunkGenerator<? extends GenerationSettings> generator, IWorld world, long p_203608_4_, SharedSeedRandom rand, BlockPos pos)
{
super.decorate(stage, generator, world, p_203608_4_, rand, pos);
for (int x = 0; x < 16; x++)
{
for (int z = 0; z < 16; z++)
{
int height = getEndDownSurfaceHeight(world, x, z);
if (height != -1)
{
for (int i = height; i < height + 8; i++)
{
if (world.getBlockState(new BlockPos(pos.add(x, i, z))).getBlock().equals(Blocks.END_STONE))
{
world.setBlockState(new BlockPos(pos.add(x, i, z)), Blocks.OBSIDIAN.getDefaultState(), 0);
}
}
}
}
}
System.out.println(pos.getX() + " " + pos.getZ());
}
public static int getEndDownSurfaceHeight(IWorld world, int x, int z)
{
for (int i = 5; i < 40; i++) {
if(!world.isAirBlock(new BlockPos(x, i, z))) {
return i;
}
}
return -1;
}
}
Java:
public class PhoenixBiomes
{
private static final DeferredRegister<Biome> BIOMRS = new DeferredRegister<>(ForgeRegistries.BIOMES, Phoenix.MOD_ID);
public static final RegistryObject<Biome> UNDER = BIOMRS.register("under", UnderBiome::new);
public static void register()
{
BIOMRS.register(FMLJavaModLoadingContext.get().getModEventBus());
}
}