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 z config'iem


EnglishPhilips

Rekomendowane odpowiedzi

Opublikowano

Witam,

mam taki problem. Zrobiłem listener, który ma za zadanie blokowanie rozlewania wody od 80 poziomu chciałem to połączyć z configiem:

 

Main: 

package me.sizzus.xlantyorka;

import org.bukkit.plugin.java.JavaPlugin;

import me.sizzus.xlantyorka.listeners.BuckerWaterFill;

public class AntyOrkaPlugin extends JavaPlugin
{
    BuckerWaterFill waterfromtoListener;
    public ConfigManager configManager;
	
	public void onEnable() {
                this.saveDefaultConfig();
		this.waterfromtoListener = new BuckerWaterFill(this);
	}
}

ConfigManager:

package me.sizzus.xlantyorka;

public class ConfigManager 
{
    AntyOrkaPlugin plugin;
    public int rozlewaniewody;
    
    public ConfigManager(final AntyOrkaPlugin plugin) {
        this.plugin = plugin;
    }
	
    public void load() {
    	this.rozlewaniewody = this.plugin.getConfig().getInt("config.rozlewaniewody");
    }
    
    public void save() {
    	this.plugin.getConfig().set("config.rozlewaniewody", (Object)this.rozlewaniewody);
        this.plugin.saveConfig();
    }
    
    public void reload() {
        this.load();
    }
}

Listener:

package me.sizzus.xlantyorka.listeners;

import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockFromToEvent;
import org.bukkit.event.block.BlockPhysicsEvent;
import org.bukkit.plugin.Plugin;

import me.sizzus.xlantyorka.AntyOrkaPlugin;

public class BuckerWaterFill implements Listener
{
	
    AntyOrkaPlugin plugin;
    
    public BuckerWaterFill(final AntyOrkaPlugin plugin) {
        this.plugin = plugin;
        this.plugin.getServer().getPluginManager().registerEvents((Listener)this, (Plugin)this.plugin);
    }
 
    @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
    public void onBlockPhysics(BlockPhysicsEvent e) {
        if (!(e.getBlock().getType().equals(Material.STATIONARY_WATER))) {
            return;
        }
    }

    @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
    public void onBlockFromTo(BlockFromToEvent e){
        if (!(e.getToBlock().getType().equals(Material.WATER))) {
    		if(e.getBlock().getY() >= this.plugin.configManager.rozlewanielawy) {
        	e.setCancelled(true);
        }
        }
    }
}
 

Konsola sypie błędami po wejściu na serwer logi:

[17:07:37] [Server thread/ERROR]: Could not pass event BlockFromToEvent to xlAntyOrka v1.0
org.bukkit.event.EventException
	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[craftbukkit.jar:git-PaperSpigot-43]
	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-PaperSpigot-43]
	at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:509) [craftbukkit.jar:git-PaperSpigot-43]
	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:494) [craftbukkit.jar:git-PaperSpigot-43]
	at net.minecraft.server.v1_7_R4.BlockFlowing.a(BlockFlowing.java:151) [craftbukkit.jar:git-PaperSpigot-43]
	at net.minecraft.server.v1_7_R4.WorldServer.a(WorldServer.java:593) [craftbukkit.jar:git-PaperSpigot-43]
	at net.minecraft.server.v1_7_R4.WorldServer.doTick(WorldServer.java:211) [craftbukkit.jar:git-PaperSpigot-43]
	at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:745) [craftbukkit.jar:git-PaperSpigot-43]
	at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:307) [craftbukkit.jar:git-PaperSpigot-43]
	at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:638) [craftbukkit.jar:git-PaperSpigot-43]
	at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:544) [craftbukkit.jar:git-PaperSpigot-43]
	at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit.jar:git-PaperSpigot-43]
Caused by: java.lang.NullPointerException
	at me.sizzus.xlantyorka.listeners.BuckerWaterFill.onBlockFromTo(BuckerWaterFill.java:33) ~[?:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_101]
	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:298) ~[craftbukkit.jar:git-PaperSpigot-43]
	... 11 more

Proszę o pomoc.

Opublikowano

Po 1.

 

Po co Ci ten config manager do jednej rzeczy? Przekaż sobie instancje w Maine i pobierz nią config.

 

Po 2.

 

Jakoś nie widzę żebyś w OnEnable wczytywał config.

 

Po 3.

 

Twój config zwraca nulla.

 

+ nie wiem po co ty tam dajesz "(priority = EventPriority.HIGHEST, ignoreCancelled = true)"

Opublikowano

Po 1.

 

Po co Ci ten config manager do jednej rzeczy? Przekaż sobie instancje w Maine i pobierz nią config.

 

Po 2.

 

Jakoś nie widzę żebyś w OnEnable wczytywał config.

 

Po 3.

 

Twój config zwraca nulla.

 

+ nie wiem po co ty tam dajesz "(priority = EventPriority.HIGHEST, ignoreCancelled = true)"

 

Jak nie wiesz o co są priorytety to może cofnij się na sam początek nauki.

 

@topic

	at me.sizzus.xlantyorka.listeners.BuckerWaterFill.onBlockFromTo(BuckerWaterFill.java:33) ~[?:?]

Twój config w ogóle nie został załadowany..

Po pierwsze, co ty chcesz osiągnąć? O>O

PlayerBucketEmptyEvent

Jest od opróżniania wiaderek..

W ogóle dziwnie czuję, że ty po prostu nie masz pojęcia o tym co robisz i dekompilujesz pluginy i próbujesz coś z tego ukleić..

 

784091427630431250239.png

Regulamin sygnatur

Opublikowano

 

Po 1.

 

Po co Ci ten config manager do jednej rzeczy? Przekaż sobie instancje w Maine i pobierz nią config.

 

Po 2.

 

Jakoś nie widzę żebyś w OnEnable wczytywał config.

 

Po 3.

 

Twój config zwraca nulla.

 

+ nie wiem po co ty tam dajesz "(priority = EventPriority.HIGHEST, ignoreCancelled = true)"

 

Jak nie wiesz o co są priorytety to może cofnij się na sam początek nauki.

 

@topic

	at me.sizzus.xlantyorka.listeners.BuckerWaterFill.onBlockFromTo(BuckerWaterFill.java:33) ~[?:?]

Twój config w ogóle nie został załadowany..

Po pierwsze, co ty chcesz osiągnąć? O>O

PlayerBucketEmptyEvent

Jest od opróżniania wiaderek..

W ogóle dziwnie czuję, że ty po prostu nie masz pojęcia o tym co robisz i dekompilujesz pluginy i próbujesz coś z tego ukleić..

 

Wiem co to są priorytety raczku tyle, że nie jest mu potrzebny ;)

 

+ Pokazałeś klasę na arha***.pl więc mi tu lepiej nie wypominaj

Opublikowano

Po 1.

 

Po co Ci ten config manager do jednej rzeczy? Przekaż sobie instancje w Maine i pobierz nią config.

 

Po 2.

 

Jakoś nie widzę żebyś w OnEnable wczytywał config.

 

Po 3.

 

Twój config zwraca nulla.

 

+ nie wiem po co ty tam dajesz "(priority = EventPriority.HIGHEST, ignoreCancelled = true)"

Jak nie wiesz o co są priorytety to może cofnij się na sam początek nauki.

 

@"topic"

	at me.sizzus.xlantyorka.listeners.BuckerWaterFill.onBlockFromTo(BuckerWaterFill.java:33) ~[?:?]
Twój config w ogóle nie został załadowany..

Po pierwsze, co ty chcesz osiągnąć? O>O

PlayerBucketEmptyEvent
Jest od opróżniania wiaderek..

W ogóle dziwnie czuję, że ty po prostu nie masz pojęcia o tym co robisz i dekompilujesz pluginy i próbujesz coś z tego ukleić..

 

Wiem co to są priorytety raczku tyle, że nie jest mu potrzebny ;)

 

+ Pokazałeś klasę na arha***.pl więc mi tu lepiej nie wypominaj

No właśnie dobrze ich użył ;).

Arhard? Co było nie tak? Raki same na swój serwer zrobiły włamanie i próbowały wmówić, że niby pluginy buga wyłapały XDDDD

 

@Topic

Jeśli nie wiesz jak zablokować to sprawdzasz w evencie tym, który Ci podałem e.getClickedBlock().getLocation().getY().

 

Te obecne możesz wywalić.

 

 

Wysłane z iPhone za pomocą Tapatalk

784091427630431250239.png

Regulamin sygnatur

Opublikowano

 

 

 

Po 1.

 

Po co Ci ten config manager do jednej rzeczy? Przekaż sobie instancje w Maine i pobierz nią config.

 

Po 2.

 

Jakoś nie widzę żebyś w OnEnable wczytywał config.

 

Po 3.

 

Twój config zwraca nulla.

 

+ nie wiem po co ty tam dajesz "(priority = EventPriority.HIGHEST, ignoreCancelled = true)"

Jak nie wiesz o co są priorytety to może cofnij się na sam początek nauki.

 

@topic

	at me.sizzus.xlantyorka.listeners.BuckerWaterFill.onBlockFromTo(BuckerWaterFill.java:33) ~[?:?]
Twój config w ogóle nie został załadowany..

Po pierwsze, co ty chcesz osiągnąć? O>O

PlayerBucketEmptyEvent
Jest od opróżniania wiaderek..

W ogóle dziwnie czuję, że ty po prostu nie masz pojęcia o tym co robisz i dekompilujesz pluginy i próbujesz coś z tego ukleić..

 

Wiem co to są priorytety raczku tyle, że nie jest mu potrzebny ;)

 

+ Pokazałeś klasę na arha***.pl więc mi tu lepiej nie wypominaj

 

No właśnie dobrze ich użył ;).

Arhard? Co było nie tak? Raki same na swój serwer zrobiły włamanie i próbowały wmówić, że niby pluginy buga wyłapały XDDDD

 

@topic

Jeśli nie wiesz jak zablokować to sprawdzasz w evencie tym, który Ci podałem e.getClickedBlock().getLocation().getY().

 

Te obecne możesz wywalić.

 

 

Wysłane z iPhone za pomocą Tapatalk

 

Emm tak próbuje skleić plugin, ale chodzi mi o to, że: jeżeli gracz próbuje rozlać wodę od 80 poziomu w górę to ona się po prostu nie rozlewa. I zamiast cały czas wchodzić w plugin i i w klasę z tą wysokością i tam edytować to postanowiłem jakoś ten config zrobić. Ale coś nie wyszło dodałem coś takiego:

(this.configManager = new ConfigManager(this)).load();

Nowy problem jest w tym, że ładuję się config ale ten który jest w pliku .jar nie ten który jest w folderze.

Opublikowano

No tak niech dojebie wszystko na najwyższych priorytetach jak nawet nie wie co one robią ;) *klask* *klask*

 

Masz..

public class Main
  extends JavaPlugin
  implements Listener
  {
   public void onEnable()
   {
	 Bukkit.getPluginManager().registerEvents(this, this);
   }
   @EventHandler
   public void onBlockFromTo(BlockFromToEvent event){
     if (!(event.getToBlock().getType().equals(Material.WATER))) {
       if(event.getBlock().getY() >= getConfig().getInt("rozlewanie")) {
     	event.setCancelled(true);
       }
     }
   }
}
Opublikowano

po pierwsze - managery zazwyczaj tworzy się, gdy ma się do obsługi kilka własnych plików .yml, po to, aby można było w prosty sposób nimi operować bez zbędnych linii kodu w klasach

po drugie - ten kod to jedna wielka sklejka, niespójny, nie wiesz chyba nawet co kopiujesz (swoją drogą kopiowanie to najgorsza rzecz, ktora mogles zrobic)

 

klasa z listenerem:

package net.dolan.blabla;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerBucketEmptyEvent;

 /*
 * Created by dolan on 2016-09-06.
 */

public class PlayerBucketEmptyListener implements Listener
{
    public static void init()
    {
        Bukkit.getPluginManager().registerEvents(new PlayerBucketEmptyListener(), Main.getInstance());
    }

    @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = false)
    public void onPlayerBucketEmpty(final PlayerBucketEmptyEvent event)
    {
        if(event.getBlockClicked().getLocation().getY() >= Main.getInstance().getConfig().getInt("config.rozlewaniewody"))
        {
            event.setCancelled(true);
        }
    }
}

klasa glowna (Main):

package net.dolan.blabla;

import org.bukkit.plugin.java.JavaPlugin;

 /*
 * Created by dolan on 2016-09-06.
 */

public class Main extends JavaPlugin
{
    private static Main instance;

    public static Main getInstance()
    {
        return instance;

    }

    @Override
    public void onLoad()
    {
        Main.instance = this;

    }

    @Override
    public void onEnable()
    {
        PlayerBucketEmptyListener.init();
    }
}

pisane na sucho, powinno działać, ale nie określiłeś zakresu, w góre czy w dół - to już sam sobie dostosuj.

 

 

 

 

fKJeAI4.jpg

 

 

 

Opublikowano

klasa z listenerem:

package net.dolan.blabla;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerBucketEmptyEvent;

 /*
 * Created by dolan on 2016-09-06.
 */

public class PlayerBucketEmptyListener implements Listener
{
    public static void initiate()
    {
        Bukkit.getPluginManager().registerEvents(new PlayerBucketEmptyListener(), Main.getInstance());
    }

    @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = false)
    public void onPlayerBucketEmpty(final PlayerBucketEmptyEvent event)
    {
        if(event.getBlockClicked().getLocation().getY() >= Main.getInstance().getConfig().getInt("config.rozlewaniewody"))
        {
            event.setCancelled(true);
        }
    }
}

klasa glowna (Main):

package net.dolan.blabla;

import org.bukkit.plugin.java.JavaPlugin;

 /*
 * Created by dolan on 2016-09-06.
 */

public class Main extends JavaPlugin
{
    private static Main instance;

    public static Main getInstance()
    {
        return instance;

    }

    @Override
    public void onLoad()
    {
        Main.instance = this;

    }

    @Override
    public void onEnable()
    {
        PlayerBucketEmptyListener.initiate();
    }
}

pisane na sucho, powinno działać, ale nie określiłeś zakresu, w góre czy w dół - to już sam sobie dostosuj.

On chce żeby woda się nie rozlewała a nie, że w ogóle nie można jej wylać ;-;...

Opublikowano

 

klasa z listenerem:

package net.dolan.blabla;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerBucketEmptyEvent;

 /*
 * Created by dolan on 2016-09-06.
 */

public class PlayerBucketEmptyListener implements Listener
{
    public static void initiate()
    {
        Bukkit.getPluginManager().registerEvents(new PlayerBucketEmptyListener(), Main.getInstance());
    }

    @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = false)
    public void onPlayerBucketEmpty(final PlayerBucketEmptyEvent event)
    {
        if(event.getBlockClicked().getLocation().getY() >= Main.getInstance().getConfig().getInt("config.rozlewaniewody"))
        {
            event.setCancelled(true);
        }
    }
}

klasa glowna (Main):

package net.dolan.blabla;

import org.bukkit.plugin.java.JavaPlugin;

 /*
 * Created by dolan on 2016-09-06.
 */

public class Main extends JavaPlugin
{
    private static Main instance;

    public static Main getInstance()
    {
        return instance;

    }

    @Override
    public void onLoad()
    {
        Main.instance = this;

    }

    @Override
    public void onEnable()
    {
        PlayerBucketEmptyListener.initiate();
    }
}

pisane na sucho, powinno działać, ale nie określiłeś zakresu, w góre czy w dół - to już sam sobie dostosuj.

On chce żeby woda się nie rozlewała a nie, że w ogóle nie można jej wylać ;-;...

 

 

najpierw przeanalizuj co napisał, w ogóle odczytales, do czego ten plugin ma służyć? zablokowane rozlewanie wody prawdopodobnie będzie tworzylo martwe chunki, a to jest po prostu blokada przed tym, zeby gracz nie mogl sobie rozlac, jak sama nazwa pluginu mowi: AntyOrka, nastepnym razem zobacz, do czego ten plugin ma sluzyc, a nie czytasz jak automat

 

 

 

 

fKJeAI4.jpg

 

 

 

Opublikowano

 

 

klasa z listenerem:

package net.dolan.blabla;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerBucketEmptyEvent;

 /*
 * Created by dolan on 2016-09-06.
 */

public class PlayerBucketEmptyListener implements Listener
{
    public static void initiate()
    {
        Bukkit.getPluginManager().registerEvents(new PlayerBucketEmptyListener(), Main.getInstance());
    }

    @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = false)
    public void onPlayerBucketEmpty(final PlayerBucketEmptyEvent event)
    {
        if(event.getBlockClicked().getLocation().getY() >= Main.getInstance().getConfig().getInt("config.rozlewaniewody"))
        {
            event.setCancelled(true);
        }
    }
}

klasa glowna (Main):

package net.dolan.blabla;

import org.bukkit.plugin.java.JavaPlugin;

 /*
 * Created by dolan on 2016-09-06.
 */

public class Main extends JavaPlugin
{
    private static Main instance;

    public static Main getInstance()
    {
        return instance;

    }

    @Override
    public void onLoad()
    {
        Main.instance = this;

    }

    @Override
    public void onEnable()
    {
        PlayerBucketEmptyListener.initiate();
    }
}

pisane na sucho, powinno działać, ale nie określiłeś zakresu, w góre czy w dół - to już sam sobie dostosuj.

On chce żeby woda się nie rozlewała a nie, że w ogóle nie można jej wylać ;-;...

 

 

najpierw przeanalizuj co napisał, w ogóle odczytales, do czego ten plugin ma służyć? blokowanie rozlewania wody prawdopodobnie będzie tworzylo martwe chunki, a to jest po prostu blokada przed tym, zeby gracz nie mogl sobie rozlac, jak sama nazwa pluginu mowi: AntyOrka, nastepnym razem zobacz, do czego ten plugin ma sluzyc, a nie czytasz jak automat

 

Może masz jakiś problem żeby czytać ze zrozumieniem?

 

"Emm tak próbuje skleić plugin, ale chodzi mi o to, że: jeżeli gracz próbuje rozlać wodę od 80 poziomu w górę to ona się po prostu nie rozlewa...."

 

Nie rozlewa a nie, że nie da się jej wylać

 

Zresztą przekonasz się gdy autor sam się wypowie ;))))))))0

Opublikowano

 

 

 

klasa z listenerem:

package net.dolan.blabla;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerBucketEmptyEvent;

 /*
 * Created by dolan on 2016-09-06.
 */

public class PlayerBucketEmptyListener implements Listener
{
    public static void initiate()
    {
        Bukkit.getPluginManager().registerEvents(new PlayerBucketEmptyListener(), Main.getInstance());
    }

    @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = false)
    public void onPlayerBucketEmpty(final PlayerBucketEmptyEvent event)
    {
        if(event.getBlockClicked().getLocation().getY() >= Main.getInstance().getConfig().getInt("config.rozlewaniewody"))
        {
            event.setCancelled(true);
        }
    }
}

klasa glowna (Main):

package net.dolan.blabla;

import org.bukkit.plugin.java.JavaPlugin;

 /*
 * Created by dolan on 2016-09-06.
 */

public class Main extends JavaPlugin
{
    private static Main instance;

    public static Main getInstance()
    {
        return instance;

    }

    @Override
    public void onLoad()
    {
        Main.instance = this;

    }

    @Override
    public void onEnable()
    {
        PlayerBucketEmptyListener.initiate();
    }
}

pisane na sucho, powinno działać, ale nie określiłeś zakresu, w góre czy w dół - to już sam sobie dostosuj.

On chce żeby woda się nie rozlewała a nie, że w ogóle nie można jej wylać ;-;...

 

 

najpierw przeanalizuj co napisał, w ogóle odczytales, do czego ten plugin ma służyć? blokowanie rozlewania wody prawdopodobnie będzie tworzylo martwe chunki, a to jest po prostu blokada przed tym, zeby gracz nie mogl sobie rozlac, jak sama nazwa pluginu mowi: AntyOrka, nastepnym razem zobacz, do czego ten plugin ma sluzyc, a nie czytasz jak automat

 

Może masz jakiś problem żeby czytać ze zrozumieniem?

 

"Emm tak próbuje skleić plugin, ale chodzi mi o to, że: jeżeli gracz próbuje rozlać wodę od 80 poziomu w górę to ona się po prostu nie rozlewa...."

 

Nie rozlewa a nie, że nie da się jej wylać

 

Zresztą przekonasz się gdy autor sam się wypowie ;))))))))0

 

 

przeczytaj sam co zacytowales:

 

 

 

jeżeli gracz próbuje rozlać wodę od 80 poziomu w górę to ona się po prostu nie rozlewa....

 

ona ma się w ogóle nie rozlewać, nawet kratka wody ma się nie pojawić, a to co ty zaproponowałeś nie dosyć, że bedzie generowalo martwe chunki, to jeszcze jedna kratka wody zostanie, gdzie w tym jakakolwiek logika dzialania?

 

 

 

 

fKJeAI4.jpg

 

 

 

Opublikowano

 

 

 

 

klasa z listenerem:

package net.dolan.blabla;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerBucketEmptyEvent;

 /*
 * Created by dolan on 2016-09-06.
 */

public class PlayerBucketEmptyListener implements Listener
{
    public static void initiate()
    {
        Bukkit.getPluginManager().registerEvents(new PlayerBucketEmptyListener(), Main.getInstance());
    }

    @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = false)
    public void onPlayerBucketEmpty(final PlayerBucketEmptyEvent event)
    {
        if(event.getBlockClicked().getLocation().getY() >= Main.getInstance().getConfig().getInt("config.rozlewaniewody"))
        {
            event.setCancelled(true);
        }
    }
}

klasa glowna (Main):

package net.dolan.blabla;

import org.bukkit.plugin.java.JavaPlugin;

 /*
 * Created by dolan on 2016-09-06.
 */

public class Main extends JavaPlugin
{
    private static Main instance;

    public static Main getInstance()
    {
        return instance;

    }

    @Override
    public void onLoad()
    {
        Main.instance = this;

    }

    @Override
    public void onEnable()
    {
        PlayerBucketEmptyListener.initiate();
    }
}

pisane na sucho, powinno działać, ale nie określiłeś zakresu, w góre czy w dół - to już sam sobie dostosuj.

On chce żeby woda się nie rozlewała a nie, że w ogóle nie można jej wylać ;-;...

 

 

najpierw przeanalizuj co napisał, w ogóle odczytales, do czego ten plugin ma służyć? blokowanie rozlewania wody prawdopodobnie będzie tworzylo martwe chunki, a to jest po prostu blokada przed tym, zeby gracz nie mogl sobie rozlac, jak sama nazwa pluginu mowi: AntyOrka, nastepnym razem zobacz, do czego ten plugin ma sluzyc, a nie czytasz jak automat

 

Może masz jakiś problem żeby czytać ze zrozumieniem?

 

"Emm tak próbuje skleić plugin, ale chodzi mi o to, że: jeżeli gracz próbuje rozlać wodę od 80 poziomu w górę to ona się po prostu nie rozlewa...."

 

Nie rozlewa a nie, że nie da się jej wylać

 

Zresztą przekonasz się gdy autor sam się wypowie ;))))))))0

 

 

przeczytaj sam co zacytowales:

 

 

 

jeżeli gracz próbuje rozlać wodę od 80 poziomu w górę to ona się po prostu nie rozlewa....

 

ona ma się w ogóle nie rozlewać, nawet kratka wody ma się nie pojawić, a to co ty zaproponowałeś nie dosyć, że bedzie generowalo martwe chunki, to jeszcze jedna kratka wody zostanie, gdzie w tym jakakolwiek logika dzialania?

 

Ale rak... To ma właśnie zapobiec generowaniu się martwych chunków. Chce osiągnąć coś takiego co wprowadziło CraftCo** na najnowszej edycji

 

Sam widzisz jakiego eventu użył więć to chyba o czymś swiadczy 

Opublikowano

 

 

 

 

 

klasa z listenerem:

package net.dolan.blabla;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerBucketEmptyEvent;

 /*
 * Created by dolan on 2016-09-06.
 */

public class PlayerBucketEmptyListener implements Listener
{
    public static void initiate()
    {
        Bukkit.getPluginManager().registerEvents(new PlayerBucketEmptyListener(), Main.getInstance());
    }

    @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = false)
    public void onPlayerBucketEmpty(final PlayerBucketEmptyEvent event)
    {
        if(event.getBlockClicked().getLocation().getY() >= Main.getInstance().getConfig().getInt("config.rozlewaniewody"))
        {
            event.setCancelled(true);
        }
    }
}

klasa glowna (Main):

package net.dolan.blabla;

import org.bukkit.plugin.java.JavaPlugin;

 /*
 * Created by dolan on 2016-09-06.
 */

public class Main extends JavaPlugin
{
    private static Main instance;

    public static Main getInstance()
    {
        return instance;

    }

    @Override
    public void onLoad()
    {
        Main.instance = this;

    }

    @Override
    public void onEnable()
    {
        PlayerBucketEmptyListener.initiate();
    }
}

pisane na sucho, powinno działać, ale nie określiłeś zakresu, w góre czy w dół - to już sam sobie dostosuj.

On chce żeby woda się nie rozlewała a nie, że w ogóle nie można jej wylać ;-;...

 

 

najpierw przeanalizuj co napisał, w ogóle odczytales, do czego ten plugin ma służyć? blokowanie rozlewania wody prawdopodobnie będzie tworzylo martwe chunki, a to jest po prostu blokada przed tym, zeby gracz nie mogl sobie rozlac, jak sama nazwa pluginu mowi: AntyOrka, nastepnym razem zobacz, do czego ten plugin ma sluzyc, a nie czytasz jak automat

 

Może masz jakiś problem żeby czytać ze zrozumieniem?

 

"Emm tak próbuje skleić plugin, ale chodzi mi o to, że: jeżeli gracz próbuje rozlać wodę od 80 poziomu w górę to ona się po prostu nie rozlewa...."

 

Nie rozlewa a nie, że nie da się jej wylać

 

Zresztą przekonasz się gdy autor sam się wypowie ;))))))))0

 

 

przeczytaj sam co zacytowales:

 

 

 

jeżeli gracz próbuje rozlać wodę od 80 poziomu w górę to ona się po prostu nie rozlewa....

 

ona ma się w ogóle nie rozlewać, nawet kratka wody ma się nie pojawić, a to co ty zaproponowałeś nie dosyć, że bedzie generowalo martwe chunki, to jeszcze jedna kratka wody zostanie, gdzie w tym jakakolwiek logika dzialania?

 

Ale rak... To ma właśnie zapobiec generowaniu się martwych chunków. Chce osiągnąć coś takiego co wprowadziło CraftCo** na najnowszej edycji

 

Sam widzisz jakiego eventu użył więć to chyba o czymś swiadczy 

 

Tak właśnie masz racje chce aby woda się pojawiała ale od 80 w góre stała w miejscu jak jaki kolwiek inny blok właśnie coś typu CraftCo**. Chciałem dodać do tego config abym nie musiał wchodzić w klasę z wysokością i nie musiał zmieniać tego tam.

Opublikowano

@EnglishPhilips @Nesz @#1337 @OldisPL

Ale adnotacja 

@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)

była w 100% poprawna... nie wiem tylko czy OP wie dlaczego, ale to jest wręcz idealna adnotacja do takiego eventu, no można się kłócić między HIGH a HIGHEST, ale ogólnie wybór dobry...

Po 1: wykona się po pluginach typu WorldGuard, po 2: zignoruje już zablokowane eventy, czyli nie będzie przetwarzać niepotrzebnie np wylania wody tam gdzie gracz i tak nie ma permissions by budować.

 

 

Stwierdziłem ze lepiej zrobić to w main bez żadnego configmanagera ma ktoś jakiś poradnik co do pisania configu?

możesz użyć na czysto SnakeYamla, wygodnie jechać obiektami: 

https://bitbucket.org/asomov/snakeyaml/wiki/Documentation#markdown-header-javabeans

A jak chcesz bukkitowe to masz

https://hub.spigotmc.org/javadocs/spigot/org/bukkit/configuration/file/YamlConfiguration.html#loadConfiguration(java.io.File)

i inne, izi.

1438614356923701010629.png

 

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...