diff --git a/pom.xml b/pom.xml
index 001ab1d..69e033d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
AdventBombs
AdventBombs
- 4.1
+ 4.2
jar
AdventBombs
diff --git a/src/main/java/com/genife/adventbombs/Commands/PassConversation.java b/src/main/java/com/genife/adventbombs/Commands/PassConversation.java
index 59697b7..59dd402 100644
--- a/src/main/java/com/genife/adventbombs/Commands/PassConversation.java
+++ b/src/main/java/com/genife/adventbombs/Commands/PassConversation.java
@@ -71,7 +71,7 @@ private void launchNuclearRocket() {
World senderWorld = rocketSender.getWorld();
Location targetLocation = senderWorld.getHighestBlockAt(cordsX, cordsZ).getLocation();
- RocketRunnable task = new RocketRunnable(new NuclearRocket(rocketSender, rocketType, targetLocation, explosionPower, 24000));
+ RocketRunnable task = new RocketRunnable(new NuclearRocket(rocketSender, rocketType, targetLocation, explosionPower));
task.runTaskTimer(instance, 0L, 0L);
}
diff --git a/src/main/java/com/genife/adventbombs/Managers/ConfigManager.java b/src/main/java/com/genife/adventbombs/Managers/ConfigManager.java
index f6103a9..18fa75d 100644
--- a/src/main/java/com/genife/adventbombs/Managers/ConfigManager.java
+++ b/src/main/java/com/genife/adventbombs/Managers/ConfigManager.java
@@ -8,6 +8,10 @@
public class ConfigManager {
public static int DISTANCE_TO_MOVE_ROCKET_WITH_Y;
public static int FLYING_ROCKET_HEIGHT;
+ public static double FLYING_ROCKET_SPEED;
+ public static double MOVE_UP_SPEED;
+ public static double MOVE_WITH_Y_SPEED;
+ public static int MAX_FLY_DURATION;
public static String NUCLEAR_START_PASS;
public static String SCULK_START_PASS;
public static Integer ROCKET_USAGE_COOLDOWN;
@@ -79,6 +83,10 @@ public void loadConfig() {
config.addDefault("rockets.distance_to_move_with_y", 340);
config.addDefault("rockets.flying_height", 250);
+ config.addDefault("rockets.flying_speed", 5.8);
+ config.addDefault("rockets.move_up_speed", 0.8);
+ config.addDefault("rockets.move_with_y_speed", 0.8);
+ config.addDefault("rockets.max_fly_duration", 1200);
config.addDefault("rockets.nuclear.password", "nuclear_start_pass");
config.addDefault("rockets.sculk.password", "sculk_start_pass");
config.addDefault("rockets.cooldown", 5);
@@ -118,7 +126,7 @@ public void loadConfig() {
config.addDefault("messages.alarm.start_broadcast", "§cВНИМАНИЕ! ОБЪЯВЛЕНА ВОЗДУШНАЯ ТРЕВОГА! ВСЕМ ПРОЙТИ В УКРЫТИЕ!");
config.addDefault("messages.alarm.stop_broadcast", "§aВнимание! Отбой воздушной тревоги! Все ракеты достигли целей!");
config.addDefault("messages.alarm.nuclear.detonated", "§fМежконтинентальная ядерная ракета произвела детонацию!");
- config.addDefault("messages.alarm.sculk.detonated", "§fСкалковая ракета достигла цели!");
+ config.addDefault("messages.alarm.sculk.detonated", "§fСкалковая ракета произвела детонацию!");
config.addDefault("messages.effects.acid_rain.start", "§fСообщается о начале §aкислотного дождя §fв мире {world}. Все в укрытия!");
config.addDefault("messages.effects.acid_rain.stop", "§aКислотный дождь §fзакончился в мире {world}. Можно выходить из укрытий, будьте осторожны!");
@@ -139,13 +147,17 @@ public void loadConfig() {
config.addDefault("sounds.alarm.sound", "minecraft:my_sounds.alarm_sound");
config.options().copyDefaults(true);
- config.options().setHeader(List.of("На данный момент, конфиг в стадии тестирования. Репорти ошибки, если найдёшь", "Все параметры, которые так или иначе связаны со временем указывай в СЕКУНДАХ!", "Названия звуков бери из ресурс пака или игры"));
+ config.options().setHeader(List.of("На данный момент, конфиг в стадии тестирования. Репорти ошибки, если найдёшь", "Все параметры, которые так или иначе связаны со временем указывай в СЕКУНДАХ!", "Названия звуков бери из ресурс пака или игры", "MOVE WITH Y - это когда ракета снижается. Но бывает так, что цель находится выше самой ракеты, потому говорить, что она снижается - не корректно"));
instance.saveConfig();
}
private void loadValues() {
DISTANCE_TO_MOVE_ROCKET_WITH_Y = config.getInt("rockets.distance_to_move_with_y");
FLYING_ROCKET_HEIGHT = config.getInt("rockets.flying_height");
+ FLYING_ROCKET_SPEED = config.getDouble("rockets.flying_speed");
+ MOVE_UP_SPEED = config.getDouble("rockets.move_up_speed");
+ MOVE_WITH_Y_SPEED = config.getDouble("rockets.move_with_y_speed");
+ MAX_FLY_DURATION = config.getInt("rockets.max_fly_duration");
NUCLEAR_START_PASS = config.getString("rockets.nuclear.password");
SCULK_START_PASS = config.getString("rockets.sculk.password");
ROCKET_USAGE_COOLDOWN = config.getInt("rockets.cooldown");
diff --git a/src/main/java/com/genife/adventbombs/Rockets/NuclearRocket.java b/src/main/java/com/genife/adventbombs/Rockets/NuclearRocket.java
index d52bbf2..ccd3447 100644
--- a/src/main/java/com/genife/adventbombs/Rockets/NuclearRocket.java
+++ b/src/main/java/com/genife/adventbombs/Rockets/NuclearRocket.java
@@ -30,8 +30,8 @@ public class NuclearRocket extends Rocket implements Selfguided, Soared, Exploda
private final int explosionPower;
private final AdventBombs instance = AdventBombs.getInstance();
- public NuclearRocket(Player rocketSender, String rocketType, Location targetLocation, int explosionPower, int maxBeam) {
- super(rocketSender, targetLocation, maxBeam);
+ public NuclearRocket(Player rocketSender, String rocketType, Location targetLocation, int explosionPower) {
+ super(rocketSender, targetLocation);
this.explosionPower = explosionPower;
this.rocketType = rocketType;
}
@@ -42,13 +42,13 @@ public void move() {
double distanceToTargetLoc = getRocketLocation().distance(getTargetLocation());
// проверка на совпадение одно из условий для детонации
- if ((reachMaxBeam() || inBlock() || (distanceToTargetLoc <= 1 && isDown())) && getBeam() > MIN_BEAM) {
+ if ((reachMaxDuration() || inBlock() || (distanceToTargetLoc <= 1 && isDown())) && getDuration() > MIN_BEAM) {
explode();
return;
}
// движение ракеты, логика в зависимости от высоты
- if (getBeam() == 0) {
+ if (getDuration() == 0) {
getRocketLocation().setPitch(-90);
new CreateSound(ROCKET_START_FLYING_SOUND, 200, getRocketLocation());
@@ -74,7 +74,7 @@ public void move() {
if (getState() != RocketState.FLYING) {
setState(RocketState.FLYING);
}
- getRocketLocation().add(findPath(false).multiply(5.8));
+ getRocketLocation().add(findPath(false).multiply(FLYING_ROCKET_SPEED));
}
} else if (distanceToTargetLoc < DISTANCE_TO_MOVE_ROCKET_WITH_Y) {
new CreateSound(ROCKET_FLYING_SOUND, 316, getRocketLocation());
@@ -83,7 +83,7 @@ public void move() {
getRocketWorld().spawnParticle(Particle.FIREWORKS_SPARK, getRocketLocation(), 0);
getRocketWorld().spawnParticle(Particle.LAVA, getRocketLocation(), 0);
- addBeam();
+ addDuration();
}
@Override
@@ -166,7 +166,7 @@ private void catastrophe(Location explosionCenter) {
@Override
public void moveUp() {
Vector dir = getRocketLocation().getDirection();
- dir.multiply(0.8);
+ dir.multiply(MOVE_UP_SPEED);
// поднимаем ракету
getRocketLocation().add(dir);
}
@@ -179,7 +179,7 @@ public void moveWithY() {
// обновляем целевую локацию с актуальным Y
getTargetLocation().setY(getRocketWorld().getHighestBlockYAt(getTargetLocation()));
// двигаем ракету к цели
- getRocketLocation().add(findPath(true));
+ getRocketLocation().add(findPath(true).multiply(MOVE_WITH_Y_SPEED));
}
public Vector findPath(boolean includeY) {
diff --git a/src/main/java/com/genife/adventbombs/Rockets/Rocket.java b/src/main/java/com/genife/adventbombs/Rockets/Rocket.java
index 04afa58..900a564 100644
--- a/src/main/java/com/genife/adventbombs/Rockets/Rocket.java
+++ b/src/main/java/com/genife/adventbombs/Rockets/Rocket.java
@@ -5,20 +5,20 @@
import org.bukkit.World;
import org.bukkit.entity.Player;
+import static com.genife.adventbombs.Managers.ConfigManager.MAX_FLY_DURATION;
+
public abstract class Rocket {
private Location rocketLocation;
private Location targetLocation;
private World rocketWorld;
- private int beam;
- private int maxBeam;
+ private int duration;
private RocketState state;
- public Rocket(Player sender, Location targetLocation, int maxBeam) {
+ public Rocket(Player sender, Location targetLocation) {
setRocketLocation(sender.getLocation());
setTargetLocation(targetLocation);
setRocketWorld(sender.getWorld());
- setBeam(0);
- setMaxBeam(maxBeam);
+ setDuration(0);
}
public boolean isDown() {
@@ -67,23 +67,19 @@ public void setState(RocketState state) {
this.state = state;
}
- public boolean reachMaxBeam() {
- return beam >= maxBeam;
- }
-
- public void setMaxBeam(int maxBeam) {
- this.maxBeam = maxBeam;
+ public boolean reachMaxDuration() {
+ return duration >= MAX_FLY_DURATION * 20L;
}
- public int getBeam() {
- return beam;
+ public int getDuration() {
+ return duration;
}
- public void setBeam(int beam) {
- this.beam = beam;
+ public void setDuration(int duration) {
+ this.duration = duration;
}
- public void addBeam() {
- this.setBeam(getBeam() + 1);
+ public void addDuration() {
+ this.setDuration(getDuration() + 1);
}
}
\ No newline at end of file
diff --git a/src/main/java/com/genife/adventbombs/Runnables/RocketRunnable.java b/src/main/java/com/genife/adventbombs/Runnables/RocketRunnable.java
index 73c3ea6..554005a 100644
--- a/src/main/java/com/genife/adventbombs/Runnables/RocketRunnable.java
+++ b/src/main/java/com/genife/adventbombs/Runnables/RocketRunnable.java
@@ -12,7 +12,7 @@ public class RocketRunnable extends BukkitRunnable {
public RocketRunnable(Rocket rocket) {
setRocket(rocket);
- activeRockets.add(this); // добавляем созданный инстанс в список активных ракет
+ activeRockets.add(this); // добавляем созданную ракету в список активных ракет
}
public static int getActiveRocketCount() {