Java 类org.bukkit.entity.FishHook 实例源码
项目:BukkitOldCombatMechanics
文件:ModuleFishingKnockback.java
@EventHandler(priority = EventPriority.HIGHEST)
public void onRodLand(ProjectileHitEvent e) {
Entity hookEntity = e.getEntity();
World world = hookEntity.getWorld();
if (!isEnabled(world)) return;
if (e.getEntityType() != EntityType.FISHING_HOOK)
return;
Entity hitent = null;
try{
hitent = e.getHitEntity();
}
catch(NoSuchMethodError e1){ //For older version that don't have such method
Collection<Entity> entities = world.getNearbyEntities(hookEntity.getLocation(), 0.25, 0.25, 0.25);
for (Entity entity : entities) {
if (entity instanceof Player)
hitent = entity;
break;
}
}
if(hitent == null) return;
if(!(hitent instanceof Player)) return;
FishHook hook = (FishHook) hookEntity;
Player rodder = (Player) hook.getShooter();
Player player = (Player) hitent;
debug("You were hit by a fishing rod!", player);
if (player.getUniqueId().equals(rodder.getUniqueId()))
return;
if(player.getGameMode() == GameMode.CREATIVE) return;
double damage = module().getDouble("damage");
if(damage < 0) damage = 0.2;
EntityDamageEvent event = makeEvent(rodder, player, damage);
Bukkit.getPluginManager().callEvent(event);
if(module().getBoolean("checkCancelled") && event.isCancelled()){
//This is to check what plugins are listening to the event
if(plugin.getConfig().getBoolean("debug.enabled")){
debug("You can't do that here!", rodder);
HandlerList hl = event.getHandlers();
for(RegisteredListener rl : hl.getRegisteredListeners())
debug("Plugin Listening: " + rl.getPlugin().getName(), rodder);
}
return;
}
player.damage(damage);
Location loc = player.getLocation().add(0, 0.5, 0);
player.teleport(loc);
player.setVelocity(loc.subtract(rodder.getLocation()).toVector().normalize().multiply(0.4));
}
项目:Wayward
文件:PlayerFishListener.java
private Vector reelVelocity(Player player, FishHook hook) {
double x = player.getLocation().getX() - hook.getLocation().getX();
double y = player.getLocation().getY() - hook.getLocation().getY();
double z = player.getLocation().getZ() - hook.getLocation().getZ();
return new Vector(x * 0.1D, y * 0.1D + Math.sqrt(Math.sqrt(x * x + y * y + z * z)) * 0.08D, z * 0.1D);
}
项目:SwornGuns
文件:Bullet.java
public Bullet(SwornGuns plugin, GunPlayer shooter, Gun shotFrom, Vector velocity)
{
this.plugin = plugin;
this.shotFrom = shotFrom;
this.shooter = shooter;
this.velocity = velocity;
this.active = true;
if (shotFrom.isThrowable())
{
ItemStack thrown = shotFrom.getMaterial().newItemStack(1);
this.projectile = shooter.getPlayer().getWorld().dropItem(shooter.getPlayer().getEyeLocation(), thrown);
this.id = projectile.getEntityId();
((Item) projectile).setPickupDelay(9999999);
this.startLocation = projectile.getLocation();
}
else
{
Class<? extends Projectile> mclass = Snowball.class;
String check = shotFrom.getProjType().toLowerCase().replaceAll("_", "").replaceAll(" ", "");
switch (check)
{
case "arrow":
mclass = Arrow.class;
break;
case "egg":
mclass = Egg.class;
break;
case "enderpearl":
mclass = EnderPearl.class;
break;
case "fireball":
mclass = Fireball.class;
break;
case "fish":
case "fishhook":
mclass = FishHook.class;
break;
case "largefireball":
mclass = LargeFireball.class;
break;
case "smallfireball":
mclass = SmallFireball.class;
break;
case "thrownexpbottle":
mclass = ThrownExpBottle.class;
break;
case "thrownpotion":
mclass = ThrownPotion.class;
break;
case "witherskull":
mclass = WitherSkull.class;
break;
default:
break;
}
this.projectile = shooter.getPlayer().launchProjectile(mclass);
this.id = projectile.getEntityId();
((Projectile) projectile).setShooter(shooter.getPlayer());
this.startLocation = projectile.getLocation();
}
if (shotFrom.getReleaseTime() == -1)
{
this.releaseTime = 80 + (shotFrom.isThrowable() ? 0 : 1) * 400;
}
else
{
this.releaseTime = shotFrom.getReleaseTime();
}
}