use of net.minecraft.world.gen.settings.StructureSeparationSettings in project bioplethora by AquexTheSeal.
the class BPStructureGeneration method addDimensionalSpacing.
@SubscribeEvent
public static void addDimensionalSpacing(final WorldEvent.Load event) {
if (event.getWorld() instanceof ServerWorld) {
ServerWorld serverWorld = (ServerWorld) event.getWorld();
try {
Method GETCODEC_METHOD = ObfuscationReflectionHelper.findMethod(ChunkGenerator.class, "func_230347_a_");
ResourceLocation cgRL = Registry.CHUNK_GENERATOR.getKey((Codec<? extends ChunkGenerator>) GETCODEC_METHOD.invoke(serverWorld.getChunkSource().generator));
if (cgRL != null && cgRL.getNamespace().equals("terraforged")) {
return;
}
} catch (Exception e) {
LogManager.getLogger().error("Was unable to check if " + serverWorld.dimension().location() + " is using Terraforged's ChunkGenerator.");
}
// Prevent spawning our structure in Vanilla's superflat world
if (serverWorld.getChunkSource().generator instanceof FlatChunkGenerator && serverWorld.dimension().equals(World.OVERWORLD)) {
return;
}
// Adding our Structure to the Map
Map<Structure<?>, StructureSeparationSettings> tempMap = new HashMap<Structure<?>, StructureSeparationSettings>(serverWorld.getChunkSource().generator.getSettings().structureConfig());
tempMap.putIfAbsent(BioplethoraStructures.ALPHANUM_MAUSOLEUM.get(), DimensionStructuresSettings.DEFAULTS.get(BioplethoraStructures.ALPHANUM_MAUSOLEUM.get()));
serverWorld.getChunkSource().generator.getSettings().structureConfig = tempMap;
}
}
use of net.minecraft.world.gen.settings.StructureSeparationSettings in project ChaosAwakens by ChaosAwakens.
the class CommonSetupEvent method addDimensionalSpacing.
// public static void registerReachModifiers(final PlayerEvent event) {
// double reachDistance = 0.0D;
// ImmutableMultimap.Builder<Attribute, AttributeModifier> builder = ImmutableMultimap.builder();
// builder.put(ForgeMod.REACH_DISTANCE.get(), new AttributeModifier(ExtendedHitWeaponItem.REACH_MODIFIER, "Weapon modifier", reachDistance, AttributeModifier.Operation.ADDITION));
// ItemStack bigBertha = new ItemStack(CAItems.BIG_BERTHA.get());
// ItemStack attitudeAdjuster = new ItemStack(CAItems.ATTITUDE_ADJUSTER.get());
// ItemStack prismaticReaper = new ItemStack(CAItems.PRISMATIC_REAPER.get());
// PlayerEntity player = event.getPlayer();
//
// if(player.getItemInHand(Hand.MAIN_HAND).equals(bigBertha)) {
// reachDistance = 25.0D;
// }
//
// if(player.getItemInHand(Hand.MAIN_HAND).equals(attitudeAdjuster)) {
// reachDistance = 15.0D;
// }
//
// if(player.getItemInHand(Hand.MAIN_HAND).equals(prismaticReaper)) {
// reachDistance = 13.0D;
// }
// }
public static void addDimensionalSpacing(final WorldEvent.Load event) {
if (!(event.getWorld() instanceof ServerWorld))
return;
ServerWorld serverWorld = (ServerWorld) event.getWorld();
ServerChunkProvider chunkProvider = serverWorld.getChunkSource();
try {
if (codecMethod == null)
codecMethod = ObfuscationReflectionHelper.findMethod(ChunkGenerator.class, "codec");
// TODO Fix this
ResourceLocation chunkGeneratorKey = Registry.CHUNK_GENERATOR.getKey((Codec<? extends ChunkGenerator>) codecMethod.invoke(chunkProvider.generator));
if (chunkGeneratorKey != null && chunkGeneratorKey.getNamespace().equals("terraforged"))
return;
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
ChaosAwakens.warn("WORLDGEN", e);
e.printStackTrace();
} catch (UnableToFindMethodException e) {
if (CAConfig.COMMON.terraforgedCheckMsg.get())
ChaosAwakens.info("WORLDGEN", "Unable to check if " + serverWorld.dimension().location() + " is using Terraforged's ChunkGenerator due to Terraforged not being present or not accessible," + " if you aren't using Terraforged please ignore this message");
}
if (serverWorld.getChunkSource().getGenerator() instanceof FlatChunkGenerator && serverWorld.dimension().equals(World.OVERWORLD))
return;
Map<Structure<?>, StructureSeparationSettings> tempMap = new HashMap<>(chunkProvider.generator.getSettings().structureConfig());
tempMap.putIfAbsent(CAStructures.ACACIA_ENT_TREE.get(), DimensionStructuresSettings.DEFAULTS.get(CAStructures.ACACIA_ENT_TREE.get()));
tempMap.putIfAbsent(CAStructures.BIRCH_ENT_TREE.get(), DimensionStructuresSettings.DEFAULTS.get(CAStructures.BIRCH_ENT_TREE.get()));
tempMap.putIfAbsent(CAStructures.CRIMSON_ENT_TREE.get(), DimensionStructuresSettings.DEFAULTS.get(CAStructures.CRIMSON_ENT_TREE.get()));
tempMap.putIfAbsent(CAStructures.DARK_OAK_ENT_TREE.get(), DimensionStructuresSettings.DEFAULTS.get(CAStructures.DARK_OAK_ENT_TREE.get()));
tempMap.putIfAbsent(CAStructures.JUNGLE_ENT_TREE.get(), DimensionStructuresSettings.DEFAULTS.get(CAStructures.JUNGLE_ENT_TREE.get()));
tempMap.putIfAbsent(CAStructures.OAK_ENT_TREE.get(), DimensionStructuresSettings.DEFAULTS.get(CAStructures.OAK_ENT_TREE.get()));
tempMap.putIfAbsent(CAStructures.SPRUCE_ENT_TREE.get(), DimensionStructuresSettings.DEFAULTS.get(CAStructures.SPRUCE_ENT_TREE.get()));
tempMap.putIfAbsent(CAStructures.WARPED_ENT_TREE.get(), DimensionStructuresSettings.DEFAULTS.get(CAStructures.WARPED_ENT_TREE.get()));
tempMap.putIfAbsent(CAStructures.WASP_DUNGEON.get(), DimensionStructuresSettings.DEFAULTS.get(CAStructures.WASP_DUNGEON.get()));
chunkProvider.generator.getSettings().structureConfig = tempMap;
}
use of net.minecraft.world.gen.settings.StructureSeparationSettings in project ChaosAwakens by ChaosAwakens.
the class CAStructures method setupStructures.
public static void setupStructures() {
setupMapSpacingAndLand(ACACIA_ENT_TREE.get(), new StructureSeparationSettings(27, 25, 32034987), true);
setupMapSpacingAndLand(BIRCH_ENT_TREE.get(), new StructureSeparationSettings(27, 25, 32034987), true);
setupMapSpacingAndLand(CRIMSON_ENT_TREE.get(), new StructureSeparationSettings(27, 25, 32034987), true);
setupMapSpacingAndLand(DARK_OAK_ENT_TREE.get(), new StructureSeparationSettings(27, 25, 32034987), true);
setupMapSpacingAndLand(JUNGLE_ENT_TREE.get(), new StructureSeparationSettings(27, 25, 32034987), true);
setupMapSpacingAndLand(OAK_ENT_TREE.get(), new StructureSeparationSettings(27, 25, 32034987), true);
setupMapSpacingAndLand(SPRUCE_ENT_TREE.get(), new StructureSeparationSettings(27, 25, 32034987), true);
setupMapSpacingAndLand(WARPED_ENT_TREE.get(), new StructureSeparationSettings(27, 25, 32034987), true);
setupMapSpacingAndLand(WASP_DUNGEON.get(), new StructureSeparationSettings(21, 19, 159332311), false);
}
Aggregations