Jump to content

GiantNuker

Members
  • Posts

    139
  • 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. I tried that already and it did not work.
  5. How do I go about replacing/modifying it?
  6. 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.
  7. 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!
  8. Here's The Mod https://minecraft.curseforge.com/projects/forestspread
  9. 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
  10. 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?
  11. 1. I can't but it sounds useful 2. add some functions to allow your own burnable materials
  12. 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!
×
×
  • Create New...

Important Information

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