Advertisement
Jupiter41

Rush

Feb 21st, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.09 KB | None | 0 0
  1. package fr.jupiter.rush;
  2.  
  3. import java.lang.reflect.Field;
  4. import java.util.ArrayList;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8.  
  9. import org.bukkit.Bukkit;
  10. import org.bukkit.Chunk;
  11. import org.bukkit.Location;
  12. import org.bukkit.Material;
  13. import org.bukkit.World;
  14. import org.bukkit.configuration.ConfigurationSection;
  15. import org.bukkit.craftbukkit.v1_11_R1.entity.CraftVillager;
  16. import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftItemStack;
  17. import org.bukkit.entity.Entity;
  18. import org.bukkit.entity.EntityType;
  19. import org.bukkit.entity.Player;
  20. import org.bukkit.entity.Villager;
  21. import org.bukkit.inventory.ItemStack;
  22. import org.bukkit.plugin.java.JavaPlugin;
  23. import fr.jupiter.rush.team.Team;
  24. import net.minecraft.server.v1_11_R1.EntityVillager;
  25. import net.minecraft.server.v1_11_R1.MerchantRecipe;
  26. import net.minecraft.server.v1_11_R1.MerchantRecipeList;
  27. import net.minecraft.server.v1_11_R1.NBTTagCompound;
  28. import net.minecraft.server.v1_11_R1.NBTTagInt;
  29. import net.minecraft.server.v1_11_R1.NBTTagList;
  30.  
  31. /**
  32.  * Created by arthur on 17/02/2017.
  33.  */
  34.  
  35. public class Rush extends JavaPlugin {
  36.  
  37.     private RushGame current ;
  38.     public RushTitles title = new RushTitles() ;
  39.  
  40.     private List<Team> teams = new ArrayList<>() ;
  41.     public Map<Player, ScoreboardSign> boards = new HashMap<>() ;
  42.  
  43.     @Override
  44.  
  45.     public void onEnable() {
  46.          
  47.         current = RushGame.WAITING ;
  48.  
  49.         getServer().getPluginManager().registerEvents(new RushListeners(this), this) ;
  50.        
  51.         saveDefaultConfig() ;
  52.        
  53.         ConfigurationSection section = getConfig().getConfigurationSection("teams") ;
  54.        
  55.         for (String team : section.getKeys(false)) {
  56.            
  57.             String name = section.getString(team + ".name") ;
  58.             String tag = section.getString(team + ".color").replaceAll("&", "§") ;
  59.             byte data = (byte) section.getInt(team + ".data") ;
  60.            
  61.             String spawn = section.getString(team + ".spawn") ;
  62.            
  63.             teams.add(new Team(name, tag, data, getParseLoc(spawn))) ;
  64.            
  65.         }
  66.        
  67.         //Villagers
  68.        
  69.         ConfigurationSection villager = getConfig().getConfigurationSection("villagers") ;
  70.        
  71.         for (String v : villager.getKeys(false)) {
  72.            
  73.             String name = villager.getString(v + ".name").replace("&", "§") ;
  74.            
  75.             for (String loc : villager.getStringList(v + ".locations")) {
  76.                
  77.                 spawnVillager(name, getParseLoc(loc), villager.getStringList(v + ".content")) ;
  78.                
  79.             }
  80.            
  81.         }
  82.        
  83.         System.out.println(teams.size() + " teams ont ete charge !\n") ;
  84.        
  85.     }
  86.  
  87.     @Override
  88.    
  89.     public void onDisable() {
  90.        
  91.         for (Chunk chunk : Bukkit.getWorld("world").getLoadedChunks()) {
  92.            
  93.             for (Entity entity : chunk.getEntities()) {
  94.                
  95.                 if(!(entity instanceof Player)) {
  96.                
  97.                     entity.remove() ;
  98.                    
  99.             }
  100.         }
  101.     }      
  102. }
  103.  
  104.     public void setState(RushGame state) {
  105.  
  106.         current = state ;
  107.  
  108.     }
  109.  
  110.     public boolean isState(RushGame state) {
  111.  
  112.         return current == state ;
  113.  
  114.     }
  115.  
  116.     @SuppressWarnings("deprecation")
  117.    
  118.     private void spawnVillager(String name, Location loc, List<String> recipeString) {
  119.  
  120.         Villager villager = (Villager) loc.getWorld().spawnEntity(loc, EntityType.VILLAGER) ;
  121.        
  122.         villager.setCustomNameVisible(true) ;
  123.         villager.setCustomName(name) ;
  124.        
  125.         villager.setSilent(true) ;
  126.         villager.setAdult() ;
  127.         villager.setAgeLock(true) ;
  128.         villager.setInvulnerable(true) ;
  129.        
  130.         EntityVillager entityVillager = ((CraftVillager) villager).getHandle() ;
  131.        
  132.         entityVillager.setPositionRotation(loc.getX(), loc.getY(), loc.getZ(), loc.getPitch(), loc.getYaw()) ;
  133.        
  134.         entityVillager.setAI(false) ;
  135.        
  136.         //Custom ses échanges
  137.  
  138.         try {
  139.            
  140.             Field recipes = entityVillager.getClass().getDeclaredField("trades") ;
  141.            
  142.             recipes.setAccessible(true) ;
  143.            
  144.             MerchantRecipeList list = new MerchantRecipeList() ;
  145.            
  146.             for (String recipe : recipeString) {
  147.                
  148.                 String[] str = recipe.split("=") ;
  149.                 String[] item1 = str[0].split(":") ;
  150.                 String[] result = str[0].split(":") ;
  151.                
  152.                 //Item needed
  153.                
  154.                 int id = Integer.valueOf(item1[0]) ;
  155.                 int amount = Integer.valueOf(item1[1]) ;
  156.                
  157.                 //Item result
  158.                
  159.                 int idres = Integer.valueOf(result[0]);
  160.                 int amountres = Integer.valueOf(result[1]) ;
  161.                
  162.                 net.minecraft.server.v1_11_R1.ItemStack itemneeded = CraftItemStack.asNMSCopy(new ItemStack(Material.getMaterial(id), amount)) ;
  163.                 net.minecraft.server.v1_11_R1.ItemStack itemresult= CraftItemStack.asNMSCopy(new ItemStack(Material.getMaterial(idres), amountres)) ;
  164.                
  165.                 if (result.length == 4) {
  166.                
  167.                 //Enchant
  168.                    
  169.                 int enchantement = Integer.valueOf(result[2]) ;
  170.                 int nivEnchant = Integer.valueOf(result[3]) ;
  171.                    
  172.                 System.out.println("Réussi") ;
  173.                    
  174.                 NBTTagCompound compound = (itemresult.hasTag()) ? itemresult.getTag() : new NBTTagCompound() ;
  175.                 NBTTagList ench = new NBTTagList() ;
  176.                
  177.                 NBTTagCompound enchant = new NBTTagCompound() ;
  178.                 enchant.set("id", new NBTTagInt(enchantement)) ;
  179.                 enchant.set("lvl", new NBTTagInt(nivEnchant)) ;
  180.                
  181.                 ench.add(enchant) ;
  182.                
  183.                 compound.set("ench", ench) ;
  184.                
  185.                 }
  186.                
  187.                 list.add(new MerchantRecipe(itemneeded, null, itemresult)) ;
  188.                
  189.                 System.out.println(name + " / " + recipe + " / " + loc) ;
  190.                
  191.             }
  192.            
  193.             recipes.set(entityVillager, list) ;
  194.            
  195.         } catch (Exception e) {
  196.        
  197.             e.printStackTrace() ;
  198.            
  199.         }
  200.        
  201.     }
  202.    
  203.   private Location getParseLoc(String spawn) {
  204.    
  205.         String[] spawns = spawn.split(",") ;
  206.        
  207.         double x = Double.valueOf(spawns[0]) ;
  208.         double y = Double.valueOf(spawns[1]) ;
  209.         double z = Double.valueOf(spawns[2]) ;
  210.        
  211.         float yaw = 0 ;
  212.         float pitch = 0 ;
  213.        
  214.         if (spawns.length >= 5) {
  215.            
  216.             yaw = Float.valueOf(spawns[3]) ;
  217.             pitch = Float.valueOf(spawns[4]) ;
  218.            
  219.         }
  220.        
  221.         World world = Bukkit.getWorld("world") ;
  222.        
  223.         return new Location (world, x, y, z, yaw, pitch) ;
  224.        
  225.     }
  226.  
  227. public void addPlayer(Player player, Team team) {
  228.    
  229.     String tag = team.getTag() + team.getName() ;
  230.    
  231.     if(team.getPlayers().contains(player)) {
  232.        
  233.         player.sendMessage("Vous êtes déjà dans l'équipe : " + tag) ;
  234.        
  235.         return ;
  236.        
  237.     }
  238.    
  239.     if (team.getSize() >= 1) {
  240.        
  241.         player.sendMessage("L'équipe " + tag + "§fest déjà complète ! ");
  242.        
  243.         return ;
  244.        
  245.     }
  246.    
  247.     team.addPlayer(player) ;
  248.    
  249.     player.setPlayerListName(tag + player.getName()) ;
  250.    
  251.     player.sendMessage("Vous rejoigner l'équipe : " + tag + " ! ") ;
  252.    
  253. }
  254.  
  255. public void removePlayer(Player player) {
  256.    
  257.     for (Team team : teams) {
  258.        
  259.         if (team.getPlayers().contains(player)) {
  260.            
  261.             team.removePlayer(player) ;
  262.            
  263.         }
  264.        
  265.     }
  266.    
  267. }
  268.  
  269. public void randomTeam(Player player) {
  270.    
  271.     for (Team team : teams) {
  272.        
  273.         if (team.getSize() < 1) {
  274.            
  275.             addPlayer(player, team) ;
  276.            
  277.             break ;
  278.            
  279.         }
  280.        
  281.     }
  282.    
  283. }
  284.  
  285. public List<Team> getTeams() {
  286.    
  287.     return teams ;
  288.    
  289. }
  290.  
  291. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement