diff --git a/src/main/generated/assets/acesbs/models/item/infernal_ashes.json b/src/main/generated/assets/acesbs/models/item/infernal_ashes.json new file mode 100644 index 0000000..ac59bd9 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/infernal_ashes.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/infernal_ashes" + } +} \ No newline at end of file diff --git a/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java b/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java index b64416c..7ffc59a 100644 --- a/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java +++ b/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java @@ -53,6 +53,7 @@ public class ModModelProvider extends FabricModelProvider { itemModelGenerator.register(ModItems.ORACLE_LEMON, Models.GENERATED); itemModelGenerator.register(ModItems.GREEN_BRICKS, Models.GENERATED); itemModelGenerator.register(ModItems.STABLE_ENTROPY, Models.GENERATED); + itemModelGenerator.register(ModItems.INFERNAL_ASHES, Models.GENERATED); // itemModelGenerator.register(ModItems.WAND, Models.HANDHELD_ROD); itemModelGenerator.register(ModItems.PRISMA_STEEL, Models.GENERATED); itemModelGenerator.register(ModItems.PRISMA_SMITHING_TEMPLATE, Models.GENERATED); diff --git a/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java b/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java index ac42003..0d80a34 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java +++ b/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java @@ -22,8 +22,8 @@ public class ModItemGroups { entries.add(ModItems.ORACLE_LEMON); entries.add(ModItems.RAW_ENTROPY); entries.add(ModItems.STABLE_ENTROPY); + entries.add(ModItems.INFERNAL_ASHES); entries.add(ModItems.GREEN_BRICKS); - entries.add(ModItems.WAND); entries.add(ModItems.PRISMA_STEEL); entries.add(ModItems.PRISMA_SMITHING_TEMPLATE); }) @@ -69,6 +69,7 @@ public class ModItemGroups { entries.add(ModItems.PRISMA_STEEL_CHESTPLATE); entries.add(ModItems.PRISMA_STEEL_LEGGINGS); entries.add(ModItems.PRISMA_STEEL_BOOTS); + entries.add(ModItems.KAUPEN_BOW); }) @@ -80,7 +81,7 @@ public class ModItemGroups { .icon(() -> new ItemStack(ModItems.PRISMA_STEEL_PICKAXE)) .displayName(Text.translatable("itemgroup.acesbs.tools")) .entries((displayContext, entries) -> { - entries.add(ModItems.PRISMA_STEEL); + entries.add(ModItems.WAND); entries.add(ModItems.PRISMA_STEEL_SHOVEL); entries.add(ModItems.PRISMA_STEEL_PICKAXE); entries.add(ModItems.PRISMA_STEEL_HAMMER); diff --git a/src/main/java/com/acethewildfire/acesbs/item/ModItems.java b/src/main/java/com/acethewildfire/acesbs/item/ModItems.java index 538c947..79a5cc5 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/ModItems.java +++ b/src/main/java/com/acethewildfire/acesbs/item/ModItems.java @@ -29,13 +29,14 @@ public class ModItems { public static final Item WAND = registerItem("wand", new Wand(new Item.Settings().maxDamage(32))); public static final Item RAW_ENTROPY = registerItem("raw_entropy", new Item(new Item.Settings())); public static final Item STABLE_ENTROPY = registerItem("stable_entropy", new Item(new Item.Settings())); + public static final Item INFERNAL_ASHES = registerItem("infernal_ashes", new Item(new Item.Settings())); public static final Item LEMON = registerItem("lemon", new Item(new Item.Settings().food(ModFoodComponent.LEMON))); public static final Item COOKED_LEMON = registerItem("cooked_lemon", new Item(new Item.Settings().food(ModFoodComponent.COOKED_LEMON))); public static final Item GREEN_BRICKS = registerItem("green_bricks", new Item(new Item.Settings()) { @Override public void appendTooltip(ItemStack stack, TooltipContext context, List tooltip, TooltipType type) { - if(Screen.hasShiftDown()){ - tooltip.add(Text.translatable("tooltip.acesbs.green_bricks.shift_down")); + if(!Screen.hasShiftDown()){ + tooltip.add(Text.translatable("tooltip.acesbs.generic.shift_up")); } else { tooltip.add(Text.translatable("tooltip.acesbs.green_bricks")); @@ -91,6 +92,27 @@ public class ModItems { public static final Item PRISMA_SMITHING_TEMPLATE = registerItem("prisma_armor_trim_smithing_template", SmithingTemplateItem.of(Identifier.of(AcesBS.MOD_ID, "prisma"), FeatureFlags.VANILLA)); + public static final Item KAUPEN_BOW = registerItem("kaupen_bow", + new BowItem(new Item.Settings().maxDamage(500)) { + @Override + public void appendTooltip(ItemStack stack, TooltipContext context, List tooltip, TooltipType type) { + + if(!Screen.hasShiftDown()){ + tooltip.add(Text.translatable("tooltip.acesbs.generic.shift_up")); + } + else { + tooltip.add(Text.translatable("tooltip.acesbs.kaupen_bow")); + tooltip.add(Text.translatable("tooltip.acesbs.kaupen_bow_2")); + } + + + + super.appendTooltip(stack, context, tooltip, type); + } + }); + + + private static Item registerItem(String name, Item item){ return Registry.register(Registries.ITEM, Identifier.of(AcesBS.MOD_ID, name), item); } diff --git a/src/main/java/com/acethewildfire/acesbs/item/custom/Wand.java b/src/main/java/com/acethewildfire/acesbs/item/custom/Wand.java index a70932b..6ce8c78 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/custom/Wand.java +++ b/src/main/java/com/acethewildfire/acesbs/item/custom/Wand.java @@ -57,8 +57,8 @@ public class Wand extends Item { @Override public void appendTooltip(ItemStack stack, TooltipContext context, List tooltip, TooltipType type) { - if(Screen.hasShiftDown()) { - tooltip.add(Text.translatable("tooltip.acesbs.wand.shift_down")); + if(!Screen.hasShiftDown()){ + tooltip.add(Text.translatable("tooltip.acesbs.generic.shift_up")); } else { tooltip.add(Text.translatable("tooltip.acesbs.wand")); } diff --git a/src/main/java/com/acethewildfire/acesbs/mixin/AbstractClientPlayerEntityMixin.java b/src/main/java/com/acethewildfire/acesbs/mixin/AbstractClientPlayerEntityMixin.java new file mode 100644 index 0000000..53955d3 --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/mixin/AbstractClientPlayerEntityMixin.java @@ -0,0 +1,39 @@ +package com.acethewildfire.acesbs.mixin; + +import com.acethewildfire.acesbs.item.ModItems; +import com.mojang.authlib.GameProfile; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.network.AbstractClientPlayerEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; + +// With help from https://github.com/Globox1997/MedievalWeapons/blob/1.21/src/main/java/net/medievalweapons/mixin/client/AbstractClientPlayerEntityMixin.java +// Under MIT License! +@Mixin(AbstractClientPlayerEntity.class) +public abstract class AbstractClientPlayerEntityMixin extends PlayerEntity { + public AbstractClientPlayerEntityMixin(World world, BlockPos pos, float yaw, GameProfile gameProfile) { + super(world, pos, yaw, gameProfile); + } + + @Inject(method = "getFovMultiplier", at = @At(value = "TAIL"), locals = LocalCapture.CAPTURE_FAILSOFT, cancellable = true) + private void getFovMultiplierMixin(CallbackInfoReturnable info, float f) { + Item item = this.getActiveItem().getItem(); + ItemStack itemStack = this.getActiveItem(); + if (this.isUsingItem() && itemStack.isOf(ModItems.KAUPEN_BOW)) { + int i = this.getItemUseTime(); + float g = (float)i / 20.0f; + g = g > 1.0f ? 1.0f : g * g; + f *= 1.0f - g * 0.15f; + info.setReturnValue(MathHelper.lerp(MinecraftClient.getInstance().options.getFovEffectScale().getValue().floatValue(), 1.0f, f)); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/acethewildfire/acesbs/util/ModModelPredicates.java b/src/main/java/com/acethewildfire/acesbs/util/ModModelPredicates.java index 804b5c6..f54d5c6 100644 --- a/src/main/java/com/acethewildfire/acesbs/util/ModModelPredicates.java +++ b/src/main/java/com/acethewildfire/acesbs/util/ModModelPredicates.java @@ -4,6 +4,8 @@ import com.acethewildfire.acesbs.AcesBS; import com.acethewildfire.acesbs.component.ModDataComponentTypes; import com.acethewildfire.acesbs.item.ModItems; import net.minecraft.client.item.ModelPredicateProviderRegistry; +import net.minecraft.item.Item; +import net.minecraft.item.Items; import net.minecraft.util.Identifier; public class ModModelPredicates { @@ -12,6 +14,21 @@ public class ModModelPredicates { ModelPredicateProviderRegistry.register(ModItems.WAND, Identifier.of(AcesBS.MOD_ID, "used"), (stack, world, entity, seed) -> stack.get(ModDataComponentTypes.COORDINATES) != null ? 1f : 0f); + registerCustomBow(ModItems.KAUPEN_BOW); + } + private static void registerCustomBow(Item item){ + ModelPredicateProviderRegistry.register(item, Identifier.ofVanilla("pull"), (stack, world, entity, seed) -> { + if (entity == null) { + return 0.0F; + } else { + return entity.getActiveItem() != stack ? 0.0F : (stack.getMaxUseTime(entity) - entity.getItemUseTimeLeft()) / 20.0F; + } + }); + ModelPredicateProviderRegistry.register( + item, + Identifier.ofVanilla("pulling"), + (stack, world, entity, seed) -> entity != null && entity.isUsingItem() && entity.getActiveItem() == stack ? 1.0F : 0.0F + ); } } diff --git a/src/main/resources/acesbs.mixins.json b/src/main/resources/acesbs.mixins.json index 25d66bc..728356e 100644 --- a/src/main/resources/acesbs.mixins.json +++ b/src/main/resources/acesbs.mixins.json @@ -1,11 +1,14 @@ { - "required": true, - "package": "com.acethewildfire.acesbs.mixin", - "compatibilityLevel": "JAVA_21", - "mixins": [ - "ExampleMixin" - ], - "injectors": { - "defaultRequire": 1 - } + "required": true, + "package": "com.acethewildfire.acesbs.mixin", + "compatibilityLevel": "JAVA_21", + "mixins": [ + "ExampleMixin" + ], + "injectors": { + "defaultRequire": 1 + }, + "client": [ + "AbstractClientPlayerEntityMixin" + ] } \ No newline at end of file diff --git a/src/main/resources/assets/acesbs/lang/en_us.json b/src/main/resources/assets/acesbs/lang/en_us.json index fc6c4ba..0017205 100644 --- a/src/main/resources/assets/acesbs/lang/en_us.json +++ b/src/main/resources/assets/acesbs/lang/en_us.json @@ -2,6 +2,7 @@ "item.acesbs.oracle_lemon.effect.blindness": "Oracle of Lemon", "item.acesbs.raw_entropy": "Raw Entropy", "item.acesbs.stable_entropy": "Stabilized Entropy", + "item.acesbs.infernal_ashes": "Infernal Ashes", "item.acesbs.lemon": "Odd Lemon", "item.acesbs.cooked_lemon": "Cooked Odd Lemon", "item.acesbs.green_bricks": "Green Bricks", @@ -26,6 +27,11 @@ "item.acesbs.prisma_steel_boots": "Prisma Steel Boots", "item.acesbs.prisma_armor_trim_smithing_template": "Prisma Smithing Template", + "item.acesbs.kaupen_bow": "Kaupen Bow", + + "trim_material.acesbs.prisma_steel": "Prisma Steel Material", + "trim_pattern.acesbs.prisma": "Prisma Armor Pattern", + "block.acesbs.entropy_block": "Block of Raw Entropy", "block.acesbs.prisma_steel_block": "Block of Prisma Steel", "block.acesbs.entropy_ore": "Entropic Ore", @@ -51,14 +57,14 @@ "itemgroup.acesbs.combat": "Ace's BS Combat", "itemgroup.acesbs.tools": "Ace's BS Tools", + "tooltip.acesbs.generic.shift_up": "Hold §eShift§r for item description.", + "tooltip.acesbs.entropy_block.tooltip": "Exerts an §o§4uncertain force§r when stepped on.", "tooltip.acesbs.stable_entropy_block.tooltip": "Exerts an §o§2upward force§r of 4.5 blocks when stepped on.", - "tooltip.acesbs.green_bricks.shift_down": "§o§7Useless Item§r", - "tooltip.acesbs.green_bricks": "Hold §eShift§r for item description.", + "tooltip.acesbs.green_bricks": "§o§7Useless Item§r", "tooltip.acesbs.entropy_block.tooltip2": "Has a 1/20 chance of turning an apple into a lemon.", - "tooltip.acesbs.wand.shift_down": "Changes blocks using Entropy", - "tooltip.acesbs.wand": "Hold §eShift§r for item description.", + "tooltip.acesbs.wand": "Changes blocks using Entropy", - "trim_material.acesbs.prisma_steel": "Prisma Steel Material", - "trim_pattern.acesbs.prisma": "Prisma Armor Pattern" + "tooltip.acesbs.kaupen_bow": "§7§oThanks to §1Modding by Kaupenjoe§r", + "tooltip.acesbs.kaupen_bow_2": "§7§oYou made minecraft modding easy.§r" } \ No newline at end of file diff --git a/src/main/resources/assets/acesbs/models/item/kaupen_bow.json b/src/main/resources/assets/acesbs/models/item/kaupen_bow.json new file mode 100644 index 0000000..b6c18d9 --- /dev/null +++ b/src/main/resources/assets/acesbs/models/item/kaupen_bow.json @@ -0,0 +1,50 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "acesbs:item/kaupen_bow" + }, + "display": { + "thirdperson_righthand": { + "rotation": [ -80, 260, -40 ], + "translation": [ -1, -2, 2.5 ], + "scale": [ 0.9, 0.9, 0.9 ] + }, + "thirdperson_lefthand": { + "rotation": [ -80, -280, 40 ], + "translation": [ -1, -2, 2.5 ], + "scale": [ 0.9, 0.9, 0.9 ] + }, + "firstperson_righthand": { + "rotation": [ 0, -90, 25 ], + "translation": [ 1.13, 3.2, 1.13], + "scale": [ 0.68, 0.68, 0.68 ] + }, + "firstperson_lefthand": { + "rotation": [ 0, 90, -25 ], + "translation": [ 1.13, 3.2, 1.13], + "scale": [ 0.68, 0.68, 0.68 ] + } + }, + "overrides": [ + { + "predicate": { + "pulling": 1 + }, + "model": "acesbs:item/kaupen_bow_pulling_0" + }, + { + "predicate": { + "pulling": 1, + "pull": 0.65 + }, + "model": "acesbs:item/kaupen_bow_pulling_1" + }, + { + "predicate": { + "pulling": 1, + "pull": 0.9 + }, + "model": "acesbs:item/kaupen_bow_pulling_2" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/acesbs/models/item/kaupen_bow_pulling_0.json b/src/main/resources/assets/acesbs/models/item/kaupen_bow_pulling_0.json new file mode 100644 index 0000000..5d5802d --- /dev/null +++ b/src/main/resources/assets/acesbs/models/item/kaupen_bow_pulling_0.json @@ -0,0 +1,6 @@ +{ + "parent": "acesbs:item/kaupen_bow", + "textures": { + "layer0": "acesbs:item/kaupen_bow_pulling_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/acesbs/models/item/kaupen_bow_pulling_1.json b/src/main/resources/assets/acesbs/models/item/kaupen_bow_pulling_1.json new file mode 100644 index 0000000..dd5e6cc --- /dev/null +++ b/src/main/resources/assets/acesbs/models/item/kaupen_bow_pulling_1.json @@ -0,0 +1,6 @@ +{ + "parent": "acesbs:item/kaupen_bow", + "textures": { + "layer0": "acesbs:item/kaupen_bow_pulling_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/acesbs/models/item/kaupen_bow_pulling_2.json b/src/main/resources/assets/acesbs/models/item/kaupen_bow_pulling_2.json new file mode 100644 index 0000000..93c1613 --- /dev/null +++ b/src/main/resources/assets/acesbs/models/item/kaupen_bow_pulling_2.json @@ -0,0 +1,6 @@ +{ + "parent": "acesbs:item/kaupen_bow", + "textures": { + "layer0": "acesbs:item/kaupen_bow_pulling_2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/acesbs/textures/item/infernal_ashes.png b/src/main/resources/assets/acesbs/textures/item/infernal_ashes.png new file mode 100644 index 0000000..721b66d Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/item/infernal_ashes.png differ diff --git a/src/main/resources/assets/acesbs/textures/item/kaupen_bow.png b/src/main/resources/assets/acesbs/textures/item/kaupen_bow.png new file mode 100644 index 0000000..db936da Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/item/kaupen_bow.png differ diff --git a/src/main/resources/assets/acesbs/textures/item/kaupen_bow_pulling_0.png b/src/main/resources/assets/acesbs/textures/item/kaupen_bow_pulling_0.png new file mode 100644 index 0000000..643b641 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/item/kaupen_bow_pulling_0.png differ diff --git a/src/main/resources/assets/acesbs/textures/item/kaupen_bow_pulling_1.png b/src/main/resources/assets/acesbs/textures/item/kaupen_bow_pulling_1.png new file mode 100644 index 0000000..fa384ef Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/item/kaupen_bow_pulling_1.png differ diff --git a/src/main/resources/assets/acesbs/textures/item/kaupen_bow_pulling_2.png b/src/main/resources/assets/acesbs/textures/item/kaupen_bow_pulling_2.png new file mode 100644 index 0000000..25c670c Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/item/kaupen_bow_pulling_2.png differ