Skip to content

Commit

Permalink
Add per-series knockback customization (#39)
Browse files Browse the repository at this point in the history
* Add per-series knockback customization

* Remove verbose

* Move setupKnockback to its own KnockbackManager

* Make KnockbackManager listen to BoltMatchStatusChangeEvent

* Run formatter
  • Loading branch information
Indicardo authored Jun 25, 2022
1 parent 3b51c33 commit ee9bbed
Show file tree
Hide file tree
Showing 5 changed files with 161 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/main/java/rip/bolt/ingame/Ingame.java
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ public void onEnable() {
Bukkit.getPluginManager().registerEvents(rankedManager.getRankManager(), this);
Bukkit.getPluginManager().registerEvents(rankedManager.getRequeueManager(), this);
Bukkit.getPluginManager().registerEvents(rankedManager.getSpectatorManager(), this);
Bukkit.getPluginManager().registerEvents(rankedManager.getKnockbackManager(), this);

BasicBukkitCommandGraph g = new BasicBukkitCommandGraph(new CommandModule());
DispatcherNode node = g.getRootDispatcherNode();
Expand Down
112 changes: 112 additions & 0 deletions src/main/java/rip/bolt/ingame/api/definitions/BoltKnockback.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
package rip.bolt.ingame.api.definitions;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.github.paperspigot.PaperSpigotConfig;

@JsonIgnoreProperties(ignoreUnknown = true)
public class BoltKnockback {
private double friction;
private double horizontal;
private double vertical;
private double verticalLimit;
private double extraHorizontal;
private double extraVertical;

public BoltKnockback() {}

public BoltKnockback(
double friction,
double horizontal,
double vertical,
double verticalLimit,
double extraHorizontal,
double extraVertical) {
this.friction = friction;
this.horizontal = horizontal;
this.vertical = vertical;
this.verticalLimit = verticalLimit;
this.extraHorizontal = extraHorizontal;
this.extraVertical = extraVertical;
}

public double getFriction() {
return friction;
}

public void setFriction(double friction) {
this.friction = friction;
}

public double getHorizontal() {
return horizontal;
}

public void setHorizontal(double horizontal) {
this.horizontal = horizontal;
}

public double getVertical() {
return vertical;
}

public void setVertical(double vertical) {
this.vertical = vertical;
}

public double getVerticalLimit() {
return verticalLimit;
}

public void setVerticalLimit(double verticalLimit) {
this.verticalLimit = verticalLimit;
}

public double getExtraHorizontal() {
return extraHorizontal;
}

public void setExtraHorizontal(double extraHorizontal) {
this.extraHorizontal = extraHorizontal;
}

public double getExtraVertical() {
return extraVertical;
}

public void setExtraVertical(double extraVertical) {
this.extraVertical = extraVertical;
}

@Override
public String toString() {
return "BoltKnockback{"
+ "friction="
+ friction
+ ", horizontal="
+ horizontal
+ ", vertical="
+ vertical
+ ", verticalLimit="
+ verticalLimit
+ ", extraHorizontal="
+ extraHorizontal
+ ", extraVertical="
+ extraVertical
+ '}';
}

public static BoltKnockback defaults() {
double friction = PaperSpigotConfig.config.getDouble("paper.knockback.friction", 2.0D);
double horizontal = PaperSpigotConfig.config.getDouble("paper.knockback.horizontal", 0.4D);
double vertical = PaperSpigotConfig.config.getDouble("paper.knockback.vertical", 0.4D);
double verticalLimit =
PaperSpigotConfig.config.getDouble("paper.knockback.vertical-limit", 0.4D);
double extraHorizontal =
PaperSpigotConfig.config.getDouble("paper.knockback.extra-horizontal", 0.5D);
double extraVertical =
PaperSpigotConfig.config.getDouble("paper.knockback.extra-vertical", 0.1D);

return new BoltKnockback(
friction, horizontal, vertical, verticalLimit, extraHorizontal, extraVertical);
}
}
10 changes: 10 additions & 0 deletions src/main/java/rip/bolt/ingame/api/definitions/Series.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ public class Series {
private String name;
private Boolean hideObservers = false;

private BoltKnockback knockback;

public Series() {}

public Integer getId() {
Expand All @@ -35,6 +37,14 @@ public void setHideObservers(boolean hideObservers) {
this.hideObservers = hideObservers;
}

public BoltKnockback getKnockback() {
return knockback;
}

public void setKnockback(BoltKnockback knockback) {
this.knockback = knockback;
}

@Override
public String toString() {
return name + " (" + id + "): hideObservers=" + hideObservers;
Expand Down
32 changes: 32 additions & 0 deletions src/main/java/rip/bolt/ingame/ranked/KnockbackManager.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package rip.bolt.ingame.ranked;

import java.util.Objects;
import javax.annotation.Nullable;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.github.paperspigot.PaperSpigotConfig;
import rip.bolt.ingame.api.definitions.BoltKnockback;
import rip.bolt.ingame.events.BoltMatchStatusChangeEvent;

public class KnockbackManager implements Listener {
public KnockbackManager() {}

@EventHandler(priority = EventPriority.MONITOR)
public void onBoltMatchStateChange(BoltMatchStatusChangeEvent event) {
if (Objects.equals(event.getNewStatus(), MatchStatus.CREATED)) {
setupKnockback(event.getBoltMatch().getSeries().getKnockback());
}
}

public void setupKnockback(@Nullable BoltKnockback knockback) {
if (knockback == null) knockback = BoltKnockback.defaults();

PaperSpigotConfig.knockbackFriction = knockback.getFriction();
PaperSpigotConfig.knockbackHorizontal = knockback.getHorizontal();
PaperSpigotConfig.knockbackVertical = knockback.getVertical();
PaperSpigotConfig.knockbackVerticalLimit = knockback.getVerticalLimit();
PaperSpigotConfig.knockbackExtraHorizontal = knockback.getExtraHorizontal();
PaperSpigotConfig.knockbackExtraVertical = knockback.getExtraVertical();
}
}
6 changes: 6 additions & 0 deletions src/main/java/rip/bolt/ingame/ranked/RankedManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ public class RankedManager implements Listener {
private final RankManager rankManager;
private final StatsManager statsManager;
private final SpectatorManager spectatorManager;
private final KnockbackManager knockbackManager;
private final TabManager tabManager;
private final MatchSearch poll;

Expand All @@ -63,6 +64,7 @@ public RankedManager(Plugin plugin) {
rankManager = new RankManager(this);
statsManager = new StatsManager(this);
spectatorManager = new SpectatorManager(playerWatcher);
knockbackManager = new KnockbackManager();
tabManager = new TabManager(plugin);

MatchPreloader.create();
Expand Down Expand Up @@ -293,4 +295,8 @@ public BoltMatch transition(
public SpectatorManager getSpectatorManager() {
return spectatorManager;
}

public KnockbackManager getKnockbackManager() {
return knockbackManager;
}
}

0 comments on commit ee9bbed

Please sign in to comment.