Не работают импорты скоребоарда на ядре lumi

У него gradle, сам выше писал

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>lumiactivity</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <repositories>
        <repository>
            <id>luminiadev-repository-snapshots</id>
            <url>https://repo.luminiadev.com/snapshots</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>com.koshakmine</groupId>
            <artifactId>Lumi</artifactId>
            <version>1.5.0-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>21</source>
                    <target>21</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Покажи ошибку при сборке

cannot find symbol

Полностью

1 минутку

Вот правильные импорты Lumi/src/main/java/cn/nukkit/scoreboard at master · KoshakMineDEV/Lumi · GitHub

а можешь фиксануть пожалуйста я просто еще изучаю джаву и люми ну кароче еще вайб кодер а дипсик не понимает?

Можешь добавить меня в свой проект?
Исправлю

package org.example;

import cn.nukkit.plugin.PluginBase;
import cn.nukkit.command.Command;
import cn.nukkit.command.CommandSender;
import cn.nukkit.Player;
import cn.nukkit.utils.Config;
import cn.nukkit.scheduler.Task;
import cn.nukkit.scoreboard.Scoreboard;
import cn.nukkit.scoreboard.ScoreboardManager;
import cn.nukkit.scoreboard.display.slot.DisplaySlot;
import cn.nukkit.scoreboard.data.SortOrder;
import cn.nukkit.scoreboard.score.IScore;
import cn.nukkit.scoreboard.score.Score;
import java.io.File;
import java.util.Map;
import java.util.HashMap;
import java.util.LinkedHashMap;

public class Main extends PluginBase {

private static Main instance;
private Config balanceConfig;
private Config ranksConfig;
private Config permissionsConfig;
private Config scoreboardConfig;
private Map<String, String> playersCache = new HashMap<>();
private Map<String, LinkedHashMap> ranks = new HashMap<>();
private Map<String, Map<String, Boolean>> permissions = new HashMap<>();
private Map<String, Scoreboard> playerScoreboards = new HashMap<>();

private String line1 = "§fПривет, §b{player}";
private String line2 = " ";
private String line3 = "§fБаланс: §b{balance}";
private String line4 = "§fПинг: §b{ping}";
private String line5 = " ";
private String line6 = "§7weartime.ru";
private int updateInterval = 20;

@Override
public void onEnable() {
    instance = this;
    this.getDataFolder().mkdirs();
    
    balanceConfig = new Config(new File(this.getDataFolder(), "balances.yml"), Config.YAML);
    ranksConfig = new Config(new File(this.getDataFolder(), "ranks.yml"), Config.YAML);
    permissionsConfig = new Config(new File(this.getDataFolder(), "permissions.yml"), Config.YAML);
    scoreboardConfig = new Config(new File(this.getDataFolder(), "scoreboard.yml"), Config.YAML);
    
    loadScoreboardConfig();
    loadRanks();
    loadPermissions();
    
    for (Player p : this.getServer().getOnlinePlayers().values()) {
        String lowerName = p.getName().toLowerCase();
        playersCache.put(lowerName, p.getName());
        createScoreboard(p);
    }
    
    this.getServer().getScheduler().scheduleRepeatingTask(new Task() {
        @Override
        public void onRun(int currentTick) {
            updateScoreboards();
        }
    }, updateInterval);
}

@Override
public void onDisable() {
    balanceConfig.save();
    ranksConfig.save();
    permissionsConfig.save();
    scoreboardConfig.save();
    
    for (Player p : this.getServer().getOnlinePlayers().values()) {
        p.setScoreboard(null);
    }
    playerScoreboards.clear();
}

private void loadScoreboardConfig() {
    Map<String, Object> config = scoreboardConfig.getAll();
    
    if (config.containsKey("line1")) line1 = (String) config.get("line1");
    else scoreboardConfig.set("line1", line1);
    
    if (config.containsKey("line2")) line2 = (String) config.get("line2");
    else scoreboardConfig.set("line2", line2);
    
    if (config.containsKey("line3")) line3 = (String) config.get("line3");
    else scoreboardConfig.set("line3", line3);
    
    if (config.containsKey("line4")) line4 = (String) config.get("line4");
    else scoreboardConfig.set("line4", line4);
    
    if (config.containsKey("line5")) line5 = (String) config.get("line5");
    else scoreboardConfig.set("line5", line5);
    
    if (config.containsKey("line6")) line6 = (String) config.get("line6");
    else scoreboardConfig.set("line6", line6);
    
    if (config.containsKey("updateInterval")) updateInterval = (int) config.get("updateInterval");
    else scoreboardConfig.set("updateInterval", updateInterval);
    
    scoreboardConfig.save();
}

private void createScoreboard(Player player) {
    try {
        ScoreboardManager manager = this.getServer().getScoreboardManager();
        String name = player.getName();
        double balance = balanceConfig.getDouble(name, 0.0);
        int ping = player.getPing();
        
        String l1 = line1.replace("{player}", name).replace("{balance}", String.valueOf(balance)).replace("{ping}", String.valueOf(ping));
        String l2 = line2.replace("{player}", name).replace("{balance}", String.valueOf(balance)).replace("{ping}", String.valueOf(ping));
        String l3 = line3.replace("{player}", name).replace("{balance}", String.valueOf(balance)).replace("{ping}", String.valueOf(ping));
        String l4 = line4.replace("{player}", name).replace("{balance}", String.valueOf(balance)).replace("{ping}", String.valueOf(ping));
        String l5 = line5.replace("{player}", name).replace("{balance}", String.valueOf(balance)).replace("{ping}", String.valueOf(ping));
        String l6 = line6.replace("{player}", name).replace("{balance}", String.valueOf(balance)).replace("{ping}", String.valueOf(ping));
        
        Scoreboard scoreboard = manager.createScoreboard("sb_" + name, "ИНФОРМАЦИЯ", SortOrder.ASCENDING);
        
        scoreboard.addLine(6, l1);
        scoreboard.addLine(5, l2);
        scoreboard.addLine(4, l3);
        scoreboard.addLine(3, l4);
        scoreboard.addLine(2, l5);
        scoreboard.addLine(1, l6);
        
        scoreboard.setDisplay(DisplaySlot.SIDEBAR);
        player.setScoreboard(scoreboard);
        playerScoreboards.put(name, scoreboard);
    } catch (Exception e) {
    }
}

private void updateScoreboards() {
    for (Player player : this.getServer().getOnlinePlayers().values()) {
        try {
            String name = player.getName();
            double balance = balanceConfig.getDouble(name, 0.0);
            int ping = player.getPing();
            
            Scoreboard scoreboard = playerScoreboards.get(name);
            if (scoreboard == null) {
                createScoreboard(player);
                continue;
            }
            
            String l1 = line1.replace("{player}", name).replace("{balance}", String.valueOf(balance)).replace("{ping}", String.valueOf(ping));
            String l2 = line2.replace("{player}", name).replace("{balance}", String.valueOf(balance)).replace("{ping}", String.valueOf(ping));
            String l3 = line3.replace("{player}", name).replace("{balance}", String.valueOf(balance)).replace("{ping}", String.valueOf(ping));
            String l4 = line4.replace("{player}", name).replace("{balance}", String.valueOf(balance)).replace("{ping}", String.valueOf(ping));
            String l5 = line5.replace("{player}", name).replace("{balance}", String.valueOf(balance)).replace("{ping}", String.valueOf(ping));
            String l6 = line6.replace("{player}", name).replace("{balance}", String.valueOf(balance)).replace("{ping}", String.valueOf(ping));
            
            for (IScore s : scoreboard.getScores()) {
                if (s.getObjectiveName().endsWith("_1")) ((Score)s).setValue(l6);
                else if (s.getObjectiveName().endsWith("_2")) ((Score)s).setValue(l5);
                else if (s.getObjectiveName().endsWith("_3")) ((Score)s).setValue(l4);
                else if (s.getObjectiveName().endsWith("_4")) ((Score)s).setValue(l3);
                else if (s.getObjectiveName().endsWith("_5")) ((Score)s).setValue(l2);
                else if (s.getObjectiveName().endsWith("_6")) ((Score)s).setValue(l1);
            }
        } catch (Exception e) {
        }
    }
}

private void loadRanks() {
    ranks.clear();
    Map<String, Object> all = ranksConfig.getAll();
    if (all.isEmpty()) {
        LinkedHashMap<String, Object> defaultRank = new LinkedHashMap<>();
        defaultRank.put("inherits", "");
        defaultRank.put("prefix", "Игрок");
        ranks.put("default", defaultRank);
        ranksConfig.set("default", defaultRank);
        ranksConfig.save();
    } else {
        for (Map.Entry<String, Object> entry : all.entrySet()) {
            if (entry.getValue() instanceof LinkedHashMap) {
                ranks.put(entry.getKey(), (LinkedHashMap) entry.getValue());
            }
        }
    }
}

private void loadPermissions() {
    permissions.clear();
    Map<String, Object> all = permissionsConfig.getAll();
    for (Map.Entry<String, Object> entry : all.entrySet()) {
        if (entry.getValue() instanceof LinkedHashMap) {
            Map<String, Boolean> playerPerms = new HashMap<>();
            LinkedHashMap<String, Object> perms = (LinkedHashMap) entry.getValue();
            for (Map.Entry<String, Object> perm : perms.entrySet()) {
                if (perm.getValue() instanceof Boolean) {
                    playerPerms.put(perm.getKey(), (Boolean) perm.getValue());
                }
            }
            permissions.put(entry.getKey(), playerPerms);
        }
    }
}

private String findPlayer(String input) {
    if (input == null) return null;
    
    String lowerInput = input.toLowerCase();
    
    if (playersCache.containsKey(lowerInput)) {
        return playersCache.get(lowerInput);
    }
    
    for (Map.Entry<String, String> entry : playersCache.entrySet()) {
        if (entry.getKey().startsWith(lowerInput)) {
            return entry.getValue();
        }
    }
    
    for (Player p : this.getServer().getOnlinePlayers().values()) {
        String lowerName = p.getName().toLowerCase();
        playersCache.put(lowerName, p.getName());
        if (lowerName.startsWith(lowerInput)) {
            return p.getName();
        }
    }
    
    return input;
}

private String getPlayerRank(String player) {
    String rank = ranksConfig.getString(player, "default");
    if (!ranks.containsKey(rank)) rank = "default";
    return rank;
}

private void setPlayerRank(String player, String rank) {
    if (!ranks.containsKey(rank)) return;
    ranksConfig.set(player, rank);
    ranksConfig.save();
}

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if (command.getName().equalsIgnoreCase("balance")) {
        if (!sender.hasPermission("balance.use")) {
            sender.sendMessage("Извините но вам эта команда не доступна");
            return false;
        }
        
        String target;
        if (args.length > 0 && sender.hasPermission("balance.others")) {
            target = findPlayer(args[0]);
            if (target == null) target = args[0];
        } else if (sender instanceof Player) {
            target = sender.getName();
        } else {
            sender.sendMessage("Укажите игрока");
            return false;
        }
        
        double bal = balanceConfig.getDouble(target, 0.0);
        sender.sendMessage(target + ": " + Double.toString(bal) + " монет");
        return true;
    }
    
    if (command.getName().equalsIgnoreCase("economy")) {
        if (!sender.hasPermission("economy.use")) {
            sender.sendMessage("Извините но вам эта команда не доступна");
            return false;
        }
        
        if (args.length < 3) {
            sender.sendMessage("/economy <give/take> <игрок> <количество>");
            return false;
        }
        
        String action = args[0].toLowerCase();
        String player = findPlayer(args[1]);
        if (player == null) player = args[1];
        
        try {
            double amount = Double.parseDouble(args[2]);
            if (amount <= 0) {
                sender.sendMessage("Количество должно быть больше 0");
                return false;
            }
            
            if (action.equals("give")) {
                double current = balanceConfig.getDouble(player, 0.0);
                balanceConfig.set(player, Double.valueOf(current + amount));
                balanceConfig.save();
                sender.sendMessage("Выдано " + Double.toString(amount) + " монет игроку " + player);
                
                Player p = this.getServer().getPlayer(player);
                if (p != null) {
                    p.sendMessage("Вы получили " + Double.toString(amount) + " монет");
                }
                return true;
            }
            
            if (action.equals("take")) {
                double current = balanceConfig.getDouble(player, 0.0);
                if (current < amount) {
                    sender.sendMessage("У игрока " + player + " недостаточно монет");
                    return false;
                }
                
                balanceConfig.set(player, Double.valueOf(current - amount));
                balanceConfig.save();
                sender.sendMessage("Забрано " + Double.toString(amount) + " монет у игрока " + player);
                
                Player p = this.getServer().getPlayer(player);
                if (p != null) {
                    p.sendMessage("У вас забрали " + Double.toString(amount) + " монет");
                }
                return true;
            }
            
            sender.sendMessage("Используйте give или take");
            
        } catch (NumberFormatException e) {
            sender.sendMessage("Неверное число");
        }
        
        return false;
    }
    
    if (command.getName().equalsIgnoreCase("rank")) {
        if (!sender.hasPermission("rank.use")) {
            sender.sendMessage("Извините но вам эта команда не доступна");
            return false;
        }
        
        if (args.length < 1) {
            sender.sendMessage("/rank <set/take/info> <игрок> [ранг]");
            return false;
        }
        
        String action = args[0].toLowerCase();
        
        if (action.equals("info")) {
            if (args.length < 2) {
                sender.sendMessage("/rank info <игрок>");
                return false;
            }
            
            String player = findPlayer(args[1]);
            if (player == null) player = args[1];
            
            String rank = getPlayerRank(player);
            sender.sendMessage("Ранг игрока " + player + ": " + rank);
            return true;
        }
        
        if (action.equals("set") || action.equals("take")) {
            if (!sender.hasPermission("rank.manage")) {
                sender.sendMessage("Извините но вам эта команда не доступна");
                return false;
            }
            
            if (args.length < 3) {
                sender.sendMessage("/rank " + action + " <игрок> <ранг>");
                return false;
            }
            
            String player = findPlayer(args[1]);
            if (player == null) player = args[1];
            
            String rank = args[2].toLowerCase();
            
            if (action.equals("set")) {
                if (!ranks.containsKey(rank)) {
                    sender.sendMessage("Ранг " + rank + " не существует");
                    return false;
                }
                
                setPlayerRank(player, rank);
                sender.sendMessage("Игроку " + player + " установлен ранг " + rank);
                
                Player p = this.getServer().getPlayer(player);
                if (p != null) {
                    p.sendMessage("Вам установлен ранг " + rank);
                }
                return true;
            }
            
            if (action.equals("take")) {
                if (!ranks.containsKey(rank)) {
                    sender.sendMessage("Ранг " + rank + " не существует");
                    return false;
                }
                
                String currentRank = getPlayerRank(player);
                if (!currentRank.equals(rank)) {
                    sender.sendMessage("У игрока " + player + " нет ранга " + rank);
                    return false;
                }
                
                setPlayerRank(player, "default");
                sender.sendMessage("У игрока " + player + " забран ранг " + rank);
                
                Player p = this.getServer().getPlayer(player);
                if (p != null) {
                    p.sendMessage("У вас забрали ранг " + rank);
                }
                return true;
            }
        }
        
        sender.sendMessage("Используйте set, take или info");
        return false;
    }
    
    return false;
}

public static Main getInstance() {
    return instance;
}

public double getBalance(String player) {
    return balanceConfig.getDouble(player, 0.0);
}

}

Не, так не пойдет. Я выше писал, что нужен полный архив, либо скинь ссылку на Code With Me

а окей щяс

activityjavalumi.zip (13,9 КБ)

а динер можно ли тебя кое что еще попросить пожалуйста?

Можешь ли сделать что бы скоребоард находился в правом верхнем углу а не стандартно ли?

https://wiki.bedrock.dev/json-ui/json-ui-documentation

Вот тебе документация, дальше сам.

ок а ошибку сможешь пофиксить эту в коде?

получится фиксануть динер?

activityjavalumi.zip (6,8 КБ)

Нашаманил, лишь бы билдился без ошибок. А работает ли, или нет, это уже не мои проблемы