Bonjour,
Je début dans la création de plugin pour minecraft et je pense que je suis en train de dev de façon jettable...
Mon plugin c'est une genre de pokeball, on peut capturer et relancer les mobs.
Souci j'aimerai faire en sorte que les "pokeball" ne soit pas stakable, je ne sais pas si c'est possible.
Ainsi que lier un mob a un item, pour le moment je le fait de façon brouillons mais le mob spawn est ramdom...
Je sais qu'on peut optimiser si vous pouviez m'aider ?
Merci
Je début dans la création de plugin pour minecraft et je pense que je suis en train de dev de façon jettable...
Mon plugin c'est une genre de pokeball, on peut capturer et relancer les mobs.
Souci j'aimerai faire en sorte que les "pokeball" ne soit pas stakable, je ne sais pas si c'est possible.
Ainsi que lier un mob a un item, pour le moment je le fait de façon brouillons mais le mob spawn est ramdom...
Je sais qu'on peut optimiser si vous pouviez m'aider ?
Merci
Code:
package fr.frithy.pokeball;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.entity.Snowball;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.util.Vector;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
public class MainListener implements Listener {
private boolean aLance = false;
private Player player;
private List<Integer> projectiles = new ArrayList<>();
String lore = "";
//private HashMap<Player,Integer> listALance;
ItemStack item = new ItemStack(Material.HEART_OF_THE_SEA);
@EventHandler
public void onInteract(PlayerInteractEvent event){
Action action = event.getAction();
ItemStack it = event.getItem();
assert it != null;
ItemMeta modif = it.getItemMeta();
it.setItemMeta(modif);
if( it == null ) return;
if(projectiles.size() > 100){
projectiles.remove(0);
projectiles.remove(1);
projectiles.remove(2);
projectiles.remove(3);
projectiles.remove(4);
}
for( String e : it.getItemMeta().getLore()){
lore=e;
}
if( it.getItemMeta().getDisplayName().equals("§2Lien Faible") && lore.contains("§7Contient")){
if(action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK){
Snowball ball = event.getPlayer().launchProjectile(Snowball.class);
}
}
else{
if(action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK){
this.player = event.getPlayer();
it.setAmount(it.getAmount()-1);
aLance = true;
Snowball ball = event.getPlayer().launchProjectile(Snowball.class);
projectiles.add(ball.hashCode());
//Bukkit.broadcastMessage(String.valueOf(ball.hashCode()));
//Bukkit.broadcastMessage(" 1 : " + player + '\n' );
}
}
}
@EventHandler
private void takeDamage(EntityDamageByEntityEvent event){
EntityType victime = event.getEntityType();
Entity leMob = event.getEntity();
Entity attaquant = event.getDamager();
ItemMeta modif = item.getItemMeta();
modif.setDisplayName("§2Lien Faible");
modif.setLore(Arrays.asList("§7Contient : [ " + victime + " ]"));
modif.addEnchant(Enchantment.DURABILITY, 1, true);
modif.addItemFlags(ItemFlag.HIDE_ENCHANTS);
item.setItemMeta(modif);
if(attaquant instanceof Snowball && (((Snowball) event.getDamager()).getShooter() instanceof Player )){
Player player = (Player) ((Snowball) event.getDamager()).getShooter();
if(aLance && player.getName().equals(this.player.getName())){
aLance = false;
if(projectiles.contains(attaquant.hashCode())){
leMob.remove();
Location drop = leMob.getLocation();
drop.getWorld().dropItem(drop,item);
}
//Bukkit.broadcastMessage(" 1 : " + victime + " | " + attaquant.hashCode() + '\n' );
}
}
}
@EventHandler
public void onProjectileHit(ProjectileHitEvent event) {
Entity entity = event.getEntity();
if (entity instanceof Snowball) {
Location loc = entity.getLocation();
Vector vec = entity.getVelocity();
Location loc2 = new Location(loc.getWorld(), loc.getX() + vec.getX(), loc.getY() + vec.getY() + 0.7, loc.getZ() + vec.getZ());
Bukkit.broadcastMessage(lore);
switch (lore){
case "§7Contient : [ BAT ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.BAT);
break;
case "§7Contient : [ BLAZE ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.BLAZE);
break;
case "§7Contient : [ CAT ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.CAT);
break;
case "§7Contient : [ COW ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.COW);
break;
case "§7Contient : [ CAVE_SPIDER ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.CAVE_SPIDER);
break;
case "§7Contient : [ CHICKEN ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.CHICKEN);
break;
case "§7Contient : [ COD ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.COD);
break;
case "§7Contient : [ CREEPER ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.CREEPER);
break;
case "§7Contient : [ DOLPHIN ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.DOLPHIN);
break;
case "§7Contient : [ DONKEY ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.DONKEY);
break;
case "§7Contient : [ DROWNED ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.DROWNED);
break;
case "§7Contient : [ ELDER_GUARDIAN ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.ELDER_GUARDIAN);
break;
case "§7Contient : [ ENDER_CRYSTAL ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.ENDER_CRYSTAL);
break;
case "§7Contient : [ ENDER_DRAGON ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.ENDER_DRAGON);
break;
case "§7Contient : [ ENDERMAN ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.ENDERMAN);
break;
case "§7Contient : [ ENDERMITE ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.ENDERMITE);
break;
case "§7Contient : [ EVOKER ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.EVOKER);
break;
case "§7Contient : [ EVOKER_FANGS ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.EVOKER_FANGS);
break;
case "§7Contient : [ FOX ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.FOX);
break;
case "§7Contient : [ GHAST ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.GHAST);
break;
case "§7Contient : [ GUARDIAN ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.GUARDIAN);
break;
case "§7Contient : [ HORSE ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.HORSE);
break;
case "§7Contient : [ HUSK ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.HUSK);
break;
case "§7Contient : [ ILLUSIONER ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.ILLUSIONER);
break;
case "§7Contient : [ IRON_GOLEM ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.IRON_GOLEM);
break;
case "§7Contient : [ LLAMA ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.LLAMA);
break;
case "§7Contient : [ LEASH_HITCH ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.LEASH_HITCH);
break;
case "§7Contient : [ MAGMA_CUBE ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.MAGMA_CUBE);
break;
case "§7Contient : [ OCELOT ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.OCELOT);
break;
case "§7Contient : [ PANDA ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.PANDA);
break;
case "§7Contient : [ PARROT ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.PARROT);
break;
case "§7Contient : [ PHANTOM ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.PHANTOM);
break;
case "§7Contient : [ PIG ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.PIG);
break;
case "§7Contient : [ PIG_ZOMBIE ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.PIG_ZOMBIE);
break;
case "§7Contient : [ PILLAGER ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.PILLAGER);
break;
case "§7Contient : [ POLAR_BEAR ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.POLAR_BEAR);
break;
case "§7Contient : [ PUFFERFISH ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.PUFFERFISH);
break;
case "§7Contient : [ RABBIT ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.RABBIT);
break;
case "§7Contient : [ RAVAGER ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.RAVAGER);
break;
case "§7Contient : [ SALMON ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.SALMON);
break;
case "§7Contient : [ SHEEP ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.SHEEP);
break;
case "§7Contient : [ SHULKER ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.SHULKER);
break;
case "§7Contient : [ SILVERFISH ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.SILVERFISH);
break;
case "§7Contient : [ SKELETON ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.SKELETON);
break;
case "§7Contient : [ SKELETON_HORSE ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.SKELETON_HORSE);
break;
case "§7Contient : [ SLIME ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.SLIME);
break;
case "§7Contient : [ SNOWMAN ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.SNOWMAN);
break;
case "§7Contient : [ SPIDER ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.SPIDER);
break;
case "§7Contient : [ SQUID ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.SQUID);
break;
case "§7Contient : [ STRAY ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.STRAY);
break;
case "§7Contient : [ TRADER_LLAMA ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.TRADER_LLAMA);
break;
case "§7Contient : [ TROPICAL_FISH ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.TROPICAL_FISH);
break;
case "§7Contient : [ TURTLE ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.TURTLE);
break;
case "§7Contient : [ VEX ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.VEX);
break;
case "§7Contient : [ VILLAGER ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.VILLAGER);
break;
case "§7Contient : [ VINDICATOR ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.VINDICATOR);
break;
case "§7Contient : [ WANDERING_TRADER ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.WANDERING_TRADER);
break;
case "§7Contient : [ WITCH ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.WITCH);
break;
case "§7Contient : [ WITHER ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.WITHER);
break;
case "§7Contient : [ WITHER_SKELETON ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.WITHER_SKELETON);
break;
case "§7Contient : [ WOLF ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.WOLF);
break;
case "§7Contient : [ ZOMBIE ]":
Bukkit.broadcastMessage("Vache");
Objects.requireNonNull(loc2.getWorld()).spawnEntity(loc2,EntityType.ZOMBIE);
break;
case "§7Contient : [ ZOMBIE_HORSE ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.ZOMBIE_HORSE);
break;
case "§7Contient : [ ZOMBIE_VILLAGER ]":
Bukkit.broadcastMessage("Vache");
loc2.getWorld().spawnEntity(loc2,EntityType.ZOMBIE_VILLAGER);
break;
default:
ItemMeta modif = item.getItemMeta();
modif.setDisplayName("§2Lien Faible");
modif.setLore(Arrays.asList("§7Vide"));
item.setItemMeta(modif);
loc2.getWorld().dropItem(loc2,item);
}
}
}
}
Dernière édition: