From ed6e3df66e8cf7ae889447452650327748f2f840 Mon Sep 17 00:00:00 2001 From: WinDanesz <31292708+WinDanesz@users.noreply.github.com> Date: Fri, 8 Jul 2022 20:32:22 +0200 Subject: [PATCH] feat: The Arrow Rain spell summons conjured arrows --- .../wizardry/client/ClientProxy.java | 1 + .../renderer/entity/RenderConjuredArrow.java | 25 +++++++++++++ .../entity/construct/EntityArrowRain.java | 7 ++-- .../projectile/EntityConjuredArrow.java | 34 ++++++++++++++++++ .../wizardry/registry/WizardryEntities.java | 1 + .../assets/ebwizardry/lang/en_us.lang | 1 + .../textures/entity/conjured_arrow.png | Bin 0 -> 3017 bytes .../ebwizardry/textures/spells/arrow_rain.png | Bin 6382 -> 5187 bytes 8 files changed, 64 insertions(+), 5 deletions(-) create mode 100644 src/main/java/electroblob/wizardry/client/renderer/entity/RenderConjuredArrow.java create mode 100644 src/main/java/electroblob/wizardry/entity/projectile/EntityConjuredArrow.java create mode 100644 src/main/resources/assets/ebwizardry/textures/entity/conjured_arrow.png diff --git a/src/main/java/electroblob/wizardry/client/ClientProxy.java b/src/main/java/electroblob/wizardry/client/ClientProxy.java index 9b7b7e18..0ce0099f 100644 --- a/src/main/java/electroblob/wizardry/client/ClientProxy.java +++ b/src/main/java/electroblob/wizardry/client/ClientProxy.java @@ -785,6 +785,7 @@ public class ClientProxy extends CommonProxy { new ResourceLocation(Wizardry.MODID, "textures/entity/ice_lance.png"), false, 16.0, 3.0, 22, 5, false)); RenderingRegistry.registerEntityRenderingHandler(EntityFlamecatcherArrow.class, manager -> new RenderMagicArrow(manager, new ResourceLocation(Wizardry.MODID, "textures/entity/flamecatcher_arrow.png"), false, 8, 2.0, 16, 5, true)); + RenderingRegistry.registerEntityRenderingHandler(EntityConjuredArrow.class, RenderConjuredArrow::new); RenderingRegistry.registerEntityRenderingHandler(EntityForceArrow.class, RenderForceArrow::new); diff --git a/src/main/java/electroblob/wizardry/client/renderer/entity/RenderConjuredArrow.java b/src/main/java/electroblob/wizardry/client/renderer/entity/RenderConjuredArrow.java new file mode 100644 index 00000000..d69d3625 --- /dev/null +++ b/src/main/java/electroblob/wizardry/client/renderer/entity/RenderConjuredArrow.java @@ -0,0 +1,25 @@ +package electroblob.wizardry.client.renderer.entity; + +import electroblob.wizardry.Wizardry; +import electroblob.wizardry.entity.projectile.EntityConjuredArrow; +import net.minecraft.client.renderer.entity.RenderArrow; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) +public class RenderConjuredArrow extends RenderArrow { + + public static final ResourceLocation CONJURED_ARROW_TEXTURE = new ResourceLocation(Wizardry.MODID, "textures/entity/conjured_arrow.png"); + + public RenderConjuredArrow(RenderManager manager) { + super(manager); + + } + + @Override + protected ResourceLocation getEntityTexture(EntityConjuredArrow entity) { + return CONJURED_ARROW_TEXTURE; + } +} diff --git a/src/main/java/electroblob/wizardry/entity/construct/EntityArrowRain.java b/src/main/java/electroblob/wizardry/entity/construct/EntityArrowRain.java index 98033d36..01343cf5 100644 --- a/src/main/java/electroblob/wizardry/entity/construct/EntityArrowRain.java +++ b/src/main/java/electroblob/wizardry/entity/construct/EntityArrowRain.java @@ -1,10 +1,8 @@ package electroblob.wizardry.entity.construct; +import electroblob.wizardry.entity.projectile.EntityConjuredArrow; import electroblob.wizardry.registry.Spells; import electroblob.wizardry.spell.Spell; -import net.minecraft.entity.projectile.EntityTippedArrow; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; @@ -30,7 +28,7 @@ public class EntityArrowRain extends EntityScaledConstruct { double y = posY + world.rand.nextDouble() * (double)height; double z = posZ + (world.rand.nextDouble() - 0.5D) * (double)width; - EntityTippedArrow arrow = new EntityTippedArrow(world, x, y, z); + EntityConjuredArrow arrow = new EntityConjuredArrow(world, x, y, z); arrow.motionX = MathHelper.cos((float)Math.toRadians(this.rotationYaw + 90)); arrow.motionY = -0.6; @@ -38,7 +36,6 @@ public class EntityArrowRain extends EntityScaledConstruct { arrow.shootingEntity = this.getCaster(); arrow.setDamage(7.0d * damageMultiplier); - arrow.setPotionEffect(new ItemStack(Items.ARROW)); this.world.spawnEntity(arrow); } diff --git a/src/main/java/electroblob/wizardry/entity/projectile/EntityConjuredArrow.java b/src/main/java/electroblob/wizardry/entity/projectile/EntityConjuredArrow.java new file mode 100644 index 00000000..e26e6de6 --- /dev/null +++ b/src/main/java/electroblob/wizardry/entity/projectile/EntityConjuredArrow.java @@ -0,0 +1,34 @@ +package electroblob.wizardry.entity.projectile; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class EntityConjuredArrow extends EntityArrow { + + public EntityConjuredArrow(World worldIn) { + super(worldIn); + } + + public EntityConjuredArrow(World worldIn, double x, double y, double z) { + super(worldIn, x, y, z); + } + + public EntityConjuredArrow(World worldIn, EntityLivingBase shooter) { + super(worldIn, shooter); + } + + @Override + public void onUpdate() { + super.onUpdate(); + if (this.timeInGround > 400) { + this.setDead(); + } + } + + @Override + protected ItemStack getArrowStack() { + return ItemStack.EMPTY; + } +} diff --git a/src/main/java/electroblob/wizardry/registry/WizardryEntities.java b/src/main/java/electroblob/wizardry/registry/WizardryEntities.java index d5568de0..25e7d9e6 100644 --- a/src/main/java/electroblob/wizardry/registry/WizardryEntities.java +++ b/src/main/java/electroblob/wizardry/registry/WizardryEntities.java @@ -113,6 +113,7 @@ public class WizardryEntities { registry.register(createEntry(EntityDart.class, "dart", TrackingType.PROJECTILE).build()); registry.register(createEntry(EntityIceLance.class, "ice_lance", TrackingType.PROJECTILE).build()); registry.register(createEntry(EntityFlamecatcherArrow.class, "flamecatcher_arrow", TrackingType.PROJECTILE).build()); + registry.register(createEntry(EntityConjuredArrow.class, "conjured_arrow", TrackingType.PROJECTILE).build()); // Directionless projectiles registry.register(createEntry(EntityFirebomb.class, "firebomb", TrackingType.PROJECTILE).build()); diff --git a/src/main/resources/assets/ebwizardry/lang/en_us.lang b/src/main/resources/assets/ebwizardry/lang/en_us.lang index 01413326..6e8c8eeb 100644 --- a/src/main/resources/assets/ebwizardry/lang/en_us.lang +++ b/src/main/resources/assets/ebwizardry/lang/en_us.lang @@ -759,6 +759,7 @@ entity.ebwizardry\:smoke_bomb.name=Magic entity.ebwizardry\:ice_spike.name=Magic entity.ebwizardry\:combustion_rune.name=Magic entity.ebwizardry\:flamecatcher_arrow.name=Magic +entity.ebwizardry\:conjured_arrow.name=Magic entity.ebwizardry\:black_hole.name=Black Hole entity.ebwizardry\:shield.name=Shield diff --git a/src/main/resources/assets/ebwizardry/textures/entity/conjured_arrow.png b/src/main/resources/assets/ebwizardry/textures/entity/conjured_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..27c3d78461e7bd3769579cf30255da24066a3d7b GIT binary patch literal 3017 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}oCO|{#S9GG!XV7ZFl&wk z0|S?Trn7TEKt_H^esM;Afr6*AvqC{pep+TuDg#5st+~PJA;B-jY`@?8;^f`YFvUAR zNR&e%$f>(QWTKjuBBy{?hvLGUqJakmU0qqEPb}zQ?(1vl5e?Mg>EgP<{zP$6U-ROQ zu2a7sRxi%Jw&(k^v;VeUw|lQz`~GlIyvbvLx3(rf_nY4%M1;3f6T0AWQd-kD9X5C zB7=f(YKIF$hBd>Q^I=`C3=swlB5B@7EE#U-G8lMT#JFBV&*2Bohp{DjnN#sh3w(sdU6`)JjJy| z%o3RrXF2E{s+=il)M�PV*|l=S%D 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 Bn`Hn1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ebwizardry/textures/spells/arrow_rain.png b/src/main/resources/assets/ebwizardry/textures/spells/arrow_rain.png index 9d1a08088b1b2a0961cffee7aa9e45f16f3bd775..d139d3a4402e7b8b4003f258b839ba1c1881c02c 100644 GIT binary patch literal 5187 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}oCO|{#S9GG!XV7ZFl&wk z0|S?Trn7TEKt_H^esM;Afr6*AvqC{pep+TuDg#5st+~PJA;B-jY`@?8;^f`YFvUAR zNR&e%$f>(QWTKjuBBy{?hvLGUqJakmU0qqEPb}zQ?(1vl5e?Mg>EgP<{zP$6U-ROQ zu2a7sRxi%Jw&(k^v;VeUw|lQz`~GlIyvbvLx3(rf_nY4%M1;3f6T0AWQd-kD9X5C zB7=f(YKIF$hBd>Q^I=`C3=swlB5B@7EE#U-G8lMT#JFBV&*2Bohp{DjnN#sh3w(sdU6`)JjJy| z%o3RrXF2E{s+=il)M�PV*|l=S%D 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 M>FVdQ&MBb@0Q9sSE&u=k