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

Plugin - teleportacja na czas - co zrobić, aby musieli odczekać?


Trovst_eu

Rekomendowane odpowiedzi

Opublikowano

Omg wszyscy wklejają jakieś kody do skript'a a to wszystko można ustawić w pluginie essentials (facepalm) . Dodajesz do permisji gracza essentials.teleport.delay.#### //oczekiwanie na tp

essentials.teleport.cooldown.#### //odstęp czasowy między tp

#### zamieniasz chyba na milisekundy. Sprawdź sobie ;)

Wow zabłysnąłeś.

Nawet tematu nie przeczytałeś ;)

 

 

Możesz sobie zrobić jeszcze jakiś storage, który będzie pamiętał po wyłączeniu serwera, że dany gracz ową opcję zablokował.

784091427630431250239.png

Regulamin sygnatur

Opublikowano

Omg wszyscy wklejają jakieś kody do skript'a a to wszystko można ustawić w pluginie essentials (facepalm) . Dodajesz do permisji gracza essentials.teleport.delay.#### //oczekiwanie na tp

essentials.teleport.cooldown.#### //odstęp czasowy między tp

#### zamieniasz chyba na milisekundy. Sprawdź sobie ;)

no to zes blysnal jak gowno w kiblu...

@top

zapisuj w jakiejs liscie graczy ktorzy wylaczyli tp 

Opublikowano

­Szczerze Oldis to trochę nie rozumiem jak mam to zrobić, aż tak jeszcze zaawansowany nie jestem, a ostatnio nie mam zbytnio czasu na naukę.

Opublikowano

Z twojego tematu wynika, że chcesz aby przy każdej teleportacji, gracz musiał odczekać.

A więc zaczynamy:

 

W metode teleportującą gracza, dodajemy jego uuid do naprzyklad ArrayListy. Nastepnie tworzymy w niej wywołanie teleportacji, po upływie danego czasu.

Kiedy gracza będzie miało przeteleportować, sprawdzamy najpierw czy jego uuid jest w liscie.

Na końcu usuwamy gracza z listy.

Ja posłuże się zwyklym runTaskLater dla przykładu:

 

private ArrayList<UUID> teleportdata = new ArrayList<UUID>();

 

private void przykladowaMetoda(Player player) {

  teleportdata.add(player.getUniquedId());

  Bukkit.getScheduler().runTaskLater(this, new Runnable() {

    public void run() {

      if(teleportdata.contains(player.getUniqueId())) {

        player.teleport(player.getWorld().getSpawnLocation());

        teleportdata.remove(player.getUniqueId());

        player.sendMessage("Teleportacja przebiegla pomyslnie!");

      }

    }

  }, 100L);

}

 

Potem, najprościej, lecz troche mało optymalnie wywołujesz PlayerMoveEvent, a w nim sprawdzasz czy uuid gracza jest zawarte w liście.

Jeśli jest to usuwasz je.

Mozesz dodac wiadomosc, ze przez ruch, teleportacja sie nie odbędzie:

 

@EventHandler

public void onPlayerMove(PlayerMoveEvent e) {

  if(teleportdata.contains(e.getPlayer().getUniqueId())) {

    teleportdata.remove(e.getPlayer().getUniqueId());  

    e.getPlayer().sendMessage("Twoja teleportacja zostala anulowana przez ruch!");

  }

}

 

Pozdrawiam ;)

 

 

POTRZEBUJESZ STRONY INTERNETOWEJ?

ZAMÓW JĄ U MNIE!

https://www.mpcforum.pl/topic/1646972-tworzenie-stron-www/

Opublikowano

­Dziękuję wszystkim za pomoc :) Każdy mi pomógł, a przynajmniej starał się pomóc, ale od każdego czegoś nowego się dowiedziałem, co przyda mi się w przyszłości :)

 

Teraz zaczynam jeszcze robić komende /ustawwarp, /delwarp i /warp więc zapewne jakieś pytania się niedługo pojawią.

 

A z /setspawnu jeszcze ostatnie pytanie.

 

Gdy ustawiam /setspawn i później się na niego teleportuje, to jak zrobić żeby "steve" był odwrócony głową w tę stronę w którą byłem odwrócony przy ustawianiu punktu spawnu?

 

Kod ustawspawn:

if (cmd.getName().equalsIgnoreCase("ustawspawn")) {
            if (!p.hasPermission("location.setspawn")) {
                sender.sendMessage("§4Nie posiadasz uprawnien na uzycie tej komendy.");
                return true;
            }
            getConfig().set("Spawn.X", p.getLocation().getBlockX());
            getConfig().set("Spawn.Y", p.getLocation().getBlockY());
            getConfig().set("Spawn.Z", p.getLocation().getBlockZ());
            getConfig().set("Spawn.World", p.getLocation().getWorld().getName());
            saveConfig();
            p.sendMessage("§aSpawn zostal ustawiony.");
            return true;
        }

Kod spawn:

if (cmd.getName().equalsIgnoreCase("spawn")) {
            if (p.hasPermission("location.spawn.admin")) {
                int x = getConfig().getInt("Spawn.X");
                int y = getConfig().getInt("Spawn.Y");
                int z = getConfig().getInt("Spawn.Z");
                String worldname = getConfig().getString("Spawn.World");
                World w = getServer().getWorld(worldname);
                Location l = new Location(w, x, y, z);
                p.teleport(l);
                p.sendMessage("§aZostales przeniesiony na Spawn.");
                return false;
            }
            if (!p.hasPermission("location.spawn")) {
                sender.sendMessage("§4Nie posiadasz uprawnien na uzycie tej komendy.");
                return false;
            }
            sender.sendMessage("§cZostaniesz przeniesiony na spawn za 5 sekund.");
            final CommandSender cs = sender;
            Bukkit.getScheduler().runTaskLaterAsynchronously((Plugin) this, new Runnable() {
                public void run() {
                    Player p = (Player) cs;
                    int x = getConfig().getInt("Spawn.X");
                    int y = getConfig().getInt("Spawn.Y");
                    int z = getConfig().getInt("Spawn.Z");
                    String worldname = getConfig().getString("Spawn.World");
                    World w = getServer().getWorld(worldname);
                    Location l = new Location(w, x, y, z);
                    p.teleport(l);
                    p.sendMessage("§aZostales przeniesiony na Spawn.");
                }
            }, 100L);
        }
Opublikowano

Możesz zrobić w configu string listę ale jeżeli chcesz osobny plik to proszę

import java.io.File;
import java.util.logging.Logger;
 
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.java.JavaPlugin;
 
public class Messages extends JavaPlugin {
    public final Logger logger = Logger.getLogger("Minecraft");
   
    static File message;
    static FileConfiguration messageFile;
   
    @Override
    public void onEnable() {
        logger.info("Enabled!");
        message = new File(getDataFolder(), "messages.yml");
        messageFile = new YamlConfiguration();
    }
    @Override
    public void onDisable() {
        logger.info("Disabled!");
    }
}
 

tumblr_mvmbjq2EGs1s3ulybo1_500.gif

Jeśli to czytasz, znaczy to że się opierdalasz :)

Opublikowano

@Matrzak

 

Patrzac na twoj kod, ciezko nazwac Cie programista 

 

Jak metoda void moze zwrocic Ci instancje klasy?   xD  xD

Opublikowano

@OtekPlay

 

Kod nie jest mój nie miałem czasu na to a chciałem chłopakowi na szybko pomóc ;x

 

 

s6w4rx.jpg

 

 

Swoją drogą czepiasz się o instancje klasy.. jakiej klasy xD głownej? chłopak może sobie bez problemu zrobić .. chodzi tu o stworzenie pliku

 

i wytłumacz mi co miałeś na myśli pisząc "metoda void" ...

 

#brawo

tumblr_mvmbjq2EGs1s3ulybo1_500.gif

Jeśli to czytasz, znaczy to że się opierdalasz :)

Opublikowano

@up

 

To nie ucz z zlych przykladow zlych nawykow.

 

"teraz kilka informacji:

tam gdzie masz "this", używasz tego tylko kiedy kod jest w głównej klasie, inaczej wpisujesz tam instancje głownej klasy, albo void który ją zwraca...co tam wolisz

i teraz tak 20 ticków (to na dole) to jedna sekunda dlatego zrobiłem podstawowe mnożenie 5*20 ticków oczywiście zamiast tego można wpisać 100

 

.. to jest najprostsze opóźnienie

"
 
Cytat twoj "albo void który ją zwraca" <-- Wtf? Void? Cos zwraca?
Opublikowano

@up

 

Hym, musiałem to źle ubrać w slowa... możliwe że pisałem na szybko ;| nie przemyślałem do końca tego i wyszło... ;/

Oczywiście chodziło mi o konstruktor klasy

 

Jeżeli narobiło to wielkiego problemu to przepraszam ;/ na następny raz będę bardziej się przykładał do pisania, zaraz ten post zedytuje

tumblr_mvmbjq2EGs1s3ulybo1_500.gif

Jeśli to czytasz, znaczy to że się opierdalasz :)

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...