Skip to content
This repository was archived by the owner on Apr 28, 2020. It is now read-only.

Commit 44918bd

Browse files
gbuiRunemoro
authored andcommitted
Add IArmorMaterial and IItemTier implementations
1 parent 4a915b5 commit 44918bd

File tree

5 files changed

+148
-0
lines changed

5 files changed

+148
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package org.dimdev.rift.mixin.core.client;
2+
3+
import net.minecraft.client.renderer.entity.layers.LayerArmorBase;
4+
import net.minecraft.client.renderer.entity.model.ModelBase;
5+
import net.minecraft.util.ResourceLocation;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.injection.At;
8+
import org.spongepowered.asm.mixin.injection.Redirect;
9+
10+
@Mixin(LayerArmorBase.class)
11+
public class MixinLayerArmorBase<T extends ModelBase> {
12+
@Redirect(
13+
method = "getArmorResource(Lnet/minecraft/item/ItemArmor;ZLjava/lang/String;)Lnet/minecraft/util/ResourceLocation;",
14+
at = @At(
15+
value = "INVOKE",
16+
target = "Ljava/lang/String;format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;"
17+
)
18+
)
19+
private String getArmorTexture(String format, Object... args) {
20+
String name = (String) args[0];
21+
int layer = (int) args[1];
22+
String typeSuffix = (String) args[2];
23+
ResourceLocation location = new ResourceLocation(name);
24+
return String.format("%s:textures/models/armor/%s_layer_%d%s.png", location.getNamespace(), location.getPath(), layer, typeSuffix);
25+
}
26+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package org.dimdev.rift.util;
2+
3+
import net.minecraft.inventory.EntityEquipmentSlot;
4+
import net.minecraft.item.ArmorMaterial;
5+
import net.minecraft.item.IArmorMaterial;
6+
import net.minecraft.item.crafting.Ingredient;
7+
import net.minecraft.util.LazyLoadBase;
8+
import net.minecraft.util.SoundEvent;
9+
10+
import java.util.function.Supplier;
11+
12+
public class ArmorMaterialImpl implements IArmorMaterial {
13+
private final String name;
14+
private final int maxDamageFactor;
15+
private final int[] damageReductionAmountArray;
16+
private final int enchantability;
17+
private final SoundEvent soundEvent;
18+
private final float toughness;
19+
private final LazyLoadBase<Ingredient> ingredient;
20+
21+
public ArmorMaterialImpl(String name, int maxDamageFactor, int[] damageReductionAmountArray, int enchantability, SoundEvent soundEvent, float toughness, Supplier<Ingredient> ingredientSupplier) {
22+
this.name = name;
23+
this.maxDamageFactor = maxDamageFactor;
24+
this.damageReductionAmountArray = damageReductionAmountArray;
25+
this.enchantability = enchantability;
26+
this.soundEvent = soundEvent;
27+
this.toughness = toughness;
28+
this.ingredient = new LazyLoadBase<>(ingredientSupplier);
29+
}
30+
31+
@Override
32+
public int func_200896_a(EntityEquipmentSlot slot) {
33+
return ArmorMaterial.MAX_DAMAGE_ARRAY[slot.getIndex()] * maxDamageFactor;
34+
}
35+
36+
@Override
37+
public int func_200902_b(EntityEquipmentSlot p_200902_1_) {
38+
return damageReductionAmountArray[p_200902_1_.getIndex()];
39+
}
40+
41+
@Override
42+
public int getEnchantability() {
43+
return enchantability;
44+
}
45+
46+
@Override
47+
public SoundEvent getSoundEvent() {
48+
return soundEvent;
49+
}
50+
51+
@Override
52+
public Ingredient func_200898_c() {
53+
return ingredient.getValue();
54+
}
55+
56+
@Override
57+
public String getName() {
58+
return name;
59+
}
60+
61+
@Override
62+
public float getToughness() {
63+
return toughness;
64+
}
65+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package org.dimdev.rift.util;
2+
3+
import net.minecraft.item.IItemTier;
4+
import net.minecraft.item.crafting.Ingredient;
5+
import net.minecraft.util.LazyLoadBase;
6+
7+
import java.util.function.Supplier;
8+
9+
public class ItemTierImpl implements IItemTier {
10+
private final int harvestLevel;
11+
private final int maxUses;
12+
private final float efficiency;
13+
private final float attackDamage;
14+
private final int enchantability;
15+
private final LazyLoadBase<Ingredient> ingredient;
16+
17+
public ItemTierImpl(int harvestLevel, int maxUses, float efficiency, float attackDamage, int enchantability, Supplier<Ingredient> ingredientSupplier) {
18+
this.harvestLevel = harvestLevel;
19+
this.maxUses = maxUses;
20+
this.efficiency = efficiency;
21+
this.attackDamage = attackDamage;
22+
this.enchantability = enchantability;
23+
this.ingredient = new LazyLoadBase<>(ingredientSupplier);
24+
}
25+
26+
@Override
27+
public int getMaxUses() {
28+
return maxUses;
29+
}
30+
31+
@Override
32+
public float getEfficiency() {
33+
return efficiency;
34+
}
35+
36+
@Override
37+
public float getAttackDamage() {
38+
return attackDamage;
39+
}
40+
41+
@Override
42+
public int getHarvestLevel() {
43+
return harvestLevel;
44+
}
45+
46+
@Override
47+
public int getEnchantability() {
48+
return enchantability;
49+
}
50+
51+
@Override
52+
public Ingredient func_200924_f() {
53+
return ingredient.getValue();
54+
}
55+
}

src/main/resources/access_transformations.at

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,4 @@ public class bms$a # net.minecraft.world.gen.ChunkGeneratorType$Settings
3131
public class bmu # net.minecraft.world.chunk.ChunkStatus
3232
public method bwp b (Ljava/lang/Class;Ljava/lang/String;)V registerStructure # net.minecraft.world.gen.feature.structure.StructureIO/registerStructure
3333
public method bwp a (Ljava/lang/Class;Ljava/lang/String;)V # net.minecraft.world.gen.feature.structure.StructureIO/registerStructure
34+
public field aqz g [I # net.minecraft.item.ArmorMaterial/MAX_DAMAGE_ARRAY

src/main/resources/mixins.rift.core.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
],
1212
"client": [
1313
"client.MixinClientBrandRetriever",
14+
"client.MixinLayerArmorBase",
1415
"client.MixinBlockFluidRenderer",
1516
"client.MixinWaterFluid",
1617
"client.MixinLavaFluid"

0 commit comments

Comments
 (0)