Advertisement
HalestormXV

Untitled

Apr 20th, 2018
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.36 KB | None | 0 0
  1. package halestormxv.world.gen.generators;
  2.  
  3. import halestormxv.utility.HighQualityRandom;
  4. import halestormxv.utility.Reference;
  5. import halestormxv.world.gen.WorldGenAdvanced;
  6. import net.minecraft.world.gen.feature.WorldGenerator;
  7. import net.minecraft.block.Block;
  8. import net.minecraft.block.state.IBlockState;
  9. import net.minecraft.init.Blocks;
  10. import net.minecraft.init.Items;
  11. import net.minecraft.init.PotionTypes;
  12. import net.minecraft.item.ItemPotion;
  13. import net.minecraft.item.ItemStack;
  14. import net.minecraft.potion.PotionUtils;
  15. import net.minecraft.server.MinecraftServer;
  16. import net.minecraft.tileentity.TileEntity;
  17. import net.minecraft.tileentity.TileEntityBrewingStand;
  18. import net.minecraft.tileentity.TileEntityChest;
  19. import net.minecraft.util.Mirror;
  20. import net.minecraft.util.ResourceLocation;
  21. import net.minecraft.util.Rotation;
  22. import net.minecraft.util.math.BlockPos;
  23. import net.minecraft.util.math.ChunkPos;
  24. import net.minecraft.world.World;
  25. import net.minecraft.world.WorldServer;
  26. import net.minecraft.world.gen.feature.WorldGenerator;
  27. import net.minecraft.world.gen.structure.template.PlacementSettings;
  28. import net.minecraft.world.gen.structure.template.Template;
  29. import net.minecraft.world.gen.structure.template.TemplateManager;
  30. import net.minecraft.world.storage.loot.LootTableList;
  31.  
  32. import java.util.Map;
  33. import java.util.Random;
  34. import java.util.Map.Entry;
  35.  
  36. public class AdvancedStructureGen extends WorldGenerator {
  37.  
  38.     private static String structureName;
  39.  
  40.     public AdvancedStructureGen(String name) {
  41.         structureName = name;
  42.     }
  43.  
  44.  
  45.     Random r2 = new HighQualityRandom();
  46.  
  47.  
  48.     int r;
  49.  
  50.     @Override
  51.     public boolean generate(World world, Random rand, BlockPos position) {
  52.         WorldServer worldserver = (WorldServer) world;
  53.         MinecraftServer minecraftserver = world.getMinecraftServer();
  54.         TemplateManager templatemanager = worldserver.getStructureTemplateManager();
  55.         Template template = templatemanager.getTemplate(minecraftserver, new ResourceLocation(Reference.MODID, structureName));
  56.  
  57.         if (template == null) {
  58.             System.out.println("NO STRUCTURE");
  59.             return false;
  60.         }
  61.  
  62.         if (WorldGenAdvanced.canSpawnHere(template, worldserver, position)) {
  63.             IBlockState iblockstate = world.getBlockState(position);
  64.             world.notifyBlockUpdate(position, iblockstate, iblockstate, 3);
  65.  
  66.             PlacementSettings placementsettings = (new PlacementSettings()).setMirror(Mirror.NONE)
  67.                     .setRotation(Rotation.NONE).setIgnoreEntities(false).setChunk((ChunkPos) null)
  68.                     .setReplacedBlock((Block) null).setIgnoreStructureBlock(false);
  69.  
  70.             template.getDataBlocks(position, placementsettings);
  71.             template.addBlocksToWorld(world, position.add(0, 1, 0), placementsettings);
  72.  
  73.             Map<BlockPos, String> map = template.getDataBlocks(position, placementsettings);
  74.  
  75.             for (Entry<BlockPos, String> entry : map.entrySet()) {
  76.                 if ("chest".equals(entry.getValue())) {
  77.                     BlockPos blockpos2 = entry.getKey();
  78.                     world.setBlockState(blockpos2.up(), Blocks.AIR.getDefaultState(), 3);
  79.                     TileEntity tileentity = world.getTileEntity(blockpos2);
  80.  
  81.                     if (tileentity instanceof TileEntityChest) {
  82.                         ((TileEntityChest) tileentity).setLootTable(LootTableList.ENTITIES_WITCH, rand.nextLong());
  83.                     }
  84.                 }
  85.                 if ("br".equals(entry.getValue())) {
  86.                     BlockPos blockpos2 = entry.getKey();
  87.                     world.setBlockState(blockpos2.up(), Blocks.AIR.getDefaultState(), 3);
  88.                     TileEntity tileentity = world.getTileEntity(blockpos2);
  89.  
  90.                     if (tileentity instanceof TileEntityBrewingStand)
  91.                     {
  92.                         int i = 1 + r2.nextInt(3);
  93.                         for (int j = 0; j < i; j++) {
  94.                             r = r2.nextInt(9);
  95.                             ItemStack pot = null;
  96.                             switch (r) {
  97.                                 case 0: {
  98.                                     pot = new ItemStack(Items.POTIONITEM);
  99.                                     PotionUtils.addPotionToItemStack(pot, PotionTypes.STRONG_HEALING);
  100.                                 }
  101.                                 break;
  102.  
  103.                                 case 1: {
  104.                                     pot = new ItemStack(Items.POTIONITEM);
  105.                                     PotionUtils.addPotionToItemStack(pot, PotionTypes.LONG_FIRE_RESISTANCE);
  106.                                 }
  107.                                 break;
  108.  
  109.                                 case 2: {
  110.                                     pot = new ItemStack(Items.POTIONITEM);
  111.                                     PotionUtils.addPotionToItemStack(pot, PotionTypes.LONG_LEAPING);
  112.                                 }
  113.                                 break;
  114.  
  115.                                 case 3: {
  116.                                     pot = new ItemStack(Items.POTIONITEM);
  117.                                     PotionUtils.addPotionToItemStack(pot, PotionTypes.STRONG_HARMING);
  118.                                 }
  119.                                 break;
  120.  
  121.  
  122.                                 case 4: {
  123.                                     pot = new ItemStack(Items.POTIONITEM);
  124.                                     PotionUtils.addPotionToItemStack(pot, PotionTypes.STRONG_STRENGTH);
  125.                                 }
  126.                                 break;
  127.  
  128.                                 case 5: {
  129.                                     pot = new ItemStack(Items.POTIONITEM);
  130.                                     PotionUtils.addPotionToItemStack(pot, PotionTypes.STRONG_SWIFTNESS);
  131.                                 }
  132.                                 ;
  133.  
  134.                                 case 6: {
  135.                                     pot = new ItemStack(Items.POTIONITEM);
  136.                                     PotionUtils.addPotionToItemStack(pot, PotionTypes.LONG_WATER_BREATHING);
  137.                                 }
  138.                                 break;
  139.  
  140.                                 case 7: {
  141.                                     pot = new ItemStack(Items.POTIONITEM);
  142.                                     PotionUtils.addPotionToItemStack(pot, PotionTypes.LONG_REGENERATION);
  143.                                 }
  144.                                 break;
  145.  
  146.                                 case 8: {
  147.                                     pot = new ItemStack(Items.POTIONITEM);
  148.                                     PotionUtils.addPotionToItemStack(pot, PotionTypes.STRONG_POISON);
  149.                                 }
  150.                                 break;
  151.  
  152.                                 case 9: {
  153.                                     pot = new ItemStack(Items.POTIONITEM);
  154.                                     PotionUtils.addPotionToItemStack(pot, PotionTypes.LONG_NIGHT_VISION);
  155.                                 }
  156.                                 break;
  157.                             }
  158.                             ((TileEntityBrewingStand) tileentity).setInventorySlotContents(j, pot);
  159.                         }
  160.                     }
  161.                 }
  162.             }
  163.             return true;
  164.         }
  165.         return false;
  166.     }
  167.     public void addLoot(World world) { }
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement