You are not logged in.

  • Login

[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

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.

crepperFreak

User / Kunde

  • "crepperFreak" started this thread

Posts: 17

  • Send private message

1

Friday, June 19th 2015, 4:08pm

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" is male

Posts: 508

Location: NRW

Occupation: Schüler

  • Send private message

2

Friday, June 19th 2015, 4:38pm

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" is male

Posts: 502

Occupation: Schüler (Gym)

  • Send private message

3

Friday, June 19th 2015, 5:14pm

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
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" is male

Posts: 513

  • Send private message

4

Monday, March 4th 2019, 3:01am

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

Similar threads