Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie] Rozbudowanie Tools.


Rekomendowane odpowiedzi

Opublikowano

Witam Serdecznie jakoż iż uczę się pisania pluginów postanowiłem rozbudować plugin który udało mi się znaleźć na pc.


Chciałbym dodać do niego kilka funkcji w miarę przydatnych ;)


1 z nich to anulowanie teleportacji na spawn gdy gracz się ruszy.


 


Tutaj kod classy /spawn



public class SpawnCommand implements CommandExecutor
{
Main main;

public SpawnCommand(final Main main) {
super();
this.main = main;
}

public boolean onCommand(final CommandSender sender, final Command cmd, final String commandLabel, final String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.RED + "To polecenie nie moze byc wykonane z konsoli.");
}
else if (!sender.hasPermission("serwer.spawn")) {
sender.sendMessage("§6Koordynaty spawnu: §2x:0 | z:0§6.");
}
else if (args.length > 0) {
sender.sendMessage("§8» §7Poprawne uzycie: §a/spawn§7.");
}
else {
final Player player = (Player)sender;
player.sendMessage("§8» §6Teleportacja nastapi za: §210 §6sekund...");
player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 200, 10));
player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 200, 2));
player.addPotionEffect(new PotionEffect(PotionEffectType.HUNGER, 200, 2));
player.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 200, 2));
final Player player2 = (Player)sender;
Bukkit.getScheduler().scheduleSyncDelayedTask((Plugin)this.main, (Runnable)new Runnable() {
@Override
public void run() {
player2.sendMessage("§8» §6Przeteleportowano na spawn!");
final double x = SpawnCommand.this.main.getConfig().getDouble("x");
final double y = SpawnCommand.this.main.getConfig().getDouble("y");
final double z = SpawnCommand.this.main.getConfig().getDouble("z");
final float yaw = (float)SpawnCommand.this.main.getConfig().getDouble("yaw");
final float pitch = (float)SpawnCommand.this.main.getConfig().getDouble("pitch");
final Location location = new Location(Bukkit.getWorld("world"), x, y, z, yaw, pitch);
player2.teleport(location);
}
}, 200L);
}
return false;
}
}

Prosił bym o pomoc w które miejsce co dodać tak aby automatycznie anulowało odliczanie po ruchu gracza.


 


2 sprawa to użycie BarAPI.


Widziałem taką rzecz na 1 z serwerów i wpadła mi w oko.


Jest to napis na pasku Boss'a.


I tam pisze:


Administrator dołączył na serwer (nick).


Umiał ktoś by mi z tym pomóc?


Udało mi się zrobić coś podobnego tylko że wyświetla na czacie napis.:


 


Tak to wygląda:



@EventHandler(priority = EventPriority.NORMAL)
public void onJoin(final PlayerJoinEvent e) {
e.setJoinMessage((String)null);
if (e.getPlayer().hasPermission("serwer.admin")) {
Bukkit.broadcastMessage("§8» §6Na serwer dolaczyl czlonek ekipy! §7(§2" + e.getPlayer().getName() + "§7)§6.");
}
else {
e.setJoinMessage((String)null);
}

No i nie wiem jak to ogarnąć.


 


Mówię z góry że nie jestem autorem tego pluginu, ja go tylko edytuje ze zgodą autora.


Mówię to po to żeby się nie pojawiały nieścisłości.


 


Pozdrawiam Serdecznie i liczę na pomoc.


 


Dla osób które udzielą konkretnej i zadowalającej mnie odpowiedzi dostaną na pw fajny plugin na gildie. ;)


Oraz Like na profajlu ;-)



To ja typ niepokorny ;x


 


Opublikowano

Musiałbyś w komendzie pobrać lokację gracza a następnie sprawdzić czy się ta lokacja zmieniła i dopiero go teleportować najlepiej w tasku i co chwile If'a dać :D

 

np:

 

Bukkit.getScheduler().scheduleSyncDelayedTask((Plugin)this.main, (Runnable)new Runnable() {
@Override
public void run() {
//pobieram lokacje gracza , 
if(lokacja inna niz tamta najlepiej sprawdzac po X lub Z )
cancel taska i nie teleportuje
else
player2.teleport(location);
}
}, 200L);
Opublikowano

@rohbar1 tak jak wspominałem początkujący jestem ;< i za bardzo nie wiem o czym mówisz :(

 

Co do tematu udało mi się już zrobić z tym BarApi tzn Administrator dołączył do gry ;)

Trochę jeszcze edytowałem plugin i zrobiłem sethome, home , tpa, tpaccept, tpdeny

I kolejny wątek dla użytkowników jak dodać oczekiwanie czasowe to tego:

					p.sendMessage("§7Zaakceptowales prosbe o teleportacje §a" + TP.get(p).getName() + "§7.");
					TP.get(p).sendMessage("§a" + p.getName() + " §7zaakceptowal twoja prosbe o teleportacje.");
					TP.get(p).sendMessage("§8» §6Teleportacja nastapi za: §210 §6sekund...");
					TP.get(p).addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 200, 10));
					TP.get(p).addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 200, 2));
					TP.get(p).addPotionEffect(new PotionEffect(PotionEffectType.HUNGER, 200, 2));
					TP.get(p).addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 200, 2));
					TP.get(p).teleport(p);
					TP.get(p).sendMessage("§7Zostales przeteleportowany do §a" + p.getName() + "§7.");
					TP.remove(p);

To ja typ niepokorny ;x


 


Opublikowano

Tutaj kolega podał mi takie coś:

if player move
    cancel event:
        sender.sendMessage("§8» §7Ruszyles siepodczas teleportacji');

Zadziała?
A jeżeli tak gdzie to umieścić!?

Pomoc nagradzam bardzo fajnym pluginem na gildie. 


To ja typ niepokorny ;x


 


Opublikowano

Tutaj kolega podał mi takie coś:

if player move
    cancel event:
        sender.sendMessage("§8» §7Ruszyles siepodczas teleportacji');

Zadziała?

A jeżeli tak gdzie to umieścić!?

Pomoc nagradzam bardzo fajnym pluginem na gildie. 

CO TO JEST ????????????????

jakies dziwne polaczenie skryptu z pluginem lol

lap gotowy kod

 

 

package pl.banan.mRank;
 
import java.util.ArrayList;
 
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
 
public class Main extends JavaPlugin implements CommandExecutor, Listener
{
 
    ArrayList<Player> teleportTask = new ArrayList<Player>();
    public void onEnable()
    {
    Bukkit.getPluginManager().registerEvents(this, this);
    }
    public boolean onCommand(final CommandSender sender, final Command cmd, final String commandLabel, final String[] args) {
        if (!(sender instanceof Player)) 
        {
            sender.sendMessage(ChatColor.RED + "To polecenie nie moze byc wykonane z konsoli.");
        }
        else if (!sender.hasPermission("serwer.spawn")) {
            sender.sendMessage("§6Koordynaty spawnu: §2x:0 | z:0§6.");
        }
        else if (args.length > 0) {
            sender.sendMessage("§8» §7Poprawne uzycie: §a/spawn§7.");
        }
        else {
            final Player player = (Player)sender;
            player.sendMessage("§8» §6Teleportacja nastapi za: §210 §6sekund...");
            player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 200, 2));
            player.addPotionEffect(new PotionEffect(PotionEffectType.HUNGER, 200, 2));
            player.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 200, 2));
            this.teleportTask.add(player);
            Bukkit.getScheduler().scheduleSyncDelayedTask((this), (Runnable)new Runnable() {
                @Override
                public void run() {
                    player.sendMessage("§8» §6Przeteleportowano na spawn!");
                    final double x = getConfig().getDouble("x");
                    final double y = getConfig().getDouble("y");
                    final double z = getConfig().getDouble("z");
                    if (teleportTask.contains(player))
                    {
                      teleportTask.remove(player);
                    final Location location = new Location(Bukkit.getWorld("world"), x, y, z);
                    player.teleport(location);
                }
                } }, 200L);
        }
        
        return false;
    }
    
    @EventHandler
    public void onPlayerMove(PlayerMoveEvent event)
    {
      Location from = event.getFrom();
      Location to = event.getTo();
      if ((from.getBlockX() != to.getBlockX()) || (from.getBlockY() != to.getBlockY()) || (from.getBlockZ() != to.getBlockZ()) || (from.getWorld() != to.getWorld()))
      {
        Player player = event.getPlayer();
        if (this.teleportTask.contains(player))
        {
          this.teleportTask.remove(player);
          player.sendMessage(ChatColor.RED + "Teleportacja zostala anulowana!");
        }
      }
    }
}

Opublikowano

Proszę zablokowane obrażenia oraz poruszanie się ;-)

 

Pozdrawiam Najs. :#

 

 

 

 

public class SpawnCommand implements CommandExecutor,Listener
    {
        Main main;
        ArrayList<String> spawnA = new ArrayList<>();
       
        public SpawnCommand(Main main) {
            this.main = main;
        }
       
        public boolean onCommand(final CommandSender sender, final Command cmd, final String commandLabel, final String[] args) {
            if (!(sender instanceof Player)) {
                sender.sendMessage(ChatColor.RED + "To polecenie nie moze byc wykonane z konsoli.");
            }
            else if (!sender.hasPermission("serwer.spawn")) {
                sender.sendMessage("§6Koordynaty spawnu: §2x:0 | z:0§6.");
            }
            else if (args.length > 0) {
                sender.sendMessage("§8» §7Poprawne uzycie: §a/spawn§7.");
            }
            else {
                final Player player = (Player)sender;
                player.sendMessage("§8» §6Teleportacja nastapi za: §210 §6sekund...");
                player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 200, 10));
                player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 200, 2));
                player.addPotionEffect(new PotionEffect(PotionEffectType.HUNGER, 200, 2));
                player.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 200, 2));
                final Player player2 = (Player)sender;
                spawnA.add(player2.getName());
                Bukkit.getScheduler().scheduleSyncDelayedTask(this.main, (Runnable)new Runnable() {
                    @Override
                    public void run() {
                     if (spawnA.contains(player2.getName())){
                        player2.sendMessage("§8» §6Przeteleportowano na spawn!");
                        final double x = SpawnCommand.this.main.getConfig().getDouble("x");
                        final double y = SpawnCommand.this.main.getConfig().getDouble("y");
                        final double z = SpawnCommand.this.main.getConfig().getDouble("z");
                        spawnA.remove(player2.getName());
                        final float yaw = (float)SpawnCommand.this.main.getConfig().getDouble("yaw");
                        final float pitch = (float)SpawnCommand.this.main.getConfig().getDouble("pitch");
                        final Location location = new Location(Bukkit.getWorld("world"), x, y, z, yaw, pitch);
                        player2.teleport(location);
                    }}
                }, 200L);
            }
            return false;
        }
 
 
 
 
        @EventHandler
        public void udezenie(EntityDamageEvent e) {
         if ((e.getEntity() instanceof Player)) {
         Player c = (Player)e.getEntity();
         if (spawnA.contains(c.getName())) {
         c.sendMessage("§cTeleport anulowany!");
         spawnA.remove(c.getName());
      }
    }
  }
       
        @EventHandler
         public void s(PlayerMoveEvent e){
         Player p =e.getPlayer();
         if (spawnA.contains(p.getName())) {
         spawnA.remove(p.getName());
         p.sendMessage("wiadomosc");
    }
  }
}

 

 

Opublikowano

@1361622928-U485574.pngNajs. :# Niestety nie działa gdy gracz się poruszy lub dostanie obrażenia nadal go tepa.

 

POMOCY!!!!


To ja typ niepokorny ;x


 


Opublikowano

A zobacz to :)

import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.PluginCommand;
import org.bukkit.entity.Player;
 
public class SpawnCommand
  implements CommandExecutor
{
  final ToolsPlugin plugin;
  
  public SpawnCommand(ToolsPlugin plugin)
  {
    this.plugin = plugin;
    this.plugin.getCommand("spawn").setExecutor(this);
  }
  
  public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
  {
    if ((sender instanceof Player))
    {
      final Player player = (Player)sender;
      if (player.hasPermission("tools.spawn.nolimit"))
      {
        if (player.hasPermission("tools.spawn.nodelay"))
        {
          player.teleport(player.getWorld().getSpawnLocation());
          player.sendMessage(ChatColor.BLUE + "Przeteleportowano na spawn!");
        }
        else
        {
          ToolsPlugin.teleportPlayerWithDelay(player, this.plugin.configManager.teleportDelay, player.getWorld().getSpawnLocation(), ChatColor.BLUE + "Przeteleportowano na spawn!", null);
          player.sendMessage(ChatColor.BLUE + "Teleporter rozgrzewa sie...");
        }
      }
      else if (System.currentTimeMillis() - this.plugin.configManager.spawnTeleportDelay * 1000 > this.plugin.lastTeleportManager.getPlayerLastTeleport(player).longValue())
      {
        ToolsPlugin.teleportPlayerWithDelay(player, this.plugin.configManager.teleportDelay, player.getWorld().getSpawnLocation(), ChatColor.BLUE + "Przeteleportowano na spawn!", new Runnable()
        {
          public void run()
          {
            SpawnCommand.this.plugin.lastTeleportManager.setPlayerLastTeleport(player, Long.valueOf(System.currentTimeMillis()));
          }
        });
        player.sendMessage(ChatColor.BLUE + "Teleporter rozgrzewa sie...");
      }
      else
      {
        player.sendMessage(ChatColor.RED + "Teleportacja na spawn jest mozliwa co " + this.plugin.configManager.spawnTeleportDelay / 60 + " min.");
        player.sendMessage(ChatColor.BLUE + "Koordynaty spawnu to: " + ChatColor.GOLD + "x:" + player.getWorld().getSpawnLocation().getBlockX() + " z:" + player.getWorld().getSpawnLocation().getBlockZ() + ChatColor.BLUE + ".");
        player.sendMessage(ChatColor.BLUE + "Twoj kompas kieruje teraz na spawn!");
        player.setCompassTarget(player.getWorld().getSpawnLocation());
      }
    }
    else
    {
      sender.sendMessage(ChatColor.DARK_RED + "To polecenie nie moze byc wywolane z konsoli!");
    }
    return false;
  }
}
 

Opublikowano

Polecam @Rambo05

public class SpawnCommand implements CommandExecutor,Listener
{
Main main;
ArrayList<String> spawnA = new ArrayList<>();

public SpawnCommand(Main main) {
this.main = main;
}

public boolean onCommand(final CommandSender sender, final Command cmd, final String commandLabel, final String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.RED + "To polecenie nie moze byc wykonane z konsoli.");
}
else if (!sender.hasPermission("serwer.spawn")) {
sender.sendMessage("§6Koordynaty spawnu: §2x:0 | z:0§6.");
}
else if (args.length > 0) {
sender.sendMessage("§8» §7Poprawne uzycie: §a/spawn§7.");
}
else {
final Player player = (Player)sender;
player.sendMessage("§8» §6Teleportacja nastapi za: §210 §6sekund...");
player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 200, 10));
player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 200, 2));
player.addPotionEffect(new PotionEffect(PotionEffectType.HUNGER, 200, 2));
player.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 200, 2));
final Player player2 = (Player)sender;
spawnA.add(player2.getName());
Bukkit.getScheduler().scheduleSyncDelayedTask(this.main, (Runnable)new Runnable() {
@Override
public void run() {
if (spawnA.contains(player2.getName())){
player2.sendMessage("§8» §6Przeteleportowano na spawn!");
final double x = SpawnCommand.this.main.getConfig().getDouble("x");
final double y = SpawnCommand.this.main.getConfig().getDouble("y");
final double z = SpawnCommand.this.main.getConfig().getDouble("z");
spawnA.remove(player2.getName());
final float yaw = (float)SpawnCommand.this.main.getConfig().getDouble("yaw");
final float pitch = (float)SpawnCommand.this.main.getConfig().getDouble("pitch");
final Location location = new Location(Bukkit.getWorld("world"), x, y, z, yaw, pitch);
player2.teleport(location);
}}
}, 200L);
}
return false;
}




@EventHandler
public void udezenie(EntityDamageEvent e) {
if ((e.getEntity() instanceof Player)) {
Player c = (Player)e.getEntity();
if (spawnA.contains(c.getName())) {
c.sendMessage("§cTeleport anulowany!");
spawnA.remove(c.getName());
}
}
}

@EventHandler
public void s(PlayerMoveEvent e){
Player p =e.getPlayer();
if (spawnA.contains(p.getName())) {
spawnA.remove(p.getName());
p.sendMessage("wiadomosc");
}
}
}
Opublikowano

Zamykam. Podziękowania dla Najs. :# za napisanie nowego kodu (działającego).

Pozdrawiam.


To ja typ niepokorny ;x


 


Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...