use of net.silentchaos512.gear.api.stats.StatModifierMap in project Silent-Gear by SilentChaos512.
the class StatModifierMap method read.
public static StatModifierMap read(FriendlyByteBuf buffer) {
StatModifierMap map = new StatModifierMap();
int count = buffer.readVarInt();
for (int i = 0; i < count; ++i) {
StatGearKey key = StatGearKey.read(buffer);
StatInstance instance = StatInstance.read(key, buffer);
map.put(key, instance);
}
return map;
}
use of net.silentchaos512.gear.api.stats.StatModifierMap in project Silent-Gear by SilentChaos512.
the class GearData method getStatModifiers.
public static StatModifierMap getStatModifiers(ItemStack stack, ICoreItem item, PartDataList parts) {
GearType gearType = item.getGearType();
StatModifierMap stats = new StatModifierMap();
for (ItemStat stat : ItemStats.allStatsOrderedExcluding(item.getExcludedStats(stack))) {
StatGearKey itemKey = StatGearKey.of(stat, gearType);
for (PartData part : parts) {
for (StatInstance mod : part.getStatModifiers(itemKey, stack)) {
StatInstance modCopy = StatInstance.of(mod.getValue(), mod.getOp(), itemKey);
stats.put(modCopy.getKey(), modCopy);
}
}
}
return stats;
}
use of net.silentchaos512.gear.api.stats.StatModifierMap in project Silent-Gear by SilentChaos512.
the class MaterialBuilder method stat.
public MaterialBuilder stat(PartType partType, IItemStat stat, GearType gearType, float value, StatInstance.Operation operation) {
StatGearKey key = StatGearKey.of(stat, gearType);
StatInstance mod = StatInstance.of(value, operation, key);
StatModifierMap map = stats.computeIfAbsent(partType, pt -> new StatModifierMap());
map.put(stat, gearType, mod);
return this;
}
use of net.silentchaos512.gear.api.stats.StatModifierMap 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.stats.StatModifierMap 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