From fc02cfb0ab2f0e5df8bf2aa058cb447f1ec69f67 Mon Sep 17 00:00:00 2001 From: Noaaan Date: Sat, 15 Jun 2024 19:47:38 +0200 Subject: [PATCH] Reimplement dispenser behaviors Signed-off-by: Noaaan --- .../java/nourl/mythicmetals/MythicMetals.java | 26 ------------------- .../mythicmetals/item/RuniteArrowItem.java | 8 ++++++ .../item/TippedRuniteArrowItem.java | 3 +-- ...mMixin.java => RangedWeaponItemMixin.java} | 4 +-- src/main/resources/mythicmetals.mixins.json | 2 +- 5 files changed, 12 insertions(+), 31 deletions(-) rename src/main/java/nourl/mythicmetals/mixin/{BowItemMixin.java => RangedWeaponItemMixin.java} (92%) diff --git a/src/main/java/nourl/mythicmetals/MythicMetals.java b/src/main/java/nourl/mythicmetals/MythicMetals.java index 0e171746..b4d73fe4 100644 --- a/src/main/java/nourl/mythicmetals/MythicMetals.java +++ b/src/main/java/nourl/mythicmetals/MythicMetals.java @@ -147,36 +147,10 @@ public static void registerPrometheumAttributeEvent() { }); } - // TODO - Now determined by projectile items themselves. Override ProjectileItem#getProjectileSettings() and use builder private void registerDispenserBehaviour() { DispenserBlock.registerBehavior(() -> MythicTools.STAR_PLATINUM_ARROW, new ProjectileDispenserBehavior(MythicTools.STAR_PLATINUM_ARROW)); -// @Override -// protected ProjectileEntity createProjectile(World world, Position position, ItemStack stack) { -// var arrow = new StarPlatinumArrowEntity(MythicEntities.STAR_PLATINUM_ARROW_ENTITY_TYPE, world); -// arrow.setPos(position.getX(), position.getY(), position.getZ()); -// arrow.pickupType = PersistentProjectileEntity.PickupPermission.ALLOWED; -// return arrow; -// } -// }); - DispenserBlock.registerBehavior(() -> MythicTools.RUNITE_ARROW, new ProjectileDispenserBehavior(MythicTools.RUNITE_ARROW)); -// @Override -// private ProjectileEntity createProjectile(World world, Position position, ItemStack stack) { -// var arrow = new RuniteArrowEntity(MythicEntities.RUNITE_ARROW_ENTITY_TYPE, world); -// arrow.setPos(position.getX(), position.getY(), position.getZ()); -// arrow.pickupType = PersistentProjectileEntity.PickupPermission.ALLOWED; -// return arrow; -// } - DispenserBlock.registerBehavior(() -> MythicTools.TIPPED_RUNITE_ARROW, new ProjectileDispenserBehavior(MythicTools.TIPPED_RUNITE_ARROW)); -// @Override -// protected ProjectileEntity createProjectile(World world, Position position, ItemStack stack) { -// var arrow = new RuniteArrowEntity(MythicEntities.RUNITE_ARROW_ENTITY_TYPE, world); -// arrow.setPos(position.getX(), position.getY(), position.getZ()); -// arrow.initFromStack(stack); -// arrow.pickupType = PersistentProjectileEntity.PickupPermission.ALLOWED; -// return arrow; -// } } diff --git a/src/main/java/nourl/mythicmetals/item/RuniteArrowItem.java b/src/main/java/nourl/mythicmetals/item/RuniteArrowItem.java index 15c25fd8..a3a3ee7e 100644 --- a/src/main/java/nourl/mythicmetals/item/RuniteArrowItem.java +++ b/src/main/java/nourl/mythicmetals/item/RuniteArrowItem.java @@ -25,4 +25,12 @@ public ProjectileEntity createEntity(World world, Position pos, ItemStack stack, entity.pickupType = PersistentProjectileEntity.PickupPermission.ALLOWED; return entity; } + + @Override + public ProjectileItem.Settings getProjectileSettings() { + return new ProjectileItem.Settings.Builder() + .power(1.4f) + .uncertainty(5.0f) + .build(); + } } diff --git a/src/main/java/nourl/mythicmetals/item/TippedRuniteArrowItem.java b/src/main/java/nourl/mythicmetals/item/TippedRuniteArrowItem.java index 204ef02b..1684db07 100644 --- a/src/main/java/nourl/mythicmetals/item/TippedRuniteArrowItem.java +++ b/src/main/java/nourl/mythicmetals/item/TippedRuniteArrowItem.java @@ -3,8 +3,7 @@ import net.minecraft.client.item.TooltipType; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.PotionContentsComponent; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; +import net.minecraft.item.*; import net.minecraft.potion.Potion; import net.minecraft.potion.Potions; import net.minecraft.text.Text; diff --git a/src/main/java/nourl/mythicmetals/mixin/BowItemMixin.java b/src/main/java/nourl/mythicmetals/mixin/RangedWeaponItemMixin.java similarity index 92% rename from src/main/java/nourl/mythicmetals/mixin/BowItemMixin.java rename to src/main/java/nourl/mythicmetals/mixin/RangedWeaponItemMixin.java index d9757dc5..fa7df818 100644 --- a/src/main/java/nourl/mythicmetals/mixin/BowItemMixin.java +++ b/src/main/java/nourl/mythicmetals/mixin/RangedWeaponItemMixin.java @@ -14,9 +14,9 @@ import java.util.List; @Mixin(RangedWeaponItem.class) -public abstract class BowItemMixin { +public abstract class RangedWeaponItemMixin { - // Increases the velocity of Runite Arrows + // Increases the velocity of Runite Arrows when shot from Ranged Weapons // Also decreases divergence, leading to better accuracy @ModifyArgs(method = "shootAll", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/RangedWeaponItem;shoot(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/entity/projectile/ProjectileEntity;IFFFLnet/minecraft/entity/LivingEntity;)V")) private void mythicmetals$modifyArrowsForRunite(Args args, World world, LivingEntity shooter, Hand hand, ItemStack stack, List projectiles, float speed, float divergence, boolean critical, @Nullable LivingEntity target) { diff --git a/src/main/resources/mythicmetals.mixins.json b/src/main/resources/mythicmetals.mixins.json index bf2f25d8..a109b0e0 100644 --- a/src/main/resources/mythicmetals.mixins.json +++ b/src/main/resources/mythicmetals.mixins.json @@ -11,7 +11,7 @@ "ApplyBonusLootFunctionMixin", "AreaEffectCloudEntityMixin", "ArmorItemMixin", - "BowItemMixin", + "RangedWeaponItemMixin", "CampfireBlockMixin", "ConduitBlockEntityMixin", "CreeperEntityMixin",