You are not logged in.

  • Login

[Bukkit-Plugin] Inventar mit Block

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

Dear visitor, welcome to Nitrado.net Prepaid Gameserver Community-Support - Archiv. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

joni_d

User / Kunde

  • "joni_d" is male
  • "joni_d" started this thread

Posts: 134

Location: Daheim

Occupation: Schüler

  • Send private message

1

Sunday, October 26th 2014, 9:30pm

Inventar mit Block

Hallo zusammen!
Wieder einmal brauche ich eure Hilfe!
Ich möchte, dass wenn auf einen Bestimmten block geklickt wird, sich ein Inventar öffnet , in dem dann Items liegen. Das funktioniert auch prima:

Spoiler Spoiler

Java 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
30
31
32
33
34
35
@EventHandler
	public void onClick(PlayerInteractEvent e){
		Player p = e.getPlayer();
		if((e.getAction() == Action.RIGHT_CLICK_BLOCK) && (e.getClickedBlock().getType()) == Material.REDSTONE_BLOCK){
			if(this.plugin.chest.containsKey(e.getClickedBlock().getLocation())){
				p.openInventory((Inventory)this.plugin.chest.get(e.getClickedBlock().getLocation()));
			} else {
				Random rnd = new Random();
				int n = 1;
				n = rnd.nextInt(4);
				while (n<2) n= rnd.nextInt(4);
				Inventory inv = Bukkit.createInventory(null, InventoryType.CHEST);
				List<ItemStack> items = new ArrayList<ItemStack>();
				
				items.add(......) // Hier werden Items hinzugefüggt!
				
				while (n != 0){
					n--;
					Random rnd2 = new Random();
					
					Random rnd3 = new Random();
					
					int n3 = rnd3.nextInt(27);
					
					int n2 = rnd2.nextInt(items.size());
					
					inv.setItem(n3, (ItemStack)items.get(n2));
				}
				this.plugin.chest.put(e.getClickedBlock().getLocation(), inv);
				p.openInventory(inv);
				return;
			}
			return;
		}
	}


Allerdings kommt in der Console immer eine Fehlermeldung wenn ich auf den Block klicke, es funktioniert aber trotzdem!

Fehlermeldung:

Source code

1
2
3
4
5
6
7
8
Caused by: java.lang.NullPointerException
        at listener.PlayerInteractEvent.onInteract(PlayerInteractEvent.java:28)~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_51]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_51]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_51]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_51]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:298) ~[spigotversion.jar:git-Spigot-1.7.9-R0.2-205-g0a049fa]
        ... 15 more


Die Frage ist jetzt wie ich die nervige Fehlermeldung (aus der ich übrigens nicht schlau werde, da zeile 28 nur ein "}" beinhaltet) wieder wegbekomme, bzw wo das Problem liegt.

Vielen Dank schon mal im Vorraus!
LG Joni

This post has been edited 1 times, last edit by "joni_d" (Oct 27th 2014, 1:00am)


Achelos

User / Kunde

Posts: 54

  • Send private message

2

Sunday, October 26th 2014, 10:15pm

Mit Zeile 28 ist die 28. Zeile der kompletten klasse gemeint... somit kann man dir bei den Infos auch nicht helfen.
LG Achelos

joni_d

User / Kunde

  • "joni_d" is male
  • "joni_d" started this thread

Posts: 134

Location: Daheim

Occupation: Schüler

  • Send private message

3

Monday, October 27th 2014, 12:59am

Schon klar, dass die 28 Zeile des gesamten Codes gemeint ist, durch einen Zufall ist Zeile 28 auch hier ein "}" ^^

flugcraftFTB

User / Kunde

  • "flugcraftFTB" is male

Posts: 849

Location: Münster

Thanks: 1

  • Send private message

4

Monday, October 27th 2014, 9:04pm

Schau dir das mal an das ist wahrscheinlich der gleiche Code weil er auch von CookiePlays kommt naja ich habe es mal vor langer zeit abgeschrieben vllt. hilft es dir ja:

Spoiler Spoiler


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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package Chest;

import java.util.List;
import java.util.ArrayList;
import java.util.Random;
import main.SurvivalGames;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;

public class ChestManager implements Listener{

	private SurvivalGames plugin;
	
	public ChestManager(SurvivalGames plugin) {
		this.plugin = plugin;
	}

	@EventHandler
	public void onClick(PlayerInteractEvent e) {
		Player p = e.getPlayer();
		Action a = e.getAction();
		
		if((a == Action.RIGHT_CLICK_BLOCK) &&
			(e.getClickedBlock().getType() == Material.REDSTONE_BLOCK)) {
			if(this.plugin.sgchest.containsKey(e.getClickedBlock().getLocation())) {
				p.openInventory((Inventory) this.plugin.sgchest.get(e.getClickedBlock().getLocation()));
			} else {
				Random rnd = new Random();
				int n = 1;
				n = rnd.nextInt(4);
				Inventory inv = Bukkit.createInventory(null, InventoryType.CHEST);
				List<ItemStack> items = new ArrayList<ItemStack>();
				
				items.add(new ItemStack(Material.ARROW));
				items.add(new ItemStack(Material.APPLE));
				items.add(new ItemStack(Material.IRON_INGOT));
				items.add(new ItemStack(Material.GOLD_INGOT));
				items.add(new ItemStack(Material.BOW));
				items.add(new ItemStack(Material.WOOD_SWORD));
				items.add(new ItemStack(Material.STONE_SWORD));
				items.add(new ItemStack(Material.IRON_SWORD));
				items.add(new ItemStack(Material.DIAMOND));
				items.add(new ItemStack(Material.IRON_PICKAXE));
				items.add(new ItemStack(Material.BAKED_POTATO));
				items.add(new ItemStack(Material.CARROT));
				items.add(new ItemStack(Material.WEB));
				items.add(new ItemStack(Material.LEATHER_BOOTS));
				items.add(new ItemStack(Material.LEATHER_CHESTPLATE));
				items.add(new ItemStack(Material.LEATHER));
				items.add(new ItemStack(Material.IRON_CHESTPLATE));
				items.add(new ItemStack(Material.DIAMOND_BOOTS));
				items.add(new ItemStack(Material.COOKIE));
				items.add(new ItemStack(Material.COOKED_FISH));
				items.add(new ItemStack(Material.BONE));
				items.add(new ItemStack(Material.GOLD_HELMET));
				items.add(new ItemStack(Material.GOLD_LEGGINGS));
				items.add(new ItemStack(Material.LAVA_BUCKET));
				items.add(new ItemStack(Material.FLINT_AND_STEEL));
				items.add(new ItemStack(Material.TNT));
				items.add(new ItemStack(Material.EXP_BOTTLE));
				items.add(new ItemStack(Material.ENDER_PEARL));
				items.add(new ItemStack(Material.EGG));
				items.add(new ItemStack(Material.MELON));
				items.add(new ItemStack(Material.GOLDEN_APPLE));
				
				while(n != 0) {
					n--;
					Random rnd2 = new Random();
					
					Random rnd3 = new Random();
					
					int n3 = rnd3.nextInt(27);
					int n2 = rnd2.nextInt(items.size()); 
					
					inv.setItem(n3, (ItemStack) items.get(n2));
				}
				this.plugin.sgchest.put(e.getClickedBlock().getLocation(), inv);
				p.openInventory(inv);
				return;
			}
			return;
		}
		
	}
}

Fluglotsen Service auf IVAO an folgen Flughäfen: EDDM(München), EDDS(Stuttgart), EDDG(Münster/Osnabrück), EDDH(Hamburg), EDDN(Nürnberg), EDDT(Berlin-Tegel), EDDB(Berlin-Schönefeld), EDDL(Düsseldorf) EDDK(Köln-Bonn), EDDF(Frankfurt/Main) und EDDW(Bremen). Als Kontrollturm und Boden online!

joni_d

User / Kunde

  • "joni_d" is male
  • "joni_d" started this thread

Posts: 134

Location: Daheim

Occupation: Schüler

  • Send private message

5

Tuesday, October 28th 2014, 7:01pm

Hab die Klasse einfach noch mal neu geschrieben, und jetzt funktioniert es...

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