Java 类org.bukkit.util.Vector 实例源码
项目:ProjectAres
文件:RegionDefinitionParser.java
private Region parseHalves(Element el, double dir) throws InvalidXMLException {
final List<HalfspaceRegion> halves = new ArrayList<>();
XMLUtils.parseNumber(el, "x", Double.class).infinity(true).optional().ifPresent(x ->
halves.add(new HalfspaceRegion(new Vector(x, 0, 0), new Vector(dir, 0, 0)))
);
XMLUtils.parseNumber(el, "y", Double.class).infinity(true).optional().ifPresent(y ->
halves.add(new HalfspaceRegion(new Vector(0, y, 0), new Vector(0, dir, 0)))
);
XMLUtils.parseNumber(el, "z", Double.class).infinity(true).optional().ifPresent(z ->
halves.add(new HalfspaceRegion(new Vector(0, 0, z), new Vector(0, 0, dir)))
);
if(halves.isEmpty()) {
throw new InvalidXMLException("Expected at least one of x, y, or z attributes", el);
}
return new Intersection(halves);
}
项目:MystiCraft
文件:TargetedProjectile.java
@Override
public void onTick() {
if (target.isDead()) {
return;
}
double speed = this.entity.getVelocity().length() * 0.9D + 0.14D;
Vector velocity = null;
Vector direction = this.entity.getVelocity().clone().normalize();
Vector targetDirection = this.target.getLocation().clone().add(new Vector(0, 0.5D, 0))
.subtract(this.entity.getLocation()).toVector();
Vector targetDirectionNorm = targetDirection.clone().normalize();
double angle = direction.angle(targetDirectionNorm);
if (angle < 0.12D) {
velocity = direction.clone().multiply(speed);
} else {
velocity = direction.clone().multiply((angle - 0.12D) / angle)
.add(targetDirectionNorm.clone().multiply(0.12D / angle)).normalize().multiply(speed);
}
this.entity.setVelocity(velocity.add(new Vector(0.0D, 0.03D, 0.0D)));
}
项目:MultiLineAPI
文件:HitboxUtil.java
public static BoundingBoxWrapper getBB(Entity forWhat) {
try {
Object aaBb = getBB.invoke(getHandle.invoke(craftEntity.cast(forWhat)));
double[] c = new double[]{
(double) coordinates[0].get(aaBb),
(double) coordinates[1].get(aaBb),
(double) coordinates[2].get(aaBb),
(double) coordinates[3].get(aaBb),
(double) coordinates[4].get(aaBb),
(double) coordinates[5].get(aaBb)
};
BoundingBoxWrapper box = new BoundingBoxWrapper(new Vector(c[0], c[1], c[2]), new Vector(c[3], c[4],
c[5]));
box.unshift(forWhat.getLocation());
return box;
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
return null;
}
}
项目:AgarMC
文件:PlayerCell.java
public void ejectMass() {
if(!action) return;
if(mass >= 32) {
mass -= 16;
final StaticCell cell = new StaticCell(12, getX(), getY());
cell.setInvinsible(true);
int size = (int) (Math.floor(Math.cbrt(this.mass)));
if (size < 3)
size = 3;
Vector vector = player.getPlayer().getLocation().getDirection().setY(0).normalize().multiply((double)size / 1.5D);
cell.setVelocity(vector);
AgarMC plugin = AgarMC.get();
plugin.getGame().addStaticCell(cell);
plugin.getServer().getScheduler().runTaskLater(plugin, () -> cell.setInvinsible(false), 10L);
recalculateSize();
}
}
项目:AntiCheat
文件:KillAuraTask.java
public KillAuraTask(final Player player)
{
super(player, true);
this.touched = new HashMap<>();
this.angles = new HashMap<>();
this.positionsTemplate = new ArrayList<>();
this.nextTest = System.currentTimeMillis();
this.numberDisplayed = 1;
this.activeCheck = true;
this.isTouched = false;
this.positionsTemplate.add(new Vector(3, 2.5, 1.5));
this.positionsTemplate.add(new Vector(2.5, 1, -2));
this.positionsTemplate.add(new Vector(0, 0.5, 4));
this.positionsTemplate.add(new Vector(0, 4, -2.5));
this.positionsTemplate.add(new Vector(0, 4, 2.5));
this.positionsTemplate.add(new Vector(3, 0.5, -3));
this.positionsTemplate.add(new Vector(-4, 0.5, 2));
this.positionsTemplate.add(new Vector(0, 4.5, 0));
this.positionsTemplate.add(new Vector(3, 0.2, 3));
this.positionsTemplate.add(new Vector(-2, 4.5, 0));
this.resetAngles();
}
项目:ZentrelaRPG
文件:ColoredHeartEffect.java
@Override
public void onRun() {
Location location = getLocation();
location.add(0, 0.5, 0);
for (int i = 0; i < particles; i++) {
float alpha = ((MathUtils.PI / compilation) / particles) * i;
double phi = Math.pow(Math.abs(MathUtils.sin(2 * compilation * alpha)) + factorInnerSpike * Math.abs(MathUtils.sin(compilation * alpha)), 1 / compressYFactorTotal);
Vector vector = new Vector();
vector.setY(phi * (MathUtils.sin(alpha) + MathUtils.cos(alpha)) * yFactor);
vector.setZ(phi * (MathUtils.cos(alpha) - MathUtils.sin(alpha)) * zFactor);
VectorUtils.rotateVector(vector, 0, -location.getYaw() * MathUtils.degreesToRadians + (Math.PI / 2f), 0);
display(particle, location.add(vector), this.clr);
location.subtract(vector);
}
}
项目:ProjectAres
文件:EventRule.java
EventRuleImpl(EventRuleScope scope,
Region region,
Filter filter,
Kit kit,
boolean lendKit,
Vector velocity,
@Nullable BaseComponent message,
boolean earlyWarning) {
this.scope = scope;
this.region = region;
this.filter = filter;
this.kit = kit;
this.lendKit = lendKit;
this.velocity = velocity;
this.message = message;
this.earlyWarning = earlyWarning;
}
项目:ZentrelaRPG
文件:QuadBeamSpell.java
private ArrayList<Vector> getVectorsNormal(LivingEntity e) {
ArrayList<Vector> vectors = new ArrayList<Vector>();
Vector v = e.getEyeLocation().getDirection().normalize();
v.setY(0);
vectors.add(v);
double z = v.getZ();
double x = v.getX();
double radians = Math.atan(z / x);
if (x < 0)
radians += Math.PI;
for (int k = 1; k < 4; k++) {
Vector v2 = new Vector();
v2.setY(v.getY());
v2.setX(Math.cos(radians + k * Math.PI / 2));
v2.setZ(Math.sin(radians + k * Math.PI / 2));
vectors.add(v2.normalize());
}
return vectors;
}
项目:ZentrelaRPG
文件:GrappleManager.java
public void pullEntityToLocation(Entity e, Location loc) {
Location entityLoc = e.getLocation();
entityLoc.setY(entityLoc.getY() + 0.5D);
e.teleport(entityLoc);
double g = -0.08D;
if (loc.getWorld() != entityLoc.getWorld())
return;
double d = loc.distance(entityLoc);
double t = d;
double v_x = (1.0D + 0.07000000000000001D * t) * (loc.getX() - entityLoc.getX()) / t;
double v_y = (1.0D + 0.03D * t) * (loc.getY() - entityLoc.getY()) / t - 0.5D * g * t;
double v_z = (1.0D + 0.07000000000000001D * t) * (loc.getZ() - entityLoc.getZ()) / t;
Vector v = e.getVelocity();
v.setX(v_x);
v.setY(v_y);
v.setZ(v_z);
e.setVelocity(v);
e.setFallDistance(0f);
}
项目:SkyWarsReloaded
文件:Game.java
public void launchFireworkDisplay(final World w, final Location loc) {
Firework fw = (Firework) w.spawn(loc.clone().add(new Vector(getRandomNum(5, -5), 1, getRandomNum(5, -5))), Firework.class);
FireworkMeta meta = fw.getFireworkMeta();
FireworkEffect effect = SkyWarsReloaded.getNMS().getFireworkEffect(getRandomColor(),getRandomColor(), getRandomColor(), getRandomColor(), getRandomColor(), getRandomType());
meta.addEffect(effect);
meta.setPower(getRandomNum(4, 1));
fw.setFireworkMeta(meta);
fireworksCount++;
if (fireworksCount < ((SkyWarsReloaded.getCfg().getTimeAfterGame() - 5)*4)) {
SkyWarsReloaded.get().getServer().getScheduler().scheduleSyncDelayedTask(SkyWarsReloaded.get(), new Runnable() {
public void run() {
launchFireworkDisplay(w, loc);
}
}, 5);
}
}
项目:AlphaLibary
文件:ArmorstandFakeUtil.java
/**
* Teleport a {@link FakeArmorstand} to a specific {@link Location} in certain intervals, which is visible for all Players
*
* @param p the {@link Player} to teleport the {@link FakeArmorstand} for
* @param to the {@link Location} where the {@link FakeArmorstand} should be teleported to
* @param teleportCount the amount of teleportation that should be made
* @param wait the amount of time to wait 'till the next teleport starts
* @param armorstand the {@link FakeArmorstand} which should be teleported
*/
public static void splitTeleportArmorstand(final Player p, final Location to, final int teleportCount, final long wait, final FakeArmorstand armorstand) {
final Location currentLocation = armorstand.getCurrentlocation();
Vector between = to.toVector().subtract(currentLocation.toVector());
final double toMoveInX = between.getX() / teleportCount;
final double toMoveInY = between.getY() / teleportCount;
final double toMoveInZ = between.getZ() / teleportCount;
SPLIT_MAP.put(p.getName(), new BukkitRunnable() {
public void run() {
if (!LocationUtil.isSameLocation(currentLocation, to)) {
teleportArmorstand(p, currentLocation.add(new Vector(toMoveInX, toMoveInY, toMoveInZ)), armorstand);
} else
this.cancel();
}
}.runTaskTimer(AlphaLibary.getInstance(), 0, wait));
}
项目:AddGun
文件:Animation.java
public void run() {
Vector headMove = null;
if (this.start == 0l) {
// start
headMove = start();
} else if (!isDone()) {
// continue;
headMove = step();
} else { // done
throw new RuntimeException("Done this animation");
}
if (player != null) {
Location bloc = player.getEyeLocation().clone();
Location loc = player.getEyeLocation().clone().setDirection(bloc.getDirection().clone().add(headMove));
((CraftPlayer)player).getHandle().playerConnection.sendPacket(new PacketPlayOutPosition(0.0, 0.0, 0.0, loc.getYaw() - bloc.getYaw(), loc.getPitch() - bloc.getPitch(), flags, 99));
}
}
项目:AlphaLibary
文件:BigItemFakeUtil.java
/**
* Teleport a {@link FakeBigItem} to a specific {@link Location} in certain intervals, which is visible for all Players
*
* @param p the {@link Player} to teleport the {@link FakeBigItem} for
* @param to the {@link Location} where the {@link FakeBigItem} should be teleported to
* @param teleportCount the amount of teleportation that should be made
* @param wait the amount of time to wait 'till the next teleport starts
* @param item the {@link FakeBigItem} which should be teleported
*/
public static void splitTeleportBigItem(final Player p, final Location to, final int teleportCount, final long wait, final FakeBigItem item) {
final Location currentLocation = item.getCurrentlocation();
Vector between = to.toVector().subtract(currentLocation.toVector());
final double toMoveInX = between.getX() / teleportCount;
final double toMoveInY = between.getY() / teleportCount;
final double toMoveInZ = between.getZ() / teleportCount;
SPLIT_MAP.put(p.getName(), new BukkitRunnable() {
public void run() {
if (!LocationUtil.isSameLocation(currentLocation, to)) {
teleportBigItem(p, currentLocation.add(new Vector(toMoveInX, toMoveInY, toMoveInZ)), item);
} else
this.cancel();
}
}.runTaskTimer(AlphaLibary.getInstance(), 0, wait));
}
项目:Hub
文件:StepEffect.java
@Override
public void onRun()
{
// Prevents an excess of particles
if (last != null && last.getX() == getEntity().getLocation().getX() && last.getZ() == getEntity().getLocation().getZ())
return;
last = getEntity().getLocation();
Block block = this.getEntity().getLocation().add(0, -0.4, 0).getBlock();
Material type = block.getType();
// If the step should be displayed or not
if (type.isBlock() && type.isSolid() && !type.isTransparent()) {
Location loc = getEntity().getLocation();
loc.setY(block.getY());
loc = loc.add(0, 1 + Math.random() / 100, 0);
Vector dir = VectorUtils.rotateAroundAxisY(getEntity().getLocation().getDirection().setY(0).normalize(), p ? 90 : -90).multiply(0.25);
display(ParticleEffect.FOOTSTEP, loc.add(dir.getX(), 0, dir.getZ()), 7, 0);
p = !p;
}
}
项目:DungeonGen
文件:DunGen.java
/**Dungeon activation function called when a player gives the /start command. Calls the genEntry() function at that players position.
* @param p The player that gave the /start command.
*/
private void startDungeon(Player p) {
// calc starting location in front of player on level ground:
// also check if ground is solid. if not then paste over the gras etc.
int initDist = 10; // distance to player
Vector start = new Vector(p.getLocation().getBlockX(),p.getLocation().getBlockY(),p.getLocation().getBlockZ());
Direc playerDirec = Helper.getPlayerDirec(p);
int deltaX = (int)Math.round(-Helper.sind(playerDirec.degree())*initDist);
int deltaZ = (int)Math.round(+Helper.cosd(playerDirec.degree())*initDist);
start.add(new Vector(deltaX,0,deltaZ));
int solidOffset = 0;
if (world.getHighestBlockAt(start.getBlockX(), start.getBlockZ()).getType().isSolid()) {
solidOffset = 1;
}
start.setY(world.getHighestBlockYAt(start.getBlockX(), start.getBlockZ())+solidOffset);
genEntry(start, playerDirec);
}
项目:ProjectAres
文件:BlockDropsMatchModule.java
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onBlockPunch(BlockPunchEvent event) {
final MatchPlayer player = getMatch().getPlayer(event.getPlayer());
if(player == null) return;
RayBlockIntersection hit = event.getIntersection();
BlockDrops drops = getRuleSet().getDrops(event, hit.getBlock().getState(), player.getParticipantState());
if(drops == null) return;
MaterialData oldMaterial = hit.getBlock().getState().getData();
replaceBlock(drops, hit.getBlock(), player);
// Play a fake punching effect if the block is punchable. Use raw particles instead of
// playBlockBreakEffect so the position is precise rather than in the block center.
Object packet = NMSHacks.blockCrackParticlesPacket(oldMaterial, false, hit.getPosition(), new Vector(), 0, 5);
for(MatchPlayer viewer : getMatch().getPlayers()) {
if(viewer.getBukkit().getEyeLocation().toVector().distanceSquared(hit.getPosition()) < 16 * 16) {
NMSHacks.sendPacket(viewer.getBukkit(), packet);
}
}
NMSHacks.playBlockPlaceSound(hit.getBlock().getWorld(), hit.getPosition(), oldMaterial.getItemType(), 1);
dropObjects(drops, player, hit.getPosition().toLocation(hit.getBlock().getWorld()), 1d, false);
}
项目:BlockBall
文件:HubGameEntity.java
@Override
public void run() {
if (!this.arena.isEnabled())
return;
this.timer--;
if (this.timer <= 0) {
for (final Entity entity : this.arena.getBallSpawnLocation().getWorld().getEntities()) {
if (!(entity instanceof Player) && !(entity instanceof Rabbit) && !(entity instanceof ArmorStand) && !this.isCustomDrop(entity)) {
if (this.arena.isLocationInArea(entity.getLocation())) {
final Vector vector = Config.getInstance().getEntityProtectionVelocity();
entity.getLocation().setDirection(vector);
entity.setVelocity(vector);
}
}
}
this.updateSigns();
this.fixCachedRangePlayers();
if (this.arena.getTeamMeta().isSpectatorMessagesEnabled()) {
for (final Player player : this.getPlayersInRange()) {
if (!this.playData.contains(player))
this.playData.add(player);
}
this.arena.getTeamMeta().getScoreboard().play(null, this.redGoals, this.blueGoals, this.getPlayersInRange());
} else {
this.arena.getTeamMeta().getScoreboard().play(null, this.redGoals, this.blueGoals, this.getPlayers());
}
this.timer = 20;
}
super.run();
}
项目:OpenRPG
文件:Region.java
protected Region(String name, Location pos1, Location pos2, int levelMin, int levelMax) {
if (pos1 != null && pos2 != null) {
if (pos1.getWorld() != null && pos2.getWorld() != null) {
if (!pos1.getWorld().getUID().equals(pos2.getWorld().getUID())) {
throw new IllegalStateException("The 2 locations of the region must be in the same world!");
}
} else {
throw new NullPointerException("One/both of the worlds is/are null!");
}
this.worldName = pos1.getWorld().getName();
double x1 = Math.min(pos1.getX(), pos2.getX());
double y1 = Math.min(pos1.getY(), pos2.getY());
double z1 = Math.min(pos1.getZ(), pos2.getZ());
double x2 = Math.max(pos1.getX(), pos2.getX());
double y2 = Math.max(pos1.getY(), pos2.getY());
double z2 = Math.max(pos1.getZ(), pos2.getZ());
this.min = new Vector(x1, y1, z1);
this.max = new Vector(x2, y2, z2);
}
if (levelMax < 0 || levelMin < 0) {
throw new IllegalArgumentException("Max/min level cannot be less than 0!");
}
if (levelMax < levelMin) {
throw new IllegalArgumentException("Max level cannot be less than min level!");
}
this.levelMin = levelMin;
this.levelMax = levelMax;
this.name = name;
this.npcs = new HashMap<>();
this.rewards = new ArrayList<>();
this.id = IDs++;
}
项目:ProjectAres
文件:WoolMatchModule.java
private MonumentWool findMonumentWool(Vector point) {
for(MonumentWool wool : this.wools) {
if(wool.getDefinition().getPlacementRegion().contains(point)) {
return wool;
}
}
return null;
}
项目:uppercore
文件:RayTrace.java
public boolean intersects(Vector min, Vector max, double blocksAway, double accuracy) {
List<Vector> positions = traverse(blocksAway, accuracy);
for (Vector position : positions) {
if (intersects(position, min, max))
return true;
}
return false;
}
项目:Transport-Pipes
文件:VanillaPipeEWModel.java
private List<ArmorStandData> createExtractionASD() {
List<ArmorStandData> asds = new ArrayList<>();
ItemStack block = ITEM_EXTRACTION_BLOCK;
asds.add(new ArmorStandData(new RelLoc(0.05f, -0.35f, 0.5f - 0.44f), new Vector(1, 0, 0), false, null, ITEM_BLAZE, new Vector(0f, 0f, 0f), new Vector(-10f, 0f, 45f)));
asds.add(new ArmorStandData(new RelLoc(0.05f, -1.0307f, 0.5f - 0.86f), new Vector(1, 0, 0), false, null, ITEM_BLAZE, new Vector(0f, 0f, 0f), new Vector(-10f, 0f, 135f)));
asds.add(new ArmorStandData(new RelLoc(0.05f, -1.0307f - 0.45f, 0.5f - 0.37f), new Vector(1, 0, 0), false, null, ITEM_BLAZE, new Vector(0f, 0f, 0f), new Vector(-10f, 0f, 135f)));
asds.add(new ArmorStandData(new RelLoc(0.05f, -0.35f - 0.45f, 0.5f - 0.93f), new Vector(1, 0, 0), false, null, ITEM_BLAZE, new Vector(0f, 0f, 0f), new Vector(-10f, 0f, 45f)));
asds.add(new ArmorStandData(new RelLoc(0.55f - 0.3f, -0.43f, 0.5f), new Vector(1, 0, 0), true, block, null, new Vector(0f, 0f, 0f), new Vector(0f, 0f, 0f)));
asds.add(new ArmorStandData(new RelLoc(0.55f + 0.2f, -0.43f, 0.5f), new Vector(1, 0, 0), true, block, null, new Vector(0f, 0f, 0f), new Vector(0f, 0f, 0f)));
return asds;
}
项目:uppercore
文件:BoundingBox.java
public Vector midPoint(){
return new Vector(
(minX + maxX) / 2.0,
(minY + maxY) / 2.0,
(minZ + maxZ) / 2.0
);
}
项目:RPGPlus
文件:Effects.java
public static void heartBeam(PlayerInteractEvent event) {
final Player player = event.getPlayer();
List<String> combo = Datafiles.getCombos(event.getPlayer().getName());
new BukkitRunnable() {
double t = 0;
Location loc = player.getLocation();
Vector direction = loc.getDirection().normalize();
public void run() {
t = t + 0.5;
double x = direction.getX() * t;
double y = direction.getY() * t + 1.5;
double z = direction.getZ() * t;
loc.add(x, y, z);
ParticleEffect.HEART.display(0, 0, 0, 4, 5, loc, 30);
for(Entity e: loc.getChunk().getEntities()){
if(e.getLocation().distance(loc) < 1.0){
if(!e.equals(player)){
if(e instanceof Player){
Player p = (Player) e;
p.setHealth(p.getHealth()-10);
}
}
}
}
loc.subtract(x, y, z);
if(t == 0.5){
ActionBarAPI.sendActionBar(player, "§c§lHEAL SPELL §7§lACTIVATED");
}
if (t > 30) {
this.cancel();
Location loc1 = new Location(player.getWorld(), x, y, z);
Bukkit.getWorld(player.getWorld().getName()).createExplosion(loc1, 4.0F);
}
}
}.runTaskTimer(Main.getInstance(), 0, 1);
}
项目:ProjectAres
文件:RocketUtils.java
public static void takeOff(Player observer, Location loc) {
for(int i = 0; i < GizmoConfig.SMOKE_COUNT; i++) {
double angle = 2 * Math.PI * i / GizmoConfig.SMOKE_COUNT;
Location base = loc.clone().add(new Vector(GizmoConfig.SMOKE_RADIUS * Math.cos(angle), 0, GizmoConfig.SMOKE_RADIUS * Math.sin(angle)));
for(int j = 0; j <= 8; j++) {
observer.playEffect(base, Effect.SMOKE, j);
}
}
}
项目:KingdomFactions
文件:Leap.java
@Override
public void execute(KingdomFactionsPlayer player) {
noFallDamage.add(player.getName());
double forwardPowerModifier = 1.5D;
double upwardPowerModifier = forwardPowerModifier * 2.0D;
double fwv = 2.0D;
double uwv = 0.7D;
Vector dir = player.getLocation().getDirection();
dir.setY(0).normalize().multiply(fwv * forwardPowerModifier).setY(uwv * upwardPowerModifier);
player.getPlayer().setVelocity(dir);
final World w = player.getPlayer().getWorld();
w.playSound(player.getLocation(), Sound.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
new BukkitRunnable() {
int autoStopCount = 0;
@SuppressWarnings("deprecation")
public void run() {
if ((this.autoStopCount <= 30) && (Leap.noFallDamage.contains(player.getName()))
&& (Bukkit.getPlayer(player.getName()) != null)
&& (!Bukkit.getPlayer(player.getName()).isOnGround())) {
Player p = Bukkit.getPlayer((player.getName()));
w.playEffect(p.getLocation(), Effect.ENDER_SIGNAL, 1);
this.autoStopCount += 1;
} else {
if ((Leap.noFallDamage.contains(player.getName()))) {
Leap.noFallDamage.remove(player.getName());
}
cancel();
}
}
}.runTaskTimer(KingdomFactionsPlugin.getInstance(), 5L, 3L);
}
项目:PetBlocks
文件:OwnerPathfinder.java
/**
* Calculates the navigation path and returns true if found.
*
* @return success
*/
@Override
public boolean a() {
if (this.player == null) {
return this.path != null;
}
if (!this.entity.getWorld().getWorldData().getName().equals(this.player.getWorld().getName())) {
this.entity.getBukkitEntity().teleport(this.player.getLocation());
} else if (this.entity.getBukkitEntity().getLocation().distance(this.player.getLocation()) > ConfigPet.getInstance().getBlocksAwayFromPlayer()) {
this.counter2 = PetBlockHelper.afraidWaterEffect(this.petBlock, this.counter2);
final Location targetLocation = this.player.getLocation();
this.entity.getNavigation().m();
this.entity.getNavigation();
this.path = this.entity.getNavigation().a(targetLocation.getX() + 1, targetLocation.getY(), targetLocation.getZ() + 1);
this.entity.getNavigation();
if (this.entity.getBukkitEntity().getLocation().distance(this.player.getLocation()) > ConfigPet.getInstance().getFollow_maxRangeTeleport())
this.entity.getBukkitEntity().teleport(this.player.getLocation());
if (Math.abs(this.entity.getBukkitEntity().getLocation().getY() - targetLocation.getY()) >= 2) {
this.counter++;
} else {
this.counter = 0;
}
if (this.counter > 5) {
this.entity.getBukkitEntity().setVelocity(new Vector(0.1, (float) ConfigPet.getInstance().getModifier_petclimbing() * 0.1, 0.1));
this.counter = 0;
}
if (this.path != null) {
this.c();
}
}
return this.path != null;
}
项目:Transport-Pipes
文件:ModelledPipeEXTRACTIONModel.java
@Override
public ArmorStandData createConnASD(ModelledPipeConnModelData data) {
ItemStack hoe = data.isIron_ExtractionPipe_ActiveSide() ? ITEM_HOE_CONN_EXTRACTION_CLOSED : ITEM_HOE_CONN_EXTRACTION_OPENED;
ArmorStandData asd;
if (data.getConnDirection() == WrappedDirection.UP) {
asd = new ArmorStandData(new RelLoc(0.75f, 0.5f - 1.4369f, 0.5f), new Vector(1, 0, 0), false, hoe, null, new Vector(-90f, 0f, 0f), new Vector(0f, 0f, 0f));
} else if (data.getConnDirection() == WrappedDirection.DOWN) {
asd = new ArmorStandData(new RelLoc(0.25f, 0.5f - 1.1885f - 0.25f, 0.5f), new Vector(1, 0, 0), false, hoe, null, new Vector(90f, 0f, 0f), new Vector(0f, 0f, 0f));
} else {
asd = new ArmorStandData(new RelLoc(0.5f, 0.5f - 1.1875f, 0.5f), new Vector(data.getConnDirection().getX(), 0, data.getConnDirection().getZ()), false, hoe, null, new Vector(180f, 180f, 0f), new Vector(0f, 0f, 0f));
}
return asd;
}
项目:ZentrelaRPG
文件:InfernoTagEffect.java
@Override
public void onRun() {
if (font == null) {
cancel();
return;
}
Location location = getLocation();
location.add(0, 1.2, 0);
if(!lockedYaw) {
yaw = -location.getYaw();
dir = location.getDirection();
dir = dir.normalize().setY(0);
lockedYaw = true;
}
location.add(dir);
try {
if (image == null) {
image = StringParser.stringToBufferedImage(font, text);
}
for (int y = 0; y < image.getHeight(); y += stepY) {
for (int x = 0; x < image.getWidth(); x += stepX) {
int clr = image.getRGB(image.getWidth() - 1 - x, y);
if (clr != Color.black.getRGB())
continue;
Vector v = new Vector((float) image.getWidth() / 2 - x, (float) image.getHeight() / 2 - y, 0).multiply(size);
VectorUtils.rotateAroundAxisY(v, yaw * MathUtils.degreesToRadians);
display(particle, location.add(v));
location.subtract(v);
}
}
} catch (Exception ex) {
cancel(true);
}
}
项目:BlockBall
文件:GameListener.java
/**
* Gets called when a player interacts with a ball
*
* @param event event
*/
@EventHandler
public void ballInteractEvent(BallInteractEvent event) {
final Game game;
if ((game = this.controller.getGameFromBall(event.getBall())) != null) {
final GameEntity entity = (GameEntity) game;
if (entity.ballPreviousCacheLocation != null && entity.ballPreviousCacheLocation.distance(event.getBall().getLocation().toVector()) < 2) {
entity.ballCornerBumper++;
} else {
entity.ballCornerBumper = 0;
}
if (entity.ballCornerBumper >= 3) {
final Vector direction = entity.arena.getBallSpawnLocation().toVector().subtract(event.getBall().getLocation().toVector());
int x = 1;
int z = 1;
if (direction.getX() < 0)
x = -1;
if (direction.getZ() < 0)
z = -1;
event.getBall().teleport(new Location(event.getBall().getLocation().getWorld(), event.getBall().getLocation().getX() + x, event.getBall().getLocation().getY(), event.getBall().getLocation().getZ() + z));
entity.ballCornerBumper = 0;
}
entity.ballPreviousCacheLocation = event.getBall().getLocation().toVector();
if (entity.blueTeam.contains(event.getPlayer())) {
entity.lastHitTeam = Team.BLUE;
} else {
entity.lastHitTeam = Team.RED;
}
entity.lastHit = event.getPlayer();
}
}
项目:ProjectAres
文件:CoreMatchModule.java
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void lavaProtection(final BlockTransformEvent event) {
if(event.getWorld() != this.match.getWorld()) return;
Vector blockVector = BlockUtils.center(event.getNewState()).toVector();
for(Core core : this.cores) {
if(core.getLavaRegion().contains(blockVector)) {
event.setCancelled(true);
}
}
}
项目:ProjectAres
文件:Vectors.java
public static @Nonnull Vector calculateLookVector(@Nonnull Location location) {
double pitch = Math.toRadians(location.getPitch());
double yaw = Math.toRadians(location.getYaw());
Vector normal = new Vector(
-(Math.cos(pitch) * Math.sin(yaw)),
-Math.sin(pitch),
Math.cos(pitch) * Math.cos(yaw)
);
return normal;
}
项目:ProjectAres
文件:DirectedPitchProvider.java
@Override
public float getAngle(Vector from) {
double dx = this.target.getX() - from.getX();
double dz = this.target.getZ() - from.getZ();
double distance = Math.sqrt(dx * dx + dz * dz);
double dy = this.target.getY() - (from.getY() + 1.62); // add eye height so player actually looks at point
return (float) Math.toDegrees(Math.atan2(-dy, distance));
}
项目:VoxelGamesLibv2
文件:JumpPadFeature.java
@GameEvent
public void onStep(@Nonnull PlayerInteractEvent event) {
if (event.getAction() == Action.PHYSICAL) {
if (event.getClickedBlock().getType() != Material.WOOD_PLATE && event.getClickedBlock().getType() != Material.STONE_PLATE) {
return;
}
if (event.isCancelled()) {
return;
}
double strength = 1.5;
double up = 1;
if (event.getClickedBlock().getRelative(BlockFace.DOWN, 2).getState() instanceof Sign) {
Sign sign = (Sign) event.getClickedBlock().getRelative(BlockFace.DOWN, 2).getState();
if (sign.getLine(0).contains("[Boom]")) {
try {
strength = Double.parseDouble(sign.getLine(1));
up = Double.parseDouble(sign.getLine(2));
} catch (final Exception ex) {
log.warning("Invalid boom sign at " + sign.getLocation());
}
}
}
event.getPlayer().playSound(event.getPlayer().getLocation(), Sound.ENTITY_ENDERDRAGON_SHOOT, 10.0F, 1.0F);
event.getPlayer().playEffect(event.getPlayer().getLocation(), Effect.SMOKE, 10);
Vector v = event.getPlayer().getLocation().getDirection().multiply(strength / 2).setY(up / 2);
event.getPlayer().setVelocity(v);
event.setCancelled(true);
}
}
项目:Absorption
文件:AbstractGunAmo.java
@Override
public void check() {
super.check();
for(int y = 0; y <= 4; y++) {
for(int x = 0; x <= 1; x++) {
for(int z = 0; z <= 1; z++) {
Vector vector = armorStand.getVelocity().setY(0).normalize();
for(int i = 0; i <= 3; i++) {
Absorption.get().getGame().paintBlock(armorStand.getLocation().add(1 - x / 2 - vector.clone().multiply(i).getX(), -y, 1 - z / 2 - vector.clone().multiply(i).getZ()).getBlock(), COLOR);
}
}
}
}
}
项目:AlphaLibary
文件:RayParticleForm.java
public RayParticleForm(Effect effect, EffectData<?> effectData, Location location, Vector direction, double dense, double lenght) {
super(location, direction, dense, lenght, null);
if (effectData != null)
Validate.isTrue(effect.getData() != null && effect.getData().isAssignableFrom(effectData.getDataValue().getClass()), "Wrong kind of effectData for this effect!");
else {
Validate.isTrue(effect.getData() == null, "Wrong kind of effectData for this effect!");
effectData = new EffectData<>(null);
}
EffectData<?> finalEffectData = effectData;
setAction((p, loc) -> p.playEffect(loc, effect, finalEffectData.getDataValue()));
}
项目:ProjectAres
文件:TNTMatchModule.java
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void dispenserNukes(BlockTransformEvent event) {
BlockState oldState = event.getOldState();
if(oldState instanceof Dispenser &&
this.properties.dispenserNukeLimit > 0 &&
this.properties.dispenserNukeMultiplier > 0 &&
event.getCause() instanceof EntityExplodeEvent) {
EntityExplodeEvent explodeEvent = (EntityExplodeEvent) event.getCause();
Dispenser dispenser = (Dispenser) oldState;
int tntLimit = Math.round(this.properties.dispenserNukeLimit / this.properties.dispenserNukeMultiplier);
int tntCount = 0;
for(ItemStack stack : dispenser.getInventory().contents()) {
if(stack != null && stack.getType() == Material.TNT) {
int transfer = Math.min(stack.getAmount(), tntLimit - tntCount);
if(transfer > 0) {
stack.setAmount(stack.getAmount() - transfer);
tntCount += transfer;
}
}
}
tntCount = (int) Math.ceil(tntCount * this.properties.dispenserNukeMultiplier);
for(int i = 0; i < tntCount; i++) {
TNTPrimed tnt = this.getMatch().getWorld().spawn(BlockUtils.base(dispenser), TNTPrimed.class);
tnt.setFuseTicks(10 + this.getMatch().getRandom().nextInt(10)); // between 0.5 and 1.0 seconds, same as vanilla TNT chaining
Random random = this.getMatch().getRandom();
Vector velocity = new Vector(random.nextGaussian(), random.nextGaussian(), random.nextGaussian()); // uniform random direction
velocity.normalize().multiply(0.5 + 0.5 * random.nextDouble());
tnt.setVelocity(velocity);
callPrimeEvent(tnt, explodeEvent.getEntity(), false);
}
}
}
项目:ZentrelaRPG
文件:FlashI.java
@Override
public boolean cast(final Player p, final PlayerDataRPG pd, final int level) {
final Location start = p.getLocation().add(0, p.getEyeHeight() * 0.1, 0);
Location permStart = p.getLocation().add(0, p.getEyeHeight() * 0.1, 0).clone();
Location loc = start;
Vector direction = p.getLocation().getDirection().normalize();
direction.setY(0);
int length = 5;
Location prev = null;
for (int k = 0; k < length; k++) {
Location temp = loc.clone();
loc = loc.add(direction);
if (loc.getBlock().getType().isSolid())
break;
prev = temp.clone();
}
if (prev != null) {
RParticles.show(ParticleEffect.EXPLOSION_NORMAL, permStart, 10);
RParticles.show(ParticleEffect.EXPLOSION_NORMAL, prev, 10);
p.teleport(prev);
} else {
p.sendMessage(ChatColor.RED + "You can't flash through walls!");
return false;
}
Spell.notify(p, "You instantly teleport a short distance.");
return true;
}
项目:PetBlocks
文件:OwnerPathfinder.java
/**
* Calculates the navigation path and returns true if found.
*
* @return success
*/
@Override
public boolean a() {
if (this.player == null) {
return this.path != null;
}
if (!this.entity.getWorld().getWorldData().getName().equals(this.player.getWorld().getName())) {
this.entity.getBukkitEntity().teleport(this.player.getLocation());
} else if (this.entity.getBukkitEntity().getLocation().distance(this.player.getLocation()) > ConfigPet.getInstance().getBlocksAwayFromPlayer()) {
this.counter2 = PetBlockHelper.afraidWaterEffect(this.petBlock, this.counter2);
final Location targetLocation = this.player.getLocation();
this.entity.getNavigation().o();
this.entity.getNavigation();
this.path = this.entity.getNavigation().a(targetLocation.getX() + 1, targetLocation.getY(), targetLocation.getZ() + 1);
this.entity.getNavigation();
if (this.entity.getBukkitEntity().getLocation().distance(this.player.getLocation()) > ConfigPet.getInstance().getFollow_maxRangeTeleport())
this.entity.getBukkitEntity().teleport(this.player.getLocation());
if (Math.abs(this.entity.getBukkitEntity().getLocation().getY() - targetLocation.getY()) >= 2) {
this.counter++;
} else {
this.counter = 0;
}
if (this.counter > 5) {
this.entity.getBukkitEntity().setVelocity(new Vector(0.1, ConfigPet.getInstance().getModifier_petclimbing() * 0.1, 0.1));
this.counter = 0;
}
if (this.path != null) {
this.c();
}
}
return this.path != null;
}
项目:PetBlocks
文件:OwnerPathfinder.java
/**
* Calculates the navigation path and returns true if found.
*
* @return success
*/
@Override
public boolean a() {
if (this.player == null) {
return this.path != null;
}
if (!this.entity.getWorld().getWorldData().getName().equals(this.player.getWorld().getName())) {
this.entity.getBukkitEntity().teleport(this.player.getLocation());
} else if (this.entity.getBukkitEntity().getLocation().distance(this.player.getLocation()) > ConfigPet.getInstance().getBlocksAwayFromPlayer()) {
this.counter2 = PetBlockHelper.afraidWaterEffect(this.petBlock, this.counter2);
final Location targetLocation = this.player.getLocation();
this.entity.getNavigation().n();
this.entity.getNavigation();
this.path = this.entity.getNavigation().a(targetLocation.getX() + 1, targetLocation.getY(), targetLocation.getZ() + 1);
this.entity.getNavigation();
if (this.entity.getBukkitEntity().getLocation().distance(this.player.getLocation()) > ConfigPet.getInstance().getFollow_maxRangeTeleport())
this.entity.getBukkitEntity().teleport(this.player.getLocation());
if (Math.abs(this.entity.getBukkitEntity().getLocation().getY() - targetLocation.getY()) >= 2) {
this.counter++;
} else {
this.counter = 0;
}
if (this.counter > 5) {
this.entity.getBukkitEntity().setVelocity(new Vector(0.1, (float) ConfigPet.getInstance().getModifier_petclimbing() * 0.1, 0.1));
this.counter = 0;
}
if (this.path != null) {
this.c();
}
}
return this.path != null;
}
项目:Arcadia-Spigot
文件:PotionDropGame.java
@EventHandler
public void onGameTick(GameTickEvent event) {
if(event.getTicksInSecond() < potionDropPerSecond) {
ItemStack itemStack = new ItemStack(Material.POTION, 1, (byte) 8197);
Item entity = this.potionDropLocation.getWorld().dropItem(potionDropLocation, itemStack);
entity.setCustomName(ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "Potion");
entity.setCustomNameVisible(true);
entity.setVelocity(new Vector(0, 0.47, 0).add(Utils.getRandomCircleVector()
.multiply(potionVelocityMultiplier*Math.random())));
}
}