添加俄罗斯小摔炮

This commit is contained in:
Atsuihsio 2024-07-30 19:04:04 +08:00
parent 820f5985f0
commit 028a4803ae
21 changed files with 4078 additions and 2579 deletions

View file

@ -0,0 +1,100 @@
package net.mcreator.superbwarfare.client.model.entity;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.mcreator.superbwarfare.ModUtils;
import net.minecraft.client.model.EntityModel;
import net.minecraft.client.model.geom.ModelLayerLocation;
import net.minecraft.client.model.geom.ModelPart;
import net.minecraft.client.model.geom.PartPose;
import net.minecraft.client.model.geom.builders.*;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.Entity;
@SuppressWarnings("unused")
public class ModelRgoGrenade<T extends Entity> extends EntityModel<T> {
// This layer location should be baked with EntityRendererProvider.Context in the entity renderer and passed into this model's constructor
public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(ModUtils.MODID, "model_rgo_grenade"), "main");
public final ModelPart group;
public ModelRgoGrenade(ModelPart root) {
this.group = root.getChild("group");
}
public static LayerDefinition createBodyLayer() {
MeshDefinition meshdefinition = new MeshDefinition();
PartDefinition partdefinition = meshdefinition.getRoot();
PartDefinition group = partdefinition.addOrReplaceChild("group", CubeListBuilder.create(), PartPose.offset(0.0F, -0.0217F, 0.0F));
PartDefinition bone = group.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 2.0F, 0.0F, -3.1416F, 0.0F, 0.0F));
PartDefinition bone5 = bone.addOrReplaceChild("bone5", CubeListBuilder.create().texOffs(24, 25).addBox(-0.5375F, -13.3055F, 17.1856F, 1.075F, 0.5953F, 1.075F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 16.0295F, -17.7281F));
PartDefinition bone180_r1 = bone5.addOrReplaceChild("bone180_r1", CubeListBuilder.create().texOffs(25, 25).addBox(-1.2976F, -0.5375F, -0.5375F, 0.5953F, 1.075F, 1.075F, new CubeDeformation(0.0F))
.texOffs(24, 25).addBox(-0.5375F, 0.7024F, -0.5375F, 1.075F, 0.5953F, 1.075F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -14.0078F, 17.7231F, 0.0F, 0.0F, -0.7854F));
PartDefinition bone179_r1 = bone5.addOrReplaceChild("bone179_r1", CubeListBuilder.create().texOffs(25, 25).addBox(-0.5375F, -0.5375F, -1.2976F, 1.075F, 1.075F, 0.5953F, new CubeDeformation(0.0F))
.texOffs(24, 25).addBox(-0.5375F, 0.7024F, -0.5375F, 1.075F, 0.5953F, 1.075F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -14.0078F, 17.7231F, 0.7854F, 0.0F, 0.0F));
PartDefinition bone6 = bone.addOrReplaceChild("bone6", CubeListBuilder.create().texOffs(25, 25).addBox(-0.5375F, -15.5554F, 17.1856F, 1.075F, 0.5953F, 1.075F, new CubeDeformation(0.0F))
.texOffs(1, 24).addBox(-0.5375F, -15.5554F, 17.1856F, 1.075F, 0.5953F, 1.075F, new CubeDeformation(0.0F))
.texOffs(0, 30).addBox(-0.387F, -17.2646F, 17.3361F, 0.774F, 0.4286F, 0.774F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 16.0295F, -17.7281F));
PartDefinition bone181_r1 = bone6.addOrReplaceChild("bone181_r1", CubeListBuilder.create().texOffs(25, 25).addBox(-1.2976F, -0.5375F, -0.5375F, 0.5953F, 1.075F, 1.075F, new CubeDeformation(0.0F))
.texOffs(24, 25).addBox(-0.5375F, -1.2976F, -0.5375F, 1.075F, 0.5953F, 1.075F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -14.2578F, 17.7231F, 0.0F, 0.0F, 0.7854F));
PartDefinition bone180_r2 = bone6.addOrReplaceChild("bone180_r2", CubeListBuilder.create().texOffs(25, 25).addBox(-0.5375F, -0.5375F, -1.2976F, 1.075F, 1.075F, 0.5953F, new CubeDeformation(0.0F))
.texOffs(24, 25).addBox(-0.5375F, -1.2976F, -0.5375F, 1.075F, 0.5953F, 1.075F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -14.2578F, 17.7231F, -0.7854F, 0.0F, 0.0F));
PartDefinition bone7 = bone.addOrReplaceChild("bone7", CubeListBuilder.create().texOffs(24, 28).addBox(-1.2976F, -14.7953F, 17.1856F, 2.5953F, 1.325F, 1.075F, new CubeDeformation(0.0F))
.texOffs(19, 28).addBox(-0.5375F, -14.7953F, 16.4255F, 1.075F, 1.325F, 2.5953F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 16.0295F, -17.7281F));
PartDefinition bone180_r3 = bone7.addOrReplaceChild("bone180_r3", CubeListBuilder.create().texOffs(19, 24).addBox(-0.5375F, -0.7875F, -1.2976F, 1.075F, 1.325F, 2.5953F, new CubeDeformation(0.0F))
.texOffs(24, 24).addBox(-1.2976F, -0.7875F, -0.5375F, 2.5953F, 1.325F, 1.075F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -14.0078F, 17.7231F, 0.0F, 0.7854F, 0.0F));
PartDefinition group3 = bone.addOrReplaceChild("group3", CubeListBuilder.create().texOffs(0, 30).addBox(-1.337F, -17.1111F, -7.7855F, 0.674F, 1.104F, 0.5686F, new CubeDeformation(0.0F))
.texOffs(0, 30).addBox(-1.337F, -16.0911F, -7.263F, 0.674F, 0.804F, 0.4686F, new CubeDeformation(0.0F))
.texOffs(0, 30).addBox(-1.587F, -15.2871F, -7.463F, 1.174F, 0.5F, 0.6686F, new CubeDeformation(0.0F))
.texOffs(12, 29).addBox(-1.487F, -15.1871F, -6.7944F, 0.974F, 0.3F, 0.0117F, new CubeDeformation(0.0F)), PartPose.offset(1.0F, 15.3733F, 8.1462F));
PartDefinition bone183_r1 = group3.addOrReplaceChild("bone183_r1", CubeListBuilder.create().texOffs(2, 27).addBox(-0.337F, -0.3093F, -0.427F, 0.674F, 0.3186F, 0.254F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, -16.4252F, -8.0809F, -0.3927F, 0.0F, 0.0F));
PartDefinition bone182_r1 = group3.addOrReplaceChild("bone182_r1", CubeListBuilder.create().texOffs(0, 30).addBox(-0.337F, -0.427F, -0.3093F, 0.674F, 0.554F, 0.6186F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, -16.5982F, -7.9079F, 0.3927F, 0.0F, 0.0F));
PartDefinition bone183_r2 = group3.addOrReplaceChild("bone183_r2", CubeListBuilder.create().texOffs(13, 28).addBox(-0.362F, -0.552F, 0.1843F, 0.724F, 0.1F, 0.1F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, -15.5821F, -6.7683F, 0.7854F, 0.0F, 0.0F));
PartDefinition bone182_r2 = group3.addOrReplaceChild("bone182_r2", CubeListBuilder.create().texOffs(0, 30).addBox(-0.337F, -0.617F, 0.3657F, 0.674F, 1.104F, 0.5686F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, -16.1835F, -7.844F, 0.3927F, 0.0F, 0.0F));
PartDefinition group4 = bone.addOrReplaceChild("group4", CubeListBuilder.create().texOffs(1, 29).addBox(-0.9343F, -13.817F, -8.392F, 1.8686F, 1.554F, 0.774F, new CubeDeformation(0.0F))
.texOffs(0, 27).addBox(-0.387F, -13.817F, -8.9393F, 0.774F, 1.554F, 1.8686F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 13.1292F, 8.0F));
PartDefinition bone181_r2 = group4.addOrReplaceChild("bone181_r2", CubeListBuilder.create().texOffs(2, 27).addBox(-0.387F, -0.567F, -0.9343F, 0.774F, 1.554F, 1.8686F, new CubeDeformation(0.0F))
.texOffs(0, 29).addBox(-0.9343F, -0.567F, -0.387F, 1.8686F, 1.554F, 0.774F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -13.25F, -8.005F, 0.0F, 0.7854F, 0.0F));
PartDefinition group5 = bone.addOrReplaceChild("group5", CubeListBuilder.create().texOffs(0, 24).addBox(-0.4218F, -12.5194F, -9.0234F, 0.8437F, 0.2589F, 2.0368F, new CubeDeformation(0.0F))
.texOffs(0, 30).addBox(-1.0184F, -12.5194F, -8.4268F, 2.0368F, 0.2589F, 0.8437F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 13.1292F, 8.0F));
PartDefinition bone184_r1 = group5.addOrReplaceChild("bone184_r1", CubeListBuilder.create().texOffs(0, 30).addBox(-1.0184F, 0.817F, -0.4218F, 2.0368F, 0.2589F, 0.8437F, new CubeDeformation(0.0F))
.texOffs(0, 29).addBox(-0.4218F, 0.817F, -1.0184F, 0.8437F, 0.2589F, 2.0368F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -13.3364F, -8.005F, 0.0F, 0.7854F, 0.0F));
PartDefinition group6 = bone.addOrReplaceChild("group6", CubeListBuilder.create(), PartPose.offset(0.0F, 12.9492F, 8.0F));
PartDefinition bone179_r2 = group6.addOrReplaceChild("bone179_r2", CubeListBuilder.create().texOffs(0, 30).addBox(-0.387F, -0.9343F, -0.387F, 0.774F, 0.4286F, 0.774F, new CubeDeformation(0.0F))
.texOffs(0, 30).addBox(-0.387F, -0.387F, -0.9343F, 0.774F, 0.774F, 0.4286F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -13.25F, -8.005F, -0.7854F, 0.0F, 0.0F));
PartDefinition bone180_r4 = group6.addOrReplaceChild("bone180_r4", CubeListBuilder.create().texOffs(0, 30).addBox(-0.387F, -0.9343F, -0.387F, 0.774F, 0.4286F, 0.774F, new CubeDeformation(0.0F))
.texOffs(0, 30).addBox(-0.9343F, -0.387F, -0.387F, 0.4286F, 0.774F, 0.774F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -13.25F, -8.005F, 0.0F, 0.0F, 0.7854F));
return LayerDefinition.create(meshdefinition, 32, 32);
}
@Override
public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
}
@Override
public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
group.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha);
}
}

View file

@ -3,8 +3,8 @@ package net.mcreator.superbwarfare.client.renderer.entity;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Axis; import com.mojang.math.Axis;
import net.mcreator.superbwarfare.client.model.entity.ModelGrenade; import net.mcreator.superbwarfare.client.model.entity.ModelRgoGrenade;
import net.mcreator.superbwarfare.entity.DroneGrenadeEntity; import net.mcreator.superbwarfare.entity.RgoGrenadeEntity;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRenderer;
@ -13,17 +13,17 @@ import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
public class DroneGrenadeRenderer extends EntityRenderer<DroneGrenadeEntity> { public class RgoGrenadeRenderer extends EntityRenderer<RgoGrenadeEntity> {
private static final ResourceLocation texture = new ResourceLocation("superbwarfare:textures/entity/grenade.png"); private static final ResourceLocation texture = new ResourceLocation("superbwarfare:textures/entity/rgo_grenade.png");
private final ModelGrenade<DroneGrenadeEntity> model; private final ModelRgoGrenade<RgoGrenadeEntity> model;
public DroneGrenadeRenderer(EntityRendererProvider.Context context) { public RgoGrenadeRenderer(EntityRendererProvider.Context context) {
super(context); super(context);
model = new ModelGrenade<>(context.bakeLayer(ModelGrenade.LAYER_LOCATION)); model = new ModelRgoGrenade<>(context.bakeLayer(ModelRgoGrenade.LAYER_LOCATION));
} }
@Override @Override
public void render(DroneGrenadeEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) { public void render(RgoGrenadeEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
VertexConsumer vb = bufferIn.getBuffer(RenderType.entityCutout(this.getTextureLocation(entityIn))); VertexConsumer vb = bufferIn.getBuffer(RenderType.entityCutout(this.getTextureLocation(entityIn)));
poseStack.pushPose(); poseStack.pushPose();
poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90)); poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90));
@ -34,7 +34,7 @@ public class DroneGrenadeRenderer extends EntityRenderer<DroneGrenadeEntity> {
} }
@Override @Override
public ResourceLocation getTextureLocation(DroneGrenadeEntity entity) { public ResourceLocation getTextureLocation(RgoGrenadeEntity entity) {
return texture; return texture;
} }
} }

View file

@ -295,10 +295,10 @@ public class DroneEntity extends PathfinderMob implements GeoEntity {
private void droneDrop(Player player) { private void droneDrop(Player player) {
Level level = player.level(); Level level = player.level();
if (!level.isClientSide()) { if (!level.isClientSide()) {
DroneGrenadeEntity droneGrenadeEntity = new DroneGrenadeEntity(player, level); RgoGrenadeEntity rgoGrenadeEntity = new RgoGrenadeEntity(player, level,80);
droneGrenadeEntity.setPos(this.getX(), this.getY(), this.getZ()); rgoGrenadeEntity.setPos(this.getX(), this.getY(), this.getZ());
droneGrenadeEntity.shoot(0, -1, 0, 0, 0.5f); rgoGrenadeEntity.shoot(0, -1, 0, 0, 0.5f);
level.addFreshEntity(droneGrenadeEntity); level.addFreshEntity(rgoGrenadeEntity);
} }
} }
@ -347,11 +347,17 @@ public class DroneEntity extends PathfinderMob implements GeoEntity {
} }
} else if (stack.isEmpty() && player.isCrouching()) { } else if (stack.isEmpty() && player.isCrouching()) {
ItemHandlerHelper.giveItemToPlayer(player, new ItemStack(ModItems.DRONE.get())); ItemHandlerHelper.giveItemToPlayer(player, new ItemStack(ModItems.DRONE.get()));
for (int index0 = 0; index0 < this.entityData.get(AMMO); index0++) { for (int index0 = 0; index0 < this.entityData.get(AMMO); index0++) {
ItemHandlerHelper.giveItemToPlayer(player, new ItemStack(ModItems.GRENADE_40MM.get())); ItemHandlerHelper.giveItemToPlayer(player, new ItemStack(ModItems.RGO_GRENADE.get()));
} }
if (this.entityData.get(KAMIKAZE)) {
ItemHandlerHelper.giveItemToPlayer(player, new ItemStack(ModItems.MORTAR_SHELLS.get()));
}
if (!this.level().isClientSide()) this.discard(); if (!this.level().isClientSide()) this.discard();
} else if (stack.getItem() == ModItems.GRENADE_40MM.get() && !this.entityData.get(KAMIKAZE)) { } else if (stack.getItem() == ModItems.RGO_GRENADE.get() && !this.entityData.get(KAMIKAZE)) {
if (!player.isCreative()) { if (!player.isCreative()) {
stack.shrink(1); stack.shrink(1);
} }

View file

@ -1,96 +0,0 @@
package net.mcreator.superbwarfare.entity;
import net.mcreator.superbwarfare.init.ModDamageTypes;
import net.mcreator.superbwarfare.init.ModEntities;
import net.mcreator.superbwarfare.init.ModItems;
import net.mcreator.superbwarfare.tools.CustomExplosion;
import net.mcreator.superbwarfare.tools.ParticleTool;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener;
import net.minecraft.server.level.ServerLevel;
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.minecraft.world.level.Explosion;
import net.minecraft.world.level.Level;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.EntityHitResult;
import net.minecraftforge.network.NetworkHooks;
import net.minecraftforge.network.PlayMessages;
public class DroneGrenadeEntity extends ThrowableItemProjectile {
public DroneGrenadeEntity(EntityType<? extends DroneGrenadeEntity> type, Level world) {
super(type, world);
}
public DroneGrenadeEntity(EntityType<? extends DroneGrenadeEntity> type, LivingEntity entity, Level world) {
super(type, entity, world);
}
public DroneGrenadeEntity(LivingEntity entity, Level level) {
super(ModEntities.DRONE_GRENADE.get(), entity, level);
}
public DroneGrenadeEntity(PlayMessages.SpawnEntity spawnEntity, Level level) {
this(ModEntities.DRONE_GRENADE.get(), level);
}
@Override
public Packet<ClientGamePacketListener> getAddEntityPacket() {
return NetworkHooks.getEntitySpawningPacket(this);
}
@Override
protected Item getDefaultItem() {
return ModItems.GRENADE_40MM.get();
}
@Override
protected void onHitEntity(EntityHitResult result) {
if (this.level() instanceof ServerLevel) {
causeExplode();
}
}
@Override
public void onHitBlock(BlockHitResult blockHitResult) {
super.onHitBlock(blockHitResult);
if (this.level() instanceof ServerLevel) {
causeExplode();
}
}
@Override
public void tick() {
super.tick();
if (!this.level().isClientSide() && this.level() instanceof ServerLevel serverLevel) {
ParticleTool.sendParticle(serverLevel, ParticleTypes.SMOKE, this.getX(), this.getY(), this.getZ(),
1, 0, 0, 0, 0.01, true);
}
if (this.tickCount > 200 || this.isInWater()) {
if (this.level() instanceof ServerLevel) {
causeExplode();
}
}
}
private void causeExplode() {
CustomExplosion explosion = new CustomExplosion(this.level(), this,
ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), this, this.getOwner()), 55,
this.getX(), this.getY(), this.getZ(), 6.5f, Explosion.BlockInteraction.KEEP).setDamageMultiplier(1);
explosion.explode();
net.minecraftforge.event.ForgeEventFactory.onExplosionStart(this.level(), explosion);
explosion.finalizeExplosion(false);
ParticleTool.spawnMediumExplosionParticles(this.level(), this.position());
this.discard();
}
@Override
protected float getGravity() {
return 0.07F;
}
}

View file

@ -1,8 +1,11 @@
package net.mcreator.superbwarfare.entity; package net.mcreator.superbwarfare.entity;
import net.mcreator.superbwarfare.ModUtils;
import net.mcreator.superbwarfare.init.ModDamageTypes; import net.mcreator.superbwarfare.init.ModDamageTypes;
import net.mcreator.superbwarfare.init.ModEntities; import net.mcreator.superbwarfare.init.ModEntities;
import net.mcreator.superbwarfare.init.ModItems; import net.mcreator.superbwarfare.init.ModItems;
import net.mcreator.superbwarfare.init.ModSounds;
import net.mcreator.superbwarfare.network.message.ClientIndicatorMessage;
import net.mcreator.superbwarfare.tools.CustomExplosion; import net.mcreator.superbwarfare.tools.CustomExplosion;
import net.mcreator.superbwarfare.tools.ParticleTool; import net.mcreator.superbwarfare.tools.ParticleTool;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
@ -11,6 +14,7 @@ import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener; import net.minecraft.network.protocol.game.ClientGamePacketListener;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
@ -25,6 +29,7 @@ import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.EntityHitResult;
import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.HitResult;
import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.NetworkHooks;
import net.minecraftforge.network.PacketDistributor;
import net.minecraftforge.network.PlayMessages; import net.minecraftforge.network.PlayMessages;
public class HandGrenadeEntity extends ThrowableItemProjectile { public class HandGrenadeEntity extends ThrowableItemProjectile {
@ -77,6 +82,14 @@ public class HandGrenadeEntity extends ThrowableItemProjectile {
EntityHitResult entityResult = (EntityHitResult) result; EntityHitResult entityResult = (EntityHitResult) result;
Entity entity = entityResult.getEntity(); Entity entity = entityResult.getEntity();
if (this.getOwner() instanceof LivingEntity living) {
if (!living.level().isClientSide() && living instanceof ServerPlayer player) {
living.level().playSound(null, living.blockPosition(), ModSounds.INDICATION.get(), SoundSource.VOICE, 1, 1);
ModUtils.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> player), new ClientIndicatorMessage(0, 5));
}
}
double speed_e = this.getDeltaMovement().length(); double speed_e = this.getDeltaMovement().length();
if (speed_e > 0.1) { if (speed_e > 0.1) {
entity.hurt(entity.damageSources().thrown(this, this.getOwner()), 1.0F); entity.hurt(entity.damageSources().thrown(this, this.getOwner()), 1.0F);

View file

@ -0,0 +1,156 @@
package net.mcreator.superbwarfare.entity;
import net.mcreator.superbwarfare.ModUtils;
import net.mcreator.superbwarfare.init.ModDamageTypes;
import net.mcreator.superbwarfare.init.ModEntities;
import net.mcreator.superbwarfare.init.ModItems;
import net.mcreator.superbwarfare.init.ModSounds;
import net.mcreator.superbwarfare.network.message.ClientIndicatorMessage;
import net.mcreator.superbwarfare.tools.CustomExplosion;
import net.mcreator.superbwarfare.tools.ParticleTool;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.entity.Entity;
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.minecraft.world.level.Explosion;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.EntityHitResult;
import net.minecraft.world.phys.HitResult;
import net.minecraftforge.network.NetworkHooks;
import net.minecraftforge.network.PacketDistributor;
import net.minecraftforge.network.PlayMessages;
public class RgoGrenadeEntity extends ThrowableItemProjectile {
private int fuse = 80;
public RgoGrenadeEntity(EntityType<? extends RgoGrenadeEntity> type, Level world) {
super(type, world);
}
public RgoGrenadeEntity(EntityType<? extends RgoGrenadeEntity> type, LivingEntity entity, Level world) {
super(type, entity, world);
}
public RgoGrenadeEntity(LivingEntity entity, Level level, int fuse) {
super(ModEntities.RGO_GRENADE.get(), entity, level);
this.fuse = fuse;
}
public RgoGrenadeEntity(PlayMessages.SpawnEntity spawnEntity, Level level) {
this(ModEntities.RGO_GRENADE.get(), level);
}
@Override
public Packet<ClientGamePacketListener> getAddEntityPacket() {
return NetworkHooks.getEntitySpawningPacket(this);
}
@Override
protected Item getDefaultItem() {
return ModItems.RGO_GRENADE.get();
}
@Override
protected void onHit(HitResult result) {
switch (result.getType()) {
case BLOCK:
BlockHitResult blockResult = (BlockHitResult) result;
BlockPos resultPos = blockResult.getBlockPos();
BlockState state = this.level().getBlockState(resultPos);
SoundEvent event = state.getBlock().getSoundType(state, this.level(), resultPos, this).getBreakSound();
double speed = this.getDeltaMovement().length();
if (speed > 0.1) {
this.level().playSound(null, result.getLocation().x, result.getLocation().y, result.getLocation().z, event, SoundSource.AMBIENT, 1.0F, 1.0F);
}
this.bounce(blockResult.getDirection());
break;
case ENTITY:
EntityHitResult entityResult = (EntityHitResult) result;
Entity entity = entityResult.getEntity();
if (this.getOwner() instanceof LivingEntity living) {
if (!living.level().isClientSide() && living instanceof ServerPlayer player) {
living.level().playSound(null, living.blockPosition(), ModSounds.INDICATION.get(), SoundSource.VOICE, 1, 1);
ModUtils.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> player), new ClientIndicatorMessage(0, 5));
}
}
double speed_e = this.getDeltaMovement().length();
if (speed_e > 0.1) {
entity.hurt(entity.damageSources().thrown(this, this.getOwner()), 1.0F);
}
this.bounce(Direction.getNearest(this.getDeltaMovement().x(), this.getDeltaMovement().y(), this.getDeltaMovement().z()).getOpposite());
this.setDeltaMovement(this.getDeltaMovement().multiply(0.25, 1.0, 0.25));
break;
default:
break;
}
}
private void bounce(Direction direction) {
switch (direction.getAxis()) {
case X:
this.setDeltaMovement(this.getDeltaMovement().multiply(-0.5, 0.75, 0.75));
break;
case Y:
this.setDeltaMovement(this.getDeltaMovement().multiply(0.75, -0.25, 0.75));
if (this.getDeltaMovement().y() < this.getGravity()) {
this.setDeltaMovement(this.getDeltaMovement().multiply(1, 0, 1));
}
break;
case Z:
this.setDeltaMovement(this.getDeltaMovement().multiply(0.75, 0.75, -0.5));
break;
}
this.fuse = 2;
}
@Override
public void tick() {
super.tick();
--this.fuse;
if (this.fuse <= 0) {
this.discard();
if (!this.level().isClientSide) {
causeExplode();
}
}
if (!this.level().isClientSide() && this.level() instanceof ServerLevel serverLevel) {
ParticleTool.sendParticle(serverLevel, ParticleTypes.SMOKE, this.xo, this.yo, this.zo,
1, 0, 0, 0, 0.01, true);
}
}
private void causeExplode() {
CustomExplosion explosion = new CustomExplosion(this.level(), this,
ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), this, this.getOwner()), 75,
this.getX(), this.getY(), this.getZ(), 5.75f, Explosion.BlockInteraction.KEEP).setDamageMultiplier(1.25f);
explosion.explode();
net.minecraftforge.event.ForgeEventFactory.onExplosionStart(this.level(), explosion);
explosion.finalizeExplosion(false);
ParticleTool.spawnMediumExplosionParticles(this.level(), this.position());
this.discard();
}
@Override
protected float getGravity() {
return 0.07F;
}
}

View file

@ -37,8 +37,7 @@ public class ModEntities {
.setUpdateInterval(1).sized(0.5f, 0.5f)); .setUpdateInterval(1).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<GunGrenadeEntity>> GUN_GRENADE = register("projectile_gun_grenade", public static final RegistryObject<EntityType<GunGrenadeEntity>> GUN_GRENADE = register("projectile_gun_grenade",
EntityType.Builder.<GunGrenadeEntity>of(GunGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(GunGrenadeEntity::new).sized(0.5f, 0.5f)); EntityType.Builder.<GunGrenadeEntity>of(GunGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(GunGrenadeEntity::new).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<DroneGrenadeEntity>> DRONE_GRENADE = register("projectile_drone_grenade",
EntityType.Builder.<DroneGrenadeEntity>of(DroneGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(DroneGrenadeEntity::new).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<FragEntity>> FRAG = register("projectile_frag", public static final RegistryObject<EntityType<FragEntity>> FRAG = register("projectile_frag",
EntityType.Builder.<FragEntity>of(FragEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(FragEntity::new).sized(0.5f, 0.5f)); EntityType.Builder.<FragEntity>of(FragEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(FragEntity::new).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<TargetEntity>> TARGET = register("target", public static final RegistryObject<EntityType<TargetEntity>> TARGET = register("target",
@ -55,6 +54,8 @@ public class ModEntities {
EntityType.Builder.<CannonShellEntity>of(CannonShellEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(CannonShellEntity::new).sized(0.5f, 0.5f)); EntityType.Builder.<CannonShellEntity>of(CannonShellEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(CannonShellEntity::new).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<HandGrenadeEntity>> HAND_GRENADE_ENTITY = register("projectile_hand_grenade_entity", public static final RegistryObject<EntityType<HandGrenadeEntity>> HAND_GRENADE_ENTITY = register("projectile_hand_grenade_entity",
EntityType.Builder.<HandGrenadeEntity>of(HandGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(HandGrenadeEntity::new).sized(0.3f, 0.3f)); EntityType.Builder.<HandGrenadeEntity>of(HandGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(HandGrenadeEntity::new).sized(0.3f, 0.3f));
public static final RegistryObject<EntityType<RgoGrenadeEntity>> RGO_GRENADE = register("projectile_rgo_grenade",
EntityType.Builder.<RgoGrenadeEntity>of(RgoGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(RgoGrenadeEntity::new).sized(0.3f, 0.3f));
private static <T extends Entity> RegistryObject<EntityType<T>> register(String registryname, EntityType.Builder<T> entityTypeBuilder) { private static <T extends Entity> RegistryObject<EntityType<T>> register(String registryname, EntityType.Builder<T> entityTypeBuilder) {

View file

@ -25,7 +25,7 @@ public class ModEntityRenderers {
event.registerEntityRenderer(ModEntities.FRAG.get(), FragRenderer::new); event.registerEntityRenderer(ModEntities.FRAG.get(), FragRenderer::new);
event.registerEntityRenderer(ModEntities.MK_42.get(), Mk42Renderer::new); event.registerEntityRenderer(ModEntities.MK_42.get(), Mk42Renderer::new);
event.registerEntityRenderer(ModEntities.DRONE.get(), DroneRenderer::new); event.registerEntityRenderer(ModEntities.DRONE.get(), DroneRenderer::new);
event.registerEntityRenderer(ModEntities.DRONE_GRENADE.get(), DroneGrenadeRenderer::new);
event.registerEntityRenderer(ModEntities.HAND_GRENADE_ENTITY.get(), HandGrenadeEntityRenderer::new); event.registerEntityRenderer(ModEntities.HAND_GRENADE_ENTITY.get(), HandGrenadeEntityRenderer::new);
event.registerEntityRenderer(ModEntities.RGO_GRENADE.get(), RgoGrenadeRenderer::new);
} }
} }

View file

@ -70,14 +70,14 @@ public class ModItems {
public static final RegistryObject<Item> ROCKET = AMMO.register("rocket", Rocket::new); public static final RegistryObject<Item> ROCKET = AMMO.register("rocket", Rocket::new);
public static final RegistryObject<Item> HE_5_INCHES = AMMO.register("he_5_inches", He5Inches::new); public static final RegistryObject<Item> HE_5_INCHES = AMMO.register("he_5_inches", He5Inches::new);
public static final RegistryObject<Item> AP_5_INCHES = AMMO.register("ap_5_inches", Ap5Inches::new); public static final RegistryObject<Item> AP_5_INCHES = AMMO.register("ap_5_inches", Ap5Inches::new);
public static final RegistryObject<Item> HAND_GRENADE = AMMO.register("hand_grenade", HandGrenade::new);
public static final RegistryObject<Item> RGO_GRENADE = AMMO.register("rgo_grenade", RgoGrenade::new);
/** /**
* items * items
*/ */
public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, ModUtils.MODID); public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, ModUtils.MODID);
public static final RegistryObject<Item> SENPAI_SPAWN_EGG = ITEMS.register("senpai_spawn_egg", () -> new ForgeSpawnEggItem(ModEntities.SENPAI, -11584987, -14014413, new Item.Properties()));
public static final RegistryObject<Item> MK_42_SPAWN_EGG = ITEMS.register("mk42_spawn_egg", () -> new ForgeSpawnEggItem(ModEntities.MK_42, -8348258, -2630437, new Item.Properties()));
public static final RegistryObject<Item> DRONE = ITEMS.register("drone", Drone::new); public static final RegistryObject<Item> DRONE = ITEMS.register("drone", Drone::new);
public static final RegistryObject<Item> MONITOR = ITEMS.register("monitor", Monitor::new); public static final RegistryObject<Item> MONITOR = ITEMS.register("monitor", Monitor::new);
@ -114,7 +114,8 @@ public class ModItems {
public static final RegistryObject<Item> SCHEELITE = ITEMS.register("scheelite", () -> new Item(new Item.Properties())); public static final RegistryObject<Item> SCHEELITE = ITEMS.register("scheelite", () -> new Item(new Item.Properties()));
public static final RegistryObject<Item> DOG_TAG = ITEMS.register("dog_tag", DogTag::new); public static final RegistryObject<Item> DOG_TAG = ITEMS.register("dog_tag", DogTag::new);
public static final RegistryObject<Item> SHIELD_CELL = ITEMS.register("shield_cell", () -> new Item(new Item.Properties().rarity(Rarity.RARE))); public static final RegistryObject<Item> SHIELD_CELL = ITEMS.register("shield_cell", () -> new Item(new Item.Properties().rarity(Rarity.RARE)));
public static final RegistryObject<Item> HAND_GRENADE = ITEMS.register("hand_grenade", HandGrenade::new); public static final RegistryObject<Item> SENPAI_SPAWN_EGG = ITEMS.register("senpai_spawn_egg", () -> new ForgeSpawnEggItem(ModEntities.SENPAI, -11584987, -14014413, new Item.Properties()));
public static final RegistryObject<Item> MK_42_SPAWN_EGG = ITEMS.register("mk42_spawn_egg", () -> new ForgeSpawnEggItem(ModEntities.MK_42, -8348258, -2630437, new Item.Properties()));
public static final RegistryObject<Item> IRON_BARREL = ITEMS.register("iron_barrel", () -> new Item(new Item.Properties())); public static final RegistryObject<Item> IRON_BARREL = ITEMS.register("iron_barrel", () -> new Item(new Item.Properties()));
public static final RegistryObject<Item> IRON_ACTION = ITEMS.register("iron_action", () -> new Item(new Item.Properties())); public static final RegistryObject<Item> IRON_ACTION = ITEMS.register("iron_action", () -> new Item(new Item.Properties()));

View file

@ -18,5 +18,6 @@ public class ModModels {
event.registerLayerDefinition(ModelBocekArrow.LAYER_LOCATION, ModelBocekArrow::createBodyLayer); event.registerLayerDefinition(ModelBocekArrow.LAYER_LOCATION, ModelBocekArrow::createBodyLayer);
event.registerLayerDefinition(ModelClaymore.LAYER_LOCATION, ModelClaymore::createBodyLayer); event.registerLayerDefinition(ModelClaymore.LAYER_LOCATION, ModelClaymore::createBodyLayer);
event.registerLayerDefinition(ModelHandGrenade.LAYER_LOCATION, ModelHandGrenade::createBodyLayer); event.registerLayerDefinition(ModelHandGrenade.LAYER_LOCATION, ModelHandGrenade::createBodyLayer);
event.registerLayerDefinition(ModelRgoGrenade.LAYER_LOCATION, ModelRgoGrenade::createBodyLayer);
} }
} }

View file

@ -44,21 +44,22 @@ public class HandGrenade extends Item {
if (!worldIn.isClientSide) { if (!worldIn.isClientSide) {
if (entityLiving instanceof Player player) { if (entityLiving instanceof Player player) {
player.getCooldowns().addCooldown(stack.getItem(), 25);
int usingTime = this.getUseDuration(stack) - timeLeft; int usingTime = this.getUseDuration(stack) - timeLeft;
float power = Math.min(usingTime / 10.0f, 1.5f); if (usingTime > 3) {
player.getCooldowns().addCooldown(stack.getItem(), 25);
float power = Math.min(usingTime / 10.0f, 1.5f);
HandGrenadeEntity handGrenade = new HandGrenadeEntity(player, worldIn, 100 - usingTime); HandGrenadeEntity handGrenade = new HandGrenadeEntity(player, worldIn, 100 - usingTime);
handGrenade.shootFromRotation(player, player.getXRot(), player.getYRot(), 0.0f, power, 0.0f); handGrenade.shootFromRotation(player, player.getXRot(), player.getYRot(), 0.0f, power, 0.0f);
worldIn.addFreshEntity(handGrenade); worldIn.addFreshEntity(handGrenade);
if (player instanceof ServerPlayer serverPlayer) { if (player instanceof ServerPlayer serverPlayer) {
serverPlayer.level().playSound(null, serverPlayer.getOnPos(), ModSounds.GRENADE_THROW.get(), SoundSource.PLAYERS, 1, 1); serverPlayer.level().playSound(null, serverPlayer.getOnPos(), ModSounds.GRENADE_THROW.get(), SoundSource.PLAYERS, 1, 1);
} }
if (!player.isCreative()) { if (!player.isCreative()) {
stack.shrink(1); stack.shrink(1);
}
} }
} }
} }

View file

@ -1,5 +1,7 @@
package net.mcreator.superbwarfare.item; package net.mcreator.superbwarfare.item;
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.Multimap;
import net.mcreator.superbwarfare.entity.DroneEntity; import net.mcreator.superbwarfare.entity.DroneEntity;
import net.mcreator.superbwarfare.tools.ItemNBTTool; import net.mcreator.superbwarfare.tools.ItemNBTTool;
import net.mcreator.superbwarfare.tools.TooltipTool; import net.mcreator.superbwarfare.tools.TooltipTool;
@ -7,19 +9,15 @@ import net.minecraft.network.chat.Component;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.ai.attributes.Attribute;
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
import net.minecraft.world.entity.ai.attributes.Attributes;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.entity.ai.attributes.Attributes;
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
import net.minecraft.world.entity.ai.attributes.Attribute;
import net.minecraft.world.entity.EquipmentSlot;
import com.google.common.collect.Multimap;
import com.google.common.collect.ImmutableMultimap;
import org.jetbrains.annotations.NotNull;
import java.util.List; import java.util.List;
@ -89,6 +87,17 @@ public class Monitor extends Item {
super.inventoryTick(itemstack, world, entity, slot, selected); super.inventoryTick(itemstack, world, entity, slot, selected);
if (!selected) { if (!selected) {
itemstack.getOrCreateTag().putBoolean("Using",false); itemstack.getOrCreateTag().putBoolean("Using",false);
DroneEntity drone = entity.level().getEntitiesOfClass(DroneEntity.class, entity.getBoundingBox().inflate(512))
.stream().filter(e -> e.getStringUUID().equals(itemstack.getOrCreateTag().getString("LinkedDrone"))).findFirst().orElse(null);
if (drone != null) {
drone.getPersistentData().putBoolean("left", false);
drone.getPersistentData().putBoolean("right", false);
drone.getPersistentData().putBoolean("forward", false);
drone.getPersistentData().putBoolean("backward", false);
drone.getPersistentData().putBoolean("up", false);
drone.getPersistentData().putBoolean("down", false);
}
} }
} }
} }

View file

@ -0,0 +1,92 @@
package net.mcreator.superbwarfare.item;
import net.mcreator.superbwarfare.entity.RgoGrenadeEntity;
import net.mcreator.superbwarfare.init.ModDamageTypes;
import net.mcreator.superbwarfare.init.ModSounds;
import net.mcreator.superbwarfare.tools.CustomExplosion;
import net.mcreator.superbwarfare.tools.ParticleTool;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity;
import net.minecraft.world.item.UseAnim;
import net.minecraft.world.level.Explosion;
import net.minecraft.world.level.Level;
import org.jetbrains.annotations.NotNull;
public class RgoGrenade extends Item {
public RgoGrenade() {
super(new Properties().rarity(Rarity.UNCOMMON));
}
@Override
public @NotNull InteractionResultHolder<ItemStack> use(Level worldIn, Player playerIn, InteractionHand handIn) {
ItemStack stack = playerIn.getItemInHand(handIn);
playerIn.startUsingItem(handIn);
if (playerIn instanceof ServerPlayer serverPlayer) {
serverPlayer.level().playSound(null, serverPlayer.getOnPos(), ModSounds.GRENADE_PULL.get(), SoundSource.PLAYERS, 1, 1);
}
return InteractionResultHolder.consume(stack);
}
@Override
public @NotNull UseAnim getUseAnimation(@NotNull ItemStack stack) {
return UseAnim.SPEAR;
}
@Override
public void releaseUsing(ItemStack stack, Level worldIn, LivingEntity entityLiving, int timeLeft) {
if (!worldIn.isClientSide) {
if (entityLiving instanceof Player player) {
int usingTime = this.getUseDuration(stack) - timeLeft;
if (usingTime > 3) {
player.getCooldowns().addCooldown(stack.getItem(), 20);
float power = Math.min(usingTime / 8.0f, 1.8f);
RgoGrenadeEntity rgoGrenade = new RgoGrenadeEntity(player, worldIn, 80 - usingTime);
rgoGrenade.shootFromRotation(player, player.getXRot(), player.getYRot(), 0.0f, power, 0.0f);
worldIn.addFreshEntity(rgoGrenade);
if (player instanceof ServerPlayer serverPlayer) {
serverPlayer.level().playSound(null, serverPlayer.getOnPos(), ModSounds.GRENADE_THROW.get(), SoundSource.PLAYERS, 1, 1);
}
if (!player.isCreative()) {
stack.shrink(1);
}
}
}
}
}
@Override
public ItemStack finishUsingItem(ItemStack pStack, Level pLevel, LivingEntity pLivingEntity) {
if (!pLevel.isClientSide) {
CustomExplosion explosion = new CustomExplosion(pLevel, null,
ModDamageTypes.causeProjectileBoomDamage(pLevel.registryAccess(), pLivingEntity, pLivingEntity), 75,
pLivingEntity.getX(), pLivingEntity.getY(), pLivingEntity.getZ(), 5.75f, Explosion.BlockInteraction.KEEP).setDamageMultiplier(1.25f);
explosion.explode();
net.minecraftforge.event.ForgeEventFactory.onExplosionStart(pLevel, explosion);
explosion.finalizeExplosion(false);
ParticleTool.spawnMediumExplosionParticles(pLevel, pLivingEntity.position());
if (pLivingEntity instanceof Player player) {
player.getCooldowns().addCooldown(pStack.getItem(), 20);
}
}
return super.finishUsingItem(pStack, pLevel, pLivingEntity);
}
@Override
public int getUseDuration(ItemStack stack) {
return 80;
}
}

File diff suppressed because it is too large Load diff

View file

@ -129,6 +129,7 @@
"item.superbwarfare.drone": "Drone", "item.superbwarfare.drone": "Drone",
"item.superbwarfare.monitor": "Monitor", "item.superbwarfare.monitor": "Monitor",
"item.superbwarfare.hand_grenade": "Hand Grenade", "item.superbwarfare.hand_grenade": "Hand Grenade",
"item.superbwarfare.rgo_grenade": "RGO Grenade",
"attribute.superbwarfare.spread": "Spread", "attribute.superbwarfare.spread": "Spread",
@ -194,8 +195,8 @@
"entity.superbwarfare.projectile_rpg_rocket": "RPG Rocket", "entity.superbwarfare.projectile_rpg_rocket": "RPG Rocket",
"entity.superbwarfare.projectile_bocekarrow": "Arrow", "entity.superbwarfare.projectile_bocekarrow": "Arrow",
"entity.superbwarfare.projectile_taser_bullet_projectile": "Taser Electrode", "entity.superbwarfare.projectile_taser_bullet_projectile": "Taser Electrode",
"entity.superbwarfare.projectile_drone_grenade": "Grenade", "entity.superbwarfare.projectile_hand_grenade_entity": "Exploding M67 Grenade",
"entity.superbwarfare.projectile_hand_grenade_entity": "Exploding Hand Grenade", "entity.superbwarfare.projectile_rgo_grenade": "Exploding RGO Grenade",
"entity.superbwarfare.mortar": "Mortar", "entity.superbwarfare.mortar": "Mortar",
"entity.superbwarfare.target": "Target", "entity.superbwarfare.target": "Target",
"entity.superbwarfare.target_1": "Target", "entity.superbwarfare.target_1": "Target",

View file

@ -129,6 +129,7 @@
"item.superbwarfare.drone": "无人机", "item.superbwarfare.drone": "无人机",
"item.superbwarfare.monitor": "遥控器", "item.superbwarfare.monitor": "遥控器",
"item.superbwarfare.hand_grenade": "M67手榴弹", "item.superbwarfare.hand_grenade": "M67手榴弹",
"item.superbwarfare.rgo_grenade": "RGO手榴弹",
"attribute.superbwarfare.spread": "散布", "attribute.superbwarfare.spread": "散布",
@ -194,8 +195,8 @@
"entity.superbwarfare.projectile_rpg_rocket": "RPG火箭弹", "entity.superbwarfare.projectile_rpg_rocket": "RPG火箭弹",
"entity.superbwarfare.projectile_bocekarrow": "箭矢", "entity.superbwarfare.projectile_bocekarrow": "箭矢",
"entity.superbwarfare.projectile_taser_bullet_projectile": "电极", "entity.superbwarfare.projectile_taser_bullet_projectile": "电极",
"entity.superbwarfare.projectile_drone_grenade": "榴弹", "entity.superbwarfare.projectile_hand_grenade_entity": "快爆炸的M67手榴弹",
"entity.superbwarfare.projectile_hand_grenade_entity": "快爆炸的手榴弹", "entity.superbwarfare.projectile_rgo_grenade": "快爆炸的RGO手榴弹",
"entity.superbwarfare.mortar": "迫击炮", "entity.superbwarfare.mortar": "迫击炮",
"entity.superbwarfare.target": "标靶", "entity.superbwarfare.target": "标靶",
"entity.superbwarfare.target_1": "标靶", "entity.superbwarfare.target_1": "标靶",

View file

@ -298,8 +298,8 @@
"translation": [0, -2, 0] "translation": [0, -2, 0]
}, },
"gui": { "gui": {
"rotation": [-162.56, -39.63, 178.66], "rotation": [-140.06, -16.8, -135.22],
"translation": [0.25, -2.25, 0], "translation": [-1.5, -2.25, 0],
"scale": [3, 3, 3] "scale": [3, 3, 3]
}, },
"head": { "head": {

View file

@ -0,0 +1,661 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "superbwarfare:item/rgo_grenade",
"particle": "superbwarfare:item/rgo_grenade"
},
"elements": [
{
"name": "bone177",
"from": [7.4625, 6.70236, 7.4625],
"to": [8.5375, 7.29764, 8.5375],
"rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]},
"faces": {
"east": {"uv": [10, 9, 11, 9.5], "texture": "#0"},
"west": {"uv": [10, 10, 11, 10.5], "texture": "#0"},
"up": {"uv": [9, 2, 8, 1], "texture": "#0"},
"down": {"uv": [3, 8, 2, 9], "texture": "#0"}
}
},
{
"name": "bone179",
"from": [7.4625, 7.4625, 6.70236],
"to": [8.5375, 8.5375, 7.29764],
"rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [8, 2, 9, 3], "texture": "#0"},
"east": {"uv": [0, 11, 0.5, 12], "texture": "#0"},
"south": {"uv": [3, 8, 4, 9], "texture": "#0"},
"west": {"uv": [11, 0, 11.5, 1], "texture": "#0"}
}
},
{
"name": "bone177",
"from": [7.4625, 6.70236, 7.4625],
"to": [8.5375, 7.29764, 8.5375],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"up": {"uv": [9, 4, 8, 3], "texture": "#0"},
"down": {"uv": [9, 4, 8, 5], "texture": "#0"}
}
},
{
"name": "bone178",
"from": [7.4625, 6.70236, 7.4625],
"to": [8.5375, 7.29764, 8.5375],
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [1, 11, 2, 11.5], "texture": "#0"},
"south": {"uv": [11, 1, 12, 1.5], "texture": "#0"},
"up": {"uv": [6, 9, 5, 8], "texture": "#0"},
"down": {"uv": [9, 5, 8, 6], "texture": "#0"}
}
},
{
"name": "bone180",
"from": [8.70236, 7.4625, 7.4625],
"to": [9.29764, 8.5375, 8.5375],
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [2, 11, 2.5, 12], "texture": "#0"},
"east": {"uv": [6, 8, 7, 9], "texture": "#0"},
"south": {"uv": [11, 2, 11.5, 3], "texture": "#0"},
"west": {"uv": [8, 6, 9, 7], "texture": "#0"}
}
},
{
"name": "bone177",
"from": [7.4625, 8.95236, 7.4625],
"to": [8.5375, 9.54764, 8.5375],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.25, 8]},
"faces": {
"up": {"uv": [8, 9, 7, 8], "texture": "#0"},
"down": {"uv": [9, 7, 8, 8], "texture": "#0"}
}
},
{
"name": "bone178",
"from": [7.4625, 8.95236, 7.4625],
"to": [8.5375, 9.54764, 8.5375],
"rotation": {"angle": 45, "axis": "x", "origin": [8, 8.25, 8]},
"faces": {
"east": {"uv": [3, 11, 4, 11.5], "texture": "#0"},
"west": {"uv": [11, 3, 12, 3.5], "texture": "#0"},
"up": {"uv": [9, 9, 8, 8], "texture": "#0"},
"down": {"uv": [10, 0, 9, 1], "texture": "#0"}
}
},
{
"name": "bone180",
"from": [7.4625, 7.7125, 6.70236],
"to": [8.5375, 8.7875, 7.29764],
"rotation": {"angle": 45, "axis": "x", "origin": [8, 8.25, 8]},
"faces": {
"north": {"uv": [1, 9, 2, 10], "texture": "#0"},
"east": {"uv": [4, 11, 4.5, 12], "texture": "#0"},
"south": {"uv": [9, 1, 10, 2], "texture": "#0"},
"west": {"uv": [11, 4, 11.5, 5], "texture": "#0"}
}
},
{
"name": "bone178",
"from": [7.4625, 8.95236, 7.4625],
"to": [8.5375, 9.54764, 8.5375],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.25, 8]},
"faces": {
"up": {"uv": [3, 10, 2, 9], "texture": "#0"},
"down": {"uv": [10, 2, 9, 3], "texture": "#0"}
}
},
{
"name": "bone179",
"from": [7.4625, 8.95236, 7.4625],
"to": [8.5375, 9.54764, 8.5375],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8.25, 8]},
"faces": {
"north": {"uv": [5, 11, 6, 11.5], "texture": "#0"},
"south": {"uv": [11, 5, 12, 5.5], "texture": "#0"},
"up": {"uv": [4, 10, 3, 9], "texture": "#0"},
"down": {"uv": [10, 3, 9, 4], "texture": "#0"}
}
},
{
"name": "bone181",
"from": [8.70236, 7.7125, 7.4625],
"to": [9.29764, 8.7875, 8.5375],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8.25, 8]},
"faces": {
"north": {"uv": [6, 11, 6.5, 12], "texture": "#0"},
"east": {"uv": [4, 9, 5, 10], "texture": "#0"},
"south": {"uv": [11, 6, 11.5, 7], "texture": "#0"},
"west": {"uv": [9, 4, 10, 5], "texture": "#0"}
}
},
{
"name": "bone178",
"from": [7.613, 10.8282, 7.613],
"to": [8.387, 11.2568, 8.387],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 10.3225, 8]},
"faces": {
"up": {"uv": [10.75, 0.75, 10, 0], "texture": "#0"},
"down": {"uv": [10.75, 1, 10, 1.75], "texture": "#0"}
}
},
{
"name": "bone177",
"from": [6.70236, 7.4625, 7.4625],
"to": [9.29764, 8.7875, 8.5375],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"east": {"uv": [4, 5, 5, 6.25], "texture": "#0"},
"west": {"uv": [5, 4, 6, 5.25], "texture": "#0"}
}
},
{
"name": "bone178",
"from": [6.70236, 7.4625, 7.4625],
"to": [9.29764, 8.7875, 8.5375],
"rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"east": {"uv": [0, 6, 1, 7.25], "texture": "#0"},
"west": {"uv": [1, 6, 2, 7.25], "texture": "#0"},
"up": {"uv": [2.5, 1, 0, 0], "texture": "#0"},
"down": {"uv": [2.5, 1, 0, 2], "texture": "#0"}
}
},
{
"name": "bone179",
"from": [7.4625, 7.4625, 6.70236],
"to": [8.5375, 8.7875, 9.29764],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [2, 6, 3, 7.25], "texture": "#0"},
"south": {"uv": [6, 2, 7, 3.25], "texture": "#0"},
"down": {"uv": [1, 2, 0, 4.5], "texture": "#0"}
}
},
{
"name": "bone180",
"from": [7.4625, 7.4625, 6.70236],
"to": [8.5375, 8.7875, 9.29764],
"rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [3, 6, 4, 7.25], "texture": "#0"},
"south": {"uv": [6, 4, 7, 5.25], "texture": "#0"},
"up": {"uv": [2, 4.5, 1, 2], "texture": "#0"},
"down": {"uv": [3, 2, 2, 4.5], "texture": "#0"}
}
},
{
"name": "bone181",
"from": [7.663, 10.6555, 8.3657],
"to": [8.337, 11.7595, 8.9343],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 11.1425, 8]},
"faces": {
"east": {"uv": [7, 11, 7.5, 12], "texture": "#0"},
"west": {"uv": [11, 7, 11.5, 8], "texture": "#0"},
"up": {"uv": [10.75, 11.5, 10, 11], "texture": "#0"}
}
},
{
"name": "bone182",
"from": [7.663, 10.34492, 8.67293],
"to": [8.337, 11.44892, 9.24154],
"rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10.83192, 8.30724]},
"faces": {
"east": {"uv": [8, 11, 8.5, 12], "texture": "#0"},
"south": {"uv": [9, 6, 9.75, 7], "texture": "#0"},
"west": {"uv": [11, 8, 11.5, 9], "texture": "#0"},
"up": {"uv": [11.75, 10.5, 11, 10], "texture": "#0"}
}
},
{
"name": "bone183",
"from": [7.638, 10.68257, 9.56718],
"to": [8.362, 10.78257, 9.66718],
"rotation": {"angle": -45, "axis": "x", "origin": [8, 10.23057, 9.38288]},
"faces": {
"north": {"uv": [13, 2, 13.75, 2.25], "texture": "#0"},
"east": {"uv": [14, 12, 14.25, 12.25], "texture": "#0"},
"south": {"uv": [3, 13, 3.75, 13.25], "texture": "#0"},
"west": {"uv": [13, 14, 13.25, 14.25], "texture": "#0"},
"up": {"uv": [13.75, 3.25, 13, 3], "texture": "#0"},
"down": {"uv": [4.75, 13, 4, 13.25], "texture": "#0"}
}
},
{
"name": "bone184",
"from": [8.362, 10.60199, 8.98324],
"to": [8.412, 11.57599, 9.03324],
"rotation": {"angle": 0, "axis": "z", "origin": [8.387, 11.08899, 9.00824]},
"faces": {
"north": {"uv": [12, 9, 12.25, 10], "texture": "#0"},
"east": {"uv": [10, 12, 10.25, 13], "texture": "#0"},
"south": {"uv": [12, 10, 12.25, 11], "texture": "#0"},
"west": {"uv": [11, 12, 11.25, 13], "texture": "#0"},
"up": {"uv": [14.25, 13.25, 14, 13], "texture": "#0"},
"down": {"uv": [14.25, 14, 14, 14.25], "texture": "#0"}
}
},
{
"name": "bone185",
"from": [7.60831, 11.05199, 8.98324],
"to": [8.362, 11.10199, 9.03324],
"rotation": {"angle": 0, "axis": "x", "origin": [7.975, 11.07699, 9.00824]},
"faces": {
"north": {"uv": [13, 4, 13.75, 4.25], "texture": "#0"},
"east": {"uv": [0, 15, 0.25, 15.25], "texture": "#0"},
"south": {"uv": [5, 13, 5.75, 13.25], "texture": "#0"},
"west": {"uv": [15, 0, 15.25, 0.25], "texture": "#0"},
"up": {"uv": [13.75, 5.25, 13, 5], "texture": "#0"},
"down": {"uv": [6.75, 13, 6, 13.25], "texture": "#0"}
}
},
{
"name": "bone186",
"from": [7.493, 11.02824, 8.95949],
"to": [7.6205, 11.12574, 9.05699],
"rotation": {"angle": 0, "axis": "x", "origin": [7.83955, 11.07699, 9.00824]},
"faces": {
"north": {"uv": [1, 15, 1.25, 15.25], "texture": "#0"},
"east": {"uv": [15, 1, 15.25, 1.25], "texture": "#0"},
"south": {"uv": [2, 15, 2.25, 15.25], "texture": "#0"},
"west": {"uv": [15, 2, 15.25, 2.25], "texture": "#0"},
"up": {"uv": [3.25, 15.25, 3, 15], "texture": "#0"},
"down": {"uv": [15.25, 3, 15, 3.25], "texture": "#0"}
}
},
{
"name": "bone186",
"from": [7.52706, 11.05199, 8.68324],
"to": [7.57706, 11.10199, 9.33324],
"rotation": {"angle": -22.5, "axis": "z", "origin": [7.55206, 11.07699, 9.00824]},
"faces": {
"north": {"uv": [4, 15, 4.25, 15.25], "texture": "#0"},
"east": {"uv": [13, 6, 13.75, 6.25], "texture": "#0"},
"south": {"uv": [15, 4, 15.25, 4.25], "texture": "#0"},
"west": {"uv": [13, 7, 13.75, 7.25], "texture": "#0"},
"up": {"uv": [13.25, 8.75, 13, 8], "texture": "#0"},
"down": {"uv": [13.25, 9, 13, 9.75], "texture": "#0"}
}
},
{
"name": "bone187",
"from": [7.29745, 10.49766, 8.68324],
"to": [7.34745, 10.54766, 9.33324],
"rotation": {"angle": -22.5, "axis": "z", "origin": [7.32245, 10.52266, 9.00824]},
"faces": {
"north": {"uv": [5, 15, 5.25, 15.25], "texture": "#0"},
"east": {"uv": [10, 13, 10.75, 13.25], "texture": "#0"},
"south": {"uv": [15, 5, 15.25, 5.25], "texture": "#0"},
"west": {"uv": [13, 10, 13.75, 10.25], "texture": "#0"},
"up": {"uv": [11.25, 13.75, 11, 13], "texture": "#0"},
"down": {"uv": [13.25, 11, 13, 11.75], "texture": "#0"}
}
},
{
"name": "bone187",
"from": [7.39312, 10.52863, 9.28324],
"to": [7.44312, 11.07863, 9.33324],
"rotation": {"angle": -22.5, "axis": "z", "origin": [7.41812, 10.75363, 9.30824]},
"faces": {
"north": {"uv": [14, 3, 14.25, 3.5], "texture": "#0"},
"east": {"uv": [4, 14, 4.25, 14.5], "texture": "#0"},
"south": {"uv": [14, 4, 14.25, 4.5], "texture": "#0"},
"west": {"uv": [5, 14, 5.25, 14.5], "texture": "#0"},
"up": {"uv": [6.25, 15.25, 6, 15], "texture": "#0"},
"down": {"uv": [15.25, 6, 15, 6.25], "texture": "#0"}
}
},
{
"name": "bone188",
"from": [7.39312, 10.52863, 8.68324],
"to": [7.44312, 11.07863, 8.73324],
"rotation": {"angle": -22.5, "axis": "z", "origin": [7.41812, 10.75363, 8.70824]},
"faces": {
"north": {"uv": [14, 5, 14.25, 5.5], "texture": "#0"},
"east": {"uv": [6, 14, 6.25, 14.5], "texture": "#0"},
"south": {"uv": [14, 6, 14.25, 6.5], "texture": "#0"},
"west": {"uv": [7, 14, 7.25, 14.5], "texture": "#0"},
"up": {"uv": [7.25, 15.25, 7, 15], "texture": "#0"},
"down": {"uv": [15.25, 7, 15, 7.25], "texture": "#0"}
}
},
{
"name": "bone183",
"from": [7.763, 10.14492, 9.24154],
"to": [8.237, 11.24892, 9.29154],
"rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10.83192, 8.30724]},
"faces": {
"north": {"uv": [9, 11, 9.5, 12], "texture": "#0"},
"east": {"uv": [12, 11, 12.25, 12], "texture": "#0"},
"south": {"uv": [11, 9, 11.5, 10], "texture": "#0"},
"west": {"uv": [12, 12, 12.25, 13], "texture": "#0"},
"up": {"uv": [14.5, 7.25, 14, 7], "texture": "#0"},
"down": {"uv": [8.5, 14, 8, 14.25], "texture": "#0"}
}
},
{
"name": "bone184",
"from": [7.763, 8.94771, 9.69848],
"to": [8.237, 9.05171, 9.74848],
"rotation": {"angle": -22.5, "axis": "x", "origin": [8, 8.53471, 8.76418]},
"faces": {
"north": {"uv": [14, 8, 14.5, 8.25], "texture": "#0"},
"east": {"uv": [8, 15, 8.25, 15.25], "texture": "#0"},
"south": {"uv": [9, 14, 9.5, 14.25], "texture": "#0"},
"west": {"uv": [15, 8, 15.25, 8.25], "texture": "#0"},
"up": {"uv": [14.5, 9.25, 14, 9], "texture": "#0"},
"down": {"uv": [10.5, 14, 10, 14.25], "texture": "#0"}
}
},
{
"name": "bone184",
"from": [7.763, 9.3699, 9.42951],
"to": [8.237, 10.5739, 9.47951],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 10.0569, 8.49521]},
"faces": {
"north": {"uv": [7, 9, 7.5, 10.25], "texture": "#0"},
"east": {"uv": [7, 12, 7.25, 13.25], "texture": "#0"},
"south": {"uv": [9, 7, 9.5, 8.25], "texture": "#0"},
"west": {"uv": [12, 7, 12.25, 8.25], "texture": "#0"},
"up": {"uv": [14.5, 10.25, 14, 10], "texture": "#0"},
"down": {"uv": [11.5, 14, 11, 14.25], "texture": "#0"}
}
},
{
"name": "bone185",
"from": [7.763, 7.98895, 9.46551],
"to": [8.237, 9.29295, 9.51551],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 8.77595, 8.53121]},
"faces": {
"north": {"uv": [8, 9, 8.5, 10.25], "texture": "#0"},
"east": {"uv": [8, 12, 8.25, 13.25], "texture": "#0"},
"south": {"uv": [9, 9, 9.5, 10.25], "texture": "#0"},
"west": {"uv": [9, 12, 9.25, 13.25], "texture": "#0"},
"up": {"uv": [14.5, 11.25, 14, 11], "texture": "#0"},
"down": {"uv": [12.5, 14, 12, 14.25], "texture": "#0"}
}
},
{
"name": "bone183",
"from": [7.663, 9.93554, 8.88818],
"to": [8.337, 10.73954, 9.35678],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 10.12254, 8.42248]},
"faces": {
"east": {"uv": [11, 11, 11.5, 11.75], "texture": "#0"},
"south": {"uv": [2, 10, 2.75, 10.75], "texture": "#0"},
"west": {"uv": [0, 12, 0.5, 12.75], "texture": "#0"},
"up": {"uv": [12.75, 0.5, 12, 0], "texture": "#0"}
}
},
{
"name": "bone184",
"from": [7.413, 9.43554, 8.68818],
"to": [8.587, 9.93554, 9.35678],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 10.12254, 8.42248]},
"faces": {
"east": {"uv": [1, 12, 1.75, 12.5], "texture": "#0"},
"south": {"uv": [0, 10, 1.25, 10.5], "texture": "#0"},
"west": {"uv": [12, 1, 12.75, 1.5], "texture": "#0"},
"up": {"uv": [6.25, 9.75, 5, 9], "texture": "#0"},
"down": {"uv": [10.25, 5, 9, 5.75], "texture": "#0"}
}
},
{
"name": "bone185",
"from": [7.513, 9.53554, 9.35678],
"to": [8.487, 9.83554, 9.3685],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 10.12254, 8.42248]},
"faces": {
"east": {"uv": [9, 15, 9.25, 15.25], "texture": "#0"},
"south": {"uv": [0, 13, 1, 13.25], "texture": "#0"},
"west": {"uv": [15, 9, 15.25, 9.25], "texture": "#0"},
"up": {"uv": [14, 0.25, 13, 0], "texture": "#0"},
"down": {"uv": [2, 13, 1, 13.25], "texture": "#0"}
}
},
{
"name": "bone182",
"from": [7.663, 11.11964, 7.93405],
"to": [8.337, 11.67364, 8.55265],
"rotation": {"angle": -22.5, "axis": "x", "origin": [8, 11.24664, 8.24335]},
"faces": {
"north": {"uv": [2, 12, 2.75, 12.5], "texture": "#0"},
"east": {"uv": [13, 1, 13.5, 1.5], "texture": "#0"},
"west": {"uv": [2, 13, 2.5, 13.5], "texture": "#0"},
"up": {"uv": [12.75, 2.5, 12, 2], "texture": "#0"}
}
},
{
"name": "bone183",
"from": [7.663, 11.06431, 7.64332],
"to": [8.337, 11.38291, 7.89732],
"rotation": {"angle": 22.5, "axis": "x", "origin": [8, 11.07361, 8.07032]},
"faces": {
"north": {"uv": [12, 13, 12.75, 13.25], "texture": "#0"},
"east": {"uv": [10, 15, 10.25, 15.25], "texture": "#0"},
"west": {"uv": [15, 10, 15.25, 10.25], "texture": "#0"},
"down": {"uv": [13.75, 12, 13, 12.25], "texture": "#0"}
}
},
{
"name": "bone178",
"from": [7.0657, 9.1555, 7.613],
"to": [8.9343, 10.7095, 8.387],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 10.1425, 8]},
"faces": {
"east": {"uv": [5, 6, 5.75, 7.5], "texture": "#0"},
"west": {"uv": [6, 6, 6.75, 7.5], "texture": "#0"}
}
},
{
"name": "bone179",
"from": [7.0657, 9.1555, 7.613],
"to": [8.9343, 10.7095, 8.387],
"rotation": {"angle": -45, "axis": "y", "origin": [8, 10.1425, 8]},
"faces": {
"east": {"uv": [7, 0, 7.75, 1.5], "texture": "#0"},
"west": {"uv": [7, 2, 7.75, 3.5], "texture": "#0"},
"up": {"uv": [3.75, 5.75, 2, 5], "texture": "#0"}
}
},
{
"name": "bone180",
"from": [7.613, 9.1555, 7.0657],
"to": [8.387, 10.7095, 8.9343],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 10.1425, 8]},
"faces": {
"north": {"uv": [4, 7, 4.75, 8.5], "texture": "#0"},
"south": {"uv": [7, 4, 7.75, 5.5], "texture": "#0"}
}
},
{
"name": "bone181",
"from": [7.613, 9.1555, 7.0657],
"to": [8.387, 10.7095, 8.9343],
"rotation": {"angle": -45, "axis": "y", "origin": [8, 10.1425, 8]},
"faces": {
"north": {"uv": [7, 6, 7.75, 7.5], "texture": "#0"},
"south": {"uv": [0, 8, 0.75, 9.5], "texture": "#0"},
"up": {"uv": [5.75, 3.75, 5, 2], "texture": "#0"}
}
},
{
"name": "bone181",
"from": [7.57817, 9.15307, 6.98161],
"to": [8.42183, 9.41193, 9.01839],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 10.2289, 8]},
"faces": {
"north": {"uv": [13, 13, 13.75, 13.25], "texture": "#0"},
"south": {"uv": [0, 14, 0.75, 14.25], "texture": "#0"},
"up": {"uv": [3.75, 2, 3, 0], "texture": "#0"},
"down": {"uv": [3.75, 2, 3, 4], "texture": "#0"}
}
},
{
"name": "bone182",
"from": [7.57817, 9.15307, 6.98161],
"to": [8.42183, 9.41193, 9.01839],
"rotation": {"angle": -45, "axis": "y", "origin": [8, 10.2289, 8]},
"faces": {
"north": {"uv": [14, 0, 14.75, 0.25], "texture": "#0"},
"south": {"uv": [1, 14, 1.75, 14.25], "texture": "#0"},
"up": {"uv": [4.75, 2, 4, 0], "texture": "#0"},
"down": {"uv": [4.75, 2, 4, 4], "texture": "#0"}
}
},
{
"name": "bone183",
"from": [6.98161, 9.15307, 7.57817],
"to": [9.01839, 9.41193, 8.42183],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 10.2289, 8]},
"faces": {
"east": {"uv": [14, 1, 14.75, 1.25], "texture": "#0"},
"west": {"uv": [2, 14, 2.75, 14.25], "texture": "#0"},
"up": {"uv": [5, 4.75, 3, 4], "texture": "#0"},
"down": {"uv": [2, 5, 0, 5.75], "texture": "#0"}
}
},
{
"name": "bone184",
"from": [6.98161, 9.15307, 7.57817],
"to": [9.01839, 9.41193, 8.42183],
"rotation": {"angle": -45, "axis": "y", "origin": [8, 10.2289, 8]},
"faces": {
"east": {"uv": [14, 2, 14.75, 2.25], "texture": "#0"},
"west": {"uv": [3, 14, 3.75, 14.25], "texture": "#0"},
"up": {"uv": [7, 0.75, 5, 0], "texture": "#0"},
"down": {"uv": [7, 1, 5, 1.75], "texture": "#0"}
}
},
{
"name": "bone182",
"from": [8.5057, 9.9355, 7.613],
"to": [8.9343, 10.7095, 8.387],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 10.3225, 8]},
"faces": {
"north": {"uv": [3, 12, 3.5, 12.75], "texture": "#0"},
"east": {"uv": [10, 2, 10.75, 2.75], "texture": "#0"},
"south": {"uv": [12, 3, 12.5, 3.75], "texture": "#0"},
"west": {"uv": [3, 10, 3.75, 10.75], "texture": "#0"}
}
},
{
"name": "bone180",
"from": [7.613, 10.8282, 7.613],
"to": [8.387, 11.2568, 8.387],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 10.3225, 8]},
"faces": {
"north": {"uv": [4, 12, 4.75, 12.5], "texture": "#0"},
"south": {"uv": [12, 4, 12.75, 4.5], "texture": "#0"},
"up": {"uv": [10.75, 4.75, 10, 4], "texture": "#0"},
"down": {"uv": [5.75, 10, 5, 10.75], "texture": "#0"}
}
},
{
"name": "bone181",
"from": [7.613, 9.9355, 7.0657],
"to": [8.387, 10.7095, 7.4943],
"rotation": {"angle": 45, "axis": "x", "origin": [8, 10.3225, 8]},
"faces": {
"north": {"uv": [6, 10, 6.75, 10.75], "texture": "#0"},
"east": {"uv": [5, 12, 5.5, 12.75], "texture": "#0"},
"south": {"uv": [10, 6, 10.75, 6.75], "texture": "#0"},
"west": {"uv": [12, 5, 12.5, 5.75], "texture": "#0"}
}
},
{
"name": "bone179",
"from": [7.613, 10.8282, 7.613],
"to": [8.387, 11.2568, 8.387],
"rotation": {"angle": 45, "axis": "x", "origin": [8, 10.3225, 8]},
"faces": {
"east": {"uv": [6, 12, 6.75, 12.5], "texture": "#0"},
"west": {"uv": [12, 6, 12.75, 6.5], "texture": "#0"},
"up": {"uv": [10.75, 7.75, 10, 7], "texture": "#0"},
"down": {"uv": [10.75, 8, 10, 8.75], "texture": "#0"}
}
}
],
"display": {
"firstperson_righthand": {
"rotation": [-3, -19, -7.25],
"translation": [5.5, -0.75, -3.5],
"scale": [2, 2, 2]
},
"firstperson_lefthand": {
"rotation": [-3, -19, -7.25],
"translation": [5.5, -0.75, -3.5],
"scale": [2, 2, 2]
},
"ground": {
"translation": [0, -2, 0]
},
"gui": {
"rotation": [-140.06, -16.8, -135.22],
"translation": [-2, -2.75, 0],
"scale": [2.8, 2.8, 2.8]
},
"head": {
"translation": [0, -1.75, -6.75],
"scale": [1.5, 1.5, 1.5]
},
"fixed": {
"rotation": [90, -45, 90],
"translation": [0.75, -0.5, 0],
"scale": [2, 2, 2]
}
},
"groups": [
{
"name": "group",
"origin": [8, 8, 8],
"color": 0,
"children": [
{
"name": "bone175",
"origin": [8, 7.99219, -17.72809],
"color": 2,
"children": [0, 1, 2, 3, 4]
},
{
"name": "bone175",
"origin": [8, 7.99219, -17.72809],
"color": 2,
"children": [5, 6, 7, 8, 9, 10, 11]
},
{
"name": "bone175",
"origin": [8, 7.99219, -17.72809],
"color": 2,
"children": [12, 13, 14, 15]
},
{
"name": "group",
"origin": [7, 8.64843, 8.14623],
"color": 0,
"children": [16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34]
},
{
"name": "group",
"origin": [8, 10.8925, 8],
"color": 0,
"children": [35, 36, 37, 38]
},
{
"name": "group",
"origin": [8, 10.8925, 8],
"color": 0,
"children": [39, 40, 41, 42]
},
{
"name": "group",
"origin": [8, 11.0725, 8],
"color": 0,
"children": [43, 44, 45, 46]
}
]
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB