添加电击药水,电击伤害和泰瑟1木仓击杀图标

This commit is contained in:
Atsuihsio 2024-06-08 19:36:21 +08:00
parent 05b064d45c
commit 5f503a4e32
14 changed files with 70 additions and 8 deletions

View file

@ -4,7 +4,15 @@ import net.mcreator.target.init.*;
import net.mcreator.target.network.message.*; import net.mcreator.target.network.message.*;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.alchemy.PotionUtils;
import net.minecraft.world.item.alchemy.Potions;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.FlowerPotBlock;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.brewing.BrewingRecipeRegistry;
import net.minecraftforge.event.TickEvent; import net.minecraftforge.event.TickEvent;
import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
@ -41,6 +49,7 @@ public class TargetMod {
TargetModTabs.TABS.register(bus); TargetModTabs.TABS.register(bus);
TargetModMobEffects.REGISTRY.register(bus); TargetModMobEffects.REGISTRY.register(bus);
TargetModParticleTypes.REGISTRY.register(bus); TargetModParticleTypes.REGISTRY.register(bus);
TargetModPotion.POTIONS.register(bus);
TargetModMenus.REGISTRY.register(bus); TargetModMenus.REGISTRY.register(bus);
bus.addListener(this::onCommonSetup); bus.addListener(this::onCommonSetup);
@ -94,5 +103,8 @@ public class TargetMod {
addNetworkMessage(PlayerGunKillMessage.class, PlayerGunKillMessage::encode, PlayerGunKillMessage::decode, PlayerGunKillMessage::handler, Optional.of(NetworkDirection.PLAY_TO_CLIENT)); addNetworkMessage(PlayerGunKillMessage.class, PlayerGunKillMessage::encode, PlayerGunKillMessage::decode, PlayerGunKillMessage::handler, Optional.of(NetworkDirection.PLAY_TO_CLIENT));
addNetworkMessage(ClientIndicatorMessage.class, ClientIndicatorMessage::encode, ClientIndicatorMessage::decode, ClientIndicatorMessage::handler, Optional.of(NetworkDirection.PLAY_TO_CLIENT)); addNetworkMessage(ClientIndicatorMessage.class, ClientIndicatorMessage::encode, ClientIndicatorMessage::decode, ClientIndicatorMessage::handler, Optional.of(NetworkDirection.PLAY_TO_CLIENT));
addNetworkMessage(SensitivityMessage.class, SensitivityMessage::encode, SensitivityMessage::decode, SensitivityMessage::handler); addNetworkMessage(SensitivityMessage.class, SensitivityMessage::encode, SensitivityMessage::decode, SensitivityMessage::handler);
event.enqueueWork(() -> BrewingRecipeRegistry.addRecipe(Ingredient.of(PotionUtils.setPotion(new ItemStack(Items.POTION), Potions.WATER)),
Ingredient.of(Items.LIGHTNING_ROD), PotionUtils.setPotion(new ItemStack(Items.POTION), TargetModPotion.SHOCK.get())));
} }
} }

View file

@ -37,6 +37,7 @@ public class KillMessageOverlay {
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 BEAST = new ResourceLocation(TargetMod.MODID, "textures/screens/damage_types/beast.png");
private static final ResourceLocation BLEEDING = new ResourceLocation(TargetMod.MODID, "textures/screens/damage_types/bleeding.png"); private static final ResourceLocation BLEEDING = new ResourceLocation(TargetMod.MODID, "textures/screens/damage_types/bleeding.png");
private static final ResourceLocation SHOCK = new ResourceLocation(TargetMod.MODID, "textures/screens/damage_types/shock.png");
private static final ResourceLocation BLOOD_CRYSTAL = new ResourceLocation(TargetMod.MODID, "textures/screens/damage_types/blood_crystal.png"); private static final ResourceLocation BLOOD_CRYSTAL = new ResourceLocation(TargetMod.MODID, "textures/screens/damage_types/blood_crystal.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");
@ -247,7 +248,8 @@ public class KillMessageOverlay {
icon = HEADSHOT; icon = HEADSHOT;
} else { } else {
if (record.damageType == TargetModDamageTypes.GUN_FIRE || record.damageType == TargetModDamageTypes.GUN_FIRE_HEADSHOT if (record.damageType == TargetModDamageTypes.GUN_FIRE || record.damageType == TargetModDamageTypes.GUN_FIRE_HEADSHOT
|| record.damageType == TargetModDamageTypes.ARROW_IN_KNEE || record.damageType == TargetModDamageTypes.ARROW_IN_BRAIN) { || record.damageType == TargetModDamageTypes.ARROW_IN_KNEE || record.damageType == TargetModDamageTypes.ARROW_IN_BRAIN
|| record.damageType == TargetModDamageTypes.SHOCK) {
icon = null; icon = null;
} else { } else {
// 如果是其他伤害则渲染对应图标 // 如果是其他伤害则渲染对应图标
@ -263,6 +265,8 @@ public class KillMessageOverlay {
icon = BLEEDING; icon = BLEEDING;
} else if (record.damageType == ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("dreamaticvoyage", "blood_crystal"))) { } else if (record.damageType == ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("dreamaticvoyage", "blood_crystal"))) {
icon = BLOOD_CRYSTAL; icon = BLOOD_CRYSTAL;
} else if (record.damageType == TargetModDamageTypes.SHOCK) {
icon = SHOCK;
} else { } else {
icon = GENERIC; icon = GENERIC;
} }

View file

@ -113,9 +113,9 @@ public class TaserBulletProjectileEntity extends ThrowableItemProjectile {
} }
if (headshot) { if (headshot) {
entity.hurt(TargetModDamageTypes.causeGunFireHeadshotDamage(this.level().registryAccess(), this, this.getOwner()), this.damage * 1.5f); entity.hurt(TargetModDamageTypes.causeShockDamage(this.level().registryAccess(), this, this.getOwner()), this.damage * 1.5f);
} else { } else {
entity.hurt(TargetModDamageTypes.causeGunFireDamage(this.level().registryAccess(), this, this.getOwner()), this.damage); entity.hurt(TargetModDamageTypes.causeShockDamage(this.level().registryAccess(), this, this.getOwner()), this.damage);
} }
this.discard(); this.discard();

View file

@ -22,6 +22,7 @@ public class TargetModDamageTypes {
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 final ResourceKey<DamageType> BEAST = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(TargetMod.MODID, "beast"));
public static final ResourceKey<DamageType> SHOCK = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(TargetMod.MODID, "shock"));
public static DamageSource causeGunFireDamage(RegistryAccess registryAccess, @Nullable Entity directEntity, @Nullable Entity attacker) { public static DamageSource causeGunFireDamage(RegistryAccess registryAccess, @Nullable Entity directEntity, @Nullable Entity attacker) {
return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(GUN_FIRE), directEntity, attacker); return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(GUN_FIRE), directEntity, attacker);
@ -43,6 +44,10 @@ public class TargetModDamageTypes {
return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(MINE), entity); return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(MINE), entity);
} }
public static DamageSource causeShockDamage(RegistryAccess registryAccess, @Nullable Entity directEntity, @Nullable Entity attacker) {
return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(SHOCK), directEntity, attacker);
}
private static class DamageMessages extends DamageSource { private static class DamageMessages extends DamageSource {
public DamageMessages(Holder.Reference<DamageType> typeReference) { public DamageMessages(Holder.Reference<DamageType> typeReference) {
super(typeReference); super(typeReference);

View file

@ -0,0 +1,16 @@
package net.mcreator.target.init;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.item.alchemy.Potion;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import net.mcreator.target.TargetMod;
public class TargetModPotion {
public static final DeferredRegister<Potion> POTIONS = DeferredRegister.create(ForgeRegistries.POTIONS, TargetMod.MODID);
public static final RegistryObject<Potion> SHOCK= POTIONS.register("target_shock",
() -> new Potion(new MobEffectInstance(TargetModMobEffects.SHOCK.get(), 100, 0)));
}

View file

@ -1,5 +1,6 @@
package net.mcreator.target.mobeffect; package net.mcreator.target.mobeffect;
import net.mcreator.target.init.TargetModDamageTypes;
import net.mcreator.target.init.TargetModSounds; import net.mcreator.target.init.TargetModSounds;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
@ -29,6 +30,9 @@ public class ShockMobEffect extends MobEffect {
@Override @Override
public void applyEffectTick(LivingEntity entity, int amplifier) { public void applyEffectTick(LivingEntity entity, int amplifier) {
if (!entity.level().isClientSide()) {
entity.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 10, 10));
}
entity.setXRot((float) Mth.nextDouble(RandomSource.create(), -23, -36)); entity.setXRot((float) Mth.nextDouble(RandomSource.create(), -23, -36));
entity.xRotO = entity.getXRot(); entity.xRotO = entity.getXRot();
} }

View file

@ -164,6 +164,9 @@
"death.attack.mine": "%1$s step on Claymore", "death.attack.mine": "%1$s step on Claymore",
"death.attack.mine.entity": "%1$s step on %2$s's Claymore", "death.attack.mine.entity": "%1$s step on %2$s's Claymore",
"death.attack.mine.item": "%1$s step on %2$s's Claymore", "death.attack.mine.item": "%1$s step on %2$s's Claymore",
"death.attack.shock": "%1$s was shocked",
"death.attack.shock.entity": "%1$s was shocked by %2$s",
"death.attack.shock.item": "%1$s was shocked by %2$s",
"gui.target.mortar_gui.button_angle_add_05": "+0.5", "gui.target.mortar_gui.button_angle_add_05": "+0.5",
"gui.target.mortar_gui.button_angle_reduce_05": "-0.5", "gui.target.mortar_gui.button_angle_reduce_05": "-0.5",
@ -190,6 +193,9 @@
"key.target.zoom": "Zoom", "key.target.zoom": "Zoom",
"effect.target.shock": "Shock", "effect.target.shock": "Shock",
"item.minecraft.potion.effect.target_shock": "Potion of Shock",
"item.minecraft.splash_potion.effect.target_shock": "Splash Potion of Shock",
"item.minecraft.lingering_potion.effect.target_shock": "Lingering Potion of Shock",
"des.target.sensitivity": "Current Sensitivity of This Gun: %1$s", "des.target.sensitivity": "Current Sensitivity of This Gun: %1$s",

View file

@ -164,6 +164,9 @@
"death.attack.mine": "%1$s不慎踩到了阔剑地雷", "death.attack.mine": "%1$s不慎踩到了阔剑地雷",
"death.attack.mine.entity": "%1$s踩到了%2$s的阔剑地雷", "death.attack.mine.entity": "%1$s踩到了%2$s的阔剑地雷",
"death.attack.mine.item": "%1$s踩到了%2$s的阔剑地雷", "death.attack.mine.item": "%1$s踩到了%2$s的阔剑地雷",
"death.attack.shock": "%1$s被电麻了",
"death.attack.shock.entity": "%1$s被%2$s电麻了",
"death.attack.shock.item": "%1$s被%2$s电麻了",
"gui.target.mortar_gui.button_angle_add_05": "+0.5", "gui.target.mortar_gui.button_angle_add_05": "+0.5",
"gui.target.mortar_gui.button_angle_reduce_05": "-0.5", "gui.target.mortar_gui.button_angle_reduce_05": "-0.5",
@ -189,7 +192,10 @@
"key.target.fire_mode": "开火模式", "key.target.fire_mode": "开火模式",
"key.target.zoom": "缩放", "key.target.zoom": "缩放",
"effect.target.shock": "麻痹", "effect.target.shock": "电击",
"item.minecraft.potion.effect.target_shock": "电击药水",
"item.minecraft.splash_potion.effect.target_shock": "喷溅型电击药水",
"item.minecraft.lingering_potion.effect.target_shock": "滞留型电击药水",
"des.target.sensitivity": "当前枪械的灵敏度为:%1$s", "des.target.sensitivity": "当前枪械的灵敏度为:%1$s",

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

View file

@ -2,6 +2,7 @@
"replace": false, "replace": false,
"values": [ "values": [
"target:gunfire", "target:gunfire",
"target:gunfire_headshot" "target:gunfire_headshot",
"target:shock"
] ]
} }

View file

@ -2,6 +2,7 @@
"replace": false, "replace": false,
"values": [ "values": [
"target:gunfire", "target:gunfire",
"target:gunfire_headshot" "target:gunfire_headshot",
"target:shock"
] ]
} }

View file

@ -2,6 +2,7 @@
"replace": false, "replace": false,
"values": [ "values": [
"target:gunfire", "target:gunfire",
"target:gunfire_headshot" "target:gunfire_headshot",
"target:shock"
] ]
} }

View file

@ -2,6 +2,7 @@
"replace": false, "replace": false,
"values": [ "values": [
"target:gunfire", "target:gunfire",
"target:gunfire_headshot" "target:gunfire_headshot",
"target:shock"
] ]
} }

View file

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