• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

PlugIn Randomitem Command - Angriffswert ändern.

Squall

Kuhfänger
Registriert
19 Mai 2023
Beiträge
72
Diamanten
124
Hallo bei meinem erstellten Command:

import java.util.ArrayList;
import java.util.concurrent.ThreadLocalRandom;

import org.bukkit.Material;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeModifier;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;


public class Command_RandomItem implements CommandExecutor {

@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
// TODO Auto-generated method stub
if(sender instanceof Player) {
Player p = (Player) sender;
if (args.length == 0) {
String[] Mats = {
"IRON_SHOVEL",
"IRON_PICKAXE",
"IRON_AXE",
"FLINT_AND_STEEL",
"BOW",
"WOODEN_SHOVEL",
"WOODEN_PICKAXE",
"WOODEN_AXE",
"STONE_SHOVEL",
"STONE_PICKAXE",
"STONE_AXE",
"DIAMOND_SHOVEL",
"DIAMOND_PICKAXE",
"DIAMOND_AXE",
"GOLDEN_SHOVEL",
"GOLDEN_PICKAXE",
"GOLDEN_AXE",
"STONE_HOE",
"IRON_HOE",
"DIAMOND_HOE",
"LEGACY_WOOD_HOE",
"COMPASS",
"FISHING_ROD",
"CLOCK",
"FILLED_MAP",
"SHEARS",
"MAP",
"CARROT_ON_A_STICK",
"LEAD",
"TOTEM_OF_UNDYING",
"SHULKER_SHELL",
"IRON_NUGGET",
"GRINDSTONE",
"STONECUTTER",
"BELL",
"LANTERN",
"NETHERITE_SHOVEL",
"NETHERITE_PICKAXE",
"NETHERITE_AXE",
"NETHERITE_HOE",
"WARPED_FUNGUS_ON_A_STICK",
"SOUL_LANTERN",
"SOUL_CAMPFIRE",
"SPYGLASS"
};
int min = 0;
int max = Mats.length - 1;
int id = ThreadLocalRandom.current().nextInt(min, max);
System.out.println((int)(Math.random() * ((max - min) + 1)) + min);
System.out.println("the max contents of the materials array are: " + max);
p.sendMessage("You are about to be given a tool: " + Mats[id]);
String itemid = Mats[id];
p.sendMessage("the ItemID is: " + itemid);
ItemStack itemdb = new ItemStack(Material.valueOf(itemid));
ItemMeta meta = itemdb.getItemMeta();

String[] text = {
"The New Item",
"The Other Item",
"The Nice Item",
"The Bad Item."
};
int textmin = 0;
int textmax = text.length - 1;
int textid = ThreadLocalRandom.current().nextInt(textmin, textmax);
String loretext = text[textid];
ArrayList<String> lore = new ArrayList<>();
lore.add(loretext);
meta.setLore(lore);
meta.addEnchant(Enchantment.DURABILITY, 2, true);
meta.addAttributeModifier(Attribute.GENERIC_ATTACK_DAMAGE, new AttributeModifier(Attribute.GENERIC_ATTACK_DAMAGE.toString(), 10, AttributeModifier.Operation.ADD_NUMBER));
itemdb.setItemMeta(meta);
p.getInventory().addItem(itemdb);

p.sendMessage("You get: " + itemid);

} else {
p.sendMessage("wrong syntax!");
}
}
return true;
}

}
Habe ich ein Problem der Angriffschaden den ich modifiziere stimmt sofern ich das seh.
Es ist nur so das er Mehrfach hinzugefügt wird bei allen Tools die ich im Array festgelegt habe.
Habe dazu mal ein Gif gemacht für das Result:
ezgif.com-video-to-gif.gif


Das rechte item wurde mittels /give command erstellt.
Die Anderen beiden durch /randomitems.

Ich habe also versucht den Standardschaden der Schaufel von 3.5 auf 10 zu erhöhen.
Was nicht ganz funktionierte.

Das item wird Zwar generiert und teilt auch den Angezeigten Schaden aus.
Aber die Lore etc hat zuviele infos:

Es dürfte eigentlich nur dastehen:
When in Main hand:
+10 Attack Damage
 
Zuletzt bearbeitet:

Chronex

Redstoneengineer
Registriert
22 Mai 2020
Beiträge
36
Diamanten
259
Das liegt vermutlich daran, dass du keinen EquipmentSlot in deinem AttributeModifier angibst, also den Slot, in dem dein Attribut aktiv sein soll.
Verwende stattdessen folgendes, dann sollte alles wie gewollt funktionieren.

Java:
Attribute attribute = Attribute.GENERIC_ATTACK_DAMAGE;

AttributeModifier attributeModifier = new AttributeModifier(UUID.randomUUID(),
        attribute.getKey().getKey(),
        10,
        AttributeModifier.Operation.ADD_NUMBER,
        EquipmentSlot.HAND);

meta.addAttributeModifier(attribute, attributeModifier);
 

Squall

Kuhfänger
Registriert
19 Mai 2023
Beiträge
72
Diamanten
124
Das liegt vermutlich daran, dass du keinen EquipmentSlot in deinem AttributeModifier angibst, also den Slot, in dem dein Attribut aktiv sein soll.
Verwende stattdessen folgendes, dann sollte alles wie gewollt funktionieren.

Java:
Attribute attribute = Attribute.GENERIC_ATTACK_DAMAGE;

AttributeModifier attributeModifier = new AttributeModifier(UUID.randomUUID(),
        attribute.getKey().getKey(),
        10,
        AttributeModifier.Operation.ADD_NUMBER,
        EquipmentSlot.HAND);

meta.addAttributeModifier(attribute, attributeModifier);
Danke hat funktioniert :D auch wenn die Lösung sehr spät kam xD!^^
 
Oben