You are not logged in.

  • Login

[Java] Items Stacken

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

DerRuedi

User / Kunde

  • "DerRuedi" started this thread

Posts: 136

  • Send private message

1

Sunday, June 21st 2015, 9:51am

Items Stacken

Schön guten Morgen

Ich möchte das sich bestimmte Items wie zum Beispiel Eisenbaren nicht Stacken. Sprich das ich 10 Stück auf den Boden werfen kann und die sich nicht Stacken. Man kann es zwar in der Spigot config einstellen aber da Stacken sich alle Items nicht mehr.

Hier könnte ihre Werbung stehen.


WolverinGER

User / Kunde

  • "WolverinGER" is male

Posts: 502

Occupation: Schüler (Gym)

  • Send private message

2

Sunday, June 21st 2015, 10:13am

Schön guten Morgen

Ich möchte das sich bestimmte Items wie zum Beispiel Eisenbaren nicht Stacken. Sprich das ich 10 Stück auf den Boden werfen kann und die sich nicht Stacken. Man kann es zwar in der Spigot config einstellen aber da Stacken sich alle Items nicht mehr.


Du kannst das drop event abfangen und dann ein neues Itemstack dropen. Dieses Itemstack kann sich dann nicht stacken (siehe code)

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@EventHandler
  public void onPlayerDropItemEvent(PlayerDropItemEvent event) {
    Item item = event.getItemDrop();
    ItemStack itemstack = item.getItemStack();
    Location location = item.getLocation();
    EntityItem ei = new EntityItem(
      ((CraftWorld)location.getWorld()).getHandle(),
      location.getX(),
      location.getY(),
      location.getZ(),
      CraftItemStack.asNMSCopy(itemstack)) {
      @Override
      public boolean a(EntityItem entityitem) {
        return false;
      }
    };
    ei.pickupDelay = 20;
    ((Item)ei.getBukkitEntity()).setVelocity(item.getVelocity());
    ((CraftWorld)location.getWorld()).getHandle().addEntity(ei);
    item.remove();
  }
BungeeUtil --> Deine API für den Bungeecord
PacketLib | Inventory API | NPC API | und vieles mehr...


DerRuedi

User / Kunde

  • "DerRuedi" started this thread

Posts: 136

  • Send private message

3

Sunday, June 21st 2015, 10:17am

Vielen Dank ich werde in gleich testen

EDIT:

Wenn ich das Item als Spieler drope geht es. Aber wie baue ich den Code jetzt noch um wenn ich das Item so Spawne?

Java source code

1
2
3
4
5
6
7
8
9
10
11
12
13
 org.bukkit.inventory.ItemStack Bronze = new org.bukkit.inventory.ItemStack(Material.CLAY_BRICK, 1);
 ItemMeta meta = Bronze.getItemMeta();
 meta.setDisplayName("§cBronze");
 Bronze.setItemMeta(meta);

 String world = this.cfg.getString("Bronze_1.world");
 double x = this.cfg.getDouble("Bronze_1.x");
 double y = this.cfg.getDouble("Bronze_1.y");
 double z = this.cfg.getDouble("Bronze_1.z");
 Location Bronze_1 = new Location(Bukkit
 .getWorld(world), x, y, z);
 
 Bronze_1.getWorld().dropItem(Bronze_1, Bronze);

Hier könnte ihre Werbung stehen.

This post has been edited 1 times, last edit by "DerRuedi" (Jun 21st 2015, 10:35am)


LostBattle

User / Kunde

Posts: 388

  • Send private message

4

Sunday, June 21st 2015, 11:09am

Kannst du dem Item beim droppen nicht auch einfach in die Lore eine Random UUID setzten? Und beim aufsammeln die Lore clearen?

DerRuedi

User / Kunde

  • "DerRuedi" started this thread

Posts: 136

  • Send private message

5

Sunday, June 21st 2015, 11:11am

Das wäre auch ein Ansatz aber ob der geht das weiß ich nicht.

Hier könnte ihre Werbung stehen.


LostBattle

User / Kunde

Posts: 388

  • Send private message

6

Sunday, June 21st 2015, 11:14am

Versuch es einfach :) mit UUID.randomUuid(); bekommst du eine random Uuid

DerRuedi

User / Kunde

  • "DerRuedi" started this thread

Posts: 136

  • Send private message

7

Sunday, June 21st 2015, 2:33pm

Also mit der UUID geht es auch aber wie kann ich dann bei den PlayerPickupItemEvent die UUID wieder entfernen?

Hier könnte ihre Werbung stehen.


Moohsassin

User / Kunde

  • "Moohsassin" is male

Posts: 12

Location: Mannheim

Occupation: Schüler

  • Send private message

8

Sunday, June 21st 2015, 4:15pm

Also mit der UUID geht es auch aber wie kann ich dann bei den PlayerPickupItemEvent die UUID wieder entfernen?
PlayerPickUpItemEvent -> Item getten -> ItemMeata getten -> Lore auf null setzten -> Item wieder die Lore setzten
Liebe Grüße,

Moohsassin

DerRuedi

User / Kunde

  • "DerRuedi" started this thread

Posts: 136

  • Send private message

9

Sunday, June 21st 2015, 5:47pm

Danke Moohsassin so habe ich es jetzt auch gemacht hatte erst ein paar Probleme.

Hier könnte ihre Werbung stehen.


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