This commit is contained in:
2024-07-25 14:11:44 +02:00
commit 582fbafa53
41 changed files with 605 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
package org.twipnetwork.rocketJumping;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.entity.Firework;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.util.Vector;
public final class RocketJumping extends JavaPlugin implements Listener {
private double boostPower;
private boolean damageShooter;
private boolean damageOthers;
@Override
public void onEnable() {
saveDefaultConfig();
FileConfiguration config = getConfig();
boostPower = config.getDouble("boostPower", 4.0);
damageShooter = config.getBoolean("damageShooter", false);
damageOthers = config.getBoolean("damageOthers", true);
Bukkit.getPluginManager().registerEvents(this, this);
}
@Override
public void onDisable() {
}
@EventHandler
public void onProjectileHit(ProjectileHitEvent event) {
Projectile projectile = event.getEntity();
if (projectile instanceof Firework) {
Firework firework = (Firework) projectile;
Entity shooter = (Entity) firework.getShooter();
for (Entity entity : firework.getNearbyEntities(5, 5, 5)) {
if (entity instanceof Player) {
Player player = (Player) entity;
Vector boostDirection = player.getLocation().toVector().subtract(firework.getLocation().toVector()).normalize();
player.setVelocity(player.getVelocity().add(boostDirection.multiply(boostPower)));
if (!damageShooter && player.equals(shooter)) {
player.setNoDamageTicks(1);
}
} else {
Vector boostDirection = entity.getLocation().toVector().subtract(firework.getLocation().toVector()).normalize();
entity.setVelocity(entity.getVelocity().add(boostDirection.multiply(boostPower)));
}
}
if (!damageOthers) {
for (Entity entity : firework.getNearbyEntities(5, 5, 5)) {
if (!(entity instanceof Player && entity.equals(shooter))) {
((Player) entity).setNoDamageTicks(1);
}
}
}
}
}
}

View File

@@ -0,0 +1,9 @@
# config.yml
# boostPower sets how powerful the rocket boost is (default: 4.0)
boostPower: 4.0
# damageShooter defines whether the shooter gets damages by their own fireworks (default: false)
damageShooter: false
# damageOthers defines whether other people (excluding the shooter) get damaged (default: true)
damageOthers: true

View File

@@ -0,0 +1,4 @@
name: RocketJumping
version: '1.0-SNAPSHOT'
main: org.twipnetwork.rocketJumping.RocketJumping
api-version: '1.21'