Coding mit Java | Java-basierten APIs

  • Ersteller Ersteller ij9F_i0FaF-d9lrDSDDpDbfo
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
Hier :D :
Code:
//InteractEvent
    @EventHandler
    public void onInteract(final PlayerInteractEvent e) {
        String Prefix= getConfig().getString("&1[Plugin");
        ItemStack a= new ItemStack(Material.DIAMOND);
        ItemMeta ameta= a.getItemMeta();
        ameta.setDisplayName("&1[Plugin]");
        a.setItemMeta(ameta);
    if(e.getAction() == Action.RIGHT_CLICK_BLOCK || e.getAction() == Action.RIGHT_CLICK_AIR) {
        if(e.getItem().getType() == Material.DIAMOND) {
            if(e.getItem().getItemMeta().getDisplayName().equalsIgnoreCase("&1[Plugin]")) {
                Player p = e.getPlayer();
                final String Prefix = getConfig().getString("Config.Prefix");
                this.getServer().getScheduler().scheduleAsyncRepeatingTask(this, new Runnable() {
                    public void run() {
                        if(number != -1) {
                            Bukkit.broadcastMessage( Prefix + "Noch" + number + "Sekunde(n)");
                            if(number != 0) {
                                number--;
                            } else {
                                Player p = e.getPlayer();
                                Bukkit.broadcastMessage( Prefix + "Fertig!");
aber das geht nur einmal :( und wenn ich es wd machen will , muss ich den Server reloaden
Kann es sein, dass da ein paar Zeilen fehlen?
Und was mir direkt auffält: Bitte nutze keine AsyncRepeating tasks, wenn du auf die BukkitAPI zugreifen willst. Bei Spigot geht dies nicht und es ist nicht empfehlenswert. Nutze lieber SyncRepeatingTasks
 
Kann es sein, dass da ein paar Zeilen fehlen?
Und was mir direkt auffält: Bitte nutze keine AsyncRepeating tasks, wenn du auf die BukkitAPI zugreifen willst. Bei Spigot geht dies nicht und es ist nicht empfehlenswert. Nutze lieber SyncRepeatingTasks
ich werd's mal versuchen :D Danke :)
 
Code:
String prefix = null;
public void onEnable()
{
  prefix = getConfig().getString("Dein.String.zum.Prefix");
  prefix = ChatColor.translateAlternateColorCodes('&', getConfig().getString("Dein.String.zum.Prefix"));
}

@EventHandler
public void onInteract(final PlayerInteractEvent e)
{
  Action a = e.getAction();
  ItemStack is = e.getItem();
  Player p = e.getPlayer();
  ItemStack stack = new ItemStack(Material.DIAMOND);
  ItemMeta meta = stack.getItemMeta();
  meta.setDisplayName(prefix);
  meta.setItemMeta(stack);
  if(a == Action.RIGHT_CLICK_BLOCK || a == Action.RIGHT_CLICK_AIR)
  {
    if(is.equals(stack))
    {
      if(is.getItemMeta().getDisplayName().equalsIgnoreCase(prefix))
      {
        Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable()
        {
          public void run()
          {
             number--;
            if(number != -1)
            {
               Bukkit.broadcastMessage(prefix + "Noch " + number + " Sekunde(n)");
               if(number == 0)
               {
                 Player p = e.getPlayer();
                 Bukkit.broadcastMessage(prefix + "Fertig!");
Sieht für mich besser aus. :)
 
Zuletzt bearbeitet von einem Moderator:
  • Like
Reaktionen: TroubleCrafterHD
Code:
String prefix = null;
public void onEnable()
{
  prefix = getConfig().getString("Dein.String.zum.Prefix");
  prefix = ChatColor.translateAlternateColorCodes('&', getConfig().getString("Dein.String.zum.Prefix"));
}

@EventHandler
public void onInteract(final PlayerInteractEvent e)
{
  Action a = e.getAction();
  ItemStack is = e.getItem();
  Player p = e.getPlayer();
  ItemStack stack = new ItemStack(Material.DIAMOND);
  ItemMeta meta = stack.getItemMeta();
  meta.setDisplayName(prefix);
  meta.setItemMeta(stack);
  if(a == Action.RIGHT_CLICK_BLOCK || a == Action.RIGHT_CLICK_AIR)
  {
    if(is.equals(stack))
    {
      if(is.getItemMeta().getDisplayName().equalsIgnoreCase(prefix))
      {
        Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable()
        {
          public void run()
          {
             number--;
            if(number != -1)
            {
               Bukkit.broadcastMessage(prefix + "Noch " + number + " Sekunde(n)");
               if(number == 0)
               {
                 Player p = e.getPlayer();
                 Bukkit.broadcastMessage(prefix + "Fertig!");
Sieht für mich besser aus. :)
das gehnt zwar :) aber die zahlen gehen jz auch ins "-" also z.B. "-20" :( kann man das beheben? o:
 
das gehnt zwar :) aber die zahlen gehen jz auch ins "-" also z.B. "-20" :( kann man das beheben? o:
Du cancelst den Task nicht :O
PHP:
final int prozessId = Bukkit.getScheduler //etc dein Scheduler
     if(number<=0){
        Player p = e.getPlayer();
        Bukkit.broadcastMessage(prefix + "Fertig!");
        Bukkit.getScheduler.cancelTask(prozessId);
//Dein restlicher Code

Statt number == 0 number <=0 nehmen - musst du nicht, ist aber eine Gewohnheit von mir - nur dass du den Code besser in deinen einordnen kannst ^^
Mehr über Bukkit Scheduler gibt's hier : http://wiki.bukkit.org/Scheduler_Programming/de :)
 
Du cancelst den Task nicht :O
PHP:
final int prozessId = Bukkit.getScheduler //etc dein Scheduler
     if(number<=0){
        Player p = e.getPlayer();
        Bukkit.broadcastMessage(prefix + "Fertig!");
        Bukkit.getScheduler.cancelTask(prozessId);
//Dein restlicher Code

Statt number == 0 number <=0 nehmen - musst du nicht, ist aber eine Gewohnheit von mir - nur dass du den Code besser in deinen einordnen kannst ^^
Mehr über Bukkit Scheduler gibt's hier : http://wiki.bukkit.org/Scheduler_Programming/de :)
Danke :)
Bin net der beste mit Schedulern xD <3
 
Es kam doch die neue Spigot API raus, versteht irgendwer wie das gehen soll also wie man sie downloaded usw.?
 
Ach ich hatte bloß noch das alte Developement Kit aber trotzdem danke
 
Status
Für weitere Antworten geschlossen.

Soziale Medien

  • X
  • TikTok

Über uns

  • GommeHD.net ist einer der größten Minecraft-Server der Welt. Dir gefällt unser Server? Dann unterstütze uns durch einen Kauf im Shop!
  • Shop