Skip to content

Commit 4487e07

Browse files
author
Smartin-b
committed
- drawtime adjustments
- fix for generative compat
1 parent f25dfbf commit 4487e07

File tree

13 files changed

+65
-58
lines changed

13 files changed

+65
-58
lines changed

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@
22
- added option to use modulekeys in material-properties
33
- fixed scrolling in skin-gui
44
- added Itemtag Property
5-
- added Advancement Condition
5+
- added Advancement Condition
6+
- fixed issue with generative compat
7+
- fixed Trim rendering issue in gui
8+
- buffed Blocking
9+
- added Thorns to Prismarine

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import smartin.miapi.client.gui.InteractAbleWidget;
2525
import smartin.miapi.client.gui.ScrollList;
2626
import smartin.miapi.client.gui.TransformableWidget;
27+
import smartin.miapi.item.modular.CustomDrawTimeItem;
2728
import smartin.miapi.modules.ItemModule;
2829
import smartin.miapi.modules.properties.*;
2930
import smartin.miapi.modules.properties.util.GuiWidgetSupplier;
@@ -180,7 +181,10 @@ public static void onReload() {
180181
.setMin(1)
181182
.setDefault(20)
182183
.setValueGetter((stack) -> {
183-
if(stack.getItem() instanceof CrossbowItem){
184+
if (stack.getItem() instanceof CustomDrawTimeItem customDrawTimeItem) {
185+
return customDrawTimeItem.getActualDrawTime(stack);
186+
}
187+
if (stack.getItem() instanceof CrossbowItem) {
184188
return 25 - AttributeProperty.getActualValue(stack, EquipmentSlot.MAINHAND, AttributeRegistry.BOW_DRAW_TIME);
185189
}
186190
return 20 - AttributeProperty.getActualValue(stack, EquipmentSlot.MAINHAND, AttributeRegistry.BOW_DRAW_TIME);

common/src/main/java/smartin/miapi/client/modelrework/Alt2BakedMiapiModel.java

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -109,50 +109,7 @@ public void render(MatrixStack matrices, ItemStack stack, ModelTransformationMod
109109
}
110110
}
111111
});
112-
/*
113-
quadLookupMap.computeIfAbsent(currentModel, model -> {
114-
List<BakedQuad> rawQuads = new ArrayList<>();
115-
for (Direction direction : Direction.values()) {
116-
rawQuads.addAll(model.getQuads(null, direction, random));
117-
}
118-
List<BakedQuad> redoneQuads = new ArrayList<>();
119-
rawQuads.forEach(bakedQuad -> {
120-
float uStart = bakedQuad.getSprite().getMinU();
121-
float uScale = 1 / (bakedQuad.getSprite().getMaxU() - bakedQuad.getSprite().getMinU());
122-
float vStart = bakedQuad.getSprite().getMinV();
123-
float vScale = 1 / (bakedQuad.getSprite().getMaxV() - bakedQuad.getSprite().getMinV());
124-
int[] copiedArray = new int[bakedQuad.getVertexData().length];
125-
126-
System.arraycopy(bakedQuad.getVertexData(), 0, copiedArray, 0, bakedQuad.getVertexData().length);
127-
for (int i = 0; i < bakedQuad.getVertexData().length / 8; i++) {
128-
copiedArray[i * 8 + 4] = Float.floatToRawIntBits((Float.intBitsToFloat(copiedArray[i * 8 + 4]) - uStart) * uScale);
129-
copiedArray[i * 8 + 5] = Float.floatToRawIntBits((Float.intBitsToFloat(copiedArray[i * 8 + 5]) - vStart) * vScale);
130-
}
131-
redoneQuads.add(new BakedQuad(copiedArray, bakedQuad.getColorIndex(), bakedQuad.getFace(), bakedQuad.getSprite(), bakedQuad.hasShade()));
132-
});
133-
134-
return redoneQuads;
135-
}).forEach(bakedQuad -> {
136-
Identifier replaceId = MaterialSpriteManager.getMaterialSprite(bakedQuad.getSprite(), material);
137-
if (replaceId != null) {
138-
RenderLayer atlasRenderLayer = RenderLayer.getEntityTranslucentCull(replaceId);
139-
//VertexConsumer atlasConsumer = ItemRenderer.getDirectDynamicDisplayGlintConsumer(vertexConsumers,atlasRenderLayer,matrices.peek());
140-
VertexConsumer atlasConsumer = ItemRenderer.getDirectItemGlintConsumer(vertexConsumers, atlasRenderLayer, true, false);
141-
//atlasConsumer = vertexConsumers.getBuffer(atlasRenderLayer);
142-
atlasConsumer.quad(matrices.peek(), bakedQuad, colors[0], colors[1], colors[2], light, overlay);
143112

144-
145-
if (trim != null) {
146-
if (armorMaterial != null) {
147-
if (!modelHolder.trimMode().equals(TrimRenderer.TrimMode.NONE)) {
148-
TrimRenderer.renderTrims(matrices, bakedQuad, modelHolder.trimMode(), light, vertexConsumers, armorMaterial, stack);
149-
150-
}
151-
}
152-
}
153-
}
154-
});
155-
*/
156113
if (modelHolder.entityRendering()) {
157114
ModelTransformer.getRescaleInverse(currentModel, random).forEach(bakedQuad -> {
158115
Identifier replaceId = MaterialSpriteManager.getMaterialSprite(bakedQuad.getSprite(), material);

common/src/main/java/smartin/miapi/client/modelrework/BadShaderCompatModel.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,11 @@ public void render(MatrixStack matrices, ItemStack stack, ModelTransformationMod
7171
});
7272
}
7373

74-
if (stack.getItem() instanceof ArmorItem armorItem) {
74+
if (stack.getItem() instanceof ArmorItem armorItem && !modelHolder.trimMode().equals(TrimRenderer.TrimMode.NONE)) {
7575
ModelTransformer.getRescale(currentModel, random).forEach(bakedQuad -> {
7676
TrimRenderer.renderTrims(matrices, bakedQuad, modelHolder.trimMode(), light, vertexConsumers, armorItem.getMaterial(), stack);
7777
});
7878
}
79-
if (consumer instanceof VertexConsumerProvider.Immediate immediate) {
80-
immediate.draw();
81-
}
8279
MinecraftClient.getInstance().world.getProfiler().pop();
8380
matrices.pop();
8481
}

common/src/main/java/smartin/miapi/client/modelrework/BakedMiapiGlintModel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public void render(MatrixStack matrices, ItemStack stack, ModelTransformationMod
7878
});
7979
}
8080

81-
if (stack.getItem() instanceof ArmorItem armorItem) {
81+
if (stack.getItem() instanceof ArmorItem armorItem && !modelHolder.trimMode().equals(TrimRenderer.TrimMode.NONE)) {
8282
ModelTransformer.getRescale(currentModel, random).forEach(bakedQuad -> {
8383
TrimRenderer.renderTrims(matrices, bakedQuad, modelHolder.trimMode(), light, vertexConsumerProvider, armorItem.getMaterial(), stack);
8484
});

common/src/main/java/smartin/miapi/client/modelrework/BakedMiapiModel.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public void render(MatrixStack matrices, ItemStack stack, ModelTransformationMod
5353
assert MinecraftClient.getInstance().world != null;
5454
MinecraftClient.getInstance().world.getProfiler().push("BakedModel");
5555
matrices.push();
56-
Transform.applyPosition(matrices,modelMatrix);
56+
Transform.applyPosition(matrices, modelMatrix);
5757
BakedModel currentModel = model;
5858
if (model.getOverrides() != null && !model.getOverrides().equals(ModelOverrideList.EMPTY)) {
5959
currentModel = model.getOverrides().apply(model, stack, MinecraftClient.getInstance().world, entity, light);
@@ -72,7 +72,7 @@ public void render(MatrixStack matrices, ItemStack stack, ModelTransformationMod
7272
});
7373
}
7474

75-
if (stack.getItem() instanceof ArmorItem armorItem) {
75+
if (stack.getItem() instanceof ArmorItem armorItem && !modelHolder.trimMode().equals(TrimRenderer.TrimMode.NONE)) {
7676
ModelTransformer.getRescale(currentModel, random).forEach(bakedQuad -> {
7777
TrimRenderer.renderTrims(matrices, bakedQuad, modelHolder.trimMode(), light, vertexConsumers, armorItem.getMaterial(), stack);
7878
});

common/src/main/java/smartin/miapi/craft/CraftAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ private ItemStack craft() {
288288
parsingInstance.subModules.put(slotId.get(0), newModule);
289289
}
290290
newBaseModule.writeToItem(craftingStack);
291-
return craftingStack;
291+
return craftingStack.copy();
292292
}
293293

294294
/**
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package smartin.miapi.item.modular;
2+
3+
import net.minecraft.entity.EquipmentSlot;
4+
import net.minecraft.item.ItemStack;
5+
import smartin.miapi.attributes.AttributeRegistry;
6+
import smartin.miapi.modules.properties.AttributeProperty;
7+
8+
public interface CustomDrawTimeItem {
9+
double getBaseDrawTime(ItemStack itemStack);
10+
11+
default double getActualDrawTime(ItemStack stack){
12+
return getBaseDrawTime(stack) - AttributeProperty.getActualValue(stack, EquipmentSlot.MAINHAND, AttributeRegistry.BOW_DRAW_TIME);
13+
}
14+
}

common/src/main/java/smartin/miapi/item/modular/items/ModularCrossbow.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import smartin.miapi.attributes.AttributeRegistry;
3535
import smartin.miapi.client.model.ModularModelPredicateProvider;
3636
import smartin.miapi.entity.ItemProjectileEntity;
37+
import smartin.miapi.item.modular.CustomDrawTimeItem;
3738
import smartin.miapi.item.modular.ModularItem;
3839
import smartin.miapi.modules.properties.AttributeProperty;
3940
import smartin.miapi.modules.properties.DisplayNameProperty;
@@ -45,7 +46,7 @@
4546

4647
import static smartin.miapi.item.modular.items.ModularBow.projectile;
4748

48-
public class ModularCrossbow extends CrossbowItem implements ModularItem {
49+
public class ModularCrossbow extends CrossbowItem implements ModularItem, CustomDrawTimeItem {
4950

5051
public ModularCrossbow() {
5152
super(new Item.Settings().maxCount(1).maxDamage(50));
@@ -119,7 +120,6 @@ public int getMaxUseTime(ItemStack stack) {
119120

120121
private static float getPullProgress(int useTicks, ItemStack stack) {
121122
float progress = (float) useTicks / (float) getPullTime(stack);
122-
Miapi.LOGGER.info("pull Progress " + useTicks + " pullTime " + getPullTime(stack) + " " + progress);
123123
return Math.max(0, Math.min(1, progress));
124124
}
125125

@@ -345,4 +345,9 @@ public static List<ItemStack> getProjectiles(ItemStack crossbow) {
345345
public Predicate<ItemStack> getProjectiles() {
346346
return itemStack -> projectile.test(itemStack) || IsCrossbowShootAble.canCrossbowShoot(itemStack);
347347
}
348+
349+
@Override
350+
public double getBaseDrawTime(ItemStack itemStack) {
351+
return 25;
352+
}
348353
}

common/src/main/java/smartin/miapi/mixin/BCWeaponRegistryMixin.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.spongepowered.asm.mixin.injection.At;
99
import org.spongepowered.asm.mixin.injection.Inject;
1010
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
11+
import smartin.miapi.Environment;
1112
import smartin.miapi.item.modular.ModularItem;
1213
import smartin.miapi.modules.properties.compat.BetterCombatHelper;
1314

@@ -20,11 +21,29 @@ public class BCWeaponRegistryMixin {
2021
remap = true,
2122
require = -1)
2223
private static void miapi$getAttributes(ItemStack itemStack, CallbackInfoReturnable<WeaponAttributes> cir) {
23-
if(itemStack.getItem() instanceof ModularItem && !itemStack.getOrCreateNbt().contains("weapon_attributes")){
24+
if (itemStack.getItem() instanceof ModularItem && !itemStack.getOrCreateNbt().contains("weapon_attributes")) {
2425
WeaponAttributes attributes = BetterCombatHelper.getAttributes(itemStack);
2526
if (attributes != null) {
2627
cir.setReturnValue(attributes);
2728
}
2829
}
2930
}
30-
}
31+
32+
/*
33+
because BC fails to work properly on servers with NBT compat
34+
*/
35+
@Inject(
36+
method = "readFromNBT(Lnet/minecraft/item/ItemStack;)Lnet/bettercombat/api/WeaponAttributes;",
37+
at = @At("HEAD"),
38+
cancellable = true,
39+
remap = true,
40+
require = -1)
41+
private static void miapi$getAttributesFix(ItemStack itemStack, CallbackInfoReturnable<WeaponAttributes> cir) {
42+
if (itemStack.getItem() instanceof ModularItem && !Environment.isClientServer()) {
43+
WeaponAttributes attributes = BetterCombatHelper.getAttributes(itemStack);
44+
if (attributes != null) {
45+
cir.setReturnValue(attributes);
46+
}
47+
}
48+
}
49+
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,9 @@ public MaterialPalette getPalette() {
382382

383383
@Override
384384
public double getValueOfItem(ItemStack item) {
385+
if(toolMaterial.getRepairIngredient().test(item)){
386+
return 1;
387+
}
385388
return item.getItem().equals(mainIngredient.getItem()) ? 1 : 0;
386389
}
387390

@@ -390,6 +393,9 @@ public double getValueOfItem(ItemStack item) {
390393
if (mainIngredient.getItem().equals(itemStack.getItem())) {
391394
return 0.0;
392395
}
396+
if(toolMaterial.getRepairIngredient().test(itemStack)){
397+
return 0.0;
398+
}
393399
return null;
394400
}
395401
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ public String resolveString(String data, ItemModule.ModuleInstance instance) {
9696
.map(toolItem -> toolItem.getMaterial())
9797
.collect(Collectors.toSet())
9898
.stream()
99+
.filter(toolMaterial -> toolMaterial.getRepairIngredient() != null && toolMaterial.getRepairIngredient().getMatchingStacks() != null)
99100
.filter(toolMaterial -> toolMaterial.getRepairIngredient().getMatchingStacks().length > 0)
100101
.filter(toolMaterial -> !toolMaterial.getRepairIngredient().getMatchingStacks()[0].isIn(RegistryInventory.MIAPI_FORBIDDEN_TAG))
101102
.filter(toolMaterial -> Arrays.stream(toolMaterial.getRepairIngredient().getMatchingStacks()).allMatch(itemStack -> getMaterialFromIngredient(itemStack) == null && !itemStack.getItem().equals(Items.BARRIER)))

0 commit comments

Comments
 (0)