From b5b658027de7d5aa80edbb0319b07a837e9d4ef0 Mon Sep 17 00:00:00 2001 From: Atsuishio <842960157@qq.com> Date: Sun, 4 May 2025 02:52:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=81=E8=AE=B8=E5=8F=91=E5=B0=84=E5=99=A8?= =?UTF-8?q?=E5=8F=91=E5=B0=8470mm=E7=81=AB=E7=AE=AD=E5=BC=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/projectile/HeliRocketEntity.java | 7 +++- .../superbwarfare/init/ModItems.java | 2 +- .../superbwarfare/item/Rocket70.java | 36 +++++++++++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/atsuishio/superbwarfare/item/Rocket70.java diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/HeliRocketEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/HeliRocketEntity.java index 60f29bc63..5ac124edc 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/HeliRocketEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/HeliRocketEntity.java @@ -44,6 +44,11 @@ public class HeliRocketEntity extends FastThrowableProjectile implements GeoEnti this.noCulling = true; } + public HeliRocketEntity(EntityType pEntityType, double pX, double pY, double pZ, Level pLevel) { + super(pEntityType, pX, pY, pZ, pLevel); + this.noCulling = true; + } + public HeliRocketEntity(LivingEntity entity, Level level, float damage, float explosionDamage, float explosionRadius) { super(ModEntities.HELI_ROCKET.get(), entity, level); this.damage = damage; @@ -145,7 +150,7 @@ public class HeliRocketEntity extends FastThrowableProjectile implements GeoEnti @Override protected double getDefaultGravity() { - return 0.002f; + return 0; } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModItems.java b/src/main/java/com/atsuishio/superbwarfare/init/ModItems.java index 19e8b0a35..8fbfa867d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModItems.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModItems.java @@ -116,7 +116,7 @@ public class ModItems { public static final DeferredHolder CLAYMORE_MINE = AMMO.register("claymore_mine", ClaymoreMine::new); public static final DeferredHolder C4_BOMB = AMMO.register("c4_bomb", C4Bomb::new); public static final DeferredHolder SMALL_SHELL = AMMO.register("small_shell", SmallShellItem::new); - public static final DeferredHolder ROCKET_70 = AMMO.register("rocket_70", () -> new Item(new Item.Properties())); + public static final DeferredHolder ROCKET_70 = AMMO.register("rocket_70", Rocket70::new); public static final DeferredHolder WIRE_GUIDE_MISSILE = AMMO.register("wire_guide_missile", () -> new Item(new Item.Properties())); public static final DeferredHolder SWARM_DRONE = AMMO.register("swarm_drone", () -> new Item(new Item.Properties())); public static final DeferredHolder BEAM_TEST = AMMO.register("beam_test", BeamTest::new); diff --git a/src/main/java/com/atsuishio/superbwarfare/item/Rocket70.java b/src/main/java/com/atsuishio/superbwarfare/item/Rocket70.java new file mode 100644 index 000000000..7aafa5522 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/item/Rocket70.java @@ -0,0 +1,36 @@ +package com.atsuishio.superbwarfare.item; + +import com.atsuishio.superbwarfare.entity.projectile.HeliRocketEntity; +import com.atsuishio.superbwarfare.init.ModEntities; +import net.minecraft.core.Direction; +import net.minecraft.core.Position; +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ProjectileItem; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.ParametersAreNonnullByDefault; + +public class Rocket70 extends Item implements ProjectileItem { + + public Rocket70() { + super(new Properties()); + } + + @Override + @ParametersAreNonnullByDefault + public @NotNull Projectile asProjectile(Level level, Position pos, ItemStack stack, Direction direction) { + return new HeliRocketEntity(ModEntities.HELI_ROCKET.get(), pos.x(), pos.y(), pos.z(), level); + } + + // TODO 发射音效 + @Override + public @NotNull DispenseConfig createDispenseConfig() { + return DispenseConfig.builder() + .uncertainty(1) + .power(4) + .build(); + } +} \ No newline at end of file