Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

GiantNuker

Members
  • Joined

Everything posted by GiantNuker

  1. I tried to use asm transformers but, not exactly an expert in that field. Here's basaicly the idea: Two new classes: MapProvider: package mods.giantnuker.backslash.world; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Random; import mods.giantnuker.backslash.ListMap; import mods.giantnuker.backslash.world.structure.village.MapGenModVillage; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraft.world.biome.Biome; import net.minecraft.world.gen.MapGenBase; import net.minecraft.world.gen.feature.WorldGenerator; import net.minecraft.world.gen.structure.MapGenStructure; import net.minecraft.world.gen.structure.MapGenVillage; import net.minecraft.world.gen.structure.StructureComponent; import net.minecraft.world.gen.structure.StructureStart; import net.minecraft.world.gen.structure.StructureVillagePieces; public class MapProvider { private static final ListMap<Integer, MapGenStructure> structures = new ListMap(); private static final HashMap<MapGenStructure, Boolean> doWorldStructures = new HashMap(); public static void registerStructure(MapGenStructure structure, int... dimensions) { if (dimensions.length > 0) for (int d : dimensions) structures.add(d, structure); else structures.add(0, structure); doWorldStructures.put(structure, true); } public static boolean shouldGenerateStructure(MapGenStructure structure, int dim) { if (!structures.get(dim).contains(structure)) return false; return doWorldStructures.get(structure); } public static void setGenerateStructure(MapGenStructure structure, boolean generate) { doWorldStructures.put(structure, generate); } public static MapGenStructure[] getStructures(int dim) { return structures.get(dim).toArray(new MapGenStructure[0]); } public static MapGenStructure[] getGeneratableStructures(int dim) { ArrayList<MapGenStructure> structures = new ArrayList(); for (MapGenStructure s : doWorldStructures.keySet()) { if (MapProvider.structures.get(dim).contains(s)) structures.add(s); } return structures.toArray(new MapGenStructure[0]); } private static final ListMap<Integer, WorldGenerator> gens = new ListMap(); private static final HashMap<WorldGenerator, Boolean> doWorldGens = new HashMap(); public static void registerGen(WorldGenerator structure, int... dimensions) { if (dimensions.length > 0) for (int d : dimensions) gens.add(d, structure); else gens.add(0, structure); doWorldGens.put(structure, true); } public static boolean shouldGenerate(WorldGenerator gen, int dim) { if (!gens.get(dim).contains(gen)) return false; return doWorldGens.get(gen); } public static void setGenerate(WorldGenerator gen, boolean generate) { doWorldGens.put(gen, generate); } public static WorldGenerator[] getAllGenerators(int dim) { return gens.get(dim).toArray(new WorldGenerator[0]); } public static WorldGenerator[] getGenerators(int dim) { ArrayList<WorldGenerator> structures = new ArrayList(); for (WorldGenerator s : doWorldGens.keySet()) { if (MapProvider.gens.get(dim).contains(s)) structures.add(s); } return structures.toArray(new WorldGenerator[0]); } private static final ListMap<Integer, MapGenBase> genBases = new ListMap(); private static final HashMap<MapGenBase, Boolean> doWorldGenBases = new HashMap(); public static void registerGenBase(MapGenBase structure, int... dimensions) { if (dimensions.length > 0) for (int d : dimensions) genBases.add(d, structure); else genBases.add(0, structure); doWorldGenBases.put(structure, true); } public static boolean shouldGenerateBase(MapGenBase gen, int dim) { if (!genBases.get(dim).contains(gen)) return false; return doWorldGenBases.get(gen); } public static void setGenerateBase(MapGenBase gen, boolean generate) { doWorldGenBases.put(gen, generate); } public static MapGenBase[] getAllBaseGenerators(int dim) { return genBases.get(dim).toArray(new MapGenBase[0]); } public static MapGenBase[] getBaseGenerators(int dim) { ArrayList<MapGenBase> structures = new ArrayList(); for (MapGenBase s : doWorldGenBases.keySet()) { if (MapProvider.genBases.get(dim).contains(s)) structures.add(s); } return structures.toArray(new MapGenBase[0]); } } and ChunkProviders have a mod, in the provideChunk you get Structures & MapGenBases set up. for (MapGenStructure s : MapProvider.getGeneratableStructures(0)) { s.generateStructure(world, rand, chunkpos); } in the populate method, everything. in the recreateStructures method, do the structures, and the getStrongholdGen method(poorly named in my opinion!) before the vanilla statments put for (MapGenStructure s : MapProvider.getGeneratableStructures(0)) { // XXX Find Structure if (s.getStructureName().equals(structureName)) { return s.getClosestStrongholdPos(worldIn, position, p_180513_4_); } } P.S. using for custom villages.
  2. I have the grayscale texture, BUT... Grey Leaves.
  3. Sorry, when I use BiomeDecorateEvent.Decorate I cannot get an algorithem working to place the trees so they are not overlapping, If there is a good way, please tell me.
  4. Question is in the title, I need to know this because I am replacing vanilla trees with mod ones and I need to know what type it will be, and exactly where it will generate.
  5. Thanks for the info about LOG2 & LEAVES2, my last post had a link to the mod if you want to see v1.0, I checked it out with my brother, and it works really well, thanks for the worldgen advice!
  6. Here's The Mod https://minecraft.curseforge.com/projects/forestspread
  7. So the X and Z for the block position are A) The chunk numbers B) The X and Z coords of the chunk I was using .Post before but there is no .getType() method for that And what is the difference between LOG, LOG2 & LEAVES, LEAVES2 EDIT: Hastebin link isn't working anymore
  8. I need this to place a root block, how would i do this? here is my code: @SubscribeEvent(priority = EventPriority.LOWEST) public void addRootBlockWgen(DecorateBiomeEvent.Decorate event) { if (event.getType() == DecorateBiomeEvent.Decorate.EventType.TREE) { BlockPos root_pos = event.getPos().add(0, -2, 0); //BlockPlanks.EnumType t = event.getWorld().getBlockState(event.getPos()).getValue(BlockNewLog.VARIANT); event.getWorld().setBlockState(root_pos, TreesDropSaplings.roots.getStateFromMeta(TreesDropSaplings.roots.getMetaForState(0, BlockPlanks.EnumType.OAK))); } } The Y position is 0, how do I find the Y without using a for loop. Or is there a different method I can use?
  9. 1. I can't but it sounds useful 2. add some functions to allow your own burnable materials
  10. Ok - So I want to replace some classes - like The Rediculus brewing code. Should I use a coremod? - And How do i replace classes with one? Also if i can replace classes, I want to replace the furnace recipe classes. I'll leave all the oridional functions but will this cause problems with other mods? Thanks!

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.