Skip to content

Commit 457e697

Browse files
committed
fix: Pride Elytra not deploying & rendering cape
Fixes #62 Fixes #63
1 parent ba79ca8 commit 457e697

File tree

9 files changed

+148
-6
lines changed

9 files changed

+148
-6
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package gay.pridecraft.joy.mixin.client.minecraft;
2+
3+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
5+
import gay.pridecraft.joy.tags.JoyItemTags;
6+
import net.minecraft.client.render.entity.feature.CapeFeatureRenderer;
7+
import net.minecraft.item.Item;
8+
import net.minecraft.item.ItemStack;
9+
import org.spongepowered.asm.mixin.Mixin;
10+
import org.spongepowered.asm.mixin.injection.At;
11+
12+
/**
13+
* @author Ampflower
14+
* @since 1.0.0
15+
**/
16+
@Mixin(CapeFeatureRenderer.class)
17+
public class MixinCapeFeatureRenderer {
18+
@WrapOperation(
19+
method = "render",
20+
at = @At(value = "INVOKE",
21+
target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z"))
22+
private static boolean isElytra(ItemStack self, Item ref, Operation<Boolean> operation) {
23+
if (self.isIn(JoyItemTags.ELYTRA)) {
24+
return true;
25+
}
26+
return operation.call(self, ref);
27+
}
28+
}

xplat/src/client/resources/joy.client.mixins.json

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@
55
"refmap": "client-joy.refmap.json",
66
"compatibilityLevel": "JAVA_21",
77
"client": [
8-
"BipedEntityModelMixin",
9-
"ClientPlayNetworkHandlerMixin",
10-
"PlayerEntityRendererMixin",
11-
"SplashTextResourceSupplierMixin"
8+
"BipedEntityModelMixin", "ClientPlayNetworkHandlerMixin", "PlayerEntityRendererMixin",
9+
"SplashTextResourceSupplierMixin", "minecraft.MixinCapeFeatureRenderer"
1210
],
1311
"injectors": {
1412
"defaultRequire": 1

xplat/src/datagen/java/gay/pridecraft/joy/data/JoyData.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public void onInitializeDataGenerator(final FabricDataGenerator fabricDataGenera
2323
pack.addProvider(JoyBlockLootProvider::new);
2424
pack.addProvider(JoyBlockTagProvider::new);
2525
pack.addProvider(JoyEntityTagProvider::new);
26+
pack.addProvider(JoyItemTagProvider::new);
2627
pack.addProvider(JoyModelProvider::new);
2728

2829
for (final var translation : Bootstrap.getMissingTranslations()) {
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package gay.pridecraft.joy.data;
2+
3+
import gay.pridecraft.joy.registry.JoyItems;
4+
import gay.pridecraft.joy.tags.JoyItemTags;
5+
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
6+
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider;
7+
import net.minecraft.item.Items;
8+
import net.minecraft.registry.RegistryWrapper;
9+
10+
import java.util.concurrent.CompletableFuture;
11+
12+
/**
13+
* @author Ampflower
14+
* @since 1.0.0
15+
**/
16+
public class JoyItemTagProvider extends FabricTagProvider.ItemTagProvider {
17+
public JoyItemTagProvider(final FabricDataOutput output, final CompletableFuture<RegistryWrapper.WrapperLookup> completableFuture) {
18+
super(output, completableFuture);
19+
}
20+
21+
@Override
22+
protected void configure(final RegistryWrapper.WrapperLookup wrapperLookup) {
23+
getOrCreateTagBuilder(JoyItemTags.ELYTRA).add(
24+
Items.ELYTRA,
25+
JoyItems.PRIDE_ELYTRA
26+
);
27+
getOrCreateTagBuilder(JoyItemTags.GLIDERS).addTag(
28+
JoyItemTags.ELYTRA
29+
);
30+
}
31+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package gay.pridecraft.joy.mixin.minecraft;
2+
3+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
5+
import gay.pridecraft.joy.tags.JoyItemTags;
6+
import net.minecraft.entity.LivingEntity;
7+
import net.minecraft.item.Item;
8+
import net.minecraft.item.ItemStack;
9+
import org.spongepowered.asm.mixin.Mixin;
10+
import org.spongepowered.asm.mixin.injection.At;
11+
12+
/**
13+
* @author Ampflower
14+
* @since 1.0.0
15+
**/
16+
@Mixin(LivingEntity.class)
17+
public class MixinLivingEntity {
18+
@WrapOperation(
19+
method = "tickFallFlying",
20+
at = @At(value = "INVOKE",
21+
target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z"))
22+
private static boolean isElytra(ItemStack self, Item ref, Operation<Boolean> operation) {
23+
if (self.isIn(JoyItemTags.GLIDERS)) {
24+
return true;
25+
}
26+
return operation.call(self, ref);
27+
}
28+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package gay.pridecraft.joy.mixin.minecraft;
2+
3+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
5+
import gay.pridecraft.joy.tags.JoyItemTags;
6+
import net.minecraft.entity.player.PlayerEntity;
7+
import net.minecraft.item.Item;
8+
import net.minecraft.item.ItemStack;
9+
import org.spongepowered.asm.mixin.Mixin;
10+
import org.spongepowered.asm.mixin.injection.At;
11+
12+
/**
13+
* @author Ampflower
14+
* @since 1.0.0
15+
**/
16+
@Mixin(PlayerEntity.class)
17+
public class MixinPlayerEntity {
18+
@WrapOperation(
19+
method = "checkFallFlying",
20+
at = @At(value = "INVOKE",
21+
target = "Lnet/minecraft/item/ItemStack;isOf(Lnet/minecraft/item/Item;)Z"))
22+
private static boolean isElytra(ItemStack self, Item ref, Operation<Boolean> operation) {
23+
if (self.isIn(JoyItemTags.GLIDERS)) {
24+
return true;
25+
}
26+
return operation.call(self, ref);
27+
}
28+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package gay.pridecraft.joy.tags;
2+
3+
import gay.pridecraft.joy.JoyUtil;
4+
import net.minecraft.item.Item;
5+
import net.minecraft.registry.RegistryKeys;
6+
import net.minecraft.registry.tag.TagKey;
7+
import net.minecraft.util.Identifier;
8+
9+
/**
10+
* @author Ampflower
11+
* @since 1.0.0
12+
**/
13+
public final class JoyItemTags {
14+
public static final TagKey<Item>
15+
GLIDERS = common("gliders"),
16+
ELYTRA = common("elytra");
17+
18+
private static TagKey<Item> joy(String name) {
19+
return TagKey.of(RegistryKeys.ITEM, JoyUtil.id(name));
20+
}
21+
22+
private static TagKey<Item> common(String name) {
23+
return TagKey.of(RegistryKeys.ITEM, Identifier.of("c", name));
24+
}
25+
}

xplat/src/main/resources/assets/joy/lang/en_us.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,5 +187,8 @@
187187
"tooltip.joy.owner.rename": "%s of %s",
188188

189189
"tag.item.joy.plushies": "Plushies",
190-
"tag.item.joy.sharks": "Shark Plushies"
190+
"tag.item.joy.sharks": "Shark Plushies",
191+
192+
"tag.item.c.gliders": "Gliders",
193+
"tag.item.c.elytra": "Elytra"
191194
}

xplat/src/main/resources/joy.mixins.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"compatibilityLevel": "JAVA_21",
77
"mixins": [
88
"AllayEntityMixin", "LivingEntityMixin", "PaintingVariantsMixin",
9-
"minecraft.AccessorPoi"
9+
"minecraft.AccessorPoi", "minecraft.MixinLivingEntity", "minecraft.MixinPlayerEntity"
1010
],
1111
"injectors": {
1212
"defaultRequire": 1

0 commit comments

Comments
 (0)