添加BEAST击杀提示

This commit is contained in:
Light_Quanta 2024-05-21 16:43:39 +08:00
parent e02d4bee52
commit 3a881a2f5f
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
4 changed files with 30 additions and 11 deletions

View file

@ -29,6 +29,7 @@ public class KillMessageOverlay {
private static final ResourceLocation EXPLOSION = new ResourceLocation(TargetMod.MODID, "textures/screens/damage_types/explosion.png"); private static final ResourceLocation EXPLOSION = new ResourceLocation(TargetMod.MODID, "textures/screens/damage_types/explosion.png");
private static final ResourceLocation CLAYMORE = new ResourceLocation(TargetMod.MODID, "textures/screens/damage_types/claymore.png"); private static final ResourceLocation CLAYMORE = new ResourceLocation(TargetMod.MODID, "textures/screens/damage_types/claymore.png");
private static final ResourceLocation GENERIC = new ResourceLocation(TargetMod.MODID, "textures/screens/damage_types/generic.png"); private static final ResourceLocation GENERIC = new ResourceLocation(TargetMod.MODID, "textures/screens/damage_types/generic.png");
private static final ResourceLocation BEAST = new ResourceLocation(TargetMod.MODID, "textures/screens/damage_types/beast.png");
private static final ResourceLocation WORLD_PEACE_STAFF = new ResourceLocation(TargetMod.MODID, "textures/gun_icon/compat/world_peace_staff.png"); private static final ResourceLocation WORLD_PEACE_STAFF = new ResourceLocation(TargetMod.MODID, "textures/gun_icon/compat/world_peace_staff.png");
@ -187,9 +188,12 @@ public class KillMessageOverlay {
icon = EXPLOSION; icon = EXPLOSION;
} else if (record.damageType == DamageTypes.PLAYER_ATTACK) { } else if (record.damageType == DamageTypes.PLAYER_ATTACK) {
icon = KNIFE; icon = KNIFE;
} else if (record.damageType == TargetModDamageTypes.BEAST) {
icon = BEAST;
} else if (record.damageType == TargetModDamageTypes.MINE) { } else if (record.damageType == TargetModDamageTypes.MINE) {
icon = CLAYMORE; icon = CLAYMORE;
} else { } else {
icon = GENERIC; icon = GENERIC;
} }
} }

View file

@ -1,9 +1,14 @@
package net.mcreator.target.entity; package net.mcreator.target.entity;
import net.mcreator.target.TargetMod;
import net.mcreator.target.headshot.BoundingBoxManager; import net.mcreator.target.headshot.BoundingBoxManager;
import net.mcreator.target.headshot.IHeadshotBox; import net.mcreator.target.headshot.IHeadshotBox;
import net.mcreator.target.init.*; import net.mcreator.target.init.TargetModDamageTypes;
import net.mcreator.target.init.TargetModEntities;
import net.mcreator.target.init.TargetModParticleTypes;
import net.mcreator.target.init.TargetModSounds;
import net.mcreator.target.network.TargetModVariables; import net.mcreator.target.network.TargetModVariables;
import net.mcreator.target.network.message.PlayerGunKillMessage;
import net.mcreator.target.tools.ExtendedEntityRayTraceResult; import net.mcreator.target.tools.ExtendedEntityRayTraceResult;
import net.mcreator.target.tools.ParticleTool; import net.mcreator.target.tools.ParticleTool;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
@ -32,6 +37,7 @@ import net.minecraft.world.phys.*;
import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraft.world.phys.shapes.VoxelShape;
import net.minecraftforge.entity.IEntityAdditionalSpawnData; import net.minecraftforge.entity.IEntityAdditionalSpawnData;
import net.minecraftforge.entity.PartEntity; import net.minecraftforge.entity.PartEntity;
import net.minecraftforge.network.PacketDistributor;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.ArrayList; import java.util.ArrayList;
@ -306,6 +312,19 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa
if (beast && entity instanceof LivingEntity living) { if (beast && entity instanceof LivingEntity living) {
if (living.isDeadOrDying()) return; if (living.isDeadOrDying()) return;
if (this.shooter instanceof ServerPlayer player) {
player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.hitIndicator = 25;
capability.syncPlayerVariables(living);
});
var holder = Holder.direct(TargetModSounds.INDICATION.get());
player.connection.send(new ClientboundSoundPacket(holder, SoundSource.PLAYERS, player.getX(), player.getY(), player.getZ(), 1f, 1f, player.level().random.nextLong()));
((ServerLevel) this.level()).sendParticles(ParticleTypes.DAMAGE_INDICATOR, living.getX(), living.getY() + .5, living.getZ(), 1000, .4, .7, .4, 0);
TargetMod.PACKET_HANDLER.send(PacketDistributor.ALL.noArg(), new PlayerGunKillMessage(player.getId(), living.getId(), false, TargetModDamageTypes.BEAST));
}
if (living instanceof ServerPlayer victim) { if (living instanceof ServerPlayer victim) {
living.setHealth(0); living.setHealth(0);
living.level().players().forEach( living.level().players().forEach(
@ -323,16 +342,6 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa
living.gameEvent(GameEvent.ENTITY_DIE); living.gameEvent(GameEvent.ENTITY_DIE);
} }
if (this.shooter instanceof ServerPlayer player) {
player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.hitIndicator = 25;
capability.syncPlayerVariables(living);
});
var holder = Holder.direct(TargetModSounds.INDICATION.get());
player.connection.send(new ClientboundSoundPacket(holder, SoundSource.PLAYERS, player.getX(), player.getY(), player.getZ(), 1f, 1f, player.level().random.nextLong()));
((ServerLevel) this.level()).sendParticles(ParticleTypes.DAMAGE_INDICATOR, living.getX(), living.getY() + .5, living.getZ(), 1000, .4, .7, .4, 0);
}
return; return;
} }

View file

@ -21,6 +21,7 @@ public class TargetModDamageTypes {
public static final ResourceKey<DamageType> ARROW_IN_KNEE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(TargetMod.MODID, "arrow_in_knee")); public static final ResourceKey<DamageType> ARROW_IN_KNEE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(TargetMod.MODID, "arrow_in_knee"));
public static final ResourceKey<DamageType> ARROW_IN_BRAIN = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(TargetMod.MODID, "arrow_in_brain")); public static final ResourceKey<DamageType> ARROW_IN_BRAIN = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(TargetMod.MODID, "arrow_in_brain"));
public static final ResourceKey<DamageType> MINE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(TargetMod.MODID, "mine")); public static final ResourceKey<DamageType> MINE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(TargetMod.MODID, "mine"));
public static final ResourceKey<DamageType> BEAST = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(TargetMod.MODID, "beast"));
public static DamageSource causeGunFireDamage(RegistryAccess registryAccess, @Nullable Entity entity) { public static DamageSource causeGunFireDamage(RegistryAccess registryAccess, @Nullable Entity entity) {

View file

@ -0,0 +1,5 @@
{
"exhaustion": 0,
"message_id": "beast",
"scaling": "never"
}