Sie sind nicht angemeldet.

  • Anmelden

[Bukkit-Plugin] Next Page im Inventar

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

crepperFreak

User / Kunde

  • »crepperFreak« ist der Autor dieses Themas

Beiträge: 17

  • Nachricht senden

1

Freitag, 19. Juni 2015, 16:08

Next Page im Inventar

Guten Mittag,

ich mache momentan ein Friends Plugin. Und wenn man auf ein Item clickt sollen alle Freundes-Köpfe angezeigt werden, das klappt! Aber wie mache ich dass, das nur 20 angezeigt werden und dann die nächsten/restlichen erst angezeigt werden wenn man eine Seite weiter geht?

MFG

Battlecraftman

User / Kunde

  • »Battlecraftman« ist männlich

Beiträge: 508

Wohnort: NRW

Beruf: Schüler

  • Nachricht senden

2

Freitag, 19. Juni 2015, 16:38

Ich habe das immer so gemacht, dass ich ein item zum seiten wechsel hatte, welches in der Lore stehen hatte, welche seite das dann wird, z.B. "2", dann nimmste (2-1)*20 und dann hast du deinen Startindex von dem du runterläufts, wenn dann nochmehr heads kommen, musste wieder so ein nächste seite item setzen.

WolverinGER

User / Kunde

  • »WolverinGER« ist männlich

Beiträge: 502

Beruf: Schüler (Gym)

  • Nachricht senden

3

Freitag, 19. Juni 2015, 17:14

Quellcode

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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import java.util.ArrayList;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import dev.wolveringer.until.main;

public class ScrolingInventorry implements Listener{
	Inventory inv;
	ArrayList<ActionItem> items = new ArrayList<>();
	ItemStack next;
	ItemStack back;
	int side = 0;
	int row_per_side = 4;
	public ScrolingInventorry(String name,int row_per_side){
		int var1 = 1;
		for(int i = 0;i>row_per_side*9;i=i+9)
			var1++;
		inv = Bukkit.createInventory(null, var1*9+9,name);
		Bukkit.getPluginManager().registerEvents(this, main.instance);
		this.row_per_side = row_per_side;
		side = 0;
	}
	public void addItem(ActionItem is){
		items.add(is);
	}
	public void removeItem(ActionItem is){
		items.remove(is);
	}
	private void clearItems(){
		for(ItemStack is : inv.getContents()){
			inv.remove(is);
		}
	}
	
	@EventHandler
	public void a(InventoryCloseEvent e){
		if(e.getInventory().equals(inv)){
			if(inv.getViewers().size() == 0)
				HandlerList.unregisterAll(this);
		}
	}
	
	@EventHandler
	public void a(InventoryClickEvent e){
		if(e.getInventory().equals(inv)){
			e.setCancelled(true);
			if(e.getCurrentItem() != null){
				for(ActionItem is : items)
					if(is.equals(e.getCurrentItem())){
						is.fire(null, e.getCurrentItem(),(Player)e.getWhoClicked());
						return;
					}
				if(e.getCurrentItem().equals(back)){
					displaySide(side-1);
				}
				else if(e.getCurrentItem().equals(next)){
					displaySide(side+1);
				}
			}
		}
	}
	private void displaySide(int i) {
		clearItems();
		if(items.size() - side*row_per_side > (side+1)*row_per_side)
			setNext();
		if(side > 0)
			setBack();
		int from = side*row_per_side;
		int to = (side+1)*row_per_side;
		int a = 0;
		for(ActionItem is : items.subList(from, (to > items.size() ? items.size() : to))){
			inv.setItem(a, is);
			a++;
		}
	}
	private void setNext(){
		if(next == null){
			next = new ItemStack(Material.BLAZE_ROD);
			ItemMeta next_m = next.getItemMeta();
			next_m.setDisplayName("§aNext");
			next.setItemMeta(next_m);
		}
		inv.setItem(inv.getSize()-2, next);
	}
	private void setBack(){
		if(back == null){
			back = new ItemStack(Material.STICK);
			ItemMeta back_m = next.getItemMeta();
			back_m.setDisplayName("§aBack");
			back.setItemMeta(back_m);
		}
		inv.setItem(inv.getSize()-8, next);
	}
	public void openInventorry(Player p){
		displaySide(0);
		p.openInventory(inv);
	}
	public void setNextItem(ItemStack is){
		next = is;
		setNext();
	}
	public void setBackItem(ItemStack is){
		back = is;
		setBack();
	}
}
BungeeUtil --> Deine API für den Bungeecord
PacketLib | Inventory API | NPC API | und vieles mehr...


xlson

User / Kunde

  • »xlson« ist männlich

Beiträge: 513

  • Nachricht senden

4

Montag, 4. März 2019, 03:01

Noch jemand eine Aktuelle Lösung? Oder wie oder gegen was ersetze ich das Action Item?

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

Ähnliche Themen