mirror of
https://gitlab.com/phoenix-dvpmt/mmoitems.git
synced 2025-03-11 13:11:50 +01:00
Added 1.20.5+ max stack size
This commit is contained in:
parent
7d82c3daf5
commit
3d13d6db0e
@ -25,6 +25,7 @@ public class ItemStats {
|
||||
NAME = new DisplayName(),
|
||||
LORE = new Lore(),
|
||||
NBT_TAGS = new NBTTags(),
|
||||
STACK_SIZE = new StackSize(),
|
||||
LORE_FORMAT = new LoreFormat(),
|
||||
TOOLTIP = new TooltipStat(),
|
||||
|
||||
@ -200,7 +201,7 @@ public class ItemStats {
|
||||
DOWNGRADE_ON_DEATH_CHANCE = new DoubleStat("DEATH_DOWNGRADE_CHANCE", Material.SKELETON_SKULL, "Death Downgrade Chance", new String[]{"Probability that an item with &cDowngrade ", "&con Death&7 will be downgraded when the", "player dies. ", "", "Exceeding 100% will for sure downgrade", "one item, and roll again to downgrade", "another (with the excess probability).", "&6The same item wont be downgraded twice."}, new String[]{"equipment"}, false),
|
||||
|
||||
// Unique Item Stats
|
||||
DYE_COLOR = new DyeColor(),
|
||||
DYE_COLOR = new DyeColor(),
|
||||
HIDE_DYE = new HideDye(),
|
||||
TRIM_MATERIAL = new TrimMaterialStat(),
|
||||
TRIM_PATTERN = new TrimPatternStat(),
|
||||
|
@ -0,0 +1,88 @@
|
||||
package net.Indyuce.mmoitems.stat;
|
||||
|
||||
import io.lumine.mythic.lib.api.item.ItemTag;
|
||||
import io.lumine.mythic.lib.api.item.SupportedNBTTagValues;
|
||||
import net.Indyuce.mmoitems.api.item.build.ItemStackBuilder;
|
||||
import net.Indyuce.mmoitems.api.item.mmoitem.ReadMMOItem;
|
||||
import net.Indyuce.mmoitems.api.util.NumericStatFormula;
|
||||
import net.Indyuce.mmoitems.stat.data.DoubleData;
|
||||
import net.Indyuce.mmoitems.stat.data.type.StatData;
|
||||
import net.Indyuce.mmoitems.stat.type.DoubleStat;
|
||||
import net.Indyuce.mmoitems.stat.type.GemStoneStat;
|
||||
import net.Indyuce.mmoitems.util.VersionDependant;
|
||||
import org.bukkit.Material;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@VersionDependant(version = {1, 20, 5})
|
||||
public class StackSize extends DoubleStat implements GemStoneStat {
|
||||
public StackSize() {
|
||||
super("STACK_SIZE", Material.CHEST, "Max Stack Size", new String[]{"Maximum amount of items which", "can be stacked together (1.20.5+)."}, new String[]{"all"});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void whenApplied(@NotNull ItemStackBuilder item, @NotNull DoubleData data) {
|
||||
|
||||
// Edit meta
|
||||
item.getMeta().setMaxStackSize((int) data.getValue());
|
||||
|
||||
// Apply Custom Model Data
|
||||
item.addItemTag(getAppliedNBT(data));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void whenPreviewed(@NotNull ItemStackBuilder item, @NotNull DoubleData currentData, @NotNull NumericStatFormula templateData) throws IllegalArgumentException {
|
||||
whenApplied(item, currentData);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public ArrayList<ItemTag> getAppliedNBT(@NotNull DoubleData data) {
|
||||
|
||||
// Make new ArrayList
|
||||
ArrayList<ItemTag> ret = new ArrayList<>();
|
||||
|
||||
// Add Integer
|
||||
ret.add(new ItemTag(getNBTPath(), (int) data.getValue()));
|
||||
|
||||
// Return thay
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void whenLoaded(@NotNull ReadMMOItem mmoitem) {
|
||||
|
||||
// Get Relevant tags
|
||||
ArrayList<ItemTag> relevantTags = new ArrayList<>();
|
||||
if (mmoitem.getNBT().hasTag(getNBTPath()))
|
||||
relevantTags.add(ItemTag.getTagAtPath(getNBTPath(), mmoitem.getNBT(), SupportedNBTTagValues.INTEGER));
|
||||
|
||||
// Attempt to build data
|
||||
StatData data = getLoadedNBT(relevantTags);
|
||||
|
||||
// Success?
|
||||
if (data != null) {
|
||||
mmoitem.setData(this, data);
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public DoubleData getLoadedNBT(@NotNull ArrayList<ItemTag> storedTags) {
|
||||
|
||||
// Find Tag
|
||||
ItemTag cmd = ItemTag.getTagAtPath(getNBTPath(), storedTags);
|
||||
|
||||
// Found?
|
||||
if (cmd != null) {
|
||||
|
||||
// Well thats it
|
||||
return new DoubleData((Integer) cmd.getValue());
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user