Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions src/main/java/me/makkuusen/timing/system/ContextResolvers.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,10 @@
import me.makkuusen.timing.system.track.options.TrackOption;
import me.makkuusen.timing.system.track.regions.TrackRegion;
import me.makkuusen.timing.system.track.tags.TrackTag;
import me.makkuusen.timing.system.tuning.Attribute;
import me.makkuusen.timing.system.tuning.PartManager;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Material;
import org.bukkit.entity.Boat;

import java.util.*;
Expand Down Expand Up @@ -220,6 +223,24 @@ static void loadCommandContextsAndCompletions(PaperCommandManager manager) {
}
return new ArrayList<>();
});

// parts stuff i guess (am tired)
manager.getCommandCompletions().registerCompletion("parts", context -> {
return PartManager.getPartNames();
});

manager.getCommandCompletions().registerCompletion(
"materials",
c -> Arrays.stream(Material.values())
.map(Material::name)
.toList()
);

manager.getCommandCompletions().registerCompletion("tuningAttributes", context -> {
return Arrays.stream(Attribute.values())
.map(Enum::name)
.toList();
});
}
public static ContextResolver<Track.TrackType, BukkitCommandExecutionContext> getTrackTypeContextResolver() {
return (c) -> {
Expand Down
20 changes: 18 additions & 2 deletions src/main/java/me/makkuusen/timing/system/TSListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -222,10 +222,10 @@ public void onVehicleExit(VehicleExitEvent event) {
event.setCancelled(true);
return;
}

if (driver.getState() == DriverState.LOADED || driver.getState() == DriverState.STARTING || driver.getState() == DriverState.RUNNING || driver.getState() == DriverState.RESET || driver.getState() == DriverState.LAPRESET) {
event.setCancelled(true);

Long currentTime = System.currentTimeMillis();
UUID playerID = player.getUniqueId();

Expand Down Expand Up @@ -721,13 +721,26 @@ private static void handleHeat(Driver driver, PlayerMoveEvent e) {
} else {
driver.lapReset(e.getFrom(), e.getTo(), r);
}
driver.resetQualyLap(e.getFrom(), e.getTo(), r);
heat.updatePositions();
if (heat.getEvent().getTuningEnabled()){
heat.applyTeamTuning();
}
} else if (driver.getState() == DriverState.LAPRESET) {
driver.lapReset(e.getFrom(), e.getTo(), r);
heat.updatePositions();
if (heat.getEvent().getTuningEnabled()){
heat.applyTeamTuning();
}
return;
} else if (driver.getCurrentLap() != null && driver.getCurrentLap().getLatestCheckpoint() != 0) {
if (!driver.getCurrentLap().hasPassedAllCheckpoints()) {
int checkpoint = driver.getCurrentLap().getLatestCheckpoint();
performInHeatReset(driver);
Text.send(driver.getTPlayer().getPlayer(), Error.MISSED_CHECKPOINTS);
if (heat.getEvent().getTuningEnabled()){
heat.applyTeamTuning();
}

return;
}
Expand All @@ -740,6 +753,9 @@ private static void handleHeat(Driver driver, PlayerMoveEvent e) {
var teamEntry = maybeTeamEntry.get();
teamEntry.updateRaceProgress(driver.getLaps().size(), 0);
}
if (heat.getEvent().getTuningEnabled()){
heat.applyTeamTuning();
}
}

if (heat.getGhostingDelta() != null) {
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/me/makkuusen/timing/system/TimingSystem.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import me.makkuusen.timing.system.theme.Theme;
import me.makkuusen.timing.system.timetrial.TimeTrialListener;
import me.makkuusen.timing.system.tplayer.TPlayer;
import me.makkuusen.timing.system.tuning.PartManager;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextColor;
import net.megavex.scoreboardlibrary.api.ScoreboardLibrary;
Expand Down Expand Up @@ -139,6 +140,7 @@ public void onEnable() {
manager.registerCommand(new CommandUnghost());
manager.registerCommand(new CommandBoatUtilsModeEdit());
manager.registerCommand(new CommandTeam());
manager.registerCommand(new CommandParts());
taskChainFactory = BukkitTaskChainFactory.create(this);

database = configuration.getDatabaseType();
Expand Down Expand Up @@ -181,6 +183,7 @@ public void onEnable() {

int pluginId = 16012;
new Metrics(this, pluginId);
PartManager.loadParts();
}

private void setConfigDefaultColors() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ public class TimingSystemConfiguration {
private final double copperPos;
private boolean dynamicDiamondPosEnabled;
private final List<DynamicPos> dynamicDiamondPoses = new ArrayList<>();
private int tuningEffect;

private final Object databaseType;

Expand Down Expand Up @@ -82,6 +83,7 @@ public class TimingSystemConfiguration {
drsMaxDelta = plugin.getConfig().getInt("drs.maxDelta", 1150);
drsDuration = plugin.getConfig().getInt("drs.duration", 2000);
drsForwardAccel = plugin.getConfig().getDouble("drs.forwardAccel", 0.06);
tuningEffect = plugin.getConfig().getInt("tuning.effect", 2);
pushToPassMaxUseTime = plugin.getConfig().getInt("pushtopass.maxUseTime", 5000);
pushToPassFullChargeTime = plugin.getConfig().getInt("pushtopass.fullChargeTime", 60000);
pushToPassForwardAccel = plugin.getConfig().getDouble("pushtopass.forwardAccel", 0.05);
Expand Down Expand Up @@ -164,6 +166,10 @@ public void setDrsForwardAccel(double value) {
drsForwardAccel = value;
}

public void setTuningEffect(int value){
tuningEffect = value;
}

public void setPushToPassMaxUseTime(int value) {
pushToPassMaxUseTime = value;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,9 @@ public static void onInfo(CommandSender sender, Event event) {
}
sender.sendMessage(trackMessage);

Component tuningMessage = Component.text("Tuning Enabled: ").color(theme.getSecondary()).append(theme.getBrackets(event.getTuningEnabled().toString()).clickEvent(ClickEvent.suggestCommand("/event tuning ")));
sender.sendMessage(tuningMessage);

var signsMessage = Text.get(sender, Info.EVENT_INFO_SIGNS);
Component open = Text.get(sender, Word.OPEN);
Component closed = Text.get(sender, Word.CLOSED);
Expand Down Expand Up @@ -655,4 +658,40 @@ public static void onSendReserve(Player player, @Optional Event event) {
p.sendMessage(Component.empty());
}
}

@Subcommand("tuning enable")
@CommandPermission("%permissionevent_manage")
@Description("Enable tuning for an event")
public void onTuningEnable(Player player, @Optional Event event) {
if (event == null) {
var maybeEvent = EventDatabase.getPlayerSelectedEvent(player.getUniqueId());
if (maybeEvent.isPresent()) {
event = maybeEvent.get();
} else {
Text.send(player, Error.NO_EVENT_SELECTED);
return;
}
}

event.setTuningEnabled(true);
player.sendMessage("§aTuning enabled for this event");
}

@Subcommand("tuning disable")
@CommandPermission("%permissionevent_manage")
@Description("Disable tuning for an event")
public void onTuningDisable(Player player, @Optional Event event) {
if (event == null) {
var maybeEvent = EventDatabase.getPlayerSelectedEvent(player.getUniqueId());
if (maybeEvent.isPresent()) {
event = maybeEvent.get();
} else {
Text.send(player, Error.NO_EVENT_SELECTED);
return;
}
}

event.setTuningEnabled(false);
player.sendMessage("§cTuning disabled for this event");
}
}
20 changes: 20 additions & 0 deletions src/main/java/me/makkuusen/timing/system/commands/CommandHeat.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Boat;
import org.bukkit.entity.Player;

import java.time.Duration;
Expand Down Expand Up @@ -216,6 +217,17 @@ public static void onHeatInfo(Player player, Heat heat) {
}
player.sendMessage(boatSwitchingMessage);

var liveTuningMessage = Component.text("Live Tuning: ").color(theme.getPrimary());

if (!heat.isFinished() && player.hasPermission("timingsystem.packs.eventadmin")) {
String liveTuningValue = (heat.getLiveTuningEnabled() != null && heat.getLiveTuningEnabled()) ? "true" : "false";
liveTuningMessage = liveTuningMessage.append(theme.getEditButton(player, liveTuningValue, theme).clickEvent(ClickEvent.suggestCommand("/heat set livetuning " + heat.getName())));
} else {
String liveTuningValue = (heat.getLiveTuningEnabled() != null && heat.getLiveTuningEnabled()) ? "enabled" : "disabled";
liveTuningMessage = liveTuningMessage.append(theme.highlight(liveTuningValue));
}
player.sendMessage(liveTuningMessage);

if (heat.getFastestLapUUID() != null) {
Driver d = heat.getDrivers().get(heat.getFastestLapUUID());
player.sendMessage(Text.get(player, Info.HEAT_INFO_FASTEST_LAP, "%time%", ApiUtilities.formatAsTime(d.getBestLap().get().getPreciseLapTime()), "%player%", d.getTPlayer().getName()));
Expand Down Expand Up @@ -489,6 +501,14 @@ public static void onHeatSetPushToPass(Player player, Heat heat, Boolean pushToP
Text.send(player, Success.SAVED);
}

@Subcommand("set livetuning")
@CommandCompletion("@heat true|false")
@CommandPermission("%permissionheat_set_livetuning")
@Description("Enable/disable live tuning adjustments during the heat")
public static void onHeatSetLiveTuning(Player player, Heat heat, Boolean enabled) {
heat.setLiveTuningEnabled(enabled);
Text.send(player, Success.SAVED);
}
@Subcommand("set lonely")
@CommandCompletion("@heat true|false")
@CommandPermission("%permissionheat_set_lonely")
Expand Down
Loading