You are not logged in.

  • Login

[Bukkit-Plugin] BlockPlaceEvent

Bitte besucht unser neues Forum unter https://forum.nitrado.net | Please visit our new Forum at https://forum.nitrado.net

LoginDaten

User / Kunde

  • "LoginDaten" started this thread

Posts: 5

  • Send private message

1

Sunday, April 29th 2018, 12:23pm

BlockPlaceEvent

Hallo, Ich möchte gerne bei meinem Crate Plugin so haben das man die Köpfe mit einem bestimmten DisplayName nicht platzieren kann.

Habe noch keine Lösung gefunden kann mir wer da weiter helfen?

Source code

1
2
3
4
5
6
7
8
9
 @EventHandler
 public void onPlace(BlockPlaceEvent e) {
  Player p = e.getPlayer();
  
  if(e.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("§eCoins Crate")) {
   e.setCancelled(true);
   System.out.println("DEBUG1");
  }
 }



Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[11:35:02 ERROR]: Could not pass event BlockPlaceEvent to System v0.1
org.bukkit.event.EventException
    	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
    	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
    	at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
    	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
    	at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callBlockPlaceEvent(CraftEventFactory.java:127) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
    	at net.minecraft.server.v1_8_R3.ItemStack.placeItem(ItemStack.java:158) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
    	at net.minecraft.server.v1_8_R3.PlayerInteractManager.interact(PlayerInteractManager.java:503) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
    	at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:759) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
    	at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:52) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
    	at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:1) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
    	at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_161]
    	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_161]
    	at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
    	at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
    	at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
    	at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
    	at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
    	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_161]
Caused by: java.lang.NullPointerException
    	at de.LoginDaten.SkyLogin.Crates.Interact.onPlace(Interact.java:39) ~[?:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_161]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_161]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_161]
    	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_161]
    	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
    	... 18 more

This post has been edited 2 times, last edit by "LoginDaten" (Apr 29th 2018, 1:40pm)


crysis992

User / Kunde

Posts: 284

  • Send private message

2

Sunday, April 29th 2018, 1:38pm

Prüfe ob der Block den du Platzieren willst vom Material Skull ist und ob der Block eine ItemMeta + Displayname hat, dann den Displayname vergleichen und gegebenfalls das Event cancelln.

Sowas in der Art sollte funktionieren.

Source code

1
2
3
4
5
6
7
8
	@EventHandler
	public void blockplace(BlockPlaceEvent event) {
		if (event.getItemInHand().getType() == Material.SKULL_ITEM && event.getItemInHand().hasItemMeta()
				&& event.getItemInHand().getItemMeta().hasDisplayName()
				&& event.getItemInHand().getItemMeta().getDisplayName().equals("Dein Display Name")) {
			event.setCancelled(true);
		}
	}

LoginDaten

User / Kunde

  • "LoginDaten" started this thread

Posts: 5

  • Send private message

3

Sunday, April 29th 2018, 1:42pm

Ne funktioniert leider nicht. Es kommt aber auch kein Fehler mehr

Ceddy_14

User / Kunde

  • "Ceddy_14" is male

Posts: 277

Occupation: Schüler und Projektleiter

Thanks: 15

  • Send private message

4

Sunday, April 29th 2018, 4:54pm

Du hast bei

Java source code

1
event.getItemInHand().getItemMeta().getDisplayName().equals("Dein Display Name")) {


das "Dein Display Name" aber schon durch "§eCoins Crate" ersetzt, oder? ^^
- Projektleiter des CraftGigant-Netzwerks -
:arrow: CraftGigant.de (Version: 1.13.2) [Derzeit in Überarbeitung]
:arrow: twitter.com/craftgigant

LoginDaten

User / Kunde

  • "LoginDaten" started this thread

Posts: 5

  • Send private message

5

Monday, April 30th 2018, 2:18pm

EDIT: Habe es geschafft trotzdem Danke

Hier nochmal der Code

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 @EventHandler
 public void onInt(PlayerInteractEvent e) {
  Player p = e.getPlayer();
   if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) {
   try {
    if(e.getItem().getType() == Material.SKULL_ITEM ) {
      if(e.getItem().getItemMeta().getDisplayName().equalsIgnoreCase("§eCoins Crate")) {
       e.setCancelled(true);
    if(Crate.opening == null) {
     Crate.startCoinsAnimation(p);
    } else {
     p.sendMessage(SkyPvP.prefix+" §7Du öffnest bereits eine §3§lCrate");
    }
     
     if(p.getItemInHand().getAmount() == 1) {
      p.setItemInHand(new ItemStack(Material.AIR));
     } else {
      p.getItemInHand().setAmount(p.getItemInHand().getAmount() - 1);
     }
    }
    }
    
   } catch(NullPointerException e1) {}
  }
  
 }

This post has been edited 1 times, last edit by "LoginDaten" (Apr 30th 2018, 2:45pm)


xtrumb

User / Kunde

  • "xtrumb" is male

Posts: 2,295

Location: hier

Occupation: Fachinformatiker für Systemintegration

Thanks: 16

  • Send private message

6

Monday, April 30th 2018, 3:16pm

Tipp: Niemals einen Nullpointer mit einem try catch abfragen. Du verlierst ansonsten den überblick. Lieber mit if abfragen.
Mit freundlichen Grüßen
TrueMB

Dienstleistungs Service
Unser Csgo Team

MarcSenpai

User / Kunde

  • "MarcSenpai" is male

Posts: 138

Location: Clover

Occupation: Schüler

  • Send private message

7

Wednesday, May 2nd 2018, 7:47pm

Kannst du dein Thema als erledigt makieren?
In der kürze liegt die Würze
- Shakespeares | Unitygaming-FastFelix

Bitte besucht unser neues Forum unter https://forum.nitrado.net| Please visit our new Forum at https://forum.nitrado.net