下面列出了org.bukkit.Material#GHAST_TEAR 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void run() {
for(Item item : Bukkit.getWorlds().get(0).getEntitiesByClass(Item.class)) {
if(item.getItemStack().getType() != Material.GHAST_TEAR) continue;
UUID skip = Gizmos.gunGizmo.items.get(item);
for(Entity entity : item.getNearbyEntities(0.5d, 0.5d, 0.5d)) {
if(entity instanceof Player && !entity.getUniqueId().equals(skip)) {
Player player = (Player) entity;
if(player.hasPermission("gizmo.immunity")) continue;
player.damage(0d, item);
Gizmos.gunGizmo.gifts.add(player.getUniqueId());
item.remove();
break;
}
}
if(item.getTicksLived() >= 6000) item.remove();
}
}
@EventHandler
public void onEntityDeath(EntityDeathEvent ev) {
if (ev.getEntity() instanceof Ghast) {
Bukkit.getLogger().info("Modifying drops for Ghast");
List<ItemStack> drops = new ArrayList<ItemStack>(ev.getDrops());
ev.getDrops().clear();
for (ItemStack i : drops) {
if (i.getType() == Material.GHAST_TEAR) {
Bukkit.getLogger().info("Added "+i.getAmount()+" ghast tear(s)");
ev.getDrops().add(new ItemStack(Material.GOLD_INGOT,i.getAmount()));
} else {
Bukkit.getLogger().info("Added "+i.getAmount()+" "+i.getType().toString());
ev.getDrops().add(i);
}
}
}
}
@EventHandler(priority = EventPriority.HIGHEST)
public void openMenu(final PlayerInteractEvent event) {
if(event.getAction() == Action.PHYSICAL) return;
Player player = event.getPlayer();
if(player.getItemInHand().getType() == Material.GHAST_TEAR) {
GizmoUtils.openMenu(event.getPlayer());
purchasingMap.put(event.getPlayer(), null);
}
}
public static ItemStack getGhastTear(Player player, int count) {
ItemStack raindrops = new ItemStack(Material.GHAST_TEAR);
ItemMeta meta = raindrops.getItemMeta();
meta.setDisplayName(ChatColor.AQUA + "Raindrops" + ChatColor.DARK_PURPLE + " | " + ChatColor.WHITE + String.format("%,d", count));
raindrops.setItemMeta(meta);
return raindrops;
}
@EventHandler
public void on(EntityDeathEvent event) {
if (isEnabled() || event.getEntity().getType() != EntityType.GHAST) return;
for (final ItemStack drop : event.getDrops()) {
if (drop.getType() == Material.GHAST_TEAR) {
drop.setType(Material.GOLD_INGOT);
}
}
}
public GhastEvent(GameMap map, boolean b) {
this.gMap = map;
this.enabled = b;
File dataDirectory = SkyWarsReloaded.get().getDataFolder();
File mapDataDirectory = new File(dataDirectory, "mapsData");
if (!mapDataDirectory.exists() && !mapDataDirectory.mkdirs()) {
return;
}
File mapFile = new File(mapDataDirectory, gMap.getName() + ".yml");
if (mapFile.exists()) {
eventName = "GhastEvent";
slot = 17;
material = new ItemStack(Material.GHAST_TEAR, 1);
FileConfiguration fc = YamlConfiguration.loadConfiguration(mapFile);
this.min = fc.getInt("events." + eventName + ".minStart");
this.max = fc.getInt("events." + eventName + ".maxStart");
this.length = fc.getInt("events." + eventName + ".length");
this.chance = fc.getInt("events." + eventName + ".chance");
this.title = fc.getString("events." + eventName + ".title");
this.subtitle = fc.getString("events." + eventName + ".subtitle");
this.startMessage = fc.getString("events." + eventName + ".startMessage");
this.endMessage = fc.getString("events." + eventName + ".endMessage");
this.announceEvent = fc.getBoolean("events." + eventName + ".announceTimer");
this.repeatable = fc.getBoolean("events." + eventName + ".repeatable");
}
}
@EventHandler
public void onPlayerPickupItem(PlayerPickupItemEvent ev) {
if (ev.getItem().getItemStack().getType() == Material.GHAST_TEAR && ev.getPlayer().getGameMode().equals(GameMode.SURVIVAL)) ev.setCancelled(true);
p.updatePlayerListName(ev.getPlayer());
}