添加perk贴图,添加野兽弹音效

This commit is contained in:
Atsuihsio 2024-08-09 14:55:56 +08:00
parent be6aa7b50c
commit 0a0f6938c9
13 changed files with 54 additions and 11 deletions

View file

@ -361,6 +361,7 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa
if (beast && entity instanceof LivingEntity living) {
if (living.isDeadOrDying()) return;
if (living instanceof SenpaiEntity || living instanceof Target1Entity) return;
if (this.shooter instanceof ServerPlayer player) {
ModUtils.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> player), new ClientIndicatorMessage(0, 5));

View file

@ -300,6 +300,14 @@ public class GunEventHandler {
}
}
var perk = PerkHelper.getPerkByType(stack, Perk.Type.AMMO);
if (perk == ModPerks.BEAST_BULLET.get()) {
if (player instanceof ServerPlayer serverPlayer) {
SoundTool.playLocalSound(serverPlayer, ModSounds.HENG.get(), 5, 1);
}
}
SoundEvent sound1p = ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation(ModUtils.MODID, name + "_fire_1p"));
if (sound1p != null && player instanceof ServerPlayer serverPlayer) {
SoundTool.playLocalSound(serverPlayer, sound1p, 2f, 1f);

View file

@ -23,12 +23,12 @@ public class ModPerks {
public static final DeferredRegister<Perk> PERKS = DeferredRegister.create(new ResourceLocation(ModUtils.MODID, "perk"), ModUtils.MODID);
public static final RegistryObject<AmmoPerk> SILVER_BULLET = PERKS.register("silver_bullet",
() -> new AmmoPerk(new AmmoPerk.Builder("silver_bullet", Perk.Type.AMMO).bypassArmorRate(0.1f).rgb(87, 166, 219)));
public static final RegistryObject<AmmoPerk> BEAST_BULLET = PERKS.register("beast_bullet",
() -> new AmmoPerk(new AmmoPerk.Builder("beast_bullet", Perk.Type.AMMO).bypassArmorRate(0.0f).rgb(134, 65, 14)));
() -> new AmmoPerk(new AmmoPerk.Builder("silver_bullet", Perk.Type.AMMO).bypassArmorRate(0.05f).rgb(87, 166, 219)));
public static final RegistryObject<AmmoPerk> POISONOUS_BULLET = PERKS.register("poisonous_bullet",
() -> new AmmoPerk(new AmmoPerk.Builder("poisonous_bullet", Perk.Type.AMMO).bypassArmorRate(0.0f).rgb(48, 131, 6)
.mobEffect(() -> MobEffects.POISON)));
public static final RegistryObject<AmmoPerk> BEAST_BULLET = PERKS.register("beast_bullet",
() -> new AmmoPerk(new AmmoPerk.Builder("beast_bullet", Perk.Type.AMMO).bypassArmorRate(0.0f).rgb(134, 65, 14)));
public static final RegistryObject<Perk> HEAL_CLIP = PERKS.register("heal_clip", () -> new Perk("heal_clip", Perk.Type.FUNCTIONAL));
public static final RegistryObject<Perk> FOURTH_TIMES_CHARM = PERKS.register("fourth_times_charm", () -> new Perk("fourth_times_charm", Perk.Type.FUNCTIONAL));

View file

@ -40,6 +40,7 @@ public class ModSounds {
public static final RegistryObject<SoundEvent> STEP = REGISTRY.register("step", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "step")));
public static final RegistryObject<SoundEvent> GROWL = REGISTRY.register("growl", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "growl")));
public static final RegistryObject<SoundEvent> IDLE = REGISTRY.register("idle", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "idle")));
public static final RegistryObject<SoundEvent> HENG = REGISTRY.register("heng", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "heng")));
public static final RegistryObject<SoundEvent> M_79_FIRE_1P = REGISTRY.register("m_79_fire_1p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "m_79_fire_1p")));
public static final RegistryObject<SoundEvent> M_79_FIRE_3P = REGISTRY.register("m_79_fire_3p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "m_79_fire_3p")));
public static final RegistryObject<SoundEvent> M_79_FAR = REGISTRY.register("m_79_far", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "m_79_far")));

View file

@ -2,11 +2,11 @@ package net.mcreator.superbwarfare.network.message;
import net.mcreator.superbwarfare.entity.*;
import net.mcreator.superbwarfare.event.GunEventHandler;
import net.mcreator.superbwarfare.init.ModEnchantments;
import net.mcreator.superbwarfare.init.ModItems;
import net.mcreator.superbwarfare.init.ModSounds;
import net.mcreator.superbwarfare.init.ModTags;
import net.mcreator.superbwarfare.init.*;
import net.mcreator.superbwarfare.network.ModVariables;
import net.mcreator.superbwarfare.perk.AmmoPerk;
import net.mcreator.superbwarfare.perk.Perk;
import net.mcreator.superbwarfare.perk.PerkHelper;
import net.mcreator.superbwarfare.tools.ItemNBTTool;
import net.mcreator.superbwarfare.tools.ParticleTool;
import net.mcreator.superbwarfare.tools.SoundTool;
@ -16,6 +16,8 @@ import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundSource;
import net.minecraft.util.Mth;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.entity.projectile.AbstractArrow;
import net.minecraft.world.item.ItemStack;
@ -215,14 +217,31 @@ public class FireMessage {
boolean zoom = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).zoom;
float bypassArmorRate = (float) heldItem.getOrCreateTag().getDouble("BypassesArmor");
var projectile = new ProjectileEntity(player.level())
ProjectileEntity projectile = new ProjectileEntity(player.level())
.shooter(player)
.headShot(headshot)
.monsterMultiple(monsterMultiple)
.zoom(zoom)
.bypassArmorRate(bypassArmorRate);
.monsterMultiple(monsterMultiple);
if (tag.getBoolean("beast")) {
var perk = PerkHelper.getPerkByType(heldItem, Perk.Type.AMMO);
if (perk instanceof AmmoPerk ammoPerk) {
bypassArmorRate += ammoPerk.bypassArmorRate;
projectile.setRGB(ammoPerk.rgb);
if (ammoPerk.mobEffect.get() != null) {
int level = PerkHelper.getItemPerkLevel(perk, heldItem);
projectile.effect(() -> new MobEffectInstance(ammoPerk.mobEffect.get(), 100, level - 1));
}
}
bypassArmorRate = Mth.clamp(bypassArmorRate, 0, 1);
projectile.bypassArmorRate(bypassArmorRate);
if (perk == ModPerks.SILVER_BULLET.get()) {
int level = PerkHelper.getItemPerkLevel(perk, heldItem);
projectile.undeadMultiple(1.0f + 0.5f * level);
} else if (perk == ModPerks.BEAST_BULLET.get()) {
projectile.beast();
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "superbwarfare:item/perk/poisonous_bullet"
}
}

View file

@ -1793,5 +1793,13 @@
"stream": false
}
]
},
"heng": {
"sounds": [
{
"name": "superbwarfare:heng",
"stream": false
}
]
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 751 B

After

Width:  |  Height:  |  Size: 773 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 680 B

After

Width:  |  Height:  |  Size: 696 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 671 B

After

Width:  |  Height:  |  Size: 691 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 662 B

After

Width:  |  Height:  |  Size: 663 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 817 B

After

Width:  |  Height:  |  Size: 891 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB