Skip to content

Commit c2cc13e

Browse files
author
Smartin
committed
- armory update
1 parent 36c76cc commit c2cc13e

File tree

18 files changed

+159
-39
lines changed

18 files changed

+159
-39
lines changed

armory

Submodule armory updated 47 files

common/libs/armory-local.jar

12.9 KB
Binary file not shown.

common/src/main/java/smartin/miapi/client/MiapiClient.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141

4242
public class MiapiClient {
4343
public static MaterialAtlasManager materialAtlasManager;
44-
public static boolean irisLoaded = Platform.isModLoaded("iris");
44+
public static boolean irisLoaded = Platform.isModLoaded("iris") || Platform.isModLoaded("oculus");
4545
public static boolean sodiumLoaded = Platform.isModLoaded("sodium");
4646
public static boolean jerLoaded = Platform.isModLoaded("jeresources");
4747

@@ -102,7 +102,6 @@ public static void init() {
102102
@Environment(EnvType.CLIENT)
103103
public static void registerAnimations(Item item) {
104104
if(item.isDamageable()){
105-
//TODO:figure out why these broke
106105
ModularModelPredicateProvider.registerModelOverride(item, new Identifier(Miapi.MOD_ID,"damage"), (stack, world, entity, seed) -> {
107106
return stack.isDamageable() && stack.isDamaged() ? 0.0f : (float) stack.getMaxDamage() / (stack.getMaxDamage()-stack.getDamage());
108107
});

common/src/main/java/smartin/miapi/client/gui/crafting/statdisplay/AttributeSingleDisplay.java

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ private AttributeSingleDisplay(EntityAttribute attribute, EquipmentSlot slot, St
4848
@Override
4949
public double getValue(ItemStack stack) {
5050
double value = this.valueReader.getValue(stack);
51-
if (Double.isNaN(value)) {
51+
if (!this.valueReader.hasValue(stack) || Double.isNaN(value)) {
5252
return attribute.getDefaultValue();
5353
}
5454
return value;
@@ -65,22 +65,10 @@ public double getValueFunction(ItemStack stack) {
6565
for (EquipmentSlot equipmentSlot : EquipmentSlot.values()) {
6666
Multimap<EntityAttribute, EntityAttributeModifier> currentSlot = attributeCache.get(equipmentSlot);
6767
if (attributeCache.get(equipmentSlot).containsKey(attribute)) {
68-
if (inverse) {
69-
if (value != null) {
70-
value = Math.min(value, AttributeProperty.getActualValue(currentSlot, attribute, defaultValue));
71-
} else {
72-
value = AttributeProperty.getActualValue(currentSlot, attribute, defaultValue);
73-
}
74-
} else {
75-
if (value != null) {
76-
value = Math.max(value, AttributeProperty.getActualValue(currentSlot, attribute, defaultValue));
77-
} else {
78-
value = AttributeProperty.getActualValue(currentSlot, attribute, defaultValue);
79-
}
80-
}
68+
return AttributeProperty.getActualValue(currentSlot, attribute, defaultValue);
8169
}
8270
}
83-
return value != null ? value : 0;
71+
return defaultValue;
8472
}
8573
return AttributeProperty.getActualValue(attributeCache.get(slot), attribute, defaultValue);
8674
}

common/src/main/java/smartin/miapi/client/gui/crafting/statdisplay/JsonStatDisplay.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ public boolean shouldRender(ItemStack original, ItemStack compareTo) {
2626
if (statReader.hasValue(original)) {
2727
return true;
2828
}
29+
textWidget.setText(text.resolve(compareTo));
30+
hoverDescription.setText(hover.resolve(compareTo));
2931
return statReader.hasValue(compareTo);
3032
}
3133
}

common/src/main/java/smartin/miapi/client/gui/crafting/statdisplay/StatListWidget.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package smartin.miapi.client.gui.crafting.statdisplay;
22

33
import com.google.common.collect.Multimap;
4+
import com.google.gson.JsonElement;
45
import net.fabricmc.api.EnvType;
56
import net.fabricmc.api.Environment;
67
import net.minecraft.client.gui.DrawContext;
@@ -25,16 +26,15 @@
2526
import smartin.miapi.modules.ItemModule;
2627
import smartin.miapi.modules.properties.*;
2728
import smartin.miapi.modules.properties.util.GuiWidgetSupplier;
29+
import smartin.miapi.registries.RegistryInventory;
2830

29-
import java.util.ArrayList;
30-
import java.util.HashSet;
31-
import java.util.List;
32-
import java.util.Set;
31+
import java.util.*;
3332

3433
@Environment(EnvType.CLIENT)
3534
public class StatListWidget extends InteractAbleWidget {
3635
private static final List<InteractAbleWidget> statDisplays = new ArrayList<>();
3736
private static final List<StatWidgetSupplier> statWidgetSupplier = new ArrayList<>();
37+
public static final Map<String, JsonConverter> jsonConverterMap = new HashMap<>();
3838
private final BoxList boxList;
3939
private TransformableWidget transformableWidget;
4040
private TransformableWidget hoverText;
@@ -227,8 +227,9 @@ public static void onReload() {
227227
addStatDisplay(AttributeSingleDisplay
228228
.builder(AttributeRegistry.SWIM_SPEED)
229229
.setTranslationKey("swim_speed")
230-
.setMax(1)
231-
.setMin(-1).build());
230+
.setMax(1.5)
231+
.setDefault(1)
232+
.setMin(0).build());
232233
addStatDisplay(AttributeSingleDisplay
233234
.builder(AttributeRegistry.ELYTRA_GLIDE_EFFICIENCY)
234235
.setTranslationKey("elytra_glide")
@@ -291,6 +292,11 @@ public static void onReload() {
291292
AttributeSingleDisplay.attributesWithDisplay.add(AttributeRegistry.MINING_SPEED_HOE);
292293
AttributeSingleDisplay.attributesWithDisplay.add(AttributeRegistry.MINING_SPEED_SHOVEL);
293294
AttributeSingleDisplay.attributesWithDisplay.add(AttributeRegistry.ARMOR_CRUSHING);
295+
RegistryInventory.moduleProperties.getFlatMap().values().stream()
296+
.filter(StatWidgetSupplier.class::isInstance)
297+
.map(StatWidgetSupplier.class::cast)
298+
.filter(statWidgetSupplier::contains)
299+
.forEach(statWidgetSupplier::add);
294300
}
295301

296302
public static void reloadEnd() {
@@ -401,4 +407,8 @@ public interface TextGetter {
401407
public interface MultiTextGetter {
402408
List<Text> resolve(ItemStack stack);
403409
}
410+
411+
public interface JsonConverter<T extends InteractAbleWidget & SingleStatDisplay> {
412+
T fromJson(JsonElement element, SingleStatDisplayDouble.StatReaderHelper statReader);
413+
}
404414
}

common/src/main/java/smartin/miapi/modules/material/AllowedMaterial.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ public ItemStack preview(ItemStack old, ItemStack crafting, PlayerEntity player,
110110
JsonElement element = module.getProperties().get(KEY);
111111
ItemStack input = inventory.get(0);
112112
ItemStack inputCopy = input.copy();
113+
ItemStack materialStack = inputCopy.copy();
113114
if (element != null) {
114115
Material material = MaterialProperty.getMaterialFromIngredient(input);
115116
if (material != null) {
@@ -119,9 +120,11 @@ public ItemStack preview(ItemStack old, ItemStack crafting, PlayerEntity player,
119120
if (isAllowed) {
120121
MaterialProperty.setMaterial(newModule, material.getKey());
121122
}
123+
MiapiEvents.MaterialCraftEventData eventData = new MiapiEvents.MaterialCraftEventData(crafting, materialStack, material, newModule, craftAction);
124+
MiapiEvents.MATERIAL_CRAFT_EVENT.invoker().craft(eventData);
125+
crafting = eventData.crafted;
122126
}
123127
}
124-
crafting = MaterialInscribeProperty.inscribe(crafting, inputCopy);
125128
return crafting;
126129
}
127130

common/src/main/java/smartin/miapi/modules/properties/AttributeProperty.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,11 @@ public static double getActualValue(ItemStack stack, EquipmentSlot slot, EntityA
329329
*/
330330
}
331331

332+
public static boolean hasAttribute(Multimap<EntityAttribute, EntityAttributeModifier> map, EntityAttribute entityAttribute, double fallback) {
333+
Collection<EntityAttributeModifier> attributes = map.get(entityAttribute);
334+
return !attributes.isEmpty();
335+
}
336+
332337
public static double getActualValue(Multimap<EntityAttribute, EntityAttributeModifier> map, EntityAttribute entityAttribute, double fallback) {
333338
Collection<EntityAttributeModifier> attributes = map.get(entityAttribute);
334339
return getActualValue(attributes, fallback);
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package smartin.miapi.modules.properties;
2+
3+
import com.google.gson.JsonElement;
4+
import com.google.gson.JsonObject;
5+
import com.mojang.serialization.JsonOps;
6+
import net.fabricmc.api.EnvType;
7+
import net.fabricmc.api.Environment;
8+
import net.minecraft.item.ItemStack;
9+
import net.minecraft.text.Text;
10+
import net.minecraft.util.dynamic.Codecs;
11+
import smartin.miapi.client.gui.InteractAbleWidget;
12+
import smartin.miapi.client.gui.crafting.statdisplay.JsonStatDisplay;
13+
import smartin.miapi.client.gui.crafting.statdisplay.SingleStatDisplay;
14+
import smartin.miapi.client.gui.crafting.statdisplay.SingleStatDisplayDouble;
15+
import smartin.miapi.client.gui.crafting.statdisplay.StatListWidget;
16+
import smartin.miapi.modules.ItemModule;
17+
import smartin.miapi.modules.properties.util.ModuleProperty;
18+
19+
import java.util.ArrayList;
20+
import java.util.List;
21+
22+
public class GuiWidgetProperty<T extends InteractAbleWidget & SingleStatDisplay> implements StatListWidget.StatWidgetSupplier, ModuleProperty {
23+
24+
public GuiWidgetProperty() {
25+
StatListWidget.jsonConverterMap.put("double", ((element, readerHelper) -> {
26+
JsonObject object = element.getAsJsonObject();
27+
Text header = Codecs.TEXT.parse(JsonOps.INSTANCE, object.get("header")).result().orElse(Text.empty());
28+
Text description = Codecs.TEXT.parse(JsonOps.INSTANCE, object.get("description")).result().orElse(Text.empty());
29+
double min = getOrDefault(object, "min", 0);
30+
double max = getOrDefault(object, "max", 10);
31+
return new JsonStatDisplay(
32+
stack -> header,
33+
stack -> description,
34+
readerHelper,
35+
min,
36+
max
37+
);
38+
}));
39+
}
40+
41+
@Environment(EnvType.CLIENT)
42+
@Override
43+
public List<T> currentList(ItemStack original, ItemStack compareTo) {
44+
List<T> guis = getGuis(original);
45+
guis.addAll(getGuis(compareTo));
46+
return guis;
47+
}
48+
49+
@Environment(EnvType.CLIENT)
50+
public List<T> getGuis(ItemStack itemStack) {
51+
List<T> guis = new ArrayList<>();
52+
JsonElement element = ItemModule.getModules(itemStack).getPropertiesMerged().get(this);
53+
if (element != null && element.isJsonArray()) {
54+
element.getAsJsonArray().forEach(guiElement -> {
55+
if (guiElement instanceof JsonObject object) {
56+
if (object.has("type")) {
57+
String type = object.get("type").getAsString();
58+
if (StatListWidget.jsonConverterMap.containsKey(type)) {
59+
double getValue = getOrDefault(object, "default", 0.0d);
60+
guis.add((T) StatListWidget.jsonConverterMap.get(type).fromJson(guiElement, new SingleStatDisplayDouble.StatReaderHelper() {
61+
@Override
62+
public double getValue(ItemStack testStack) {
63+
if (itemStack.equals(testStack)) {
64+
return getValue;
65+
}
66+
return 0;
67+
}
68+
69+
@Override
70+
public boolean hasValue(ItemStack testStack) {
71+
return itemStack.equals(testStack);
72+
}
73+
}));
74+
}
75+
}
76+
}
77+
});
78+
}
79+
return guis;
80+
}
81+
82+
@Override
83+
public boolean load(String moduleKey, JsonElement data) throws Exception {
84+
return true;
85+
}
86+
87+
public double getOrDefault(JsonObject element, String key, double fallback) {
88+
if (element.has(key) && element.get(key).isJsonPrimitive()) {
89+
return element.get(key).getAsDouble();
90+
}
91+
return fallback;
92+
}
93+
}

0 commit comments

Comments
 (0)