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

Lieber Besucher, herzlich willkommen bei: Nitrado.net Prepaid Gameserver Community-Support - Archiv. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

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