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

[Problem] Trochę pytań jak coś napisać w pluginie


Rekomendowane odpowiedzi

Opublikowano

Prawdę mówiąc zerknąłem tylko okiem, ale kod wygląda na sensowny.

Niestety, nie sprawdzałem ze względu braku wolnego czasu.

Sprawdź czy działa, kod nie wydaje się trudny więc powinieneś go zrozumieć:

 

https://forums.bukkit.org/threads/command-block-restriction-edit.182295/#post-1903083
https://forums.bukkit.org/threads/enter-text-in-command-block-event.262932/

Jeśli nie mogę podać powyższych linków ze względu na regulamin, przepraszam i proszę o usunięcie.

ofc. :)

 

Tego szukałem.

Tym da się zablokować pewne komendy?

Chcę takie coś zrobić, gdyż moja wspaniała ekipa wpisywała to w commandblocku: /pex user @p group set CoOwner.

I wchodzę pewnego dnia a tak cała ekipa ma rangę Współ Właściciel :);.

 

 

@Autor

Tu się nauczysz pisać pluginy, w każdym razie dużo się z tego o "pluginowaniu" nauczysz:

http://www.mpcforum.pl/topic/1016491-od-zera-do-bukkits-plug-in-developera/#entry8425251

PS: Jeżeli chciałbyś mi pomóc w serwerze, to zapraszam :D

Jeżeli masz 16+ lat to chętnie Cię przyjmę <3

A jeżeli czegoś nie będziesz wiedzieć, to możesz mnie spytać (Chociaż ja też się uczę :D)

 

Dzięki za link.

W przypadku problemów zapytam się na forum, a jeżeli nie dostanę dobrej odpowiedzi to wiem do kogo pisać :).

 

Oboje dostajecie like.

"Los nagradza przygotowanych"

 

(Liberator 2)

  • Odpowiedzi 142
  • Dodano
  • Ostatniej odpowiedzi
Opublikowano

@up Tak, da sie.
Masz tam miedzy innymi takie linijki jake qualsIgnoreCase
Po prostu dajesz jesli arg bedzie wynosil pex (dol) , ma anulowac event
 

if (args[0].equalsIgnoreCase("pex")

733761405517115815990.png

"To, że milczę, nie znaczy, że nie mam nic do powiedzenia" ~Jonathan Carroll

Opublikowano

Ale czy da się anulować wykonanie polecenia przez commandblocka (po dostarczeniu prądu) czy można tylko anulować wpisanie polecenia?

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

A jak wyświetlać własne napisy w scoreboard np. Witaj <nick>!

 

I jak za pomocą ChatColor zrobić coś na czerwono i pogrubione?

 

/Sory za multiposta, ale szybko pisałem szybką odpowiedzią z pierwszej strony i nie zauważyłem. Można to scalić?

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

jeśli komenda jest uzyta przez commandblock, to powinno to być widocznie normalnie w onCommand, tylko że sender zamiast być Graczem (Player) lub konsolą (ConsoleCommandSender) to będzie blokiem - BlockCommandSender

 

Wystraczy sprawdzić czy sender instanceof BlockCommandSender i jak tak to scastować i robić co się chce.

 

(Oczywiście chodzi tu o nasze komendy, ale tak to powinno zaskoczyć w jakimś innym evencie)

 

PS: o takich problemach lepiej pisać na bukkicie, polskim (bukkit.pl) lub angielskim (bukkit.org) :P tutaj trudniej zdobyć czasem pomoc, bo to w końcu nie forum o pisaniu pluginów :)

To już jest koniec smerfa:


http://www.mpcforum.pl/topic/1323530-info-znikam/


GG: 48522543


PS: Na innych forach i stronach znajdziesz mnie pod nickiem: 


BukkitSmerf

Opublikowano

jeśli komenda jest uzyta przez commandblock, to powinno to być widocznie normalnie w onCommand, tylko że sender zamiast być Graczem (Player) lub konsolą (ConsoleCommandSender) to będzie blokiem - BlockCommandSender

 

Wystraczy sprawdzić czy sender instanceof BlockCommandSender i jak tak to scastować i robić co się chce.

 

(Oczywiście chodzi tu o nasze komendy, ale tak to powinno zaskoczyć w jakimś innym evencie)

 

PS: o takich problemach lepiej pisać na bukkicie, polskim (bukkit.pl) lub angielskim (bukkit.org) :P tutaj trudniej zdobyć czasem pomoc, bo to w końcu nie forum o pisaniu pluginów :)

 

A scoreboard?

Napisy np. Witaj <nick>!

Więcej w poprzednim moim poście.

 

To ważniejsze.

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

masz normalnie opcje Bukkit.gerSocoreboardManager() i tam musisz tworzyć nowego scoreboarda dla kazdego gracza (jak chcesz by każdy widział własne dane, to musisz każdemu stworzyc osobny)

Więc tworzysz nowego scoreboarda za pomocą tego managera, i przypisujesz do gracza - player.setSocreboard

 

A obsługa samego scoreboard jest już prosta :)

To już jest koniec smerfa:


http://www.mpcforum.pl/topic/1323530-info-znikam/


GG: 48522543


PS: Na innych forach i stronach znajdziesz mnie pod nickiem: 


BukkitSmerf

Opublikowano

Tylko nie wiem jak to ustawić.

 

Umiem jakąś wartość (np. kille), ale nie sam tekst.

 

Jak to zrobić?

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

Ale nie tytuł.

 

Chodzi mi, jak zrobić takie coś:

 

Witaj <nick>!

 

===============

 

Obecnie online: XXX

 

Twój level: XXX

 

 

i tak dalej...

 

Chodzi mi, żeby każda linijka była jako string, a nie jakiś odczyt scoreboarda.

 

 

Jak to zrobić?

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

 

Przykład z pluginu Info-Board ze strony bukkitu.

 

Chcę napisać takie coś sam:

 

Obrazek:

 

infoboard_image.png

 

I też link do niego na wszelki wypadek:

http://dev.bukkit.org/media/images/63/709/infoboard_image.png

no to to są zwykłe opcje scoreboarda :P

jest dodany offline gracz z nickiem "Online:" + kolorek i z wynikiem 13

w następnej linijsce jest "1" z wynikiem 12

 

Jak widzisz po bokach sa wyniki :P

Więc to tylko fałszywi gracza na scoreboard :)

A wyniki są dla zachowania kolejności

To już jest koniec smerfa:


http://www.mpcforum.pl/topic/1323530-info-znikam/


GG: 48522543


PS: Na innych forach i stronach znajdziesz mnie pod nickiem: 


BukkitSmerf

Opublikowano

Acha.

 

Nie wpadłem na to :).

 

Dzięki.

Jak za każdy post w tym dziale like leci.

 

A jak zrobić ChatColor.RED i ChatColor.BOLD obok siebie?

Jak je rozdzielam znakiem + to mi wywala errora.

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

 

 

[..]

 

Timer:

this.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {

public void run() {
//* twój kod *//
}
}, 20L);

Gdzie 20L to 1sekunda

40L to 2 sekundy, etc...

 

[...]

 

Jak używać takiego timera?

 

Chodzi mi oto, żeby dana procedura wykonywała się przez cały czas od włączenia serwera co 5 sekund .

Jak to zrobić i w gdzie to umieścić?

W onEnable?

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

A czy ktoś poda i wytłumaczy wszystkie timery?

 

Czyli np. działa cały czas, działa ileś razy, działą raz za ileś czasu, ...

 

I jak taki timer co się powtarza zatrzymać?

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

A czy ktoś poda i wytłumaczy wszystkie timery?

 

Czyli np. działa cały czas, działa ileś razy, działą raz za ileś czasu, ...

 

I jak taki timer co się powtarza zatrzymać?

Poczytaj dokumentacje http://jd.bukkit.org ;)

 

Zrob ten scheduler do zmiennej i potem Bukkit.getScheduler().cancelTask(ta zapisana zmienna);

Dlaczego MPC popiera piractwo Minecrafta...

 

Do moderatora: Po co Ty to usuwasz??

Opublikowano

Jak zrobić, żeby do listy typu string system dodał nazwy wszystkich regionów (z WorldGuarda) w których znajduje się obecnie gracz (może być oprócz global)?

 

Kombinowałem już na różne sposoby, oglądałem różne tutki, ale w żadnym nie podali tego co chcę, a jak to starałem się przerobić to nie działało (oczywiście wimportowałem WorldEdit i WorldGuard).

 

Fragment kodu (w evencie BlockBreakEvent):

			Location location = event.getPlayer().getLocation();
			
			RegionManager regionManager = getWorldGuard().getRegionManager( location.getWorld());
			ApplicableRegionSet set = regionManager.getApplicableRegions( location );
			
			FileConfiguration config = getConfig();
			
			LinkedList <String> regions = new LinkedList <String>();
			
			if (regions.size() > 0)
			{
				for (ProtectedRegion region : set)
				{
					regions.add(region.getId());
				}
			}

Tego co jest przed tym i za tym już nie piszę.

 

Proszę o pomoc.

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

Jak zrobić, żeby do listy typu string system dodał nazwy wszystkich regionów (z WorldGuarda) w których znajduje się obecnie gracz (może być oprócz global)?

 

Kombinowałem już na różne sposoby, oglądałem różne tutki, ale w żadnym nie podali tego co chcę, a jak to starałem się przerobić to nie działało (oczywiście wimportowałem WorldEdit i WorldGuard).

 

Fragment kodu (w evencie BlockBreakEvent):

			Location location = event.getPlayer().getLocation();
			
			RegionManager regionManager = getWorldGuard().getRegionManager( location.getWorld());
			ApplicableRegionSet set = regionManager.getApplicableRegions( location );
			
			FileConfiguration config = getConfig();
			
			LinkedList <String> regions = new LinkedList <String>();
			
			if (regions.size() > 0)
			{
				for (ProtectedRegion region : set)
				{
					regions.add(region.getId());
				}
			}

Tego co jest przed tym i za tym już nie piszę.

 

Proszę o pomoc.

Hyym, ten kod wygląda dobrze, powinno dodawać bez problemu do listy

dodaj sobie jakieś debugowe informacje

To już jest koniec smerfa:


http://www.mpcforum.pl/topic/1323530-info-znikam/


GG: 48522543


PS: Na innych forach i stronach znajdziesz mnie pod nickiem: 


BukkitSmerf

Opublikowano

Tutaj cały event.

 

Piszę taki pluginek bo na moim serwerze admini się tepali do mojego domku ciągle i go przebudowywali bez mojej zogdy, a także włazili do niego cały czas.

 

To chwilowo tylko na rozwalanie klocków, ale jak będzie działać to pokopiuję też na inne eventy:

		@EventHandler (priority = EventPriority.LOW)
		public void onBreak (BlockBreakEvent event)
		{
			Location location = event.getPlayer().getLocation();
			
			RegionManager regionManager = getWorldGuard().getRegionManager( location.getWorld());
			ApplicableRegionSet set = regionManager.getApplicableRegions( location );
			
			FileConfiguration config = getConfig();
			
			LinkedList <String> regions = new LinkedList <String>();
			
			if (regions.size() > 0)
			{
				for (ProtectedRegion region : set)
				{
					regions.add(region.getId());
				}
			}
			
			
			if (!regions.isEmpty())
			{
				for (int i = 0; i < regions.size(); i++)
				{
					File file = new File("/plugins/ExtensionPack/regions/"+event.getPlayer().getLocation().getWorld().getName()+"/"+regions.get(i)+".yml");
					FileConfiguration cuboid = YamlConfiguration.loadConfiguration(file);
					
					if (file.exists())
					{
						int mode = cuboid.getInt("BreakMode");
						Player p = event.getPlayer();
						
						if (mode > 0 && !p.getName().equalsIgnoreCase(config.getString("ServerName")) && !p.getName().equalsIgnoreCase(cuboid.getString("owner")))
						{
							if (!p.hasPermission("extension.cube.break." + regions.get(i)))
							{
								event.setCancelled(true);
								
								p.sendMessage(ChatColor.RED + "[Extension Pack] Nie masz uprawnień do niszczenia bloków w tym regionie!");
							}
							else
							{
								if (mode == 2)
								{
									if (!p.isOp())
									{
										event.setCancelled(true);
										
										p.sendMessage(ChatColor.RED + "[Extension Pack] Masz uprawnienia do niszczenia bloków w tym regionie, ale musisz mieć też OP!");
									}
								}
								else
								{
									if (mode == 3 || mode == 4)
									{
										List<String> allowed = new ArrayList();
											
										allowed = (List<String>) config.getList("BreakList");
											
										if (!allowed.contains(p.getName()))
										{
											event.setCancelled(true);
											
											p.sendMessage(ChatColor.RED + "[Extension Pack] Nie jesteś dopuszczony do niszczenia bloków w tym regionie!");
										}
										else
										{
											if (mode == 4 && !p.isOp())
											{
												event.setCancelled(true);
												
												p.sendMessage(ChatColor.RED + "[Extension Pack] Do niszczenia bloków w tym regionie wymagany jest OP!");
											}
										}
									}
								}
							}
							
							if (mode > 4)
							{
								event.setCancelled(true);
								
								p.sendMessage(ChatColor.RED + "[Extension Pack] Musisz być właścicielem regionu, żeby móc tu rozwalać bloki!");
							}
						}
					}
				}
			}
		}

Nie pytaj po co jest zminna mode, itp... :).

Jeżeli będę chciał to plugin opublikuję (ci co są aktywni w tym wątku mogą mnie prosić o wysłanie pluginu nawet jak nie będzie opublikowany :)).

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

Jak zrobić, żeby do listy typu string system dodał nazwy wszystkich regionów (z WorldGuarda) w których znajduje się obecnie gracz (może być oprócz global)?

 

Kombinowałem już na różne sposoby, oglądałem różne tutki, ale w żadnym nie podali tego co chcę, a jak to starałem się przerobić to nie działało (oczywiście wimportowałem WorldEdit i WorldGuard).

 

Fragment kodu (w evencie BlockBreakEvent):

			Location location = event.getPlayer().getLocation();
			
			RegionManager regionManager = getWorldGuard().getRegionManager( location.getWorld());
			ApplicableRegionSet set = regionManager.getApplicableRegions( location );
			
			FileConfiguration config = getConfig();
			
			LinkedList <String> regions = new LinkedList <String>();
			
			if (regions.size() > 0)
			{
				for (ProtectedRegion region : set)
				{
					regions.add(region.getId());
				}
			}

Tego co jest przed tym i za tym już nie piszę.

 

Proszę o pomoc.

 

Od kogo skopiowany kod? Bo aż takim debilem chyba nie jesteś, aby robić coś takiego:

LinkedList <String> regions = new LinkedList <String>();
			
    if (regions.size() > 0)
    {
        // dodaj do listy
    }
Opublikowano

 

Od kogo skopiowany kod? Bo aż takim debilem chyba nie jesteś, aby robić coś takiego:

LinkedList <String> regions = new LinkedList <String>();
			
    if (regions.size() > 0)
    {
        // dodaj do listy
    }

Lol, nawet nie zauważyłam że tam jest "regions.size()" :D

Tam powinno byc jak już to set.size()

Albo usunąc tego if-a bo i tak zbędny

To już jest koniec smerfa:


http://www.mpcforum.pl/topic/1323530-info-znikam/


GG: 48522543


PS: Na innych forach i stronach znajdziesz mnie pod nickiem: 


BukkitSmerf

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...