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
2 changes: 2 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ runpaper = { id = "xyz.jpenilla.run-paper", version = "2.3.1" }
paper-api = { group = "io.papermc.paper", name = "paper-api", version.ref = "paper" }
velocity-api = { group = "com.velocitypowered", name = "velocity-api", version.ref = "velocity"}

adventure-text-serializer-plain = { group = "net.kyori", name = "adventure-text-serializer-plain", version = "4.26.1" }

aikar-acf = { group = "co.aikar", name = "acf-paper", version = "0.5.1-SNAPSHOT" }
aikar-taskchain = { group = "co.aikar", name = "taskchain-bukkit", version = "3.7.2" }

Expand Down
1 change: 1 addition & 0 deletions plugins/railswitch-paper/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ dependencies {
paperDevBundle(libs.versions.paper)
}

implementation(libs.adventure.text.serializer.plain)
compileOnly(project(":plugins:civmodcore-paper"))
compileOnly(project(":plugins:namelayer-paper"))
compileOnly(project(":plugins:citadel-paper"))
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package sh.okx.railswitch;

import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import org.bukkit.block.Block;
import org.bukkit.block.Sign;
import org.bukkit.block.sign.SignSide;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import sh.okx.railswitch.settings.SettingsManager;

public class DestSignListener implements Listener {

private final List<String> destStrings = Arrays.asList("[DEST]",
"[DESTINATION]");
private static final PlainTextComponentSerializer plainSerializer = PlainTextComponentSerializer.plainText();

@EventHandler
public void signClick(PlayerInteractEvent event) {
if (event.getAction() != Action.LEFT_CLICK_BLOCK) return;

Block block = event.getClickedBlock();
if (block == null) return;

if (!(block.getState() instanceof Sign sign)) return;

SignSide clickedSide = sign.getTargetSide(event.getPlayer());
var firstLine = plainSerializer.serialize(clickedSide.line(0)).trim();
if (!destStrings.contains(firstLine)) return;

List<String> destinations = new ArrayList<>();
for (int i = 1; i < 4; i++) {
var line = plainSerializer.serialize(clickedSide.line(i));
// remove "/dest " from start if it exists as some players include it
line = line.replaceFirst("^/dest ", "").trim();
if (line.isEmpty()) continue;
destinations.add(line);
}
if (destinations.isEmpty()) return;

String currentDest = SettingsManager.getDestination(event.getPlayer());
int currentIndex = -1;
for (int i = 0; i < destinations.size(); i++) {
if (destinations.get(i).equalsIgnoreCase(currentDest)) {
currentIndex = i;
break;
}
}

int nextIndex = currentIndex + 1;
if (nextIndex >= destinations.size()) {
nextIndex = 0;
}
SettingsManager.setDestination(event.getPlayer(), destinations.get(nextIndex));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public void onEnable() {
SettingsManager.init(this);
registerListener(new CitadelGlue(this));
registerListener(new SwitchListener());
registerListener(new DestSignListener());
registerListener(new SettingsListener());
commandManager = new CommandManager(this);
commandManager.init();
Expand Down
Loading