Skip to content

Commit 8f5f8dd

Browse files
committed
- Update Netherite Elytra to be mixin based
- Some Other Cleaning
1 parent 1bc5bbd commit 8f5f8dd

14 files changed

Lines changed: 120 additions & 147 deletions

File tree

common/src/main/java/com/oroarmor/netherite_plus/NetheritePlusModPlatform.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,6 @@
55
import net.minecraft.item.Item;
66

77
public class NetheritePlusModPlatform {
8-
@ExpectPlatform
9-
public static Item getElytraItem(Item.Settings elytraSettings) {
10-
throw new AssertionError();
11-
}
12-
138
@ExpectPlatform
149
public static Item.Settings setISTER(Item.Settings properties) {
1510
throw new AssertionError();

common/src/main/java/com/oroarmor/netherite_plus/item/NetheritePlusItems.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ private static void registerBowAndCrossbow() {
8282
private static void registerElytra() {
8383
Item.Settings elytraSettings = new Item.Settings().maxDamage(NetheritePlusConfig.DURABILITIES.ELYTRA_DURABILITY.getValue()).group(ItemGroup.TRANSPORTATION).rarity(Rarity.UNCOMMON).fireproof();
8484

85-
NETHERITE_ELYTRA = register(id("netherite_elytra"), () -> NetheritePlusModPlatform.getElytraItem(elytraSettings));
85+
NETHERITE_ELYTRA = register(id("netherite_elytra"), () -> new NetheriteElytraItem(elytraSettings));
8686
}
8787

8888
private static void registerFishingRod() {

common/src/main/java/com/oroarmor/netherite_plus/mixin/render/TridentEntityRendererMixin.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
import com.oroarmor.netherite_plus.item.NetheritePlusItems;
55
import org.spongepowered.asm.mixin.Mixin;
66
import org.spongepowered.asm.mixin.injection.At;
7+
import org.spongepowered.asm.mixin.injection.Inject;
78
import org.spongepowered.asm.mixin.injection.Redirect;
9+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
810

911
import net.minecraft.client.render.entity.TridentEntityRenderer;
1012
import net.minecraft.entity.projectile.TridentEntity;
@@ -14,8 +16,10 @@
1416

1517
@Mixin(TridentEntityRenderer.class)
1618
public class TridentEntityRendererMixin {
17-
@Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/entity/TridentEntityRenderer;getTexture(Lnet/minecraft/entity/projectile/TridentEntity;)Lnet/minecraft/util/Identifier;"))
18-
public Identifier getTextureMixin(TridentEntityRenderer renderer, TridentEntity entity) {
19-
return NetheritePlusConfig.ENABLED.ENABLED_TRIDENT.getValue() && entity.tridentStack.getItem() == NetheritePlusItems.NETHERITE_TRIDENT.get() ? id("textures/entity/netherite_trident.png") : TridentEntityRenderer.TEXTURE;
19+
@Inject(method = "getTexture", at = @At(value = "HEAD"), cancellable = true)
20+
public void getTextureMixin(TridentEntity entity, CallbackInfoReturnable<Identifier> cir) {
21+
if(NetheritePlusConfig.ENABLED.ENABLED_TRIDENT.getValue() && entity.tridentStack.getItem() == NetheritePlusItems.NETHERITE_TRIDENT.get()) {
22+
cir.setReturnValue(id("textures/entity/netherite_trident.png"));
23+
}
2024
}
2125
}

fabric/src/main/java/com/oroarmor/netherite_plus/compatibility/NetheritePlusTrinketsCompatibilty.java

Lines changed: 0 additions & 10 deletions
This file was deleted.

fabric/src/main/java/com/oroarmor/netherite_plus/fabric/NetheritePlusModPlatformImpl.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,8 @@
11
package com.oroarmor.netherite_plus.fabric;
22

3-
import com.oroarmor.netherite_plus.compatibility.NetheritePlusTrinketsCompatibilty;
4-
import com.oroarmor.netherite_plus.item.NetheriteElytraItem;
5-
import net.fabricmc.loader.api.FabricLoader;
63
import net.minecraft.item.Item;
74

85
public class NetheritePlusModPlatformImpl {
9-
public static Item getElytraItem(Item.Settings elytraSettings) {
10-
return !FabricLoader.getInstance().isModLoaded("trinkets") ? new NetheriteElytraItem(elytraSettings) : NetheritePlusTrinketsCompatibilty.getTrinketsElytra(elytraSettings);
11-
}
12-
136
public static Item.Settings setISTER(Item.Settings properties) {
147
return properties;
158
}

fabric/src/main/java/com/oroarmor/netherite_plus/item/NetheriteElytraItem_Trinkets.java

Lines changed: 0 additions & 63 deletions
This file was deleted.

fabric/src/main/java/com/oroarmor/netherite_plus/mixin/FishingBobberEntityMixin.java

Lines changed: 0 additions & 19 deletions
This file was deleted.

fabric/src/main/java/com/oroarmor/netherite_plus/mixin/better_end/BetterEndMixinCompatibility.java renamed to fabric/src/main/java/com/oroarmor/netherite_plus/mixin/NetheritePlusMixinPlugin.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.oroarmor.netherite_plus.mixin.better_end;
1+
package com.oroarmor.netherite_plus.mixin;
22

33
import java.util.ArrayList;
44
import java.util.List;
@@ -11,7 +11,7 @@
1111
import net.fabricmc.api.EnvType;
1212
import net.fabricmc.loader.api.FabricLoader;
1313

14-
public class BetterEndMixinCompatibility implements IMixinConfigPlugin {
14+
public class NetheritePlusMixinPlugin implements IMixinConfigPlugin {
1515
@Override
1616
public void onLoad(String mixinPackage) {
1717
}
@@ -23,14 +23,6 @@ public String getRefMapperConfig() {
2323

2424
@Override
2525
public boolean shouldApplyMixin(String targetClassName, String mixinClassName) {
26-
if(!FabricLoader.getInstance().isModLoaded("betterend")) {
27-
return false;
28-
}
29-
30-
if (mixinClassName.equals("com.oroarmor.netherite_plus.mixin.better_end.NetheriteAnvilScreenMixin")) {
31-
return FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT;
32-
}
33-
3426
return true;
3527
}
3628

@@ -47,6 +39,9 @@ public List<String> getMixins() {
4739
this.add("better_end.NetheriteAnvilScreenMixin");
4840
}
4941
}
42+
if(FabricLoader.getInstance().isModLoaded("trinkets")) {
43+
this.add("trinkets.NetheriteElytraMixin");
44+
}
5045
}};
5146
}
5247

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package com.oroarmor.netherite_plus.mixin.trinkets;
2+
3+
import java.util.List;
4+
5+
import com.oroarmor.netherite_plus.compatibility.NetheritePlusTrinketsRenderer;
6+
import com.oroarmor.netherite_plus.config.NetheritePlusConfig;
7+
import com.oroarmor.netherite_plus.item.NetheriteElytraItem;
8+
import dev.emi.trinkets.api.Slots;
9+
import dev.emi.trinkets.api.Trinket;
10+
import dev.emi.trinkets.api.TrinketItem;
11+
import dev.emi.trinkets.api.TrinketsApi;
12+
import org.spongepowered.asm.mixin.Mixin;
13+
import org.spongepowered.asm.mixin.injection.At;
14+
import org.spongepowered.asm.mixin.injection.Inject;
15+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
16+
17+
import net.minecraft.block.DispenserBlock;
18+
import net.minecraft.client.item.TooltipContext;
19+
import net.minecraft.client.network.AbstractClientPlayerEntity;
20+
import net.minecraft.client.render.VertexConsumerProvider;
21+
import net.minecraft.client.render.entity.model.PlayerEntityModel;
22+
import net.minecraft.client.util.math.MatrixStack;
23+
import net.minecraft.entity.attribute.EntityAttributes;
24+
import net.minecraft.entity.player.PlayerEntity;
25+
import net.minecraft.item.Item;
26+
import net.minecraft.item.ItemStack;
27+
import net.minecraft.text.Text;
28+
import net.minecraft.text.TranslatableText;
29+
import net.minecraft.util.Hand;
30+
import net.minecraft.util.TypedActionResult;
31+
import net.minecraft.world.World;
32+
33+
import net.fabricmc.api.EnvType;
34+
import net.fabricmc.api.Environment;
35+
36+
@Mixin(NetheriteElytraItem.class)
37+
public class NetheriteElytraMixin extends Item implements Trinket {
38+
public NetheriteElytraMixin(Settings settings) {
39+
super(settings);
40+
}
41+
42+
@Inject(method = "<init>", at = @At("TAIL"))
43+
public void init(Item.Settings settings, CallbackInfo info) {
44+
DispenserBlock.registerBehavior(this, TrinketItem.TRINKET_DISPENSER_BEHAVIOR);
45+
}
46+
47+
@Override
48+
public void appendTooltip(ItemStack stack, World world, List<Text> tooltip, TooltipContext context) {
49+
tooltip.add(new TranslatableText("warning.netherite_elytra.trinkets"));
50+
super.appendTooltip(stack, world, tooltip, context);
51+
}
52+
53+
@Override
54+
public boolean canWearInSlot(String group, String slot) {
55+
return slot.equals(Slots.CAPE);
56+
}
57+
58+
@Override
59+
public void onEquip(PlayerEntity player, ItemStack stack) {
60+
player.getAttributes().getCustomInstance(EntityAttributes.GENERIC_ARMOR).setBaseValue(NetheritePlusConfig.DAMAGE.ELYTRA_ARMOR_POINTS.getValue() + player.getAttributes().getCustomInstance(EntityAttributes.GENERIC_ARMOR).getBaseValue());
61+
}
62+
63+
@Override
64+
public void onUnequip(PlayerEntity player, ItemStack stack) {
65+
player.getAttributes().getCustomInstance(EntityAttributes.GENERIC_ARMOR).setBaseValue(-NetheritePlusConfig.DAMAGE.ELYTRA_ARMOR_POINTS.getValue() + player.getAttributes().getCustomInstance(EntityAttributes.GENERIC_ARMOR).getBaseValue());
66+
}
67+
68+
@Environment(EnvType.CLIENT)
69+
@Override
70+
public void render(String slot, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int light, PlayerEntityModel<AbstractClientPlayerEntity> model, AbstractClientPlayerEntity livingEntity, float headYaw, float headPitch) {
71+
NetheritePlusTrinketsRenderer.renderTrinketsElytra(matrixStack, vertexConsumerProvider, light, livingEntity, TrinketsApi.getTrinketComponent(livingEntity).getStack(slot));
72+
}
73+
74+
@Override
75+
public TypedActionResult<ItemStack> use(World world, PlayerEntity player, Hand hand) {
76+
return Trinket.equipTrinket(player, hand);
77+
}
78+
}

fabric/src/main/resources/netherite-plus-mod-fabric.mixins.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@
44
"package": "com.oroarmor.netherite_plus.mixin",
55
"compatibilityLevel": "JAVA_8",
66
"mixins": [
7-
"FishingBobberEntityMixin",
87
"ShulkerBoxBlockEntityMixin",
98
"ShulkerBoxSlotMixin"
109
],
1110
"client": [
1211
],
13-
"plugin": "com.oroarmor.netherite_plus.mixin.better_end.BetterEndMixinCompatibility",
12+
"plugin": "com.oroarmor.netherite_plus.mixin.NetheritePlusMixinPlugin",
1413
"injectors": {
1514
"defaultRequire": 1
1615
}

0 commit comments

Comments
 (0)