I am working on a system that when a player place a sign in creative and puts on line 0 [BH] and on line 2 <Worldname> and clicks on it then it formats automaticly and when a player click again it will teleport the player to the world on line 2
I tried using this
I tried using this
Code:
package com.svenkoggel.bhbedrock;
import cn.nukkit.event.EventHandler;
import cn.nukkit.event.Listener;
import cn.nukkit.event.player.PlayerInteractEvent;
import cn.nukkit.event.block.BlockPlaceEvent;
import cn.nukkit.block.Block;
import cn.nukkit.block.BlockID;
import cn.nukkit.block.BlockSign; // Importeer BlockSign
import cn.nukkit.utils.TextFormat;
import cn.nukkit.Player;
import cn.nukkit.level.Level;
public class JoinSigns implements Listener {
private final Main plugin;
public JoinSigns(Main plugin) {
this.plugin = plugin;
}
// Detecteer wanneer een speler een bord plaatst
@EventHandler
public void onSignPlace(BlockPlaceEvent event) {
Block block = event.getBlock();
// Zorg ervoor dat het een bord is
if (block.getId() == BlockID.SIGN_POST || block.getId() == BlockID.WALL_SIGN) {
BlockSign sign = (BlockSign) block; // Cast naar BlockSign
String[] lines = sign.getLines(); // Verkrijg de lijnen van het bord
// Controleer of de eerste regel [BH] is
if (lines[0] != null && lines[0].equalsIgnoreCase("[BH]") && lines[1] != null && !lines[1].isEmpty()) {
String mapName = lines[1]; // Naam van de wereld uit regel 2
setSignLines(sign, mapName); // Stel de lijnen van het bord in
}
}
}
// Detecteer wanneer een speler op een bord klikt
@EventHandler
public void onSignClick(PlayerInteractEvent event) {
if (event.getAction().equals(PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK)) { // Rechtermuisklik
Player player = event.getPlayer();
Block block = event.getBlock();
// Check of de speler interact met een bord
if (block.getId() == BlockID.SIGN_POST || block.getId() == BlockID.WALL_SIGN) {
BlockSign sign = (BlockSign) block; // Cast naar BlockSign
String[] lines = sign.getLines(); // Verkrijg de lijnen van het bord
// Controleer of de lijnen niet null zijn en of de eerste regel "Join" is
if (lines != null && lines[0] != null && lines[0].equalsIgnoreCase("Join") && lines[2] != null && lines[2].contains("<")) {
String mapName = lines[2].replace("<", "").replace(">", ""); // Haal mapnaam uit de sign
// Controleer of de wereld bestaat
Level level = player.getServer().getLevelByName(mapName);
if (level != null) {
// Teleporteer de speler naar de wereld
player.teleport(level.getSpawnLocation());
player.sendMessage(TextFormat.GREEN + "You have been teleported to the world: " + mapName);
} else {
// Als de wereld niet bestaat
player.sendMessage(TextFormat.RED + "This game is unloaded.");
}
} else {
player.sendMessage(TextFormat.RED + "Invalid sign format.");
}
}
}
}
I also tried BlockState and Sign instead of BlockSign but it gives me this error everytime
Description Resource Path Location Type
BlockSign cannot be resolved to a type JoinSigns.java /BountyHunterBedrock/src/main/java/com/svenkoggel/bhbedrock line 29 Java Problem
BlockSign cannot be resolved to a type JoinSigns.java /BountyHunterBedrock/src/main/java/com/svenkoggel/bhbedrock line 29 Java Problem
BlockSign cannot be resolved to a type JoinSigns.java /BountyHunterBedrock/src/main/java/com/svenkoggel/bhbedrock line 49 Java Problem
BlockSign cannot be resolved to a type JoinSigns.java /BountyHunterBedrock/src/main/java/com/svenkoggel/bhbedrock line 49 Java Problem
BlockSign cannot be resolved to a type JoinSigns.java /BountyHunterBedrock/src/main/java/com/svenkoggel/bhbedrock line 74 Java Problem
The import cn.nukkit.block.BlockSign cannot be resolved JoinSigns.java /BountyHunterBedrock/src/main/java/com/svenkoggel/bhbedrock line 9 Java Problem
// Methode om de lijnen van een bord in te stellen
private void setSignLines(BlockSign sign, String mapName) {
sign.setLine(0, TextFormat.GREEN + "Join");
sign.setLine(1, TextFormat.DARK_BLUE + " ");
sign.setLine(2, TextFormat.DARK_BLUE + "<" + mapName + ">"); // Gebruik de mapnaam in de derde lijn
sign.setLine(3, TextFormat.GREEN + " ");
sign.update(); // Werk het bord bij
}
}