diff --git a/CHANGELOG b/CHANGELOG index 4970d39..61bee1f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,10 @@ # Changes: ## 1.18.1-1.0.1-unstable - first test and register to Strong bow (name not decided yet) -- praying to god i did nothing wrong \ No newline at end of file +- praying to god i did nothing wrong + +## 1.18.1-1.0.2-unstable +- added model predicate provider +- changed bow maxDamage to 458 from 19 (found ot it wasnt attack damage) +- registered model predicate provider in client initializer +- figuring out new stuff is painful \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 431ef0a..7b7eaaa 100755 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx6G loader_version=0.12.12 # Mod Properties - mod_version = 1.18.1-1.0.1-unstable + mod_version = 1.18.1-1.0.2-unstable maven_group = ryantlg.GamerMod.mod archives_base_name = GamerMod diff --git a/src/main/java/net/arcmods/ryantlg/gamermodClient.java b/src/main/java/net/arcmods/ryantlg/gamermodClient.java index 74691bb..bedba38 100644 --- a/src/main/java/net/arcmods/ryantlg/gamermodClient.java +++ b/src/main/java/net/arcmods/ryantlg/gamermodClient.java @@ -1,6 +1,7 @@ package net.arcmods.ryantlg; import net.arcmods.ryantlg.blocks.CropBlocks; +import net.arcmods.ryantlg.utils.bowModelPredicateProvider; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -14,6 +15,8 @@ public class gamermodClient implements ClientModInitializer{ public void onInitializeClient() { BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getCutout(), CropBlocks.WEEM_CROP_BLOCK); + bowModelPredicateProvider.registerBowModels(); + gamermod.LOGGER.info("Client only objects loaded"); } diff --git a/src/main/java/net/arcmods/ryantlg/items/bows/strongBow.java b/src/main/java/net/arcmods/ryantlg/items/bows/strongBow.java index 2a43775..2943ee0 100644 --- a/src/main/java/net/arcmods/ryantlg/items/bows/strongBow.java +++ b/src/main/java/net/arcmods/ryantlg/items/bows/strongBow.java @@ -9,7 +9,7 @@ import net.minecraft.util.registry.Registry; public class strongBow { - public static final Item STRONG_BOW = new BowItem(new FabricItemSettings().group(gamermod.CHING).maxCount(1).fireproof().maxDamage(19)); + public static final Item STRONG_BOW = new BowItem(new FabricItemSettings().group(gamermod.CHING).maxCount(1).fireproof().maxDamage(458)); public static void register(){ Registry.register(Registry.ITEM, new Identifier("gamermod", "strong_bow"), STRONG_BOW); diff --git a/src/main/java/net/arcmods/ryantlg/utils/bowModelPredicateProvider.java b/src/main/java/net/arcmods/ryantlg/utils/bowModelPredicateProvider.java new file mode 100644 index 0000000..e254b72 --- /dev/null +++ b/src/main/java/net/arcmods/ryantlg/utils/bowModelPredicateProvider.java @@ -0,0 +1,31 @@ +package net.arcmods.ryantlg.utils; + +import net.arcmods.ryantlg.items.bows.strongBow; +import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry; +import net.minecraft.item.Item; +import net.minecraft.util.Identifier; + +public class bowModelPredicateProvider { + + public static void registerBowModels() { + registerBow(strongBow.STRONG_BOW); + } + + private static void registerBow(Item bow) { + FabricModelPredicateProviderRegistry.register(bow, new Identifier("pull"), + (stack, world, entity, seed) -> { + if (entity == null) { + return 0.0f; + } + if (entity.getActiveItem() != stack) { + return 0.0f; + } + return (float)(stack.getMaxUseTime() - entity.getItemUseTimeLeft()) / 20.0f; + }); + + FabricModelPredicateProviderRegistry.register(bow, new Identifier("pulling"), + (stack, world, entity, seed) -> entity != null && entity.isUsingItem() + && entity.getActiveItem() == stack ? 1.0f : 0.0f); + } + +}