Advertisement
Earthcomputer

Simulation Code

Sep 3rd, 2018
463
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.40 KB | None | 0 0
  1. package test;
  2.  
  3. import java.io.IOException;
  4. import java.text.NumberFormat;
  5. import java.util.ArrayList;
  6. import java.util.Comparator;
  7. import java.util.HashMap;
  8. import java.util.List;
  9. import java.util.Map;
  10. import java.util.Random;
  11.  
  12. import net.minecraft.enchantment.Enchantment;
  13. import net.minecraft.enchantment.EnchantmentHelper;
  14. import net.minecraft.init.Bootstrap;
  15. import net.minecraft.init.Enchantments;
  16. import net.minecraft.init.Items;
  17. import net.minecraft.item.ItemStack;
  18. import net.minecraft.nbt.NBTTagList;
  19.  
  20. public class TestMain {
  21.  
  22.     public static void main(String[] args) throws IOException {
  23.         Bootstrap.register();
  24.  
  25.         final ItemStack HELMET = new ItemStack(Items.DIAMOND_HELMET);
  26.         Random rand = new Random();
  27.         final float clampedAdditionalDifficulty = 1;
  28.         NumberFormat numberFormat = NumberFormat.getNumberInstance();
  29.        
  30.         Map<List<Enchantment>, Integer> counts = new HashMap<>();
  31.        
  32.         for (int i = 0; i < 1_000_000_000; i++) {
  33.             if (i % 10000 == 0)
  34.                 System.out.println(numberFormat.format(i));
  35.             ItemStack helmet = HELMET.copy();
  36.             helmet = EnchantmentHelper.addRandomEnchantment(rand, helmet, (int) (5 + clampedAdditionalDifficulty * rand.nextInt(18)), false);
  37.             if (rand.nextFloat() < 0.5f * clampedAdditionalDifficulty) {
  38.                 helmet = EnchantmentHelper.addRandomEnchantment(rand, helmet, (int) (5 + clampedAdditionalDifficulty * rand.nextInt(18)), false);
  39.             }
  40.            
  41.             List<Enchantment> enchantments = new ArrayList<>();
  42.             NBTTagList list = helmet.getTagCompound().getTagList("ench", 10);
  43.             for (int j = 0; j < list.tagCount(); j++) {
  44.                 Enchantment ench = Enchantment.getEnchantmentByID(list.getCompoundTagAt(j).getShort("id"));
  45.                 int level = list.getCompoundTagAt(j).getShort("lvl");
  46.                 if ((ench == Enchantments.PROTECTION || ench == Enchantments.FIRE_PROTECTION) && level == 3) {
  47.                     enchantments.add(ench);
  48.                 } else if ((ench == Enchantments.BLAST_PROTECTION || ench == Enchantments.PROJECTILE_PROTECTION) && level == 4) {
  49.                     enchantments.add(ench);
  50.                 }
  51.             }
  52.             enchantments.sort(Comparator.comparing(Enchantment::getEnchantmentID));
  53.             counts.put(enchantments, counts.getOrDefault(enchantments, 0) + 1);
  54.         }
  55.        
  56.         counts.forEach((enchantments, count) -> {
  57.             System.out.println("==============");
  58.             enchantments.forEach(ench -> System.out.println(Enchantment.REGISTRY.getNameForObject(ench)));
  59.             System.out.println(numberFormat.format(count));
  60.         });
  61.     }
  62.  
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement