添加perk贴图,添加野兽弹音效
|
@ -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));
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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")));
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "superbwarfare:item/perk/poisonous_bullet"
|
||||
}
|
||||
}
|
|
@ -1793,5 +1793,13 @@
|
|||
"stream": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"heng": {
|
||||
"sounds": [
|
||||
{
|
||||
"name": "superbwarfare:heng",
|
||||
"stream": false
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 751 B After Width: | Height: | Size: 773 B |
Before Width: | Height: | Size: 680 B After Width: | Height: | Size: 696 B |
Before Width: | Height: | Size: 671 B After Width: | Height: | Size: 691 B |
Before Width: | Height: | Size: 662 B After Width: | Height: | Size: 663 B |
Before Width: | Height: | Size: 817 B After Width: | Height: | Size: 891 B |
After Width: | Height: | Size: 1 KiB |