为新子弹添加爆头判定,伤害衰减,清理部分无用导包
This commit is contained in:
parent
c7eb56e4bf
commit
9cc5b5a669
19 changed files with 165 additions and 522 deletions
|
@ -1,54 +0,0 @@
|
|||
package net.mcreator.target.client.renderer;
|
||||
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||
import net.minecraft.client.renderer.entity.EntityRendererProvider;
|
||||
import net.minecraft.client.renderer.entity.EntityRenderer;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
|
||||
import net.minecraft.client.renderer.entity.layers.RenderLayer;
|
||||
import net.minecraft.client.renderer.entity.MobRenderer;
|
||||
import net.minecraft.client.renderer.entity.LivingEntityRenderer;
|
||||
import net.minecraft.client.renderer.entity.EntityRendererProvider;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
|
||||
import net.mcreator.target.entity.BulletEntity;
|
||||
import net.mcreator.target.client.model.Modelbullet;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
|
||||
import com.mojang.math.Axis;
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
|
||||
public class BulletRenderer extends EntityRenderer<BulletEntity> {
|
||||
private static final ResourceLocation texture = new ResourceLocation("target:textures/entities/bullet_tex.png");
|
||||
private final Modelbullet model;
|
||||
|
||||
public BulletRenderer(EntityRendererProvider.Context context) {
|
||||
super(context);
|
||||
model = new Modelbullet(context.bakeLayer(Modelbullet.LAYER_LOCATION));
|
||||
}
|
||||
|
||||
protected int getBlockLightLevel(BulletEntity pEntity, BlockPos pPos) {
|
||||
return 15;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(BulletEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
|
||||
VertexConsumer vb = bufferIn.getBuffer(RenderType.eyes(this.getTextureLocation(entityIn)));
|
||||
poseStack.pushPose();
|
||||
poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90));
|
||||
poseStack.mulPose(Axis.ZP.rotationDegrees(90 + Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot())));
|
||||
model.renderToBuffer(poseStack, vb, packedLightIn, OverlayTexture.NO_OVERLAY, 1, 1, 1, 0.0625f);
|
||||
poseStack.popPose();
|
||||
super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getTextureLocation(BulletEntity entity) {
|
||||
return texture;
|
||||
}
|
||||
}
|
|
@ -2,20 +2,11 @@
|
|||
package net.mcreator.target.entity;
|
||||
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
import net.minecraft.advancements.Advancement;
|
||||
import net.minecraft.advancements.AdvancementProgress;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.language.I18n;
|
||||
import net.minecraft.commands.CommandSource;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.contents.TranslatableContents;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.block.*;
|
||||
import net.minecraft.world.phys.*;
|
||||
import net.mcreator.target.headshot.BoundingBoxManager;
|
||||
import net.mcreator.target.headshot.IHeadshotBox;
|
||||
|
@ -29,29 +20,22 @@ import net.minecraftforge.api.distmarker.Dist;
|
|||
import net.minecraft.world.phys.EntityHitResult;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
|
||||
import net.minecraft.sounds.SoundEvents;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.entity.projectile.ItemSupplier;
|
||||
import net.minecraft.world.entity.projectile.AbstractArrow;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.network.protocol.game.ClientGamePacketListener;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
|
||||
import net.mcreator.target.network.TargetModVariables;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import net.mcreator.target.init.TargetModEntities;
|
||||
|
||||
@OnlyIn(value = Dist.CLIENT, _interface = ItemSupplier.class)
|
||||
public class BocekarrowEntity extends AbstractArrow implements ItemSupplier {
|
||||
public static final ItemStack PROJECTILE_ITEM = new ItemStack(Items.ARROW);
|
||||
|
|
|
@ -1,180 +0,0 @@
|
|||
package net.mcreator.target.entity;
|
||||
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
import net.minecraft.advancements.Advancement;
|
||||
import net.minecraft.advancements.AdvancementProgress;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.language.I18n;
|
||||
import net.minecraft.commands.CommandSource;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.contents.TranslatableContents;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.block.*;
|
||||
import net.minecraft.world.phys.*;
|
||||
import net.mcreator.target.headshot.BoundingBoxManager;
|
||||
import net.mcreator.target.headshot.IHeadshotBox;
|
||||
import net.mcreator.target.init.TargetModEntities;
|
||||
|
||||
import net.minecraftforge.network.PlayMessages;
|
||||
import net.minecraftforge.network.NetworkHooks;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
|
||||
import net.minecraft.world.phys.EntityHitResult;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
|
||||
import net.minecraft.sounds.SoundEvents;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.entity.projectile.ItemSupplier;
|
||||
import net.minecraft.world.entity.projectile.AbstractArrow;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.network.protocol.game.ClientGamePacketListener;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
|
||||
import net.mcreator.target.procedures.BullettestDanSheWuJiZhongFangKuaiShiProcedure;
|
||||
|
||||
import net.mcreator.target.network.TargetModVariables;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@OnlyIn(value = Dist.CLIENT, _interface = ItemSupplier.class)
|
||||
public class BulletEntity extends AbstractArrow implements ItemSupplier {
|
||||
public static final ItemStack PROJECTILE_ITEM = new ItemStack(Blocks.AIR);
|
||||
|
||||
public BulletEntity(PlayMessages.SpawnEntity packet, Level world) {
|
||||
super(TargetModEntities.BULLET.get(), world);
|
||||
}
|
||||
|
||||
public BulletEntity(EntityType<? extends BulletEntity> type, Level world) {
|
||||
super(type, world);
|
||||
}
|
||||
|
||||
public BulletEntity(EntityType<? extends BulletEntity> type, double x, double y, double z, Level world) {
|
||||
super(type, x, y, z, world);
|
||||
}
|
||||
|
||||
public BulletEntity(EntityType<? extends BulletEntity> type, LivingEntity entity, Level world) {
|
||||
super(type, entity, world);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Packet<ClientGamePacketListener> getAddEntityPacket() {
|
||||
return NetworkHooks.getEntitySpawningPacket(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public ItemStack getItem() {
|
||||
return PROJECTILE_ITEM;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ItemStack getPickupItem() {
|
||||
return PROJECTILE_ITEM;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doPostHurtEffects(LivingEntity entity) {
|
||||
super.doPostHurtEffects(entity);
|
||||
entity.setArrowCount(entity.getArrowCount() - 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
super.tick();
|
||||
if (this.inGround)
|
||||
BullettestDanSheWuJiZhongFangKuaiShiProcedure.execute(this);
|
||||
if(this.getOwner() instanceof LivingEntity living){
|
||||
if(this.tickCount >= (int)living.getMainHandItem().getOrCreateTag().getDouble("bulletlife")){
|
||||
this.discard();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHitBlock(BlockHitResult blockHitResult) {
|
||||
super.onHitBlock(blockHitResult);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onHitEntity(EntityHitResult result) {
|
||||
final Vec3 position = this.position();
|
||||
Entity entity = result.getEntity();
|
||||
if(this.getOwner() instanceof LivingEntity living){
|
||||
double _setval = 25;
|
||||
living.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||
capability.hitind = _setval;
|
||||
capability.syncPlayerVariables(living);
|
||||
});
|
||||
Entity _ent = living;
|
||||
if (!_ent.level().isClientSide() && _ent.getServer() != null) {
|
||||
_ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4,
|
||||
_ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "playsound target:indication voice @a ~ ~ ~ 1 1");
|
||||
}
|
||||
}
|
||||
if (entity instanceof LivingEntity livingEntity) {
|
||||
entity.invulnerableTime = 0;
|
||||
}
|
||||
AABB boundingBox = entity.getBoundingBox();
|
||||
Vec3 startVec = this.position();
|
||||
Vec3 endVec = startVec.add(this.getDeltaMovement());
|
||||
Vec3 hitPos = boundingBox.clip(startVec, endVec).orElse(null);
|
||||
/* Check for headshot */
|
||||
boolean headshot = false;
|
||||
if(entity instanceof LivingEntity)
|
||||
{
|
||||
IHeadshotBox<LivingEntity> headshotBox = (IHeadshotBox<LivingEntity>) BoundingBoxManager.getHeadshotBoxes(entity.getType());
|
||||
if(headshotBox != null)
|
||||
{
|
||||
AABB box = headshotBox.getHeadshotBox((LivingEntity) entity);
|
||||
if(box != null)
|
||||
{
|
||||
box = box.move(boundingBox.getCenter().x, boundingBox.minY, boundingBox.getCenter().z);
|
||||
Optional<Vec3> headshotHitPos = box.clip(startVec, endVec);
|
||||
if(!headshotHitPos.isPresent())
|
||||
{
|
||||
box = box.inflate( 0.2, 0.2, 0.2);
|
||||
headshotHitPos = box.clip(startVec, endVec);
|
||||
}
|
||||
if(headshotHitPos.isPresent() && (hitPos == null || headshotHitPos.get().distanceTo(hitPos) < 0.55))
|
||||
{
|
||||
hitPos = headshotHitPos.get();
|
||||
headshot = true;
|
||||
}
|
||||
if(headshot){
|
||||
if(this.getOwner() instanceof LivingEntity living){
|
||||
setBaseDamage(getBaseDamage() * (float)living.getMainHandItem().getOrCreateTag().getDouble("headshot"));
|
||||
double _setval = 25;
|
||||
living.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||
capability.headind = _setval;
|
||||
capability.syncPlayerVariables(living);
|
||||
});
|
||||
Entity _ent = living;
|
||||
if (!_ent.level().isClientSide() && _ent.getServer() != null) {
|
||||
_ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4,
|
||||
_ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "playsound target:headshot voice @a ~ ~ ~ 1 1");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
super.onHitEntity(result);
|
||||
this.discard();
|
||||
|
||||
}
|
||||
}
|
|
@ -1,20 +1,10 @@
|
|||
|
||||
package net.mcreator.target.entity;
|
||||
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
import net.minecraft.advancements.Advancement;
|
||||
import net.minecraft.advancements.AdvancementProgress;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.language.I18n;
|
||||
import net.minecraft.commands.CommandSource;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.contents.TranslatableContents;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.block.*;
|
||||
import net.minecraft.world.phys.*;
|
||||
import net.mcreator.target.headshot.BoundingBoxManager;
|
||||
|
@ -26,25 +16,19 @@ import net.minecraftforge.network.NetworkHooks;
|
|||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
|
||||
import net.minecraft.sounds.SoundEvents;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.entity.projectile.ItemSupplier;
|
||||
import net.minecraft.world.entity.projectile.AbstractArrow;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.network.protocol.game.ClientGamePacketListener;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
|
||||
import net.mcreator.target.procedures.GunGrenadeDanSheWuJiZhongShiTiShiProcedure;
|
||||
import net.mcreator.target.procedures.GunGrenadeDanSheWuJiZhongFangKuaiShiProcedure;
|
||||
import net.mcreator.target.procedures.GunGrenadeDanSheWuFeiXingShiMeiKeFaShengProcedure;
|
||||
import net.mcreator.target.init.TargetModEntities;
|
||||
|
||||
import net.mcreator.target.network.TargetModVariables;
|
||||
|
||||
|
|
|
@ -1,57 +1,24 @@
|
|||
package net.mcreator.target.entity;
|
||||
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.network.syncher.EntityDataAccessor;
|
||||
import net.minecraft.util.Mth;
|
||||
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.EntityHitResult;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
|
||||
import net.minecraft.world.level.Level;
|
||||
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.projectile.ThrowableItemProjectile;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.mcreator.target.init.TargetCustomModEntities;
|
||||
import net.mcreator.target.init.TargetModItems;
|
||||
|
||||
import net.minecraft.commands.CommandSource;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.level.block.*;
|
||||
import net.minecraft.world.phys.*;
|
||||
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import net.minecraftforge.network.PlayMessages;
|
||||
import net.minecraftforge.network.NetworkHooks;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
|
||||
import net.minecraft.world.phys.EntityHitResult;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.entity.projectile.ItemSupplier;
|
||||
import net.minecraft.world.entity.projectile.AbstractArrow;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.network.protocol.game.ClientGamePacketListener;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
|
||||
import net.mcreator.target.headshot.BoundingBoxManager;
|
||||
import net.mcreator.target.headshot.IHeadshotBox;
|
||||
import net.mcreator.target.init.TargetModEntities;
|
||||
import net.mcreator.target.init.TargetCustomModEntities;
|
||||
import net.mcreator.target.init.TargetModItems;
|
||||
import net.mcreator.target.procedures.ProjectileHitEntity;
|
||||
import net.mcreator.target.procedures.ProjectileHeadshotEntity;
|
||||
|
||||
import net.mcreator.target.procedures.BullettestDanSheWuJiZhongFangKuaiShiProcedure;
|
||||
import net.mcreator.target.network.TargetModVariables;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Optional;
|
||||
|
||||
public class ProjectileEntity extends ThrowableItemProjectile {
|
||||
|
@ -78,14 +45,46 @@ public class ProjectileEntity extends ThrowableItemProjectile {
|
|||
|
||||
@Override
|
||||
protected void onHitEntity(EntityHitResult pResult) {
|
||||
super.onHitEntity(pResult);
|
||||
|
||||
final Vec3 position = this.position();
|
||||
Entity entity = pResult.getEntity();
|
||||
if (entity instanceof LivingEntity livingEntity) {
|
||||
livingEntity.hurt(this.damageSources().thrown(this, this.getOwner() instanceof LivingEntity living ? living : null), this.damage);
|
||||
entity.invulnerableTime = 0;
|
||||
}
|
||||
AABB boundingBox = entity.getBoundingBox();
|
||||
Vec3 startVec = this.position();
|
||||
Vec3 endVec = startVec.add(this.getDeltaMovement());
|
||||
Vec3 hitPos = boundingBox.clip(startVec, endVec).orElse(null);
|
||||
/* Check for headshot */
|
||||
boolean headshot = false;
|
||||
if(entity instanceof LivingEntity)
|
||||
{
|
||||
IHeadshotBox<LivingEntity> headshotBox = (IHeadshotBox<LivingEntity>) BoundingBoxManager.getHeadshotBoxes(entity.getType());
|
||||
if(headshotBox != null)
|
||||
{
|
||||
AABB box = headshotBox.getHeadshotBox((LivingEntity) entity);
|
||||
if(box != null)
|
||||
{
|
||||
box = box.move(boundingBox.getCenter().x, boundingBox.minY, boundingBox.getCenter().z);
|
||||
Optional<Vec3> headshotHitPos = box.clip(startVec, endVec);
|
||||
if(!headshotHitPos.isPresent())
|
||||
{
|
||||
box = box.inflate( 0.2, 0.2, 0.2);
|
||||
headshotHitPos = box.clip(startVec, endVec);
|
||||
}
|
||||
if(headshotHitPos.isPresent() && (hitPos == null || headshotHitPos.get().distanceTo(hitPos) < 0.55))
|
||||
{
|
||||
hitPos = headshotHitPos.get();
|
||||
headshot = true;
|
||||
}
|
||||
if(headshot){
|
||||
ProjectileHeadshotEntity.execute(this.level(), pResult.getEntity(), this, this.getOwner());
|
||||
} else {
|
||||
ProjectileHitEntity.execute(this.level(), pResult.getEntity(), this, this.getOwner());
|
||||
|
||||
if (!this.level().isClientSide) {
|
||||
this.discard();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,20 +1,10 @@
|
|||
|
||||
package net.mcreator.target.entity;
|
||||
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
import net.minecraft.advancements.Advancement;
|
||||
import net.minecraft.advancements.AdvancementProgress;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.language.I18n;
|
||||
import net.minecraft.commands.CommandSource;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.contents.TranslatableContents;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.block.*;
|
||||
import net.minecraft.world.phys.*;
|
||||
import net.mcreator.target.headshot.BoundingBoxManager;
|
||||
|
@ -26,25 +16,19 @@ import net.minecraftforge.network.NetworkHooks;
|
|||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
|
||||
import net.minecraft.sounds.SoundEvents;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.entity.projectile.ItemSupplier;
|
||||
import net.minecraft.world.entity.projectile.AbstractArrow;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.network.protocol.game.ClientGamePacketListener;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
|
||||
import net.mcreator.target.procedures.RpgRocketDanSheWuJiZhongFangKuaiShiProcedure;
|
||||
import net.mcreator.target.procedures.RpgRocketDanSheWuFeiXingShiMeiKeFaShengProcedure;
|
||||
import net.mcreator.target.procedures.RocketHitProcedure;
|
||||
import net.mcreator.target.init.TargetModEntities;
|
||||
|
||||
import net.mcreator.target.network.TargetModVariables;
|
||||
|
||||
|
|
|
@ -233,7 +233,7 @@ public class Target1Entity extends PathfinderMob implements GeoEntity {
|
|||
public static AttributeSupplier.Builder createAttributes() {
|
||||
AttributeSupplier.Builder builder = Mob.createMobAttributes();
|
||||
builder = builder.add(Attributes.MOVEMENT_SPEED, 0);
|
||||
builder = builder.add(Attributes.MAX_HEALTH, 20);
|
||||
builder = builder.add(Attributes.MAX_HEALTH, 100);
|
||||
builder = builder.add(Attributes.ARMOR, 0);
|
||||
builder = builder.add(Attributes.ATTACK_DAMAGE, 0);
|
||||
builder = builder.add(Attributes.FOLLOW_RANGE, 16);
|
||||
|
|
|
@ -1,20 +1,10 @@
|
|||
|
||||
package net.mcreator.target.entity;
|
||||
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
import net.minecraft.advancements.Advancement;
|
||||
import net.minecraft.advancements.AdvancementProgress;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.language.I18n;
|
||||
import net.minecraft.commands.CommandSource;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.contents.TranslatableContents;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.block.*;
|
||||
import net.minecraft.world.phys.*;
|
||||
import net.mcreator.target.headshot.BoundingBoxManager;
|
||||
|
@ -27,28 +17,19 @@ import net.minecraftforge.api.distmarker.OnlyIn;
|
|||
import net.minecraftforge.api.distmarker.Dist;
|
||||
|
||||
import net.minecraft.world.phys.EntityHitResult;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
|
||||
import net.minecraft.sounds.SoundEvents;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.entity.projectile.ItemSupplier;
|
||||
import net.minecraft.world.entity.projectile.AbstractArrow;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.network.protocol.game.ClientGamePacketListener;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
|
||||
import net.mcreator.target.procedures.TaserBulletTouZhiWuFeiXingKeProcedure;
|
||||
import net.mcreator.target.procedures.TaserBulletDangTouZhiWuJiZhongShiTiShiProcedure;
|
||||
import net.mcreator.target.init.TargetModEntities;
|
||||
|
||||
import net.mcreator.target.network.TargetModVariables;
|
||||
|
||||
|
|
|
@ -7,14 +7,10 @@ package net.mcreator.target.init;
|
|||
import net.minecraftforge.registries.RegistryObject;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
import net.minecraftforge.registries.DeferredRegister;
|
||||
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.event.entity.EntityAttributeCreationEvent;
|
||||
|
||||
import net.minecraft.world.entity.MobCategory;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
|
||||
import net.mcreator.target.entity.ProjectileEntity;
|
||||
|
||||
|
@ -26,6 +22,6 @@ public class TargetCustomModEntities {
|
|||
|
||||
public static final RegistryObject<EntityType<ProjectileEntity>> PROJECTILE =
|
||||
ENTITY_TYPES.register("projectile",
|
||||
() -> EntityType.Builder.<ProjectileEntity>of(ProjectileEntity::new, MobCategory.MISC).sized(1.0f, 1.0f).build("projectile"));
|
||||
() -> EntityType.Builder.<ProjectileEntity>of(ProjectileEntity::new, MobCategory.MISC).sized(0.5f, 0.5f).build("projectile"));
|
||||
|
||||
}
|
||||
|
|
|
@ -25,7 +25,6 @@ import net.mcreator.target.entity.MortarShellEntity;
|
|||
import net.mcreator.target.entity.MortarEntity;
|
||||
import net.mcreator.target.entity.GunGrenadeEntity;
|
||||
import net.mcreator.target.entity.ClaymoreEntity;
|
||||
import net.mcreator.target.entity.BulletEntity;
|
||||
import net.mcreator.target.entity.BocekarrowEntity;
|
||||
import net.mcreator.target.TargetMod;
|
||||
|
||||
|
@ -49,8 +48,6 @@ public class TargetModEntities {
|
|||
EntityType.Builder.<GunGrenadeEntity>of(GunGrenadeEntity::new, MobCategory.MISC).setCustomClientFactory(GunGrenadeEntity::new).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f));
|
||||
public static final RegistryObject<EntityType<TargetEntity>> TARGET = register("target",
|
||||
EntityType.Builder.<TargetEntity>of(TargetEntity::new, MobCategory.CREATURE).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(TargetEntity::new).fireImmune().sized(0.875f, 2f));
|
||||
public static final RegistryObject<EntityType<BulletEntity>> BULLET = register("projectile_bullet",
|
||||
EntityType.Builder.<BulletEntity>of(BulletEntity::new, MobCategory.MISC).setCustomClientFactory(BulletEntity::new).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f));
|
||||
public static final RegistryObject<EntityType<RpgRocketEntity>> RPG_ROCKET = register("projectile_rpg_rocket",
|
||||
EntityType.Builder.<RpgRocketEntity>of(RpgRocketEntity::new, MobCategory.MISC).setCustomClientFactory(RpgRocketEntity::new).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f));
|
||||
public static final RegistryObject<EntityType<MortarShellEntity>> MORTAR_SHELL = register("projectile_mortar_shell",
|
||||
|
@ -58,6 +55,7 @@ public class TargetModEntities {
|
|||
public static final RegistryObject<EntityType<BocekarrowEntity>> BOCEKARROW = register("projectile_bocekarrow",
|
||||
EntityType.Builder.<BocekarrowEntity>of(BocekarrowEntity::new, MobCategory.MISC).setCustomClientFactory(BocekarrowEntity::new).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f));
|
||||
|
||||
|
||||
private static <T extends Entity> RegistryObject<EntityType<T>> register(String registryname, EntityType.Builder<T> entityTypeBuilder) {
|
||||
return REGISTRY.register(registryname, () -> (EntityType<T>) entityTypeBuilder.build(registryname));
|
||||
}
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
|
||||
/*
|
||||
* MCreator note: This file will be REGENERATED on each build.
|
||||
*/
|
||||
package net.mcreator.target.init;
|
||||
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
|
@ -18,7 +14,6 @@ import net.mcreator.target.client.renderer.MortarShellRenderer;
|
|||
import net.mcreator.target.client.renderer.MortarRenderer;
|
||||
import net.mcreator.target.client.renderer.GunGrenadeRenderer;
|
||||
import net.mcreator.target.client.renderer.ClaymoreRenderer;
|
||||
import net.mcreator.target.client.renderer.BulletRenderer;
|
||||
import net.mcreator.target.client.renderer.BocekarrowRenderer;
|
||||
|
||||
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
|
||||
|
@ -32,7 +27,6 @@ public class TargetModEntityRenderers {
|
|||
event.registerEntityRenderer(TargetModEntities.TASER_BULLET_PROJECTILE.get(), TaserBulletProjectileRenderer::new);
|
||||
event.registerEntityRenderer(TargetModEntities.GUN_GRENADE.get(), GunGrenadeRenderer::new);
|
||||
event.registerEntityRenderer(TargetModEntities.TARGET.get(), TargetRenderer::new);
|
||||
event.registerEntityRenderer(TargetModEntities.BULLET.get(), BulletRenderer::new);
|
||||
event.registerEntityRenderer(TargetModEntities.RPG_ROCKET.get(), RpgRocketRenderer::new);
|
||||
event.registerEntityRenderer(TargetModEntities.MORTAR_SHELL.get(), MortarShellRenderer::new);
|
||||
event.registerEntityRenderer(TargetModEntities.BOCEKARROW.get(), BocekarrowRenderer::new);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package net.mcreator.target.procedures;
|
||||
|
||||
import net.mcreator.target.entity.ProjectileEntity;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.GameType;
|
||||
import net.minecraft.world.item.Items;
|
||||
|
@ -18,7 +19,6 @@ import net.minecraft.client.Minecraft;
|
|||
import net.mcreator.target.network.TargetModVariables;
|
||||
import net.mcreator.target.init.TargetModItems;
|
||||
import net.mcreator.target.init.TargetModEntities;
|
||||
import net.mcreator.target.entity.BulletEntity;
|
||||
import net.mcreator.target.entity.BocekarrowEntity;
|
||||
|
||||
public class BowlooseProcedure {
|
||||
|
@ -44,6 +44,8 @@ public class BowlooseProcedure {
|
|||
}
|
||||
if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == TargetModItems.BOCEK.get()
|
||||
&& (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("power") >= 6) {
|
||||
(entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().putDouble("speed",
|
||||
((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("power")));
|
||||
if ((entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).zooming == true) {
|
||||
{
|
||||
Entity _shootFrom = entity;
|
||||
|
@ -89,24 +91,12 @@ public class BowlooseProcedure {
|
|||
}
|
||||
} else {
|
||||
for (int index0 = 0; index0 < 10; index0++) {
|
||||
{
|
||||
Entity _shootFrom = entity;
|
||||
Level projectileLevel = _shootFrom.level();
|
||||
if (!projectileLevel.isClientSide()) {
|
||||
Projectile _entityToSpawn = new Object() {
|
||||
public Projectile getArrow(Level level, Entity shooter, float damage, int knockback) {
|
||||
AbstractArrow entityToSpawn = new BulletEntity(TargetModEntities.BULLET.get(), level);
|
||||
entityToSpawn.setOwner(shooter);
|
||||
entityToSpawn.setBaseDamage(damage);
|
||||
entityToSpawn.setKnockback(knockback);
|
||||
entityToSpawn.setSilent(true);
|
||||
return entityToSpawn;
|
||||
}
|
||||
}.getArrow(projectileLevel, entity, (float) (0.05 * (1 + 0.05 * usehand.getOrCreateTag().getDouble("level"))), 0);
|
||||
_entityToSpawn.setPos(_shootFrom.getX(), _shootFrom.getEyeY() - 0.1, _shootFrom.getZ());
|
||||
_entityToSpawn.shoot(_shootFrom.getLookAngle().x, _shootFrom.getLookAngle().y, _shootFrom.getLookAngle().z, (float) (4 * power), 2);
|
||||
projectileLevel.addFreshEntity(_entityToSpawn);
|
||||
}
|
||||
if (!entity.level().isClientSide() && entity instanceof LivingEntity living) {
|
||||
ProjectileEntity projectile = new ProjectileEntity(entity.level(), living);
|
||||
projectile.setOwner(living);
|
||||
projectile.setPos(living.getX(), living.getEyeY() - 0.1, living.getZ());
|
||||
projectile.shoot(living.getLookAngle().x, living.getLookAngle().y, living.getLookAngle().z, (float) (4 * power),2);
|
||||
entity.level().addFreshEntity(projectile);
|
||||
}
|
||||
}
|
||||
{
|
||||
|
|
|
@ -40,14 +40,8 @@ public class BulletfireNormalProcedure {
|
|||
capability.syncPlayerVariables(entity);
|
||||
});
|
||||
|
||||
if (usehand.getOrCreateTag().getDouble("level") >= 10) {
|
||||
dam = usehand.getOrCreateTag().getDouble("damage") * (1 + 0.05 * (usehand.getOrCreateTag().getDouble("level") - 10));
|
||||
} else {
|
||||
dam = usehand.getOrCreateTag().getDouble("damage");
|
||||
}
|
||||
|
||||
if (!entity.level().isClientSide() && entity instanceof LivingEntity living) {
|
||||
ProjectileEntity projectile = new ProjectileEntity(entity.level(), living, (float) dam);
|
||||
ProjectileEntity projectile = new ProjectileEntity(entity.level(), living);
|
||||
projectile.setOwner(living);
|
||||
|
||||
projectile.setPos(living.getX(), living.getEyeY() - 0.1, living.getZ());
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
package net.mcreator.target.procedures;
|
||||
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.eventbus.api.Event;
|
||||
import net.minecraftforge.event.entity.living.LivingAttackEvent;
|
||||
|
||||
import net.minecraft.world.level.LevelAccessor;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.damagesource.DamageSource;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
|
||||
import net.mcreator.target.entity.BulletEntity;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@Mod.EventBusSubscriber
|
||||
public class DamageReplaceProcedure {
|
||||
@SubscribeEvent
|
||||
public static void onEntityAttacked(LivingAttackEvent event) {
|
||||
if (event != null && event.getEntity() != null) {
|
||||
execute(event, event.getEntity().level(), event.getEntity(), event.getSource().getDirectEntity(), event.getSource().getEntity(), event.getAmount());
|
||||
}
|
||||
}
|
||||
|
||||
public static void execute(LevelAccessor world, Entity entity, Entity immediatesourceentity, Entity sourceentity, double amount) {
|
||||
execute(null, world, entity, immediatesourceentity, sourceentity, amount);
|
||||
}
|
||||
|
||||
private static void execute(@Nullable Event event, LevelAccessor world, Entity entity, Entity immediatesourceentity, Entity sourceentity, double amount) {
|
||||
if (entity == null || immediatesourceentity == null || sourceentity == null)
|
||||
return;
|
||||
if (immediatesourceentity instanceof BulletEntity && sourceentity instanceof Player) {
|
||||
if (event != null && event.isCancelable()) {
|
||||
event.setCanceled(true);
|
||||
}
|
||||
entity.hurt(new DamageSource(world.registryAccess().registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("target:gunfire"))), sourceentity), (float) amount);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -43,7 +43,11 @@ public class GunsDataProcedure {
|
|||
itemstackiterator = (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY);
|
||||
|
||||
if (itemstackiterator.is(ItemTags.create(new ResourceLocation("target:gun")))) {
|
||||
|
||||
if (itemstackiterator.getOrCreateTag().getDouble("level") >= 10) {
|
||||
itemstackiterator.getOrCreateTag().putDouble("damageadd", 1 + 0.05 * (itemstackiterator.getOrCreateTag().getDouble("level") - 10));
|
||||
} else {
|
||||
itemstackiterator.getOrCreateTag().putDouble("damageadd", 1);
|
||||
}
|
||||
if (itemstackiterator.getItem() == TargetModItems.SKS.get()) {
|
||||
itemstackiterator.getOrCreateTag().putDouble("zoomspeed", 1);
|
||||
itemstackiterator.getOrCreateTag().putDouble("zoom", 1.25);
|
||||
|
@ -52,8 +56,7 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoilx", 0.004);
|
||||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.015);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 9.5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 1.75);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 20);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 2);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 40);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 20);
|
||||
|
||||
|
@ -67,8 +70,7 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoilx", 0.0025);
|
||||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.012);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 8.5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 1.75);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 20);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 2);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 30);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 30);
|
||||
}
|
||||
|
@ -84,7 +86,6 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.01);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 7);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 2);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 20);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 40);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 55);
|
||||
itemstackiterator.getOrCreateTag().putDouble("firemode", 2);
|
||||
|
@ -98,7 +99,6 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.022);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 18);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 1.5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 10);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 60);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 8);
|
||||
|
||||
|
@ -112,7 +112,6 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.03);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 40);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 3);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 20);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 50);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 1);
|
||||
}
|
||||
|
@ -145,7 +144,6 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.026);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 2.5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 1.5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 15);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 2);
|
||||
}
|
||||
|
@ -158,7 +156,6 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.013);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 28);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 3);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 20);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 55);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 5);
|
||||
}
|
||||
|
@ -182,7 +179,6 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.011);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 7);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 2);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 20);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 45);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 30);
|
||||
}
|
||||
|
@ -196,7 +192,6 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.007);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 1.5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 1.5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 16);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 25);
|
||||
}
|
||||
|
@ -208,8 +203,7 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoilx", 0.005);
|
||||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.003);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 1.5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 9.5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 2.4);
|
||||
}
|
||||
if (itemstackiterator.getItem() == TargetModItems.HK_416.get()) {
|
||||
itemstackiterator.getOrCreateTag().putDouble("zoomspeed", 1.3);
|
||||
|
@ -221,7 +215,6 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.009);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 7.5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 2);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 20);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 45);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 30);
|
||||
}
|
||||
|
@ -237,7 +230,6 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.012);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 8.75);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 2);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 20);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 35);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 50);
|
||||
}
|
||||
|
@ -252,7 +244,6 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.018);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 70);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 3);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 20);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 40);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 4);
|
||||
}
|
||||
|
@ -266,7 +257,6 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.004);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 4.5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 1.5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 10);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 22);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 33);
|
||||
}
|
||||
|
@ -280,7 +270,6 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.005);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 8);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 2);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 20);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 40);
|
||||
itemstackiterator.getOrCreateTag().putDouble("firemode", 2);
|
||||
}
|
||||
|
@ -295,7 +284,6 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.014);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 12);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 2.5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 20);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 45);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 20);
|
||||
}
|
||||
|
@ -308,8 +296,7 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.018);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 25);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 2);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 20);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 3);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 50);
|
||||
}
|
||||
if (itemstackiterator.getItem() == TargetModItems.M_60.get()) {
|
||||
|
@ -324,7 +311,6 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.014);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 9);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 2);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 20);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 40);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 100);
|
||||
itemstackiterator.getOrCreateTag().putDouble("firemode", 2);
|
||||
|
@ -338,7 +324,6 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.015);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 18);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 2.5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 20);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 50);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 10);
|
||||
}
|
||||
|
@ -351,7 +336,6 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.011);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 16);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 2.5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 20);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 27);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 8);
|
||||
}
|
||||
|
@ -364,7 +348,6 @@ public class GunsDataProcedure {
|
|||
itemstackiterator.getOrCreateTag().putDouble("recoily", 0.03);
|
||||
itemstackiterator.getOrCreateTag().putDouble("damage", 2);
|
||||
itemstackiterator.getOrCreateTag().putDouble("headshot", 1.5);
|
||||
itemstackiterator.getOrCreateTag().putDouble("bulletlife", 20);
|
||||
itemstackiterator.getOrCreateTag().putDouble("velocity", 20);
|
||||
itemstackiterator.getOrCreateTag().putDouble("mag", 8);
|
||||
}
|
||||
|
|
|
@ -36,20 +36,12 @@ public class GunsTipsProcedure {
|
|||
String firemode = "";
|
||||
ItemStack usehand = ItemStack.EMPTY;
|
||||
if (itemstack.is(ItemTags.create(new ResourceLocation("target:gun")))) {
|
||||
if (itemstack.getOrCreateTag().getDouble("level") <= 10) {
|
||||
if (itemstack.getItem() == TargetModItems.BOCEK.get()) {
|
||||
tooltip.add(Component.literal("\u00A7l\u00A77Damage:2.4*10/24"));
|
||||
tooltip.add(Component.literal(("\u00A7l\u00A77Damage:(" + new java.text.DecimalFormat("##.##").format(2.4 * itemstack.getOrCreateTag().getDouble("damageadd")) + ")*10/"
|
||||
+ new java.text.DecimalFormat("##.##").format(24 * itemstack.getOrCreateTag().getDouble("damageadd")))));
|
||||
} else {
|
||||
tooltip.add(Component.literal(("\u00A7l\u00A77Damage:" + new java.text.DecimalFormat("##.##").format(itemstack.getOrCreateTag().getDouble("damage") + itemstack.getOrCreateTag().getDouble("adddamage")))));
|
||||
}
|
||||
} else {
|
||||
if (itemstack.getItem() == TargetModItems.BOCEK.get()) {
|
||||
tooltip.add(Component.literal(("\u00A7l\u00A77Damage:(2.4" + " + " + new java.text.DecimalFormat("##.##").format(((itemstack.getOrCreateTag().getDouble("level") - 10) / 20) * 10) + ")*10/24" + " + "
|
||||
+ new java.text.DecimalFormat("##.##").format(((itemstack.getOrCreateTag().getDouble("level") - 10) / 20) * 24))));
|
||||
} else {
|
||||
tooltip.add(Component.literal(("\u00A7l\u00A77Damage:" + new java.text.DecimalFormat("##.##").format(itemstack.getOrCreateTag().getDouble("damage") + itemstack.getOrCreateTag().getDouble("adddamage")) + " + "
|
||||
+ new java.text.DecimalFormat("##.##").format(((itemstack.getOrCreateTag().getDouble("level") - 10) / 20) * (itemstack.getOrCreateTag().getDouble("damage") + itemstack.getOrCreateTag().getDouble("adddamage"))))));
|
||||
}
|
||||
tooltip.add(Component.literal(("\u00A7l\u00A77Damage:"
|
||||
+ new java.text.DecimalFormat("##.##").format((itemstack.getOrCreateTag().getDouble("damage") + itemstack.getOrCreateTag().getDouble("adddamage")) * itemstack.getOrCreateTag().getDouble("damageadd")))));
|
||||
}
|
||||
if (itemstack.getOrCreateTag().getDouble("level") < 4) {
|
||||
tooltip.add(Component.literal(("\u00A7f\u00A7lLevel:" + new java.text.DecimalFormat("##").format(itemstack.getOrCreateTag().getDouble("level")) + " "
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
|
||||
package net.mcreator.target.procedures;
|
||||
|
||||
import net.mcreator.target.init.TargetModItems;
|
||||
import net.mcreator.target.network.TargetModVariables;
|
||||
import net.minecraft.commands.CommandSource;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.damagesource.DamageSource;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.LevelAccessor;
|
||||
|
||||
public class ProjectileHeadshotEntity {
|
||||
public static void execute(LevelAccessor world, Entity entity, Entity immediatesourceentity, Entity sourceentity) {
|
||||
if (entity == null || sourceentity == null)
|
||||
return;
|
||||
|
||||
ItemStack usehand = ItemStack.EMPTY;
|
||||
double dam = 0;
|
||||
usehand = (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY);
|
||||
{
|
||||
Entity _ent = sourceentity;
|
||||
if (!_ent.level().isClientSide() && _ent.getServer() != null) {
|
||||
_ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4,
|
||||
_ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "playsound target:headshot voice @s ~ ~ ~ 1 1");
|
||||
}
|
||||
}
|
||||
double _setval = 25;
|
||||
sourceentity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||
capability.headind = _setval;
|
||||
capability.syncPlayerVariables(sourceentity);
|
||||
});
|
||||
|
||||
if ((sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == TargetModItems.BOCEK.get()) {
|
||||
entity.hurt(new DamageSource(world.registryAccess().registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("target:gunfire"))), sourceentity),
|
||||
(0.2f * (float) ((sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("speed"))) * (float) ((sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("damageadd")) * (float) ((sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("headshot")));
|
||||
} else {
|
||||
entity.hurt(new DamageSource(world.registryAccess().registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("target:gunfire"))), sourceentity),
|
||||
((float) ((sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("adddamage")) + (float) ((sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("damage"))) * (float) ((sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("headshot")) * (float) ((sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("damageadd")));
|
||||
}
|
||||
immediatesourceentity.discard();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
|
||||
package net.mcreator.target.procedures;
|
||||
|
||||
import net.mcreator.target.init.TargetModItems;
|
||||
import net.mcreator.target.network.TargetModVariables;
|
||||
import net.minecraft.world.level.LevelAccessor;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.damagesource.DamageSource;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.commands.CommandSource;
|
||||
|
||||
public class ProjectileHitEntity {
|
||||
public static void execute(LevelAccessor world, Entity entity, Entity immediatesourceentity, Entity sourceentity) {
|
||||
if (entity == null || sourceentity == null)
|
||||
return;
|
||||
{
|
||||
Entity _ent = sourceentity;
|
||||
if (!_ent.level().isClientSide() && _ent.getServer() != null) {
|
||||
_ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4,
|
||||
_ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "playsound target:indication voice @s ~ ~ ~ 1 1");
|
||||
}
|
||||
}
|
||||
double _setval = 25;
|
||||
sourceentity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||
capability.hitind = _setval;
|
||||
capability.syncPlayerVariables(sourceentity);
|
||||
});
|
||||
|
||||
if ((sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == TargetModItems.BOCEK.get()) {
|
||||
entity.hurt(new DamageSource(world.registryAccess().registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("target:gunfire"))), sourceentity),
|
||||
(0.2f * (float) ((sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("speed"))) * (float) ((sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("damageadd")));
|
||||
} else {
|
||||
entity.hurt(new DamageSource(world.registryAccess().registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("target:gunfire"))), sourceentity),
|
||||
((float) ((sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("adddamage")) + (float) ((sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("damage"))) * (float) ((sourceentity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("damageadd")));
|
||||
}
|
||||
immediatesourceentity.discard();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +1,7 @@
|
|||
package net.mcreator.target.procedures;
|
||||
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.GameType;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.entity.projectile.Projectile;
|
||||
import net.minecraft.world.entity.projectile.AbstractArrow;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
|
@ -16,9 +13,6 @@ import net.minecraft.client.Minecraft;
|
|||
|
||||
import net.mcreator.target.network.TargetModVariables;
|
||||
import net.mcreator.target.init.TargetModItems;
|
||||
import net.mcreator.target.init.TargetModEntities;
|
||||
import net.mcreator.target.init.TargetModAttributes;
|
||||
import net.mcreator.target.entity.BulletEntity;
|
||||
|
||||
public class SentinelFireProcedure {
|
||||
public static void execute(Entity entity) {
|
||||
|
@ -38,37 +32,6 @@ public class SentinelFireProcedure {
|
|||
usehand = (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY);
|
||||
if (usehand.getItem() == TargetModItems.SENTINEL.get() && usehand.getOrCreateTag().getDouble("reloading") == 0 && !(entity instanceof Player _plrCldCheck4 && _plrCldCheck4.getCooldowns().isOnCooldown(usehand.getItem()))
|
||||
&& usehand.getOrCreateTag().getDouble("ammo") > 0) {
|
||||
if (Math.random() < 0.5) {
|
||||
{
|
||||
double _setval = -1;
|
||||
entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||
capability.recoilhorizon = _setval;
|
||||
capability.syncPlayerVariables(entity);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
{
|
||||
double _setval = 1;
|
||||
entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||
capability.recoilhorizon = _setval;
|
||||
capability.syncPlayerVariables(entity);
|
||||
});
|
||||
}
|
||||
}
|
||||
{
|
||||
double _setval = 0.1;
|
||||
entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||
capability.recoil = _setval;
|
||||
capability.syncPlayerVariables(entity);
|
||||
});
|
||||
}
|
||||
{
|
||||
double _setval = 1;
|
||||
entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||
capability.firing = _setval;
|
||||
capability.syncPlayerVariables(entity);
|
||||
});
|
||||
}
|
||||
if (usehand.getOrCreateTag().getDouble("power") > 0) {
|
||||
if ((entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).zooming == true) {
|
||||
usehand.getOrCreateTag().putDouble("zoomfiring", 24);
|
||||
|
@ -115,25 +78,7 @@ public class SentinelFireProcedure {
|
|||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
Entity _shootFrom = entity;
|
||||
Level projectileLevel = _shootFrom.level();
|
||||
if (!projectileLevel.isClientSide()) {
|
||||
Projectile _entityToSpawn = new Object() {
|
||||
public Projectile getArrow(Level level, Entity shooter, float damage, int knockback) {
|
||||
AbstractArrow entityToSpawn = new BulletEntity(TargetModEntities.BULLET.get(), level);
|
||||
entityToSpawn.setOwner(shooter);
|
||||
entityToSpawn.setBaseDamage(damage);
|
||||
entityToSpawn.setKnockback(knockback);
|
||||
entityToSpawn.setSilent(true);
|
||||
return entityToSpawn;
|
||||
}
|
||||
}.getArrow(projectileLevel, entity, (float) ((usehand.getOrCreateTag().getDouble("damage") + usehand.getOrCreateTag().getDouble("adddamage")) / usehand.getOrCreateTag().getDouble("velocity")), 0);
|
||||
_entityToSpawn.setPos(_shootFrom.getX(), _shootFrom.getEyeY() - 0.1, _shootFrom.getZ());
|
||||
_entityToSpawn.shoot(_shootFrom.getLookAngle().x, _shootFrom.getLookAngle().y, _shootFrom.getLookAngle().z, 50, (float) ((LivingEntity) entity).getAttribute(TargetModAttributes.SPREAD.get()).getBaseValue());
|
||||
projectileLevel.addFreshEntity(_entityToSpawn);
|
||||
}
|
||||
}
|
||||
BulletfireNormalProcedure.execute(entity);
|
||||
usehand.getOrCreateTag().putDouble("crot", 20);
|
||||
if (entity instanceof Player _player)
|
||||
_player.getCooldowns().addCooldown(usehand.getItem(), 23);
|
||||
|
|
Loading…
Add table
Reference in a new issue