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] Minecraft plugin


Rekomendowane odpowiedzi

Opublikowano

Witam. Oto mam maly problem z pluginem do minecrafta. Mianowicie kompilator nie wyrzuca zadnego bledu, a w minecrafcie komenda nie dziala. Wyskakuje cos w stylu: "komenda wytworzyla blad" (nie pamietam dokladnie jak to szlo ;p). Oto moj kod:

package Draxiu.DraxVip;

import java.util.logging.Logger;

import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.plugin.java.JavaPlugin;

import ru.tehkode.permissions.PermissionUser;
import ru.tehkode.permissions.bukkit.PermissionsEx;

public class DraxVip extends JavaPlugin{

	protected static final Logger log = Logger.getLogger("Minecraft");
	
	@Override
	public void onEnable()
	{
		log.info("[DraxVip] Zostal wczytany!");
	}
	
	@Override
	public void onDisable()
	{
		log.info("[DraxVip] Zostal wylaczony");
	}
	
	@Override
	public boolean onCommand(CommandSender sender, Command cmd, String label, String []args){
		if(cmd.getName().equalsIgnoreCase("gabka"))
		{
			if (sender instanceof Player)
			{
				Player player = (Player) sender;
				PlayerInventory inventory = player.getInventory();
				if(inventory.contains(19))
				{
					PermissionUser user = PermissionsEx.getUser(args[0]);
					ItemStack itemstack = new ItemStack (Material.SPONGE);
					inventory.remove(itemstack);
					user.addGroup("VIP");
				}
				else
				{
					sender.sendMessage(ChatColor.RED +"Nie posiadasz w ekwipunku swojej "+ ChatColor.GOLD +"gabki!");
				}
				
			}
			return true;
		}
		return false;
	}

    }
	


 

 

Prosze nie hejtowac w stylu: "nie umiesz pisac itp.". Dopiero sie ucze :)

Opublikowano

Spróbuj dodać try - catch do onCommand

 

 

try{

kod

}catch(Exception e){

e.printstack

}

Opublikowano

Hmm a moglbys mi powiedziec gdzie to wkleic? Bo jestem kompletnym idiota i wklejam wszedzie i wyskakuja bledy ;/ Z gory dzieki za pomoc ;p

Opublikowano
public class DraxVip extends JavaPlugin
 

A może tak zaimplementuj CommandExecutor ;]

Dodaj komendę w plugin.yml oraz zarejestruj ją w onEnable.

 

Po za tym radze ci robić każdą komendę w innym pliku, łatwiej się połapać ;]

//gif w sygnie

Opublikowano

Moim zdaniem jak nie umiesz to się za to nie bierz :-) .

A co do nauki to kup sobie jakąś książkę i czytaj (nt. Programowania Java)

Jak na razie ziomuś polecam Ci do tworzenia komend tekstowych :

 

 

Pozdrawiam

Raczej, tworząc komendy w gotowym pluginie nic sie nie nauczy. Co do nauki javy, to można nauczyć się z internetu - do pisania pluginów wystarczy.

//gif w sygnie

Opublikowano

@3xUP
Jesli dobrze zrozumialem (ale w to watpie) to chodzilo o cos takiego:

DraxVip.java

package Draxiu.DraxVip;

import java.util.logging.Logger;


import org.bukkit.plugin.java.JavaPlugin;


public class DraxVip extends JavaPlugin{

	protected static final Logger log = Logger.getLogger("Minecraft");
	
	@Override
	public void onEnable()
	{
		getCommand("gabka").setExecutor(new gabka());
		log.info("[DraxVip] Zostal wczytany!");
	}
	
	@Override
	public void onDisable()
	{
		log.info("[DraxVip] Zostal wylaczony");
	}
	

    }
	


gabka.java

package Draxiu.DraxVip;

import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;

import ru.tehkode.permissions.PermissionUser;
import ru.tehkode.permissions.bukkit.PermissionsEx;

public class gabka implements CommandExecutor {


@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String []args){
	if(cmd.getName().equalsIgnoreCase("gabka"))
	{
		if (sender instanceof Player)
		{
			Player player = (Player) sender;
			PlayerInventory inventory = player.getInventory();
			if(inventory.contains(19))
			{
				PermissionUser user = PermissionsEx.getUser(args[0]);
				ItemStack itemstack = new ItemStack (Material.SPONGE);
				inventory.remove(itemstack);
				user.addGroup("VIP");
			}
			else
			{
				sender.sendMessage(ChatColor.RED +"Nie posiadasz w ekwipunku swojej "+ ChatColor.GOLD +"gabki!");
			}
			
		}
		return true;
	}
	return false;
}
}

 


I jak wlaczylem ten plugin to bukkit go wszystko pieknie ladnie wykrywa, ale po wpisaniu komendy.. blad.

Opublikowano

Plugin dodałeś do plugin.yml ? I podaj błąd z konsoli - ss zrób lub skopiuj.

//gif w sygnie

Opublikowano

@UP

Plugin jest dodany do plugin.yml . W przeciwnym razie nie wykrywalo by go ;p
Zaraz zedytuje z logami

 

@edit
Tak to wyglada..

2013-05-11 12:49:10 [INFO] Starting minecraft server version 1.5.2
2013-05-11 12:49:10 [WARNING] To start the server with more ram, launch it as "java -Xmx1024M -Xms1024M -jar minecraft_server.jar"
2013-05-11 12:49:10 [INFO] Loading properties
2013-05-11 12:49:10 [INFO] Default game type: SURVIVAL
2013-05-11 12:49:10 [INFO] Generating keypair
2013-05-11 12:49:14 [INFO] Starting Minecraft server on 25.142.81.227:25565
2013-05-11 12:49:19 [INFO] This server is running CraftBukkit version git-Bukkit-1.5.2-R0.1-b2771jnks (MC: 1.5.2) (Implementing API version 1.5.2-R0.1)
2013-05-11 12:49:20 [INFO] ----- Bukkit Auto Updater -----
2013-05-11 12:49:20 [INFO] It appears that you're running a Beta Build, when you've specified in bukkit.yml that you prefer to run Recommended Builds.
2013-05-11 12:49:20 [INFO] If you would like to be kept informed about new Beta Build releases, it is recommended that you change 'preferred-channel' in your bukkit.yml to 'beta'.
2013-05-11 12:49:20 [INFO] With that set, you will be told whenever a new version is available for download, so that you can always keep up to date and secure with the latest fixes.
2013-05-11 12:49:20 [INFO] If you would like to disable this warning, simply set 'suggest-channels' to false in bukkit.yml.
2013-05-11 12:49:20 [INFO] ----- ------------------- -----
2013-05-11 12:49:21 [INFO] [PermissionsEx] sql backend registered!
2013-05-11 12:49:21 [INFO] [PermissionsEx] file backend registered!
2013-05-11 12:49:21 [INFO] [PermissionsEx] PermissionEx plugin initialized.
2013-05-11 12:49:21 [INFO] [DraxVip] Loading DraxVip v1.0
2013-05-11 12:49:21 [INFO] [WorldEdit] Loading WorldEdit v5.5.5
2013-05-11 12:49:21 [INFO] [PermissionsEx] Loading PermissionsEx v1.19.5
2013-05-11 12:49:21 [INFO] [PermissionsEx] Initializing file backend
2013-05-11 12:49:21 [INFO] Permissions file successfully reloaded
2013-05-11 12:49:21 [INFO] [iChat] Loading iChat v2.6.2
2013-05-11 12:49:21 [INFO] [DraxInformator] Loading DraxInformator v1.0
2013-05-11 12:49:21 [INFO] [WorldGuard] Loading WorldGuard v5.7.3
2013-05-11 12:49:21 [INFO] [Essentials] Loading Essentials v2.10.1
2013-05-11 12:49:21 [INFO] [EssentialsSpawn] Loading EssentialsSpawn v2.10.1
2013-05-11 12:49:21 [WARNING] **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!
2013-05-11 12:49:21 [WARNING] The server will make no attempt to authenticate usernames. Beware.
2013-05-11 12:49:21 [WARNING] While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.
2013-05-11 12:49:21 [WARNING] To change this, set "online-mode" to "true" in the server.properties file.
2013-05-11 12:49:21 [INFO] Preparing level "world"
2013-05-11 12:49:22 [INFO] Preparing start region for level 0 (Seed: 6415432385093134871)
2013-05-11 12:49:23 [INFO] Preparing spawn area: 8%
2013-05-11 12:49:24 [INFO] Preparing spawn area: 33%
2013-05-11 12:49:25 [INFO] Preparing spawn area: 66%
2013-05-11 12:49:26 [INFO] Preparing spawn area: 95%
2013-05-11 12:49:27 [INFO] Preparing start region for level 1 (Seed: 6415432385093134871)
2013-05-11 12:49:27 [INFO] Preparing spawn area: 4%
2013-05-11 12:49:28 [INFO] Preparing spawn area: 49%
2013-05-11 12:49:29 [INFO] Preparing spawn area: 78%
2013-05-11 12:49:30 [INFO] Preparing start region for level 2 (Seed: 6415432385093134871)
2013-05-11 12:49:30 [INFO] Preparing spawn area: 45%
2013-05-11 12:49:31 [INFO] [DraxVip] Enabling DraxVip v1.0
2013-05-11 12:49:31 [INFO] [DraxVip] Zostal wczytany!
2013-05-11 12:49:31 [INFO] [WorldEdit] Enabling WorldEdit v5.5.5
2013-05-11 12:49:31 [INFO] WEPIF: Using the Bukkit Permissions API.
2013-05-11 12:49:31 [INFO] [PermissionsEx] Enabling PermissionsEx v1.19.5
2013-05-11 12:49:32 [INFO] [PermissionsEx] Superperms support enabled.
2013-05-11 12:49:32 [INFO] [PermissionsEx] v1.19.5 enabled
2013-05-11 12:49:32 [INFO] WEPIF: PermissionsEx detected! Using PermissionsEx for permissions.
2013-05-11 12:49:32 [INFO] [iChat] Enabling iChat v2.6.2
2013-05-11 12:49:32 [INFO] [iChat] Found PermissionsEx v1.19.5
2013-05-11 12:49:32 [INFO] iChat (v2.6.2) enabled
2013-05-11 12:49:32 [INFO] [DraxInformator] Enabling DraxInformator v1.0
2013-05-11 12:49:32 [INFO] [DraxInformator] Zostal wczytany!
2013-05-11 12:49:32 [INFO] [WorldGuard] Enabling WorldGuard v5.7.3
2013-05-11 12:49:32 [INFO] [WorldGuard] (world) TNT ignition is PERMITTED.
2013-05-11 12:49:32 [INFO] [WorldGuard] (world) Lighters are PERMITTED.
2013-05-11 12:49:32 [INFO] [WorldGuard] (world) Lava fire is blocked.
2013-05-11 12:49:32 [INFO] [WorldGuard] (world) Fire spread is UNRESTRICTED.
2013-05-11 12:49:32 [INFO] [WorldGuard] Loaded configuration for world 'world'
2013-05-11 12:49:32 [INFO] [WorldGuard] (world_nether) TNT ignition is PERMITTED.
2013-05-11 12:49:32 [INFO] [WorldGuard] (world_nether) Lighters are PERMITTED.
2013-05-11 12:49:32 [INFO] [WorldGuard] (world_nether) Lava fire is blocked.
2013-05-11 12:49:32 [INFO] [WorldGuard] (world_nether) Fire spread is UNRESTRICTED.
2013-05-11 12:49:32 [INFO] [WorldGuard] Loaded configuration for world 'world_nether'
2013-05-11 12:49:32 [INFO] [WorldGuard] (world_the_end) TNT ignition is PERMITTED.
2013-05-11 12:49:32 [INFO] [WorldGuard] (world_the_end) Lighters are PERMITTED.
2013-05-11 12:49:32 [INFO] [WorldGuard] (world_the_end) Lava fire is blocked.
2013-05-11 12:49:32 [INFO] [WorldGuard] (world_the_end) Fire spread is UNRESTRICTED.
2013-05-11 12:49:32 [INFO] [WorldGuard] Loaded configuration for world 'world_the_end'
2013-05-11 12:49:32 [INFO] [WorldGuard] 7 regions loaded for 'world'
2013-05-11 12:49:32 [INFO] [WorldGuard] 0 regions loaded for 'world_nether'
2013-05-11 12:49:32 [INFO] [WorldGuard] 0 regions loaded for 'world_the_end'
2013-05-11 12:49:32 [INFO] [Essentials] Enabling Essentials v2.10.1
2013-05-11 12:49:33 [INFO] Essentials: Using PermissionsEx based permissions.
2013-05-11 12:49:33 [INFO] [EssentialsSpawn] Enabling EssentialsSpawn v2.10.1
2013-05-11 12:49:33 [INFO] Server permissions file permissions.yml is empty, ignoring it
2013-05-11 12:49:33 [INFO] Done (12,063s)! For help, type "help" or "?"
2013-05-11 12:49:48 [INFO] Draxiu[/25.142.81.227:2952] logged in with entity id 483 at ([world] -265.3012728115805, 76.0, 532.12606946133)
2013-05-11 12:49:51 [WARNING] Can't keep up! Did the system time change, or is the server overloaded?
2013-05-11 12:49:59 [INFO] Draxiu issued server command: /gabka
2013-05-11 12:50:00 [SEVERE] null
org.bukkit.command.CommandException: Unhandled exception executing command 'gabka' in plugin DraxVip v1.0
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
	at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189)
	at org.bukkit.craftbukkit.v1_5_R3.CraftServer.dispatchCommand(CraftServer.java:523)
	at net.minecraft.server.v1_5_R3.PlayerConnection.handleCommand(PlayerConnection.java:965)
	at net.minecraft.server.v1_5_R3.PlayerConnection.chat(PlayerConnection.java:883)
	at net.minecraft.server.v1_5_R3.PlayerConnection.a(PlayerConnection.java:840)
	at net.minecraft.server.v1_5_R3.Packet3Chat.handle(Packet3Chat.java:44)
	at net.minecraft.server.v1_5_R3.NetworkManager.b(NetworkManager.java:292)
	at net.minecraft.server.v1_5_R3.PlayerConnection.d(PlayerConnection.java:109)
	at net.minecraft.server.v1_5_R3.ServerConnection.b(SourceFile:35)
	at net.minecraft.server.v1_5_R3.DedicatedServerConnection.b(SourceFile:30)
	at net.minecraft.server.v1_5_R3.MinecraftServer.r(MinecraftServer.java:581)
	at net.minecraft.server.v1_5_R3.DedicatedServer.r(DedicatedServer.java:226)
	at net.minecraft.server.v1_5_R3.MinecraftServer.q(MinecraftServer.java:477)
	at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java:410)
	at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:573)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
	at Draxiu.DraxVip.gabka.onCommand(gabka.java:28)
	at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
	... 15 more
2013-05-11 12:50:06 [INFO] Connection reset
2013-05-11 12:50:06 [INFO] Draxiu lost connection: disconnect.quitting
2013-05-11 12:50:07 [WARNING] Can't keep up! Did the system time change, or is the server overloaded?
2013-05-11 12:50:10 [INFO] CONSOLE: Stopping the server..[m
2013-05-11 12:50:10 [INFO] Stopping server
2013-05-11 12:50:10 [INFO] [EssentialsSpawn] Disabling EssentialsSpawn v2.10.1
2013-05-11 12:50:10 [INFO] [Essentials] Disabling Essentials v2.10.1
2013-05-11 12:50:10 [INFO] [WorldGuard] Disabling WorldGuard v5.7.3
2013-05-11 12:50:10 [INFO] [DraxInformator] Disabling DraxInformator v1.0
2013-05-11 12:50:10 [INFO] [DraxInformator] Zostal wylaczony
2013-05-11 12:50:10 [INFO] [iChat] Disabling iChat v2.6.2
2013-05-11 12:50:11 [INFO] [iChat] iChat Disabled
2013-05-11 12:50:11 [INFO] [PermissionsEx] Disabling PermissionsEx v1.19.5
2013-05-11 12:50:11 [INFO] WEPIF: PermissionsEx detected! Using PermissionsEx for permissions.
2013-05-11 12:50:11 [INFO] Permissions file successfully reloaded
2013-05-11 12:50:11 [INFO] [PermissionsEx] v1.19.5 disabled successfully.
2013-05-11 12:50:11 [INFO] [WorldEdit] Disabling WorldEdit v5.5.5
2013-05-11 12:50:11 [INFO] [DraxVip] Disabling DraxVip v1.0
2013-05-11 12:50:11 [INFO] [DraxVip] Zostal wylaczony
2013-05-11 12:50:11 [WARNING] DSCT: socket closed
2013-05-11 12:50:11 [INFO] Closing listening thread
2013-05-11 12:50:11 [INFO] Saving players
2013-05-11 12:50:11 [INFO] Saving worlds
2013-05-11 12:50:11 [INFO] Saving chunks for level 'world'/Overworld

Opublikowano
PermissionUser user = PermissionsEx.getUser(args[0]);
 

Tutaj podajesz argument : /gabka argument

 

A w konsoli wypisało że wpisałeś, po prostu /gabka, wtedy wywali ci error, bo nie istnieje args[0]. Proste i logiczne.

//gif w sygnie

Opublikowano

Radze ci sprawdzać przez if() czy liczba argumentów jes np 1.

Pamiętaj, że tutaj liczba argumentów jest numerowana od 1, nie od 0 ;]

 

 

if(args.length == 1){
//Jeżeli jest 1 argument ...
}else{
// Jeżeli jest więcej lub mniej.
}
 

 

//gif w sygnie

Opublikowano

Dzieki za pomoc. Juz wszystko dziala :).



Jesli moge was jeszcze wykorzystac to podajcie mi funkcje ktora da graczowi vipa na czas ;p. Chodzi o ta linijke: user.addGroup("VIP");

Opublikowano
PermissionUser user = PermissionsEx.getUser(player);

 

Zamiast args[0] dajesz player, bo zmienną player przypisałeś dla osoby wysyłającej komendę czyli CommandSender.

//gif w sygnie

Opublikowano

@UP

Nie o to mi chodzi ;/. Moze zakoloruje to co potrzebuje na czerwono zeby bylo latwiej wyjasnic



package Draxiu.DraxVip;

import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.PlayerInventory;

import ru.tehkode.permissions.PermissionUser;
import ru.tehkode.permissions.bukkit.PermissionsEx;

public class gabka implements CommandExecutor {


@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String []args){
	if(cmd.getName().equalsIgnoreCase("gabka"))
	{
		if (sender instanceof Player)
		{
			Player player = (Player) sender;
			PlayerInventory inventory = player.getInventory();
			if(inventory.contains(19))
			{
				PermissionUser user = PermissionsEx.getUser(player);
				inventory.remove(Material.SPONGE);
				user.addGroup("VIP");
			}
			else
			{
				sender.sendMessage(ChatColor.RED +"Nie posiadasz w ekwipunku swojej "+ ChatColor.GOLD +"gabki!");
			}
			
		}
		return true;
	}
	return false;
}
}

 

 

Chce zeby to co jest na czerwono dawalo vipa na 1 dzien ;)

 

@edit

Kurcze nie da sie pokolorowac

 

W kazdym badz razie chodzi mi o linijke: user.addGroup("VIP");

Opublikowano

@UP
No i tak ma byc, ale z tego kodu wynika ze dostanie tego vipa na ZAWSZE. A ja chce zeby on go dostal na 1 dzien :P

@Down

No to mnie nie pocieszyles...

 

Ale znalazlem cos takiego:

user.addGroup(groupName, worldName, lifetime);

 

Tylko powiedz mi co wpisac w lifetime.. Bo po zastosowaniu tego gracz dostaje vipa na 13548641654 sekund..

Opublikowano

Hehe, to już dłuższy kod, musisz zapisać do pliku date w której dostał vipa, potem przy wejsciu na serwer sprawdzić czy data nie mineła i ewt zabrać mu vipa. Nie dam ci gotowego kodu, aczkolwiek pisałem coś takiego, musisz sam do tego dojść.

 

@up

user.addGroup(groupName, worldName, lifetime);
Lifetime jest w sekundach, wystarczy przeczytać. Nie wiem jak on dokładnie działa, bo go nie stosowałem.

//gif w sygnie

Opublikowano

polecałbym korzystanie z wywołania komend, np. /pex itp. Są do tego odpowiednie metody w klasie org.bukkit.Bukkit. P.S. Od kiedy minecraft ma pluginy?

Opublikowano

Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "Tutaj komenda bez /");

 

Komenda ta wywoła się tak samo jakbyś ją wpisał w konsoli ;]

//gif w sygnie

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...