Java 类org.bukkit.entity.ExperienceOrb 实例源码
项目:WC
文件:RainTask.java
public void run(){
switch (rain){
case EXP:
locs.forEach(l -> {
experienceOrb = (ExperienceOrb)l.getWorld().spawnEntity(l, EntityType.EXPERIENCE_ORB);
experienceOrb.setExperience(levels);
});
break;
case MAT:
locs.forEach(l -> l.getWorld().dropItemNaturally(l, new ItemStack(material)));
break;
default:
cancel();
break;
}
}
项目:ProjectAres
文件:DamageMatchModule.java
@EventHandler(ignoreCancelled = true)
public void onTarget(EntityTargetEvent event) {
if(!(event.getEntity() instanceof ExperienceOrb)) {
ParticipantState victimState = null;
if(event.getTarget() instanceof Player) {
// Don't target allies
MatchPlayer victim = getVictim(event.getTarget());
if(victim == null) return;
victimState = victim.getParticipantState();
} else if(event.getTarget() != null) {
// Don't target other mobs owned by allies
victimState = entityResolver.getOwner(event.getTarget());
}
if(victimState == null) return;
DamageInfo damageInfo = damageResolver.resolveDamage(EntityDamageEvent.DamageCause.ENTITY_ATTACK, event.getTarget(), event.getEntity());
if(queryHostile(event, victimState, damageInfo).isDenied()) {
event.setCancelled(true);
}
}
}
项目:SkyWarsReloaded
文件:SpectatorListener.java
final void repellExpOrb(final Player player, final ExperienceOrb orb) {
final Location pLoc = player.getLocation();
final Location oLoc = orb.getLocation();
final Vector dir = oLoc.toVector().subtract(pLoc.toVector());
final double dx = Math.abs(dir.getX());
final double dz = Math.abs(dir.getZ());
if ( (dx == 0.0) && (dz == 0.0)){
// Special case probably never happens
dir.setX(0.001);
}
if ((dx < 3.0) && (dz < 3.0)){
final Vector nDir = dir.normalize();
final Vector newV = nDir.clone().multiply(0.3);
newV.setY(0);
orb.setVelocity(newV);
if ((dx < 1.0) && (dz < 1.0)){
// maybe oLoc
orb.teleport(oLoc.clone().add(nDir.multiply(1.0)), TeleportCause.PLUGIN);
}
if ((dx < 0.5) && (dz < 0.5)){
orb.remove();
}
}
}
项目:Cardinal-Plus
文件:Blockdrops.java
@EventHandler(priority = EventPriority.MONITOR)
public void onEntityExplode(EntityExplodeEvent event) {
if (!event.isCancelled()) {
Player player = TntTracker.getWhoPlaced(event.getEntity()) != null && Bukkit.getOfflinePlayer(TntTracker.getWhoPlaced(event.getEntity())).isOnline() ? Bukkit.getPlayer(TntTracker.getWhoPlaced(event.getEntity())) : null;
if (player != null) {
for (Block block : event.blockList()) {
if (filter == null || filter.evaluate(player, block).equals(FilterState.ALLOW)) {
if (region == null || region.contains(new BlockRegion(null, block.getLocation().toVector().add(new Vector(0.5, 0.5, 0.5))))) {
for (ItemStack drop : this.drops) {
GameHandler.getGameHandler().getMatchWorld().dropItemNaturally(block.getLocation(), drop);
}
if (this.experience != 0) {
ExperienceOrb xp = GameHandler.getGameHandler().getMatchWorld().spawn(block.getLocation(), ExperienceOrb.class);
xp.setExperience(this.experience);
}
block.setType(replace);
}
}
}
}
}
}
项目:CardinalPGM
文件:Blockdrops.java
@EventHandler(priority = EventPriority.MONITOR)
public void onEntityExplode(EntityExplodeEvent event) {
if (!event.isCancelled()) {
Player player = TntTracker.getWhoPlaced(event.getEntity()) != null && Bukkit.getOfflinePlayer(TntTracker.getWhoPlaced(event.getEntity())).isOnline() ? Bukkit.getPlayer(TntTracker.getWhoPlaced(event.getEntity())) : null;
if (player != null) {
List<Block> toRemove = new ArrayList<>();
for (Block block : event.blockList()) {
if (filter == null || filter.evaluate(player, block, event).equals(FilterState.ALLOW)) {
if (region == null || region.contains(block.getLocation().toVector().add(new Vector(0.5, 0.5, 0.5)))) {
for (ItemStack drop : this.drops) {
GameHandler.getGameHandler().getMatchWorld().dropItemNaturally(block.getLocation(), drop);
}
if (this.experience != 0) {
ExperienceOrb xp = GameHandler.getGameHandler().getMatchWorld().spawn(block.getLocation(), ExperienceOrb.class);
xp.setExperience(this.experience);
}
toRemove.add(block);
block.setType(replaceType);
block.setData((byte) replaceDamage);
}
}
}
event.blockList().removeAll(toRemove);
}
}
}
项目:Slimefun4-Chinese-Version
文件:XPCollector.java
protected void tick(Block b)
throws Exception
{
for(Iterator iterator = me.mrCookieSlime.Slimefun.holograms.XPCollector.getArmorStand(b).getNearbyEntities(4D, 4D, 4D).iterator(); iterator.hasNext();)
{
Entity n = (Entity)iterator.next();
if(n instanceof ExperienceOrb)
{
if(ChargableBlock.getCharge(b) < getEnergyConsumption())
return;
if(n.isValid())
{
int xp = getEXP(b) + ((ExperienceOrb)n).getExperience();
ChargableBlock.addCharge(b, -getEnergyConsumption());
n.remove();
int withdrawn = 0;
for(int level = 0; level < getEXP(b); level += 10)
if(fits(b, new ItemStack[] {
new CustomItem(Material.EXP_BOTTLE, "&a\u5B66\u8BC6\u4E4B\u74F6", 0)
}))
{
withdrawn += 10;
pushItems(b, new ItemStack[] {
new CustomItem(Material.EXP_BOTTLE, "&a\u5B66\u8BC6\u4E4B\u74F6", 0)
});
}
BlockStorage.addBlockInfo(b, "stored-exp", String.valueOf(xp - withdrawn));
return;
}
}
}
}
项目:ProjectAres
文件:BlockDropsMatchModule.java
private void dropExperience(BlockDrops drops, Location location) {
if(drops.experience != 0) {
ExperienceOrb expOrb = (ExperienceOrb) location.getWorld().spawnEntity(BlockUtils.center(location), EntityType.EXPERIENCE_ORB);
if(expOrb != null) {
expOrb.setExperience(drops.experience);
}
}
}
项目:SkyWarsReloaded
文件:SpectatorListener.java
@EventHandler
protected void onEntityTarget(EntityTargetEvent e) {
// On entity target - Stop mobs targeting spectators
// Check to make sure it isn't an NPC (Citizens NPC's will be detectable using 'entity.hasMetadata("NPC")')
if (e.getTarget() != null && e.getTarget() instanceof Player && !e.getTarget().hasMetadata("NPC") && SkyWarsReloaded.getPC().getPlayer(((Player) e.getTarget()).getUniqueId()).isSpectating()) {
e.setCancelled(true);
}
if (e.getTarget() instanceof Player && e.getTarget() != null && SkyWarsReloaded.getPC().getPlayer(((Player) e.getTarget()).getUniqueId()).isSpectating()) {
if (e.getEntity() instanceof ExperienceOrb) {
repellExpOrb((Player) e.getTarget(), (ExperienceOrb) e.getEntity());
e.setCancelled(true);
e.setTarget(null);
}
}
}
项目:ArchersBattle
文件:XpManager.java
public XpManager() {
new BukkitRunnable() {
public void run() {
if (TaskID == -1) {
TaskID = this.getTaskId();
}
for (Arena arena : ArenaManager.getArenas()) {
if (arena.getPlayers().size() != 0) {
for (XpGen gen : arena.getXpGenerators()) {
if (!data.containsKey(gen)) {
data.put(gen, 1);
} else {
int value = data.get(gen);
data.remove(gen);
data.put(gen, value + 1);
}
if (data.get(gen) == gen.getInterval()) {
ExperienceOrb exp = (ExperienceOrb) gen.getLocation().getWorld().spawnEntity(gen.getLocation(), EntityType.EXPERIENCE_ORB);
exp.setExperience(1);
data.remove(gen);
}
}
}
}
}
}.runTaskTimer(Main.getInstance(), 20L, 20L);
}
项目:ArchersBattle
文件:PlayerListener.java
@EventHandler
public void onDeath(PlayerDeathEvent e) {
Player p = e.getEntity();
if (!Utils.isInArena(p)) {
return;
}
int level = p.getLevel();
ExperienceOrb exp = (ExperienceOrb) p.getWorld().spawnEntity(p.getLocation(), EntityType.EXPERIENCE_ORB);
exp.setExperience(level * 2);
}
项目:KillerMoney
文件:CExpHandler.java
@EventHandler
public void onCExpDrop(KMCExpDropEvent e) {
if (e.isCancelled()) {
return;
}
e.getLocation().getWorld().spawn(e.getLocation(), ExperienceOrb.class).setExperience(e.getValue());
}
项目:Skript
文件:XpOrbData.java
@Override
@Nullable
public ExperienceOrb spawn(final Location loc) {
final ExperienceOrb orb = super.spawn(loc);
if (orb == null)
return null;
if (xp == -1)
orb.setExperience(1);
return orb;
}
项目:HiddenOre
文件:BlockBreakListener.java
private void doXP(DropConfig dc, String biomeName, ToolConfig dropModifier, Location loc, Player p) {
double xpChance = dc.getXPChance(biomeName)
* (dropModifier == null ? 1.0 : dropModifier.getDropChanceModifier())
* dc.getStateChance(biomeName, p);
if (xpChance > Math.random()) {
int toXP = dc.renderXP(biomeName, dropModifier);
if (toXP > 0) {
Entity xp = loc.getWorld().spawnEntity(loc, EntityType.EXPERIENCE_ORB);
if (xp instanceof ExperienceOrb) {
ExperienceOrb eo = (ExperienceOrb) xp;
eo.setExperience(toXP);
}
}
}
}
项目:civcraft
文件:CommonCustomMob.java
public void dropItems() {
try {
if (entity == null) {
return;
}
LinkedList<MobDrop> dropped = getRandomDrops();
World world = entity.getBukkitEntity().getWorld();
Location loc = getLocation(entity);
for (MobDrop d : dropped) {
ItemStack stack;
if (d.isVanillaDrop) {
stack = ItemManager.createItemStack(d.vanillaType, 1, d.vanillaData);
} else {
LoreCraftableMaterial craftMat = LoreCraftableMaterial.getCraftMaterialFromId(d.craftMatId);
stack = LoreCraftableMaterial.spawn(craftMat);
}
world.dropItem(loc, stack);
}
if (this.coinMax != 0 && this.coinMin != 0) {
ExperienceOrb orb = (ExperienceOrb)world.spawn(loc, ExperienceOrb.class);
Random random = new Random();
int coins = random.nextInt(this.coinMax - this.coinMin) + this.coinMin;
orb.setExperience(coins);
}
} catch(Exception e) {
e.printStackTrace();
}
}
项目:Slimefun4
文件:XPCollector.java
protected void tick(Block b) throws Exception {
Iterator<Entity> iterator = me.mrCookieSlime.Slimefun.holograms.XPCollector.getArmorStand(b).getNearbyEntities(4D, 4D, 4D).iterator();
while (iterator.hasNext()) {
Entity n = iterator.next();
if (n instanceof ExperienceOrb) {
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
if (n.isValid()) {
int xp = getEXP(b) + ((ExperienceOrb) n).getExperience();
ChargableBlock.addCharge(b, -getEnergyConsumption());
n.remove();
int withdrawn = 0;
for (int level = 0; level < getEXP(b); level = level + 10) {
if (fits(b, new CustomItem(Material.EXP_BOTTLE, "&aFlask of Knowledge", 0))) {
withdrawn = withdrawn + 10;
pushItems(b, new CustomItem(Material.EXP_BOTTLE, "&aFlask of Knowledge", 0));
}
}
BlockStorage.addBlockInfo(b, "stored-exp", String.valueOf(xp - withdrawn));
return;
}
}
}
}
项目:xEssentials-deprecated-bukkit
文件:CleanupUnloadedChunkEvent.java
@EventHandler
public void onCleanup(ChunkUnloadEvent e) {
for(Entity entity : e.getChunk().getEntities()) {
if(entity instanceof Item) {
Item item = (Item) entity;
item.remove();
} else if(entity instanceof Monster) {
Monster monster = (Monster) entity;
monster.remove();
} else if(entity instanceof ExperienceOrb) {
ExperienceOrb orb = (ExperienceOrb) entity;
orb.remove();
}
}
}
项目:ZvP
文件:ZvPMode.java
/**
* Called when a Zombie is killed by a player
*
* @param attacker
* the {@link ZvPPlayer} who killed the zombie
* @param zombie
* the zombie {@link Entity} who is killed
*/
public void onZombieKill(final ZvPPlayer attacker, Entity zombie, EntityDeathEvent event) {
if (this.arena.getConfig().isKeepXP()) {
// entity.remove() does cancel xp spawn.
// --> spawn xp
int droppedExp = (int) Math.ceil((event.getDroppedExp() / 2.0) * this.arena.getDifficultyTool().getExpFactor());
for (int xp = 0; xp < droppedExp; xp++) {
zombie.getWorld().spawn(zombie.getLocation().clone(), ExperienceOrb.class).setExperience(1);
}
}
// Remove entity is faster than waiting for Server to do it
zombie.remove();
// Task is needed because entity.remove() is asyncron and takes longer
// therefor the scoreboard gets updated to early and needs to wait!
Bukkit.getScheduler().runTaskLater(ZvP.getInstance(), new Runnable() {
@Override
public void run() {
attacker.addKill();
}
}, 5L);
}
项目:ZvP
文件:Arena.java
public void clearArena() {
for (Entity e : getArea().getEntities()) {
if (e instanceof Monster || e instanceof Item || e instanceof ExperienceOrb) {
e.remove();
}
}
}
项目:Slimefun4-Chinese-Version
文件:AndroidKillingListener.java
@EventHandler(priority=EventPriority.HIGHEST)
public void onDeath(final EntityDeathEvent e) {
if (e.getEntity().hasMetadata("android_killer")) {
for (MetadataValue value: e.getEntity().getMetadata("android_killer")) {
final AndroidObject obj = (AndroidObject) value.value();
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@SuppressWarnings("deprecation")
@Override
public void run() {
List<ItemStack> items = new ArrayList<ItemStack>();
for (Entity n: e.getEntity().getNearbyEntities(0.5D, 0.5D, 0.5D)) {
if (n instanceof Item && !n.hasMetadata("no_pickup")) {
items.add(((Item) n).getItemStack());
n.remove();
}
}
switch (e.getEntityType()) {
case BLAZE: {
items.add(new ItemStack(Material.BLAZE_ROD, 1 + CSCoreLib.randomizer().nextInt(2)));
break;
}
case PIG_ZOMBIE: {
items.add(new ItemStack(Material.GOLD_NUGGET, 1 + CSCoreLib.randomizer().nextInt(3)));
break;
}
case SKELETON: {
if (((Skeleton) e.getEntity()).getSkeletonType().equals(SkeletonType.WITHER)) {
if (CSCoreLib.randomizer().nextInt(250) < 2) items.add(new MaterialData(Material.SKULL_ITEM, (byte) 1).toItemStack(1));
}
break;
}
default:
break;
}
obj.getAndroid().addItems(obj.getBlock(), items.toArray(new ItemStack[items.size()]));
ExperienceOrb exp = (ExperienceOrb) e.getEntity().getWorld().spawnEntity(e.getEntity().getLocation(), EntityType.EXPERIENCE_ORB);
exp.setExperience(1 + CSCoreLib.randomizer().nextInt(6));
}
}, 1L);
return;
}
}
}
项目:BackPacks
文件:BlockBreak.java
private static void drop(Material material, int amount, Location location) {
location.getWorld().dropItem(location, new ItemStack(material, amount));
ExperienceOrb exp = location.getWorld().spawn(location, ExperienceOrb.class);
exp.setExperience(1);
}
项目:Skript
文件:XpOrbData.java
@Override
protected boolean init(final @Nullable Class<? extends ExperienceOrb> c, final @Nullable ExperienceOrb e) {
xp = e == null ? -1 : e.getExperience();
return true;
}
项目:Skript
文件:XpOrbData.java
@Override
public Class<? extends ExperienceOrb> getType() {
return ExperienceOrb.class;
}
项目:Skript
文件:XpOrbData.java
@Override
protected boolean match(final ExperienceOrb entity) {
return xp == -1 || entity.getExperience() == xp;
}
项目:Skript
文件:XpOrbData.java
@Override
public void set(final ExperienceOrb entity) {
if (xp != -1)
entity.setExperience(xp);
}
项目:Slimefun4
文件:AndroidKillingListener.java
@EventHandler(priority=EventPriority.HIGHEST)
public void onDeath(final EntityDeathEvent e) {
if (e.getEntity().hasMetadata("android_killer")) {
for (MetadataValue value: e.getEntity().getMetadata("android_killer")) {
final AndroidObject obj = (AndroidObject) value.value();
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@SuppressWarnings("deprecation")
@Override
public void run() {
List<ItemStack> items = new ArrayList<ItemStack>();
for (Entity n: e.getEntity().getNearbyEntities(0.5D, 0.5D, 0.5D)) {
if (n instanceof Item && !n.hasMetadata("no_pickup")) {
items.add(((Item) n).getItemStack());
n.remove();
}
}
switch (e.getEntityType()) {
case BLAZE: {
items.add(new ItemStack(Material.BLAZE_ROD, 1 + CSCoreLib.randomizer().nextInt(2)));
break;
}
case PIG_ZOMBIE: {
items.add(new ItemStack(Material.GOLD_NUGGET, 1 + CSCoreLib.randomizer().nextInt(3)));
break;
}
case SKELETON: {
if (((Skeleton) e.getEntity()).getSkeletonType().equals(SkeletonType.WITHER)) {
if (CSCoreLib.randomizer().nextInt(250) < 2) items.add(new MaterialData(Material.SKULL_ITEM, (byte) 1).toItemStack(1));
}
break;
}
default:
break;
}
obj.getAndroid().addItems(obj.getBlock(), items.toArray(new ItemStack[items.size()]));
ExperienceOrb exp = (ExperienceOrb) e.getEntity().getWorld().spawnEntity(e.getEntity().getLocation(), EntityType.EXPERIENCE_ORB);
exp.setExperience(1 + CSCoreLib.randomizer().nextInt(6));
}
}, 1L);
return;
}
}
}
项目:Let-It-Rain
文件:Rain.java
private static boolean spawnEntities(Location location, EntityType obj, CommandSender sender, Material mat,
PotionType potionType, int amount, int radius, boolean isOnFire){
Location newLoc;
Random rdm = new Random();
try{
//Spawn entity
for (int i = 0; i < amount; i++){
newLoc = location.clone();
newLoc.setX(location.getX()+(double)rdm.nextInt(radius*2)-(double)radius);
newLoc.setY(location.getY()+(double)rdm.nextInt(250)+100.0);
newLoc.setZ(location.getZ()+(double)rdm.nextInt(radius*2)-(double)radius);
if (obj != null){
Entity creature = location.getWorld().spawn(newLoc, obj.getEntityClass());
thrownedItems.put(creature, isOnFire);
if (creature instanceof Fireball)
((Fireball)creature).setDirection(new Vector(0, -1, 0));
if (creature instanceof ExperienceOrb)
((ExperienceOrb) creature).setExperience(1000 + (int)rdm.nextFloat()*300);
if (creature instanceof TNTPrimed)
((TNTPrimed) creature).setFuseTicks(150);
if (isOnFire)
creature.setFireTicks(1000 + (int)rdm.nextFloat()*300);
}else{
ItemStack is;
if(potionType != null)
is = new Potion(potionType).toItemStack(1);
else
is = new ItemStack(mat);
location.getWorld().dropItem(newLoc, is);
}
}
}catch(Exception e){
Resources.privateMsg(sender, "This entity or world is invalid");
return false;
}
return true;
}
项目:tregmine
文件:GrinchListener.java
public void dropExp(Location loc){
((ExperienceOrb)loc.getWorld().spawn(loc, ExperienceOrb.class)).setExperience(100);
}
项目:Let-It-Rain
文件:Rain.java
private static boolean spawnEntities(Location location, EntityType obj, CommandSender sender, Material mat,
PotionType potionType, int amount, int radius, boolean isOnFire){
Location newLoc;
Random rdm = new Random();
try{
//Spawn entity
for (int i = 0; i < amount; i++){
newLoc = location.clone();
newLoc.setX(location.getX()+(double)rdm.nextInt(radius*2)-(double)radius);
newLoc.setY(location.getY()+(double)rdm.nextInt(250)+100.0);
newLoc.setZ(location.getZ()+(double)rdm.nextInt(radius*2)-(double)radius);
if (obj != null){
Entity creature = location.getWorld().spawn(newLoc, obj.getEntityClass());
thrownedItems.put(creature, isOnFire);
if (creature instanceof Fireball)
((Fireball)creature).setDirection(new Vector(0, -1, 0));
if (creature instanceof ExperienceOrb)
((ExperienceOrb) creature).setExperience(1000 + (int)rdm.nextFloat()*300);
if (creature instanceof TNTPrimed)
((TNTPrimed) creature).setFuseTicks(150);
if (isOnFire)
creature.setFireTicks(1000 + (int)rdm.nextFloat()*300);
}else{
ItemStack is;
if(potionType != null)
is = new Potion(potionType).toItemStack(1);
else
is = new ItemStack(mat);
location.getWorld().dropItem(newLoc, is);
}
}
}catch(Exception e){
Resources.privateMsg(sender, "This entity or world is invalid");
return false;
}
return true;
}
项目:Phantom
文件:W.java
/**
* Drop an experience orb
*
* @param location
* the location
* @param xp
* the amount of xp
*/
public static void dropXp(Location location, int xp)
{
((ExperienceOrb) location.getWorld().spawn(location, ExperienceOrb.class)).setExperience(xp);
}