Skocz do zawartości
  • 0

Przerobienie pluginu.


pringles18

Pytanie

Siemka pomógłby mi ktoś przerobić działający plugin

 
package pl.kangur88.dzikiepvp;

import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.FileConfigurationOptions;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.ScoreboardManager;

public class Main
  extends JavaPlugin
  implements Listener
{
  private Scoreboard board;
  FileConfiguration config = getConfig();
  
  public void onEnable()
  {
    this.board = Bukkit.getScoreboardManager().getMainScoreboard();
    startHealthScore();
    Bukkit.getPluginManager().registerEvents(this, this);
    loadConfig();
  }
  
  public void onDisable()
  {
    stopHealthScore();
  }
  
  private void loadConfig()
  {
    FileConfiguration cfg = getConfig();
    cfg.options().copyDefaults(true);
    saveConfig();
  }
  
  private void startHealthScore()
  {
    if (this.board.getObjective("health") != null) {
      this.board.getObjective("health").unregister();
    }
    Objective o = this.board.registerNewObjective("health", "health", "health");
    o.setDisplaySlot(DisplaySlot.BELOW_NAME);
    o.setDisplayName("hp");
  }
  
  private void stopHealthScore()
  {
    Set<Objective> sidebar = this.board.getObjectives();
    for (Objective o : sidebar) {
      if (o.getName().contains("health")) {
        o.unregister();
      }
    }
  }
  
  @EventHandler
  public void PlayerJoin(PlayerJoinEvent e)
  {
    Player p = e.getPlayer();
    p.sendMessage("Witaj na serwerze u kangura");
  }
  
  @EventHandler
  public void damage(EntityDamageByEntityEvent e)
  {
    for (Player player : )
    {
      player.sendMessage("It works! on damage");
      player.setScoreboard(this.board);
    }
  }
}
Chciałbym aby po zmianie w linii 45 "health" na "dummy" można było ustawić własne, ostylowane score w jakimś evencie np. on damage, np:

wartość jakiejś zmiennej

Score belowName = objectiveBelowName.getScore(player);
belowName.setScore(8);

 

Znalazłem w internecie 2 wytłumaczenia jak to zrobić ale mimo męczenia się 1.5h nie udało się nic zdziałać i wróciłem do startowego kodu który działał

Nie wiem jak stworzyć własną tablicę dla każdego gracza z osobna bo w moim kodzie chyba każdy korzysta ze wspólnej

 
Spoiler

Create a fake scoreboard per-player:

Scoreboard sb = Bukkit.getScoreboardManager().getNewScoreboard();

Then register a dummy objective, and set it to the sidebar display slot:

Objective objective = sb.registerNewObjective("My Sidebar", "dummy");
objective.setDisplaySlot(DisplaySlot.SIDEBAR);

Add your data to the scoreboard:

objective.getScore("something").setScore(42);
objective.getScore("other_stuff").setScore(5);

Then send it to the player(s) that you want to see the scoreboard:

player.setScoreboard(sb);

I would recommend not creating the scoreboard each time you want to change the information, just create one per player, and then update the scoreboard for that player.


 

 

 

oraz drugi: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

 

z góry dzięki jakby ktoś pomógł bo męczę się już 3 dzień najpierw 2 dni w skripcie teraz 1 dzień w pluginie

Edytowane przez xNightPower_
mozna usunac
Nieaktywny

Przywracam usuniętą treść.

Odnośnik do komentarza
Udostępnij na innych stronach

1 odpowiedź na to pytanie

Rekomendowane odpowiedzi

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...