use of net.silentchaos512.gear.api.util.StatGearKey in project Silent-Gear by SilentChaos512.
the class StatModifierMap method deserialize.
public static StatModifierMap deserialize(JsonElement json) {
StatModifierMap map = new StatModifierMap();
if (json.isJsonObject()) {
for (Entry<String, JsonElement> entry : json.getAsJsonObject().entrySet()) {
StatGearKey key = StatGearKey.read(entry.getKey());
if (key != null) {
JsonElement value = entry.getValue();
if (value.isJsonArray()) {
for (JsonElement je : value.getAsJsonArray()) {
StatInstance mod = StatInstance.read(key, je);
map.put(key, mod);
}
} else {
map.put(key, StatInstance.read(key, value));
}
}
}
} else if (json.isJsonArray()) {
for (JsonElement element : json.getAsJsonArray()) {
JsonObject jsonObj = element.getAsJsonObject();
StatGearKey key = StatGearKey.read(GsonHelper.getAsString(jsonObj, "name"));
if (key != null) {
map.put(key, StatInstance.read(key, element));
}
}
} else {
throw new JsonParseException("Expected object or array");
}
return map;
}
use of net.silentchaos512.gear.api.util.StatGearKey in project Silent-Gear by SilentChaos512.
the class AbstractMaterial method isCraftingAllowed.
@Override
public boolean isCraftingAllowed(IMaterialInstance material, PartType partType, GearType gearType, @Nullable Container inventory) {
if (isGearTypeBlacklisted(gearType) || !allowedInPart(material, partType)) {
return false;
}
if (stats.containsKey(partType) || (getParent() != null && getParent().isCraftingAllowed(material, partType, gearType, inventory))) {
if (partType == PartType.MAIN) {
ItemStat stat = gearType.getDurabilityStat();
StatGearKey key = StatGearKey.of(stat, gearType);
return !getStatModifiers(material, partType, key).isEmpty() && getStatUnclamped(material, partType, key, ItemStack.EMPTY) > 0;
}
return true;
}
return false;
}
use of net.silentchaos512.gear.api.util.StatGearKey in project Silent-Gear by SilentChaos512.
the class CraftedMaterial method getStatKeys.
@Override
public Collection<StatGearKey> getStatKeys(IMaterialInstance material, PartType type) {
Collection<StatGearKey> ret = new LinkedHashSet<>(super.getStatKeys(material, type));
IMaterialInstance base = getBaseMaterial(material);
ret.addAll(base.getStatKeys(type));
return ret;
}
use of net.silentchaos512.gear.api.util.StatGearKey in project Silent-Gear by SilentChaos512.
the class MaterialInstance method getEnchantmentModifiedStats.
@Deprecated
private void getEnchantmentModifiedStats(List<StatInstance> mods, StatGearKey key) {
if (key.getStat() == ItemStats.CHARGEABILITY) {
return;
}
// Search for materials that stats
for (Map.Entry<Enchantment, Integer> entry : EnchantmentHelper.getEnchantments(this.item).entrySet()) {
Enchantment enchantment = entry.getKey();
Integer level = entry.getValue();
if (enchantment instanceof IStatModifierEnchantment) {
IStatModifierEnchantment statModifierEnchantment = (IStatModifierEnchantment) enchantment;
ChargedProperties charge = new ChargedProperties(level, getChargeability());
// Replace modifiers with updated ones (if provided)
for (int i = 0; i < mods.size(); i++) {
StatInstance mod = mods.get(i);
StatInstance newMod = statModifierEnchantment.modifyStat(key, mod, charge);
if (newMod != null) {
mods.remove(i);
mods.add(i, newMod);
}
}
}
}
}
use of net.silentchaos512.gear.api.util.StatGearKey in project Silent-Gear by SilentChaos512.
the class StatsCommand method runInfo.
private static int runInfo(CommandContext<CommandSourceStack> context, ServerPlayer player) {
ItemStack stack = player.getMainHandItem();
if (!GearHelper.isGear(stack)) {
context.getSource().sendFailure(TextUtil.translate("command", "invalidItemType", stack.getHoverName()));
return 0;
}
context.getSource().sendSuccess(TextUtil.translate("command", "stats.info.header", player.getName(), stack.getHoverName()).withStyle(ChatFormatting.BOLD), true);
ICoreItem item = (ICoreItem) stack.getItem();
PartDataList parts = GearData.getConstructionParts(stack);
StatModifierMap stats = GearData.getStatModifiers(stack, item, parts);
for (ItemStat stat : ItemStats.allStatsOrderedExcluding((item).getExcludedStats(stack))) {
StatGearKey key = StatGearKey.of(stat, item.getGearType());
Collection<StatInstance> mods = stats.get(key);
if (!mods.isEmpty()) {
Component name = TextUtil.withColor(stat.getDisplayName(), stat.getNameColor());
Component modsText = StatModifierMap.formatText(mods, stat, 5, true);
float statValue = stat.compute(0f, true, item.getGearType(), mods);
Component valueText = TextUtil.withColor(StatInstance.of(statValue, StatInstance.Operation.AVG, key).getFormattedText(stat, 5, false), ChatFormatting.YELLOW);
context.getSource().sendSuccess(TextUtil.translate("command", "stats.info.format", name, modsText, valueText), true);
for (PartData part : parts) {
Collection<StatInstance> partMods = part.getStatModifiers(key, stack);
if (!partMods.isEmpty()) {
Component partName = part.getDisplayName(stack);
Component partModsText = StatModifierMap.formatText(partMods, stat, 5, true);
context.getSource().sendSuccess(TextUtil.translate("command", "stats.info.formatPart", partName, partModsText), true);
}
}
}
}
return 1;
}
Aggregations