У него 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 КБ)
Нашаманил, лишь бы билдился без ошибок. А работает ли, или нет, это уже не мои проблемы
