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] Pisanie pluginu.


Rekomendowane odpowiedzi

Opublikowano

@TheMolkaPL to ma byc do glownej klasy czy do package? bo mam "main: pluginy.mojanazwaktorejniezdradze" a ogolnie klase main mam Main nazwana, to znaczy ze musze wpisac w main "main: Main" ???

  • Odpowiedzi 56
  • Dodano
  • Ostatniej odpowiedzi
Opublikowano

@chyba ta, ty jeszcze nie ogarniasz ze my nabijamy posty sobie?

@TheMolkaPL, jaki najlepszy plugin .. Znaczy rpogram do pisania pluginow do minecrafta 1.7.2?

 

Nie ma czegoś takiego jak program do pisania pluginów. Jest coś takiego jak IDE - z angielskiego Integrated Development Environment, a więc Zintegrowane Środowisko Programistyczne. Program który pomaga w programowaniu.

Do Javy sam używam NetBeans IDE. Jednak chyba polecam lepiej IntellJ IDEA.

 

@TheMolkaPL to ma byc do glownej klasy czy do package? bo mam "main: pluginy.mojanazwaktorejniezdradze" a ogolnie klase main mam Main nazwana, to znaczy ze musze wpisac w main "main: Main" ???

 

Ma być podany pełny package z nazwą głównej klasy.

w moim przypadku często jest to (przy większych projektach)

pl.themolka.costam.plugin.CosTamPlugin

a więc mój package to pl.themolka.costam.plugin, zaś główna klasa to CosTamPlugin.

 

Zauważ, że package tworzy się od strony URL. Jeżeli piszesz - dedykujesz coś dla danego serwera. Załóżmy, że dla Google (chociaż on nie posiada serwerów Minecraft xD), tworzymy plugin o nazwie Arcade, a więc package powinien wyglądać tak:

com.google.arcade.plugin

Główna klasa pluginu to ArcadePlugin.

W plugin.yml powinno to wyglądać tak:

main: com.google.arcade.plugin.ArcadePlugin

Mam nadzieję, że wyjaśniłem :)

Dlaczego MPC popiera piractwo Minecrafta...

 

Do moderatora: Po co Ty to usuwasz??

Opublikowano

@TheMolkaPL Ło luju! Nie ma errorow i onEnable nawet wyslal mi slodka wiadomosc :D

 

klasa Main dziala, ale sam drop juz nie :( Domyslam sie ze cos z jakimisc Listenerami, ale co to juz nie wiem :/

 

@TheMolkaPL klasa Main: 

package pluginy.mojanazwa;

import java.util.logging.Logger;

import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin{
	
	public final Logger logger = Logger.getLogger("Minecraft");
	public static Main instance;
	public static Main plugin;
	public final Drop d = new Drop(this);
	int number;
	
	@Override
	public void onDisable() {
		PluginDescriptionFile pdf = getDescription();
		this.logger.info(pdf.getName() + " zostal wylaczony.");
}
	@Override
	public void onEnable() {
		PluginDescriptionFile pdf = getDescription();
		this.logger.info(pdf.getName() + " zostal wlaczony.");
}
}

klasa z dropem:

package pluginy.mojanazwa;

import java.util.Random;

import org.apache.commons.lang.Validate;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.inventory.ItemStack;

import com.earth2me.essentials.api.Economy;
import com.earth2me.essentials.api.NoLoanPermittedException;
import com.earth2me.essentials.api.UserDoesNotExistException;

public class Drop implements Listener{
	
	public Drop(Main instance){}

	Random rand = new Random ();
	
	public double getRandomDouble(double min, double max) throws IllegalArgumentException{
        Validate.isTrue(max > min, "Max nie moze byc mniejszy niz min");
        return (rand.nextDouble() * (max - min) + min);
}

	public boolean getChance(double chance){
        return (chance >= 100 || (chance >= getRandomDouble(0, 100)));
}

	@SuppressWarnings("deprecation")
	@EventHandler
	public void onBreak(BlockBreakEvent e){
		Player p = e.getPlayer();
		Block b = e.getBlock();

		if(b.getType() == Material.STONE){
			if(getChance(100)){
				p.getInventory().addItem(new ItemStack(Material.DIAMOND));
				p.sendMessage(ChatColor.GOLD + "Zdobyles: " + ChatColor.AQUA + "Diament" + ChatColor.GREEN + " +10$");
				try {
					Economy.add(p.getName(), 10.00);
				} catch (NoLoanPermittedException | UserDoesNotExistException e1) {
					e1.printStackTrace();
			if(getChance(100)){
				p.getInventory().addItem(new ItemStack(Material.GOLD_INGOT));
				p.sendMessage(ChatColor.GOLD + "Zdobyles: " + ChatColor.YELLOW + "Zloto!" + ChatColor.GREEN + " +7$");
				try {
					Economy.add(p.getName(), 7.00);
				} catch (NoLoanPermittedException | UserDoesNotExistException e2) {
					e2.printStackTrace();
			if(getChance(100)){
				p.getInventory().addItem(new ItemStack(Material.IRON_INGOT));
				p.sendMessage(ChatColor.GOLD + "Zdobyles: " + ChatColor.GRAY + "Zelazo" + ChatColor.GREEN + " +3$");
				try {
					Economy.add(p.getName(), 3.00);
				} catch (NoLoanPermittedException | UserDoesNotExistException e3) {
					e3.printStackTrace();
			if(getChance(100)){
				p.getInventory().addItem(new ItemStack(Material.COAL));
				p.sendMessage(ChatColor.GOLD + "Zdobyles: " + ChatColor.BLACK + "Wegiel" + ChatColor.GREEN + " +2$");
				try {
					Economy.add(p.getName(), 2.00);
				} catch (NoLoanPermittedException | UserDoesNotExistException e4) {
					e4.printStackTrace();
}
}
}	
}
}			
}
}			
}			
}		
}	
}


               

plugin.yml:

name: mojanazwa
main: pluginy.mojanazwa.Main
version: 1.0
description: Plugin do serwera mojanazwa

depend: [Essentials]

jak widac ustawione jest po 100% ale i tak nic nie dropi :/

Opublikowano

@TheMolkaPL Ło luju! Nie ma errorow i onEnable nawet wyslal mi slodka wiadomosc :D

 

klasa Main dziala, ale sam drop juz nie :( Domyslam sie ze cos z jakimisc Listenerami, ale co to juz nie wiem :/

 

@TheMolkaPL klasa Main: 

package pluginy.mojanazwa;

import java.util.logging.Logger;

import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin{
	
	public final Logger logger = Logger.getLogger("Minecraft");
	public static Main instance;
	public static Main plugin;
	public final Drop d = new Drop(this);
	int number;
	
	@Override
	public void onDisable() {
		PluginDescriptionFile pdf = getDescription();
		this.logger.info(pdf.getName() + " zostal wylaczony.");
}
	@Override
	public void onEnable() {
		PluginDescriptionFile pdf = getDescription();
		this.logger.info(pdf.getName() + " zostal wlaczony.");
}
}

klasa z dropem:

package pluginy.mojanazwa;

import java.util.Random;

import org.apache.commons.lang.Validate;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.inventory.ItemStack;

import com.earth2me.essentials.api.Economy;
import com.earth2me.essentials.api.NoLoanPermittedException;
import com.earth2me.essentials.api.UserDoesNotExistException;

public class Drop implements Listener{
	
	public Drop(Main instance){}

	Random rand = new Random ();
	
	public double getRandomDouble(double min, double max) throws IllegalArgumentException{
        Validate.isTrue(max > min, "Max nie moze byc mniejszy niz min");
        return (rand.nextDouble() * (max - min) + min);
}

	public boolean getChance(double chance){
        return (chance >= 100 || (chance >= getRandomDouble(0, 100)));
}

	@SuppressWarnings("deprecation")
	@EventHandler
	public void onBreak(BlockBreakEvent e){
		Player p = e.getPlayer();
		Block b = e.getBlock();

		if(b.getType() == Material.STONE){
			if(getChance(100)){
				p.getInventory().addItem(new ItemStack(Material.DIAMOND));
				p.sendMessage(ChatColor.GOLD + "Zdobyles: " + ChatColor.AQUA + "Diament" + ChatColor.GREEN + " +10$");
				try {
					Economy.add(p.getName(), 10.00);
				} catch (NoLoanPermittedException | UserDoesNotExistException e1) {
					e1.printStackTrace();
			if(getChance(100)){
				p.getInventory().addItem(new ItemStack(Material.GOLD_INGOT));
				p.sendMessage(ChatColor.GOLD + "Zdobyles: " + ChatColor.YELLOW + "Zloto!" + ChatColor.GREEN + " +7$");
				try {
					Economy.add(p.getName(), 7.00);
				} catch (NoLoanPermittedException | UserDoesNotExistException e2) {
					e2.printStackTrace();
			if(getChance(100)){
				p.getInventory().addItem(new ItemStack(Material.IRON_INGOT));
				p.sendMessage(ChatColor.GOLD + "Zdobyles: " + ChatColor.GRAY + "Zelazo" + ChatColor.GREEN + " +3$");
				try {
					Economy.add(p.getName(), 3.00);
				} catch (NoLoanPermittedException | UserDoesNotExistException e3) {
					e3.printStackTrace();
			if(getChance(100)){
				p.getInventory().addItem(new ItemStack(Material.COAL));
				p.sendMessage(ChatColor.GOLD + "Zdobyles: " + ChatColor.BLACK + "Wegiel" + ChatColor.GREEN + " +2$");
				try {
					Economy.add(p.getName(), 2.00);
				} catch (NoLoanPermittedException | UserDoesNotExistException e4) {
					e4.printStackTrace();
}
}
}	
}
}			
}
}			
}			
}		
}	
}


               

plugin.yml:

name: mojanazwa
main: pluginy.mojanazwa.Main
version: 1.0
description: Plugin do serwera mojanazwa

depend: [Essentials]

jak widac ustawione jest po 100% ale i tak nic nie dropi :/

 

W onEnable() dodaj

this.getServer().getPluginManager().registerEvents(d);

Co to w ogóle za moda na zamykanie bloków na samym początku klasy? xD

public class A {
    public void b() {
        if (this.c() > this.d()) {
            this.e();
}       else {
            this.f();
}
}
}

Przecież to nie wygodne jest xD

Dlaczego MPC popiera piractwo Minecrafta...

 

Do moderatora: Po co Ty to usuwasz??

Opublikowano

 

@TheMolkaPL w tym co napisales do tego onEnable kazalo mi na koncu po d dac null, czy to ok?

this.getServer().getPluginManager().registerEvents(d, null);

TAAAKIE ERRORY http://scr.hu/2y4g/ymlew

Walic zakrywanie nazwy nie chce mi sie juz xD

 

 

Nie null tylko this ;)

Dlaczego MPC popiera piractwo Minecrafta...

 

Do moderatora: Po co Ty to usuwasz??

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...