Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package fr.jupiter.rush;
- import java.lang.reflect.Field;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import org.bukkit.Bukkit;
- import org.bukkit.Chunk;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.World;
- import org.bukkit.configuration.ConfigurationSection;
- import org.bukkit.craftbukkit.v1_11_R1.entity.CraftVillager;
- import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftItemStack;
- import org.bukkit.entity.Entity;
- import org.bukkit.entity.EntityType;
- import org.bukkit.entity.Player;
- import org.bukkit.entity.Villager;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.plugin.java.JavaPlugin;
- import fr.jupiter.rush.team.Team;
- import net.minecraft.server.v1_11_R1.EntityVillager;
- import net.minecraft.server.v1_11_R1.MerchantRecipe;
- import net.minecraft.server.v1_11_R1.MerchantRecipeList;
- import net.minecraft.server.v1_11_R1.NBTTagCompound;
- import net.minecraft.server.v1_11_R1.NBTTagInt;
- import net.minecraft.server.v1_11_R1.NBTTagList;
- /**
- * Created by arthur on 17/02/2017.
- */
- public class Rush extends JavaPlugin {
- private RushGame current ;
- public RushTitles title = new RushTitles() ;
- private List<Team> teams = new ArrayList<>() ;
- public Map<Player, ScoreboardSign> boards = new HashMap<>() ;
- @Override
- public void onEnable() {
- current = RushGame.WAITING ;
- getServer().getPluginManager().registerEvents(new RushListeners(this), this) ;
- saveDefaultConfig() ;
- ConfigurationSection section = getConfig().getConfigurationSection("teams") ;
- for (String team : section.getKeys(false)) {
- String name = section.getString(team + ".name") ;
- String tag = section.getString(team + ".color").replaceAll("&", "§") ;
- byte data = (byte) section.getInt(team + ".data") ;
- String spawn = section.getString(team + ".spawn") ;
- teams.add(new Team(name, tag, data, getParseLoc(spawn))) ;
- }
- //Villagers
- ConfigurationSection villager = getConfig().getConfigurationSection("villagers") ;
- for (String v : villager.getKeys(false)) {
- String name = villager.getString(v + ".name").replace("&", "§") ;
- for (String loc : villager.getStringList(v + ".locations")) {
- spawnVillager(name, getParseLoc(loc), villager.getStringList(v + ".content")) ;
- }
- }
- System.out.println(teams.size() + " teams ont ete charge !\n") ;
- }
- @Override
- public void onDisable() {
- for (Chunk chunk : Bukkit.getWorld("world").getLoadedChunks()) {
- for (Entity entity : chunk.getEntities()) {
- if(!(entity instanceof Player)) {
- entity.remove() ;
- }
- }
- }
- }
- public void setState(RushGame state) {
- current = state ;
- }
- public boolean isState(RushGame state) {
- return current == state ;
- }
- @SuppressWarnings("deprecation")
- private void spawnVillager(String name, Location loc, List<String> recipeString) {
- Villager villager = (Villager) loc.getWorld().spawnEntity(loc, EntityType.VILLAGER) ;
- villager.setCustomNameVisible(true) ;
- villager.setCustomName(name) ;
- villager.setSilent(true) ;
- villager.setAdult() ;
- villager.setAgeLock(true) ;
- villager.setInvulnerable(true) ;
- EntityVillager entityVillager = ((CraftVillager) villager).getHandle() ;
- entityVillager.setPositionRotation(loc.getX(), loc.getY(), loc.getZ(), loc.getPitch(), loc.getYaw()) ;
- entityVillager.setAI(false) ;
- //Custom ses échanges
- try {
- Field recipes = entityVillager.getClass().getDeclaredField("trades") ;
- recipes.setAccessible(true) ;
- MerchantRecipeList list = new MerchantRecipeList() ;
- for (String recipe : recipeString) {
- String[] str = recipe.split("=") ;
- String[] item1 = str[0].split(":") ;
- String[] result = str[0].split(":") ;
- //Item needed
- int id = Integer.valueOf(item1[0]) ;
- int amount = Integer.valueOf(item1[1]) ;
- //Item result
- int idres = Integer.valueOf(result[0]);
- int amountres = Integer.valueOf(result[1]) ;
- net.minecraft.server.v1_11_R1.ItemStack itemneeded = CraftItemStack.asNMSCopy(new ItemStack(Material.getMaterial(id), amount)) ;
- net.minecraft.server.v1_11_R1.ItemStack itemresult= CraftItemStack.asNMSCopy(new ItemStack(Material.getMaterial(idres), amountres)) ;
- if (result.length == 4) {
- //Enchant
- int enchantement = Integer.valueOf(result[2]) ;
- int nivEnchant = Integer.valueOf(result[3]) ;
- System.out.println("Réussi") ;
- NBTTagCompound compound = (itemresult.hasTag()) ? itemresult.getTag() : new NBTTagCompound() ;
- NBTTagList ench = new NBTTagList() ;
- NBTTagCompound enchant = new NBTTagCompound() ;
- enchant.set("id", new NBTTagInt(enchantement)) ;
- enchant.set("lvl", new NBTTagInt(nivEnchant)) ;
- ench.add(enchant) ;
- compound.set("ench", ench) ;
- }
- list.add(new MerchantRecipe(itemneeded, null, itemresult)) ;
- System.out.println(name + " / " + recipe + " / " + loc) ;
- }
- recipes.set(entityVillager, list) ;
- } catch (Exception e) {
- e.printStackTrace() ;
- }
- }
- private Location getParseLoc(String spawn) {
- String[] spawns = spawn.split(",") ;
- double x = Double.valueOf(spawns[0]) ;
- double y = Double.valueOf(spawns[1]) ;
- double z = Double.valueOf(spawns[2]) ;
- float yaw = 0 ;
- float pitch = 0 ;
- if (spawns.length >= 5) {
- yaw = Float.valueOf(spawns[3]) ;
- pitch = Float.valueOf(spawns[4]) ;
- }
- World world = Bukkit.getWorld("world") ;
- return new Location (world, x, y, z, yaw, pitch) ;
- }
- public void addPlayer(Player player, Team team) {
- String tag = team.getTag() + team.getName() ;
- if(team.getPlayers().contains(player)) {
- player.sendMessage("Vous êtes déjà dans l'équipe : " + tag) ;
- return ;
- }
- if (team.getSize() >= 1) {
- player.sendMessage("L'équipe " + tag + "§fest déjà complète ! ");
- return ;
- }
- team.addPlayer(player) ;
- player.setPlayerListName(tag + player.getName()) ;
- player.sendMessage("Vous rejoigner l'équipe : " + tag + " ! ") ;
- }
- public void removePlayer(Player player) {
- for (Team team : teams) {
- if (team.getPlayers().contains(player)) {
- team.removePlayer(player) ;
- }
- }
- }
- public void randomTeam(Player player) {
- for (Team team : teams) {
- if (team.getSize() < 1) {
- addPlayer(player, team) ;
- break ;
- }
- }
- }
- public List<Team> getTeams() {
- return teams ;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement