添加MP443,重置部分武器手臂枢轴

This commit is contained in:
Atsuihsio 2025-01-09 05:29:32 +08:00
parent 8975582a11
commit b601350af7
50 changed files with 4387 additions and 697 deletions

View file

@ -1,4 +1,4 @@
// 1.20.1 2024-12-30T15:07:23.9778545 Tags for minecraft:item mod id superbwarfare
// 1.20.1 2025-01-09T04:05:02.4248154 Tags for minecraft:item mod id superbwarfare
cf8d49a8d2872286d1a9c3d4a7e1c2b7690db0b8 data/forge/tags/items/dusts.json
0fa06c2ff83bf09797e3ddff90f62d1124e645b4 data/forge/tags/items/dusts/coal_coke.json
295ddf906b7133a0558d03e9a60eea18281fe430 data/forge/tags/items/dusts/iron.json
@ -26,18 +26,18 @@ af6fd64b4a685c353f243763db268f7b2304c009 data/forge/tags/items/storage_blocks/le
30d1daa7590f7364b5bc2dc777a00caf2f5eecb0 data/forge/tags/items/storage_blocks/silver.json
3743c2790deca7e779d3e4b82f092de39b446988 data/forge/tags/items/storage_blocks/steel.json
144e54d908121dee498b2ebba3b24b09fd6f18d9 data/forge/tags/items/storage_blocks/tungsten.json
52598e22974c8da0d2852defe4c9005e1d67744b data/superbwarfare/tags/items/gun.json
62eb408544731ce4cfcd119d8a6cc74731189ac0 data/superbwarfare/tags/items/handgun.json
592381daae9fa8c2996f4cabc58850c35139cb2f data/superbwarfare/tags/items/gun.json
409af265147e812b6f6558c51f1cb83b0f61b7d3 data/superbwarfare/tags/items/handgun.json
68ec25b0ccd68abbbe2f33ab7097572c2140c9da data/superbwarfare/tags/items/launcher.json
b404c6fd99d2ca68c6738f225cb7d68ee443c10a data/superbwarfare/tags/items/machine_gun.json
a53020091752016da6602ee1b8b7e08823614344 data/superbwarfare/tags/items/military_armor.json
1ff5db892183135cbdd9c38a6b8c6e4eb287341e data/superbwarfare/tags/items/normal_gun.json
5706356c3b32de89f5d4188dd9a72665537d8c09 data/superbwarfare/tags/items/normal_gun.json
15328cd564c931cc0a4fc000596240f93a7b29a1 data/superbwarfare/tags/items/revolver.json
aaa533157491a82b8e23b2914deef67c4078cbed data/superbwarfare/tags/items/rifle.json
acd4d19dfadb71a1cec43e9c0f4a38fe8d3cf8cb data/superbwarfare/tags/items/shotgun.json
4aca0fa3f8b9f2a4920041e35e46dae7e93d5482 data/superbwarfare/tags/items/smg.json
13a23684e04832bea5dfbd2c0a9d9ed52dcb3422 data/superbwarfare/tags/items/sniper_rifle.json
202756a5a9085f5883ca34424a79c1b7831101a9 data/superbwarfare/tags/items/use_handgun_ammo.json
9af8a0147d1e920ef2a2b990bc9010367cf3b7df data/superbwarfare/tags/items/use_handgun_ammo.json
2899774c6325135847a85b09121ce25587aa275e data/superbwarfare/tags/items/use_rifle_ammo.json
acd4d19dfadb71a1cec43e9c0f4a38fe8d3cf8cb data/superbwarfare/tags/items/use_shotgun_ammo.json
13a23684e04832bea5dfbd2c0a9d9ed52dcb3422 data/superbwarfare/tags/items/use_sniper_ammo.json

View file

@ -1,4 +1,4 @@
// 1.20.1 2025-01-07T03:38:49.7324927 Item Models: superbwarfare
// 1.20.1 2025-01-09T05:18:04.2557625 Item Models: superbwarfare
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/aa_12_blueprint.json
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/ak_12_blueprint.json
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/ak_47_blueprint.json
@ -64,6 +64,7 @@ ac9c6bc308bd741ada7f19d808d0c0722fceb976 assets/superbwarfare/models/item/mortar
92ce87d9ae2ab3dbb099d39f74ceb49248fe0b1f assets/superbwarfare/models/item/mortar_shells.json
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/mosin_nagant_blueprint.json
4de8d6e0cddd28963febd35e9b66334a41a25d4c assets/superbwarfare/models/item/motor.json
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/mp_443_blueprint.json
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/m_1911_blueprint.json
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/m_4_blueprint.json
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/m_60_blueprint.json

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "superbwarfare:item/gun_blueprint"
}
}

View file

@ -3,6 +3,7 @@
"superbwarfare:taser",
"superbwarfare:glock_17",
"superbwarfare:glock_18",
"superbwarfare:mp_443",
"superbwarfare:m_1911",
"superbwarfare:abekiri",
"superbwarfare:trachelium",

View file

@ -3,6 +3,7 @@
"superbwarfare:trachelium",
"superbwarfare:glock_17",
"superbwarfare:glock_18",
"superbwarfare:m_1911"
"superbwarfare:m_1911",
"superbwarfare:mp_443"
]
}

View file

@ -25,6 +25,7 @@
"superbwarfare:m_1911",
"superbwarfare:qbz_95",
"superbwarfare:k_98",
"superbwarfare:mosin_nagant"
"superbwarfare:mosin_nagant",
"superbwarfare:mp_443"
]
}

View file

@ -3,6 +3,7 @@
"superbwarfare:glock_17",
"superbwarfare:glock_18",
"superbwarfare:m_1911",
"superbwarfare:vector"
"superbwarfare:vector",
"superbwarfare:mp_443"
]
}

View file

@ -1,10 +1,11 @@
package com.atsuishio.superbwarfare.client;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.tools.GunsTool;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import net.minecraft.client.model.geom.ModelPart;
import net.minecraft.util.Mth;
import net.minecraft.world.item.ItemStack;
import software.bernie.geckolib.cache.object.GeoBone;
import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
@ -28,6 +29,22 @@ public class AnimationHelper {
model.zRot = 0.0f;
}
public static void renderPartOverBone2(ModelPart model, GeoBone bone, PoseStack stack, VertexConsumer buffer, int packedLightIn, int packedOverlayIn, float alpha) {
renderPartOverBone2(model, bone, stack, buffer, packedLightIn, packedOverlayIn, 1.0f, 1.0f, 1.0f, alpha);
}
public static void renderPartOverBone2(ModelPart model, GeoBone bone, PoseStack stack, VertexConsumer buffer, int packedLightIn, int packedOverlayIn, float r, float g, float b, float a) {
setupModelFromBone2(model, bone);
model.render(stack, buffer, packedLightIn, packedOverlayIn, r, g, b, a);
}
public static void setupModelFromBone2(ModelPart model, GeoBone bone) {
model.setPos(bone.getPivotX(), bone.getPivotY() + 7, bone.getPivotZ());
model.xRot = 0.0f;
model.yRot = 180 * Mth.DEG_TO_RAD;
model.zRot = 180 * Mth.DEG_TO_RAD;
}
public static void handleShellsAnimation(AnimationProcessor<?> animationProcessor, float x, float y) {
CoreGeoBone shell1 = animationProcessor.getBone("shell1");
CoreGeoBone shell2 = animationProcessor.getBone("shell2");

View file

@ -22,4 +22,12 @@ public class ModRenderTypes extends RenderType {
.setCullState(NO_CULL).setOverlayState(OVERLAY).setWriteMaskState(COLOR_WRITE).createCompositeState(false);
return RenderType.create("laser", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 256, true, false, state);
});
public static final Function<ResourceLocation, RenderType> ILLUMINATED = Util.memoize((location) -> {
TextureStateShard shard = new RenderStateShard.TextureStateShard(location, false, false);
RenderType.CompositeState state = RenderType.CompositeState.builder().setTextureState(shard)
.setShaderState(RENDERTYPE_ENTITY_TRANSLUCENT_EMISSIVE_SHADER).setTransparencyState(ADDITIVE_TRANSPARENCY)
.setCullState(NO_CULL).setOverlayState(NO_OVERLAY).createCompositeState(false);
return RenderType.create("illuminated", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 256, true, false, state);
});
}

View file

@ -0,0 +1,27 @@
package com.atsuishio.superbwarfare.client.layer;
import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.item.gun.handgun.Mp443Item;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.resources.ResourceLocation;
import software.bernie.geckolib.cache.object.BakedGeoModel;
import software.bernie.geckolib.renderer.GeoRenderer;
import software.bernie.geckolib.renderer.layer.GeoRenderLayer;
public class Mp443Layer extends GeoRenderLayer<Mp443Item> {
private static final ResourceLocation LAYER = new ResourceLocation(ModUtils.MODID, "textures/item/mp443_e.png");
public Mp443Layer(GeoRenderer<Mp443Item> itemGeoRenderer) {
super(itemGeoRenderer);
}
@Override
public void render(PoseStack poseStack, Mp443Item animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) {
RenderType glowRenderType = RenderType.eyes(LAYER);
getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, 1, 1, 1, 1);
}
}

View file

@ -0,0 +1,28 @@
package com.atsuishio.superbwarfare.client.layer;
import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.client.ModRenderTypes;
import com.atsuishio.superbwarfare.item.gun.handgun.Mp443Item;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.resources.ResourceLocation;
import software.bernie.geckolib.cache.object.BakedGeoModel;
import software.bernie.geckolib.renderer.GeoRenderer;
import software.bernie.geckolib.renderer.layer.GeoRenderLayer;
public class Mp443LightLayer extends GeoRenderLayer<Mp443Item> {
private static final ResourceLocation LAYER = new ResourceLocation(ModUtils.MODID, "textures/item/mp443_light_e.png");
public Mp443LightLayer(GeoRenderer<Mp443Item> itemGeoRenderer) {
super(itemGeoRenderer);
}
@Override
public void render(PoseStack poseStack, Mp443Item animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) {
RenderType glowRenderType = ModRenderTypes.ILLUMINATED.apply(LAYER);
getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, 1, 1, 1, 1);
}
}

View file

@ -0,0 +1,146 @@
package com.atsuishio.superbwarfare.client.model.item;
import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.client.AnimationHelper;
import com.atsuishio.superbwarfare.client.overlay.CrossHairOverlay;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.gun.handgun.Mp443Item;
import com.atsuishio.superbwarfare.tools.GunsTool;
import net.minecraft.client.Minecraft;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
import software.bernie.geckolib.core.animation.AnimationState;
import software.bernie.geckolib.model.GeoModel;
public class Mp443ItemModel extends GeoModel<Mp443Item> {
@Override
public ResourceLocation getAnimationResource(Mp443Item animatable) {
return ModUtils.loc("animations/glock17.animation.json");
}
@Override
public ResourceLocation getModelResource(Mp443Item animatable) {
return ModUtils.loc("geo/mp443.geo.json");
}
@Override
public ResourceLocation getTextureResource(Mp443Item animatable) {
return ModUtils.loc("textures/item/mp443.png");
}
@Override
public void setCustomAnimations(Mp443Item animatable, long instanceId, AnimationState animationState) {
CoreGeoBone gun = getAnimationProcessor().getBone("bone");
CoreGeoBone shen = getAnimationProcessor().getBone("shen");
CoreGeoBone slide = getAnimationProcessor().getBone("huatao");
CoreGeoBone bullet = getAnimationProcessor().getBone("bullet");
CoreGeoBone hammer = getAnimationProcessor().getBone("trigger");
Player player = Minecraft.getInstance().player;
if (player == null) return;
ItemStack stack = player.getMainHandItem();
if (!stack.is(ModTags.Items.GUN)) return;
float times = 0.6f * (float) Math.min(Minecraft.getInstance().getDeltaFrameTime(), 0.8);
double zt = ClientEventHandler.zoomTime;
double zp = ClientEventHandler.zoomPos;
double zpz = ClientEventHandler.zoomPosZ;
double swayX = ClientEventHandler.swayX;
double swayY = ClientEventHandler.swayY;
float moveRotZ = (float) ClientEventHandler.moveRotZ;
float movePosX = (float) ClientEventHandler.movePosX;
float movePosY = (float) ClientEventHandler.movePosY;
double mph = ClientEventHandler.movePosHorizon;
double vY = ClientEventHandler.velocityY;
double turnRotX = ClientEventHandler.turnRot[0];
double turnRotY = ClientEventHandler.turnRot[1];
double turnRotZ = ClientEventHandler.turnRot[2];
double fpz = ClientEventHandler.firePosZ * 20 * times;
double fp = ClientEventHandler.firePos;
double fr = ClientEventHandler.fireRot;
gun.setPosX(2.23f * (float) zp);
gun.setPosY(3.25f * (float) zp - (float) (0.2f * zpz));
gun.setPosZ(5f * (float) zp + (float) (0.3f * zpz));
gun.setScaleZ(1f - (0.35f * (float) zp));
shen.setPosX((float) (0.95f * ClientEventHandler.recoilHorizon * fpz * fp));
shen.setPosY((float) (0.25f * fp + 0.28f * fr));
shen.setPosZ((float) (2.375 * fp + 0.44f * fr + 0.75 * fpz));
shen.setRotX((float) (0.15f * fp + 0.3f * fr + 0.3f * fpz));
shen.setRotY((float) (0.1f * ClientEventHandler.recoilHorizon * fpz));
shen.setRotZ((float) ((0.08f + 0.1 * fr) * ClientEventHandler.recoilHorizon));
shen.setPosX((float) (shen.getPosX() * (1 - 0.4 * zt)));
shen.setPosY((float) (shen.getPosY() * (1 - 0.5 * zt)));
shen.setPosZ((float) (shen.getPosZ() * (1 - 0.3 * zt)));
shen.setRotX((float) (shen.getRotX() * (1 - 0.8 * zt)));
shen.setRotY((float) (shen.getRotY() * (1 - 0.7 * zt)));
shen.setRotZ((float) (shen.getRotZ() * (1 - 0.65 * zt)));
CrossHairOverlay.gunRot = shen.getRotZ();
slide.setPosZ(1.5f * (float) fp);
hammer.setRotX((120 * Mth.DEG_TO_RAD * (float) fp));
CoreGeoBone root = getAnimationProcessor().getBone("root");
root.setPosX((float) (movePosX + 20 * ClientEventHandler.drawTime + 9.3f * mph));
root.setPosY((float) (swayY + movePosY - 40 * ClientEventHandler.drawTime - 2f * vY));
root.setRotX((float) (swayX - Mth.DEG_TO_RAD * 60 * ClientEventHandler.drawTime + Mth.DEG_TO_RAD * turnRotX - 0.15f * vY));
root.setRotY((float) (0.2f * movePosX + Mth.DEG_TO_RAD * 300 * ClientEventHandler.drawTime + Mth.DEG_TO_RAD * turnRotY));
root.setRotZ((float) (0.2f * movePosX + moveRotZ + Mth.DEG_TO_RAD * 90 * ClientEventHandler.drawTime + 2.7f * mph + Mth.DEG_TO_RAD * turnRotZ));
CoreGeoBone camera = getAnimationProcessor().getBone("camera");
CoreGeoBone main = getAnimationProcessor().getBone("0");
CoreGeoBone body = getAnimationProcessor().getBone("gun");
float numR = (float) (1 - 0.12 * zt);
float numP = (float) (1 - 0.68 * zt);
if (GunsTool.getGunIntTag(stack, "ReloadTime") > 0) {
main.setRotX(numR * main.getRotX());
main.setRotY(numR * main.getRotY());
main.setRotZ(numR * main.getRotZ());
main.setPosX(numP * main.getPosX());
main.setPosY(numP * main.getPosY());
main.setPosZ(numP * main.getPosZ());
body.setRotX(numR * body.getRotX());
body.setRotY(numR * body.getRotY());
body.setRotZ(numR * body.getRotZ());
body.setPosX(numP * body.getPosX());
body.setPosY(numP * body.getPosY());
body.setPosZ(numP * body.getPosZ());
camera.setRotX(numR * camera.getRotX());
camera.setRotY(numR * camera.getRotY());
camera.setRotZ(numR * camera.getRotZ());
}
ClientEventHandler.shake(Mth.RAD_TO_DEG * camera.getRotX(), Mth.RAD_TO_DEG * camera.getRotY(), Mth.RAD_TO_DEG * camera.getRotZ());
AnimationHelper.handleShellsAnimation(getAnimationProcessor(), 0.7f, 1f);
CoreGeoBone shell = getAnimationProcessor().getBone("shell");
if (GunsTool.getGunBooleanTag(stack, "HoldOpen")) {
slide.setPosZ(1.5f);
bullet.setScaleX(0);
bullet.setScaleY(0);
bullet.setScaleZ(0);
shell.setScaleX(0);
shell.setScaleY(0);
shell.setScaleZ(0);
} else {
bullet.setScaleX(1);
bullet.setScaleY(1);
bullet.setScaleZ(1);
shell.setScaleX(1);
shell.setScaleY(1);
shell.setScaleZ(1);
}
}
}

View file

@ -170,12 +170,12 @@ public class AK47ItemRenderer extends GeoItemRenderer<AK47Item> {
VertexConsumer sleeveBuilder = this.currentBuffer.getBuffer(RenderType.entityTranslucent(loc));
if (name.equals("Lefthand")) {
stack.translate(-1.0f * SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f);
AnimationHelper.renderPartOverBone(model.leftArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
AnimationHelper.renderPartOverBone(model.leftSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
AnimationHelper.renderPartOverBone2(model.leftArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
AnimationHelper.renderPartOverBone2(model.leftSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
} else {
stack.translate(SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f);
AnimationHelper.renderPartOverBone(model.rightArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
AnimationHelper.renderPartOverBone(model.rightSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
AnimationHelper.renderPartOverBone2(model.rightArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
AnimationHelper.renderPartOverBone2(model.rightSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
}
this.currentBuffer.getBuffer(this.renderType);

View file

@ -0,0 +1,139 @@
package com.atsuishio.superbwarfare.client.renderer.item;
import com.atsuishio.superbwarfare.client.AnimationHelper;
import com.atsuishio.superbwarfare.client.layer.Mp443Layer;
import com.atsuishio.superbwarfare.client.layer.Mp443LightLayer;
import com.atsuishio.superbwarfare.client.model.item.Mp443ItemModel;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.gun.handgun.Mp443Item;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.model.PlayerModel;
import net.minecraft.client.player.AbstractClientPlayer;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.entity.player.PlayerRenderer;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import software.bernie.geckolib.cache.object.BakedGeoModel;
import software.bernie.geckolib.cache.object.GeoBone;
import software.bernie.geckolib.renderer.GeoItemRenderer;
import software.bernie.geckolib.util.RenderUtils;
import java.util.HashSet;
import java.util.Set;
public class Mp443ItemRenderer extends GeoItemRenderer<Mp443Item> {
public Mp443ItemRenderer() {
super(new Mp443ItemModel());
this.addRenderLayer(new Mp443Layer(this));
this.addRenderLayer(new Mp443LightLayer(this));
}
@Override
public RenderType getRenderType(Mp443Item animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
return RenderType.entityTranslucent(getTextureLocation(animatable));
}
private static final float SCALE_RECIPROCAL = 1.0f / 16.0f;
protected boolean renderArms = false;
protected MultiBufferSource currentBuffer;
protected RenderType renderType;
public ItemDisplayContext transformType;
protected Mp443Item animatable;
private final Set<String> hiddenBones = new HashSet<>();
@Override
public void renderByItem(ItemStack stack, ItemDisplayContext transformType, PoseStack matrixStack, MultiBufferSource bufferIn, int combinedLightIn, int p_239207_6_) {
this.transformType = transformType;
if (this.animatable != null)
this.animatable.getTransformType(transformType);
super.renderByItem(stack, transformType, matrixStack, bufferIn, combinedLightIn, p_239207_6_);
}
@Override
public void actuallyRender(PoseStack matrixStackIn, Mp443Item animatable, BakedGeoModel model, RenderType type, MultiBufferSource renderTypeBuffer, VertexConsumer vertexBuilder, boolean isRenderer, float partialTicks, int packedLightIn,
int packedOverlayIn, float red, float green, float blue, float alpha) {
this.currentBuffer = renderTypeBuffer;
this.renderType = type;
this.animatable = animatable;
super.actuallyRender(matrixStackIn, animatable, model, type, renderTypeBuffer, vertexBuilder, isRenderer, partialTicks, packedLightIn, packedOverlayIn, red, green, blue, alpha);
if (this.renderArms) {
this.renderArms = false;
}
}
@Override
public void renderRecursively(PoseStack stack, Mp443Item animatable, GeoBone bone, RenderType type, MultiBufferSource buffer, VertexConsumer bufferIn, boolean isReRender, float partialTick, int packedLightIn, int packedOverlayIn, float red,
float green, float blue, float alpha) {
Minecraft mc = Minecraft.getInstance();
String name = bone.getName();
boolean renderingArms = false;
if (name.equals("Lefthand") || name.equals("Righthand")) {
bone.setHidden(true);
renderingArms = true;
} else {
bone.setHidden(this.hiddenBones.contains(name));
}
Player player = mc.player;
if (player == null) return;
ItemStack itemStack = player.getMainHandItem();
if (!itemStack.is(ModTags.Items.GUN)) return;
if (name.equals("flare")) {
if (ClientEventHandler.firePosTimer == 0 || ClientEventHandler.firePosTimer > 0.5) {
bone.setHidden(true);
} else {
bone.setHidden(false);
bone.setScaleX((float) (0.75 + 0.5 * (Math.random() - 0.5)));
bone.setScaleY((float) (0.75 + 0.5 * (Math.random() - 0.5)));
bone.setRotZ((float) (0.5 * (Math.random() - 0.5)));
}
}
if (this.transformType.firstPerson() && renderingArms) {
AbstractClientPlayer localPlayer = mc.player;
if (localPlayer == null) {
return;
}
PlayerRenderer playerRenderer = (PlayerRenderer) mc.getEntityRenderDispatcher().getRenderer(localPlayer);
PlayerModel<AbstractClientPlayer> model = playerRenderer.getModel();
stack.pushPose();
RenderUtils.translateMatrixToBone(stack, bone);
RenderUtils.translateToPivotPoint(stack, bone);
RenderUtils.rotateMatrixAroundBone(stack, bone);
RenderUtils.scaleMatrixForBone(stack, bone);
RenderUtils.translateAwayFromPivotPoint(stack, bone);
ResourceLocation loc = localPlayer.getSkinTextureLocation();
VertexConsumer armBuilder = this.currentBuffer.getBuffer(RenderType.entitySolid(loc));
VertexConsumer sleeveBuilder = this.currentBuffer.getBuffer(RenderType.entityTranslucent(loc));
if (name.equals("Lefthand")) {
stack.translate(-1.0f * SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f);
AnimationHelper.renderPartOverBone(model.leftArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
AnimationHelper.renderPartOverBone(model.leftSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
} else {
stack.translate(SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f);
AnimationHelper.renderPartOverBone(model.rightArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
AnimationHelper.renderPartOverBone(model.rightSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
}
this.currentBuffer.getBuffer(this.renderType);
stack.popPose();
}
super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, red, green, blue, alpha);
}
@Override
public ResourceLocation getTextureLocation(Mp443Item instance) {
return super.getTextureLocation(instance);
}
}

View file

@ -102,12 +102,12 @@ public class TaserItemRenderer extends GeoItemRenderer<TaserItem> {
VertexConsumer sleeveBuilder = this.currentBuffer.getBuffer(RenderType.entityTranslucent(loc));
if (name.equals("Lefthand")) {
stack.translate(-1.0f * SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f);
AnimationHelper.renderPartOverBone(model.leftArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
AnimationHelper.renderPartOverBone(model.leftSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
AnimationHelper.renderPartOverBone2(model.leftArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
AnimationHelper.renderPartOverBone2(model.leftSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
} else {
stack.translate(SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f);
AnimationHelper.renderPartOverBone(model.rightArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
AnimationHelper.renderPartOverBone(model.rightSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
AnimationHelper.renderPartOverBone2(model.rightArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
AnimationHelper.renderPartOverBone2(model.rightSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
}
this.currentBuffer.getBuffer(this.renderType);

View file

@ -103,6 +103,7 @@ public class ModItemModelProvider extends ItemModelProvider {
gunBlueprintItem(ModItems.TRACHELIUM_BLUEPRINT);
gunBlueprintItem(ModItems.GLOCK_17_BLUEPRINT);
gunBlueprintItem(ModItems.GLOCK_18_BLUEPRINT);
gunBlueprintItem(ModItems.MP_443_BLUEPRINT);
gunBlueprintItem(ModItems.HUNTING_RIFLE_BLUEPRINT);
gunBlueprintItem(ModItems.M_79_BLUEPRINT);
gunBlueprintItem(ModItems.RPG_BLUEPRINT);

View file

@ -67,7 +67,7 @@ public class ModItemTagProvider extends ItemTagsProvider {
this.tag(ModTags.Items.SMG).add(ModItems.VECTOR.get());
this.tag(ModTags.Items.HANDGUN).add(ModItems.TRACHELIUM.get(), ModItems.GLOCK_17.get(), ModItems.GLOCK_18.get(), ModItems.M_1911.get());
this.tag(ModTags.Items.HANDGUN).add(ModItems.TRACHELIUM.get(), ModItems.GLOCK_17.get(), ModItems.GLOCK_18.get(), ModItems.M_1911.get(), ModItems.MP_443.get());
this.tag(ModTags.Items.RIFLE).add(ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.SKS.get(),
ModItems.MK_14.get(), ModItems.MARLIN.get(), ModItems.AK_47.get(), ModItems.AK_12.get(), ModItems.QBZ_95.get());
@ -82,9 +82,9 @@ public class ModItemTagProvider extends ItemTagsProvider {
this.tag(ModTags.Items.NORMAL_GUN).add(ModItems.ABEKIRI.get(), ModItems.AK_47.get(), ModItems.AK_12.get(), ModItems.SVD.get(), ModItems.M_60.get(), ModItems.MK_14.get(), ModItems.VECTOR.get(),
ModItems.SKS.get(), ModItems.RPK.get(), ModItems.HK_416.get(), ModItems.AA_12.get(), ModItems.M_4.get(), ModItems.DEVOTION.get(), ModItems.TRACHELIUM.get(),
ModItems.HUNTING_RIFLE.get(), ModItems.NTW_20.get(), ModItems.M_98B.get(), ModItems.SENTINEL.get(), ModItems.M_870.get(), ModItems.MARLIN.get(), ModItems.GLOCK_17.get(),
ModItems.GLOCK_18.get(), ModItems.M_1911.get(), ModItems.QBZ_95.get(), ModItems.K_98.get(), ModItems.MOSIN_NAGANT.get());
ModItems.GLOCK_18.get(), ModItems.M_1911.get(), ModItems.QBZ_95.get(), ModItems.K_98.get(), ModItems.MOSIN_NAGANT.get(), ModItems.MP_443.get());
this.tag(ModTags.Items.USE_HANDGUN_AMMO).add(ModItems.GLOCK_17.get(), ModItems.GLOCK_18.get(), ModItems.M_1911.get(), ModItems.VECTOR.get());
this.tag(ModTags.Items.USE_HANDGUN_AMMO).add(ModItems.GLOCK_17.get(), ModItems.GLOCK_18.get(), ModItems.M_1911.get(), ModItems.VECTOR.get(), ModItems.MP_443.get());
this.tag(ModTags.Items.USE_RIFLE_AMMO).add(ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.SKS.get(), ModItems.MINIGUN.get(), ModItems.DEVOTION.get(), ModItems.M_60.get(),
ModItems.MK_14.get(), ModItems.MARLIN.get(), ModItems.AK_47.get(), ModItems.AK_12.get(), ModItems.QBZ_95.get(), ModItems.RPK.get(), ModItems.TRACHELIUM.get());

View file

@ -374,7 +374,7 @@ public class GunEventHandler {
}
}
if (stack.getItem() == ModItems.GLOCK_17.get() || stack.getItem() == ModItems.GLOCK_18.get() || stack.getItem() == ModItems.M_1911.get()) {
if (stack.getItem() == ModItems.GLOCK_17.get() || stack.getItem() == ModItems.GLOCK_18.get() || stack.getItem() == ModItems.M_1911.get() || stack.getItem() == ModItems.MP_443.get()) {
if (data.getInt("ReloadTime") == 9) {
data.putBoolean("HoldOpen", false);
}

View file

@ -6,10 +6,7 @@ import com.atsuishio.superbwarfare.item.armor.*;
import com.atsuishio.superbwarfare.item.common.BlueprintItem;
import com.atsuishio.superbwarfare.item.common.MaterialPack;
import com.atsuishio.superbwarfare.item.common.ammo.*;
import com.atsuishio.superbwarfare.item.gun.handgun.Glock17Item;
import com.atsuishio.superbwarfare.item.gun.handgun.Glock18Item;
import com.atsuishio.superbwarfare.item.gun.handgun.M1911Item;
import com.atsuishio.superbwarfare.item.gun.handgun.Trachelium;
import com.atsuishio.superbwarfare.item.gun.handgun.*;
import com.atsuishio.superbwarfare.item.gun.launcher.JavelinItem;
import com.atsuishio.superbwarfare.item.gun.launcher.M79Item;
import com.atsuishio.superbwarfare.item.gun.launcher.RpgItem;
@ -50,6 +47,7 @@ public class ModItems {
public static final RegistryObject<Item> TASER = GUNS.register("taser", TaserItem::new);
public static final RegistryObject<Item> GLOCK_17 = GUNS.register("glock_17", Glock17Item::new);
public static final RegistryObject<Item> GLOCK_18 = GUNS.register("glock_18", Glock18Item::new);
public static final RegistryObject<Item> MP_443 = GUNS.register("mp_443", Mp443Item::new);
public static final RegistryObject<Item> M_1911 = GUNS.register("m_1911", M1911Item::new);
public static final RegistryObject<Item> ABEKIRI = GUNS.register("abekiri", AbekiriItem::new);
public static final RegistryObject<Item> TRACHELIUM = GUNS.register("trachelium", Trachelium::new);
@ -193,6 +191,7 @@ public class ModItems {
public static final RegistryObject<Item> TRACHELIUM_BLUEPRINT = ITEMS.register("trachelium_blueprint", () -> new BlueprintItem(Rarity.EPIC));
public static final RegistryObject<Item> GLOCK_17_BLUEPRINT = ITEMS.register("glock_17_blueprint", () -> new BlueprintItem(Rarity.COMMON));
public static final RegistryObject<Item> MP_443_BLUEPRINT = ITEMS.register("mp_443_blueprint", () -> new BlueprintItem(Rarity.COMMON));
public static final RegistryObject<Item> GLOCK_18_BLUEPRINT = ITEMS.register("glock_18_blueprint", () -> new BlueprintItem(Rarity.RARE));
public static final RegistryObject<Item> HUNTING_RIFLE_BLUEPRINT = ITEMS.register("hunting_rifle_blueprint", () -> new BlueprintItem(Rarity.EPIC));
public static final RegistryObject<Item> M_79_BLUEPRINT = ITEMS.register("m_79_blueprint", () -> new BlueprintItem(Rarity.RARE));

View file

@ -257,19 +257,26 @@ public class ModSounds {
public static final RegistryObject<SoundEvent> GLOCK_17_RELOAD_NORMAL = REGISTRY.register("glock_17_reload_normal", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_17_reload_normal")));
public static final RegistryObject<SoundEvent> GLOCK_17_RELOAD_EMPTY = REGISTRY.register("glock_17_reload_empty", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_17_reload_empty")));
public static final RegistryObject<SoundEvent> GLOCK_18_FIRE_1P = REGISTRY.register("glock_18_fire_1p", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_18_fire_1p")));
public static final RegistryObject<SoundEvent> GLOCK_18_FIRE_3P = REGISTRY.register("glock_18_fire_3p", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_18_fire_3p")));
public static final RegistryObject<SoundEvent> GLOCK_18_FAR = REGISTRY.register("glock_18_far", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_18_far")));
public static final RegistryObject<SoundEvent> GLOCK_18_VERYFAR = REGISTRY.register("glock_18_veryfar", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_18_veryfar")));
public static final RegistryObject<SoundEvent> GLOCK_18_RELOAD_NORMAL = REGISTRY.register("glock_18_reload_normal", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_18_reload_normal")));
public static final RegistryObject<SoundEvent> GLOCK_18_RELOAD_EMPTY = REGISTRY.register("glock_18_reload_empty", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_18_reload_empty")));
public static final RegistryObject<SoundEvent> GLOCK_18_FIRE_1P = REGISTRY.register("glock_18_fire_1p", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_17_fire_1p")));
public static final RegistryObject<SoundEvent> GLOCK_18_FIRE_3P = REGISTRY.register("glock_18_fire_3p", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_17_fire_3p")));
public static final RegistryObject<SoundEvent> GLOCK_18_FAR = REGISTRY.register("glock_18_far", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_17_far")));
public static final RegistryObject<SoundEvent> GLOCK_18_VERYFAR = REGISTRY.register("glock_18_veryfar", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_17_veryfar")));
public static final RegistryObject<SoundEvent> GLOCK_18_RELOAD_NORMAL = REGISTRY.register("glock_18_reload_normal", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_17_reload_normal")));
public static final RegistryObject<SoundEvent> GLOCK_18_RELOAD_EMPTY = REGISTRY.register("glock_18_reload_empty", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_17_reload_empty")));
public static final RegistryObject<SoundEvent> MP_443_FIRE_1P = REGISTRY.register("mp_443_fire_1p", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("mp_443_fire_1p")));
public static final RegistryObject<SoundEvent> MP_443_FIRE_3P = REGISTRY.register("mp_443_fire_3p", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("mp_443_fire_3p")));
public static final RegistryObject<SoundEvent> MP_443_FAR = REGISTRY.register("mp_443_far", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_17_far")));
public static final RegistryObject<SoundEvent> MP_443_VERYFAR = REGISTRY.register("mp_443_veryfar", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_17_veryfar")));
public static final RegistryObject<SoundEvent> MP_443_RELOAD_NORMAL = REGISTRY.register("mp_443_reload_normal", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_17_reload_normal")));
public static final RegistryObject<SoundEvent> MP_443_RELOAD_EMPTY = REGISTRY.register("mp_443_reload_empty", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_17_reload_empty")));
public static final RegistryObject<SoundEvent> M_1911_FIRE_1P = REGISTRY.register("m_1911_fire_1p", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("m_1911_fire_1p")));
public static final RegistryObject<SoundEvent> M_1911_FIRE_3P = REGISTRY.register("m_1911_fire_3p", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("m_1911_fire_3p")));
public static final RegistryObject<SoundEvent> M_1911_FAR = REGISTRY.register("m_1911_far", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("m_1911_far")));
public static final RegistryObject<SoundEvent> M_1911_VERYFAR = REGISTRY.register("m_1911_veryfar", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("m_1911_veryfar")));
public static final RegistryObject<SoundEvent> M_1911_RELOAD_NORMAL = REGISTRY.register("m_1911_reload_normal", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("m_1911_reload_normal")));
public static final RegistryObject<SoundEvent> M_1911_RELOAD_EMPTY = REGISTRY.register("m_1911_reload_empty", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("m_1911_reload_empty")));
public static final RegistryObject<SoundEvent> M_1911_RELOAD_NORMAL = REGISTRY.register("m_1911_reload_normal", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_17_reload_normal")));
public static final RegistryObject<SoundEvent> M_1911_RELOAD_EMPTY = REGISTRY.register("m_1911_reload_empty", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("glock_17_reload_empty")));
public static final RegistryObject<SoundEvent> QBZ_95_FIRE_1P = REGISTRY.register("qbz_95_fire_1p", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("qbz_95_fire_1p")));
public static final RegistryObject<SoundEvent> QBZ_95_FIRE_3P = REGISTRY.register("qbz_95_fire_3p", () -> SoundEvent.createVariableRangeEvent(ModUtils.loc("qbz_95_fire_3p")));

View file

@ -3,10 +3,7 @@ package com.atsuishio.superbwarfare.init;
import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.item.ArmorPlate;
import com.atsuishio.superbwarfare.item.ContainerBlockItem;
import com.atsuishio.superbwarfare.item.gun.handgun.Glock17Item;
import com.atsuishio.superbwarfare.item.gun.handgun.Glock18Item;
import com.atsuishio.superbwarfare.item.gun.handgun.M1911Item;
import com.atsuishio.superbwarfare.item.gun.handgun.Trachelium;
import com.atsuishio.superbwarfare.item.gun.handgun.*;
import com.atsuishio.superbwarfare.item.gun.launcher.JavelinItem;
import com.atsuishio.superbwarfare.item.gun.launcher.M79Item;
import com.atsuishio.superbwarfare.item.gun.launcher.RpgItem;
@ -48,6 +45,7 @@ public class ModTabs {
output.accept(Glock17Item.getGunInstance());
output.accept(Glock18Item.getGunInstance());
output.accept(M1911Item.getGunInstance());
output.accept(Mp443Item.getGunInstance());
output.accept(AbekiriItem.getGunInstance());
output.accept(Trachelium.getGunInstance());
output.accept(VectorItem.getGunInstance());

View file

@ -87,6 +87,8 @@ public class ModVillagers {
new ItemStack(ModItems.GLOCK_17_BLUEPRINT.get()), 8, 15, 0.05f));
trades.get(2).add(new BasicItemListing(new ItemStack(Items.EMERALD, 16),
new ItemStack(ModItems.M_1911_BLUEPRINT.get()), 8, 15, 0.05f));
trades.get(2).add(new BasicItemListing(new ItemStack(Items.EMERALD, 16),
new ItemStack(ModItems.MP_443_BLUEPRINT.get()), 8, 15, 0.05f));
trades.get(2).add(new BasicItemListing(new ItemStack(Items.EMERALD, 16),
new ItemStack(ModItems.TASER_BLUEPRINT.get()), 8, 15, 0.05f));

View file

@ -0,0 +1,176 @@
package com.atsuishio.superbwarfare.item.gun.handgun;
import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.client.PoseTool;
import com.atsuishio.superbwarfare.client.renderer.item.Mp443ItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModItems;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.AnimatedItem;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.GunsTool;
import net.minecraft.client.Minecraft;
import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity;
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
import software.bernie.geckolib.animatable.GeoItem;
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
import software.bernie.geckolib.core.animation.AnimatableManager;
import software.bernie.geckolib.core.animation.AnimationController;
import software.bernie.geckolib.core.animation.AnimationState;
import software.bernie.geckolib.core.animation.RawAnimation;
import software.bernie.geckolib.core.object.PlayState;
import software.bernie.geckolib.util.GeckoLibUtil;
import java.util.Set;
import java.util.function.Consumer;
public class Mp443Item extends GunItem implements GeoItem, AnimatedItem {
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public static ItemDisplayContext transformType;
public Mp443Item() {
super(new Properties().stacksTo(1).rarity(Rarity.COMMON));
}
@Override
public void initializeClient(Consumer<IClientItemExtensions> consumer) {
super.initializeClient(consumer);
consumer.accept(new IClientItemExtensions() {
private final BlockEntityWithoutLevelRenderer renderer = new Mp443ItemRenderer();
@Override
public BlockEntityWithoutLevelRenderer getCustomRenderer() {
return renderer;
}
@Override
public HumanoidModel.ArmPose getArmPose(LivingEntity entityLiving, InteractionHand hand, ItemStack stack) {
return PoseTool.pose(entityLiving, hand, stack);
}
});
}
public void getTransformType(ItemDisplayContext type) {
transformType = type;
}
private PlayState fireAnimPredicate(AnimationState<Mp443Item> event) {
LocalPlayer player = Minecraft.getInstance().player;
if (player == null) return PlayState.STOP;
ItemStack stack = player.getMainHandItem();
if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP;
if (stack.getOrCreateTag().getBoolean("is_empty_reloading")) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.glock.reload_empty"));
}
if (stack.getOrCreateTag().getBoolean("is_normal_reloading")) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.glock.reload_normal"));
}
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.glock.idle"));
}
private PlayState idlePredicate(AnimationState<Mp443Item> event) {
LocalPlayer player = Minecraft.getInstance().player;
if (player == null) return PlayState.STOP;
ItemStack stack = player.getMainHandItem();
if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP;
if (player.isSprinting() && player.onGround()
&& player.getPersistentData().getDouble("noRun") == 0
&& !(stack.getOrCreateTag().getBoolean("is_normal_reloading") || stack.getOrCreateTag().getBoolean("is_empty_reloading")) && ClientEventHandler.drawTime < 0.01) {
if (player.hasEffect(MobEffects.MOVEMENT_SPEED)) {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.glock.run_fast"));
} else {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.glock.run"));
}
}
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.glock.idle"));
}
@Override
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
var fireAnimController = new AnimationController<>(this, "fireAnimController", 1, this::fireAnimPredicate);
data.add(fireAnimController);
var idleController = new AnimationController<>(this, "idleController", 2, this::idlePredicate);
data.add(idleController);
}
@Override
public AnimatableInstanceCache getAnimatableInstanceCache() {
return this.cache;
}
@Override
public Set<SoundEvent> getReloadSound() {
return Set.of(ModSounds.MP_443_RELOAD_EMPTY.get(), ModSounds.MP_443_RELOAD_NORMAL.get());
}
public static ItemStack getGunInstance() {
ItemStack stack = new ItemStack(ModItems.MP_443.get());
GunsTool.initCreativeGun(stack, ModItems.MP_443.getId().getPath());
return stack;
}
@Override
public void setAnimationProcedure(String procedure) {
}
@Override
public ResourceLocation getGunIcon() {
return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/mp443_icon.png");
}
@Override
public String getGunDisplayName() {
return " MP-443";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.HANDGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;
}
@Override
public boolean isOpenBolt(ItemStack stack) {
return true;
}
@Override
public boolean bulletInBarrel(ItemStack stack) {
return true;
}
@Override
public boolean ejectShell(ItemStack stack) {
return true;
}
@Override
public int getFireMode() {
return FireMode.SEMI.flag;
}
}

View file

@ -86,7 +86,7 @@ public class CustomExplosion extends Explosion {
for (Entity target : level.getEntitiesOfClass(Entity.class, new AABB(center, center).inflate(radius), e -> true).stream().sorted(Comparator.comparingDouble(e -> e.distanceToSqr(center))).toList()) {
if (target instanceof ServerPlayer serverPlayer) {
if (target instanceof ServerPlayer serverPlayer && !(target == pSource && pSource.getVehicle() != null)) {
ModUtils.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> serverPlayer), new ShakeClientMessage(20 + 0.02 * damage, pRadius,10 + 0.03 * damage, pToBlowX, pToBlowY, pToBlowZ));
}
}

View file

@ -27,14 +27,26 @@
}
},
"Righthand": {
"rotation": ["easeInElastic", "easeInElastic", "easeInElastic"],
"position": ["easeInElastic", "easeInElastic", "easeInElastic"],
"scale": 0
"rotation": {
"0.0": [0, 0, 0],
"0.2": [-6.9958, -33.59868, 16.97772]
},
"position": {
"0.0": [0, 0, 0],
"0.2": [-1.75, 0.35, 0.95]
}
},
"Lefthand": {
"rotation": ["easeInElastic", "easeInElastic", "easeInElastic"],
"position": ["easeInElastic", "easeInElastic", "easeInElastic"],
"scale": 0
"rotation": {
"0.0": [0, 0, 0],
"0.2": [-22.85123, -5.28437, 45.34195],
"0.4083": [-37.36283, 0.56643, 63.22664]
},
"position": {
"0.0": [0, 0, 0],
"0.2": [-1.15, -0.4, -5.5],
"0.4083": [-1.65, -0.4, -4.8]
}
}
}
},
@ -58,10 +70,6 @@
"0.8": [3.5, -1.75, 0]
}
},
"Righthand": {
"rotation": [0, 20, 0],
"position": [3.55421, -0.38623, -0.42238]
},
"camera": {
"rotation": {
"0.0": [-0.3, -0.3, 0.3],
@ -103,8 +111,8 @@
}
},
"Lefthand": {
"rotation": [-30, -12.5, 7.5],
"position": [15, -7, 37]
"rotation": [5.27614, 52.79666, -90.24139],
"position": [15, -14, 37]
}
}
},
@ -381,20 +389,14 @@
"Lefthand": {
"rotation": {
"0.1167": [0, 0, 0],
"0.3333": [32.36769, 41.34508, -64.19056],
"0.4": [32.36769, 41.34508, -64.19056],
"0.9833": [32.36769, 41.34508, -64.19056],
"1.0": [48.93435, 38.83283, -61.71522],
"1.6667": [48.93435, 38.83283, -61.71522],
"0.3333": [50.29539, 45.73453, -56.50534],
"1.6667": [50.29539, 45.73453, -56.50534],
"1.85": [0, 0, 0]
},
"position": {
"0.1167": [0, 0, 0],
"0.3333": [-3.19069, 0.26674, 8.12],
"0.4": [-3.19069, 0.26674, 8.12],
"0.9833": [-3.19069, 0.26674, 8.12],
"1.0": [-3.19741, -3.59435, 4.76412],
"1.6667": [-3.19741, -3.59435, 4.76412],
"0.3333": [-0.09069, -1.78326, 3.07],
"1.6667": [-0.09069, -1.78326, 3.07],
"1.85": [0, 0, 0]
}
},
@ -409,6 +411,14 @@
"1.5167": [-21, 0, 0],
"1.55": [0, 0, 0]
}
},
"Righthand": {
"position": {
"0.1": [0, 0, 0],
"0.2": [-0.75, 0, 0],
"1.7667": [-0.75, 0, 0],
"1.8333": [0, 0, 0]
}
}
},
"sound_effects": {
@ -672,22 +682,14 @@
"Lefthand": {
"rotation": {
"0.1167": [0, 0, 0],
"0.1833": [8.79054, 27.06142, -16.41798],
"0.3333": [29.46956, 50.70814, -61.78204],
"0.4": [29.46956, 50.70814, -61.78204],
"0.9833": [29.46956, 50.70814, -61.78204],
"1.0": [24.46409, 34.39391, -25.62434],
"1.6667": [24.46409, 34.39391, -25.62434],
"0.3333": [24.37037, 15.9389, -21.54738],
"1.6667": [24.37037, 15.9389, -21.54738],
"1.85": [0, 0, 0]
},
"position": {
"0.1167": [0, 0, 0],
"0.1833": [-0.7603, -0.64759, 5.84197],
"0.3333": [-3.19062, 0.51479, 7.66796],
"0.4": [-3.19062, 0.51479, 7.66796],
"0.9833": [-3.19062, 0.51479, 7.66796],
"1.0": [-4.03226, -1.03498, 7.44705],
"1.6667": [-4.03226, -1.03498, 7.44705],
"0.3333": [0.50931, -2.33326, 3.27],
"1.6667": [0.50931, -2.33326, 3.27],
"1.85": [0, 0, 0]
}
},
@ -720,6 +722,14 @@
"1.5167": [-21, 0, 0],
"1.55": [0, 0, 0]
}
},
"Righthand": {
"position": {
"0.1": [0, 0, 0],
"0.2": [-0.75, 0, 0],
"1.7667": [-0.75, 0, 0],
"1.8333": [0, 0, 0]
}
}
},
"sound_effects": {
@ -1019,35 +1029,29 @@
"Lefthand": {
"rotation": {
"0.1167": [0, 0, 0],
"0.3333": [32.36769, 41.34508, -64.19056],
"0.4": [32.36769, 41.34508, -64.19056],
"0.9833": [32.36769, 41.34508, -64.19056],
"1.0": [48.93435, 38.83283, -61.71522],
"1.6667": [48.93435, 38.83283, -61.71522],
"2.0": [-29.05855, 54.15355, 113.83916],
"2.0833": [-45.59532, 53.45595, 116.13024],
"2.1667": [-50.02173, 43.31997, 128.51988],
"2.25": [-50.02173, 43.31997, 128.51988],
"2.3667": [-55.02173, 43.31997, 128.51988],
"0.3333": [50.29539, 45.73453, -56.50534],
"1.6667": [50.29539, 45.73453, -56.50534],
"1.8667": [-27.40925, -6.40493, 67.66918],
"2.05": [-44.76748, 37.54072, 130.89261],
"2.1667": [-62.94009, 48.26643, 143.90391],
"2.2333": [-62.94009, 48.26643, 143.90391],
"2.3667": [-85.44009, 48.26643, 143.90391],
"2.4167": [-55.02173, 43.31997, 128.51988],
"2.5": [-43.27389, 30.70848, 85.33789],
"2.75": [0, 0, 0]
},
"position": {
"0.1167": [0, 0, 0],
"0.3333": [-3.19069, 0.26674, 8.12],
"0.4": [-3.19069, 0.26674, 8.12],
"0.9833": [-3.19069, 0.26674, 8.12],
"1.0": [-3.19741, -3.59435, 4.76412],
"1.6667": [-3.19741, -3.59435, 4.76412],
"1.7167": [-4.29005, -3.93562, 7.32852],
"1.7833": [-5.7839, -2.25389, 8.81802],
"2.0333": [-7.81624, -1.14434, 3.37054],
"2.1667": [-9.37827, -0.70494, 3.44014],
"2.25": [-9.37827, -0.70494, 3.44014],
"2.3667": [-9.37827, -0.70494, 6.44014],
"2.4167": [-9.37827, -0.70494, 6.44014],
"2.5": [-6.32823, -2.3892, 0.11393],
"0.3333": [-0.09069, -1.78326, 3.07],
"1.6667": [-0.09069, -1.78326, 3.07],
"1.7167": [-1.54005, -5.98562, 5.87852],
"1.7667": [-4.7839, -6.15389, 3.86802],
"2.05": [-3.86, 0.43, 1.89],
"2.1667": [-3.47827, 3.14506, 3.54014],
"2.2333": [-3.47827, 3.14506, 3.54014],
"2.3667": [-3.47827, 3.14506, 7.54014],
"2.4167": [-4.37827, -0.70494, 4.44014],
"2.5": [-5.32823, -1.3892, 1.11393],
"2.75": [0, 0, 0]
}
},
@ -1093,6 +1097,14 @@
"1.5167": [-21, 0, 0],
"1.55": [0, 0, 0]
}
},
"Righthand": {
"position": {
"0.1": [0, 0, 0],
"0.2": [-0.75, 0, 0],
"1.7667": [-0.75, 0, 0],
"1.8333": [0, 0, 0]
}
}
},
"sound_effects": {
@ -1396,6 +1408,7 @@
"Righthand": {
"rotation": {
"1.9333": [0, 0, 0],
"2.0167": [-0.42998, -8.83789, -8.81644],
"2.1167": [-0.6395, -3.41987, -15.44385],
"2.2333": [-0.6395, -3.41987, -15.44385],
"2.3667": [-2.58155, -2.2056, -19.32444],
@ -1405,34 +1418,30 @@
"2.7167": [0, 0, 0]
},
"position": {
"1.9333": [0, 0, 0],
"2.1167": [0.51703, 2.88499, -5.25573],
"2.2333": [0.51703, 2.88499, -5.25573],
"2.3667": [0.51703, 2.62327, -1.32213],
"2.5": [0.51703, 2.62327, -1.32213],
"2.5667": [0.51703, 2.62327, -2.07994],
"0.1": [0, 0, 0],
"0.2": [-0.75, 0, 0],
"1.7667": [-0.75, 0, 0],
"1.9333": [-0.75, 0, 0],
"2.0167": [-1.67, 1.31, -2.62],
"2.1167": [-1.48297, 2.88499, -5.75573],
"2.2333": [-1.48297, 2.88499, -5.75573],
"2.3667": [-1.48297, 2.62327, -1.82213],
"2.5": [-1.48297, 2.62327, -1.32213],
"2.5667": [-1.48297, 2.62327, -2.07994],
"2.7167": [0, 0, 0]
}
},
"Lefthand": {
"rotation": {
"0.1167": [0, 0, 0],
"0.1833": [8.79054, 27.06142, -16.41798],
"0.3333": [29.46956, 50.70814, -61.78204],
"0.4": [29.46956, 50.70814, -61.78204],
"0.9833": [29.46956, 50.70814, -61.78204],
"1.0": [24.46409, 34.39391, -25.62434],
"1.6667": [24.46409, 34.39391, -25.62434],
"0.3333": [24.37037, 15.9389, -21.54738],
"1.6667": [24.37037, 15.9389, -21.54738],
"1.85": [0, 0, 0]
},
"position": {
"0.1167": [0, 0, 0],
"0.1833": [-0.7603, -0.64759, 5.84197],
"0.3333": [-3.19062, 0.51479, 7.66796],
"0.4": [-3.19062, 0.51479, 7.66796],
"0.9833": [-3.19062, 0.51479, 7.66796],
"1.0": [-4.03226, -1.03498, 7.44705],
"1.6667": [-4.03226, -1.03498, 7.44705],
"0.3333": [0.50931, -2.33326, 3.27],
"1.6667": [0.50931, -2.33326, 3.27],
"1.85": [0, 0, 0]
}
},
@ -1491,8 +1500,8 @@
"animation_length": 7.2667,
"bones": {
"Lefthand": {
"rotation": [43.35934, 30.31096, -79.62173],
"position": [0, 0, -0.58203]
"rotation": [-3.66253, 12.91538, 13.30298],
"position": [-0.3, -0.8, -2.7]
}
}
},
@ -1750,22 +1759,16 @@
},
"Lefthand": {
"rotation": {
"0.1167": [43.35934, 30.31096, -79.62173],
"0.3333": [32.36769, 41.34508, -64.19056],
"0.4": [32.36769, 41.34508, -64.19056],
"0.9833": [32.36769, 41.34508, -64.19056],
"1.0": [48.93435, 38.83283, -61.71522],
"1.6667": [48.93435, 38.83283, -61.71522],
"1.85": [43.35934, 30.31096, -79.62173]
"0.1167": [-3.66253, 12.91538, 13.30298],
"0.3333": [50.29539, 45.73453, -56.50534],
"1.6667": [50.29539, 45.73453, -56.50534],
"1.85": [-3.66253, 12.91538, 13.30298]
},
"position": {
"0.1167": [0, 0, -0.58203],
"0.3333": [-3.19069, 0.26674, 8.12],
"0.4": [-3.19069, 0.26674, 8.12],
"0.9833": [-3.19069, 0.26674, 8.12],
"1.0": [-3.19741, -3.59435, 4.76412],
"1.6667": [-3.19741, -3.59435, 4.76412],
"1.85": [0, 0, -0.58203]
"0.1167": [-0.3, -0.8, -2.7],
"0.3333": [-0.09069, -1.78326, 3.07],
"1.6667": [-0.09069, -1.78326, 3.07],
"1.85": [-0.3, -0.8, -2.7]
}
},
"camera": {
@ -1797,6 +1800,14 @@
"1.5167": [-21, 0, 0],
"1.55": [0, 0, 0]
}
},
"Righthand": {
"position": {
"0.1": [0, 0, 0],
"0.2": [-0.75, 0, 0],
"1.7667": [-0.75, 0, 0],
"1.8333": [0, 0, 0]
}
}
},
"sound_effects": {
@ -2059,24 +2070,16 @@
},
"Lefthand": {
"rotation": {
"0.1167": [43.35934, 30.31096, -79.62173],
"0.1833": [8.79054, 27.06142, -16.41798],
"0.3333": [29.46956, 50.70814, -61.78204],
"0.4": [29.46956, 50.70814, -61.78204],
"0.9833": [29.46956, 50.70814, -61.78204],
"1.0": [24.46409, 34.39391, -25.62434],
"1.6667": [24.46409, 34.39391, -25.62434],
"1.85": [43.35934, 30.31096, -79.62173]
"0.1167": [-3.66253, 12.91538, 13.30298],
"0.3333": [24.37037, 15.9389, -21.54738],
"1.6667": [24.37037, 15.9389, -21.54738],
"1.85": [-3.66253, 12.91538, 13.30298]
},
"position": {
"0.1167": [0, 0, -0.58203],
"0.1833": [-0.7603, -0.64759, 5.84197],
"0.3333": [-3.19062, 0.51479, 7.66796],
"0.4": [-3.19062, 0.51479, 7.66796],
"0.9833": [-3.19062, 0.51479, 7.66796],
"1.0": [-4.03226, -1.03498, 7.44705],
"1.6667": [-4.03226, -1.03498, 7.44705],
"1.85": [0, 0, -0.58203]
"0.1167": [-0.3, -0.8, -2.7],
"0.3333": [0.50931, -2.33326, 3.27],
"1.6667": [0.50931, -2.33326, 3.27],
"1.85": [-0.3, -0.8, -2.7]
}
},
"camera": {
@ -2108,6 +2111,14 @@
"1.5167": [-21, 0, 0],
"1.55": [0, 0, 0]
}
},
"Righthand": {
"position": {
"0.1": [0, 0, 0],
"0.2": [-0.75, 0, 0],
"1.7667": [-0.75, 0, 0],
"1.8333": [0, 0, 0]
}
}
},
"sound_effects": {
@ -2136,13 +2147,9 @@
"0.8": [3.5, -1.75, 0]
}
},
"Righthand": {
"rotation": [0, 20, 0],
"position": [3.55421, -0.38623, -0.42238]
},
"Lefthand": {
"rotation": [43.35934, 30.31096, -79.62173],
"position": [0, 0, -0.58203]
"rotation": [-3.66253, 12.91538, 13.30298],
"position": [-0.3, -0.8, -2.7]
},
"camera": {
"rotation": {
@ -2445,37 +2452,31 @@
},
"Lefthand": {
"rotation": {
"0.1167": [43.35934, 30.31096, -79.62173],
"0.3333": [32.36769, 41.34508, -64.19056],
"0.4": [32.36769, 41.34508, -64.19056],
"0.9833": [32.36769, 41.34508, -64.19056],
"1.0": [48.93435, 38.83283, -61.71522],
"1.6667": [48.93435, 38.83283, -61.71522],
"2.0": [-29.05855, 54.15355, 113.83916],
"2.0833": [-45.59532, 53.45595, 116.13024],
"2.1667": [-50.02173, 43.31997, 128.51988],
"2.25": [-50.02173, 43.31997, 128.51988],
"2.3667": [-55.02173, 43.31997, 128.51988],
"0.1167": [-3.66253, 12.91538, 13.30298],
"0.3333": [50.29539, 45.73453, -56.50534],
"1.6667": [50.29539, 45.73453, -56.50534],
"1.8667": [-27.40925, -6.40493, 67.66918],
"2.05": [-44.76748, 37.54072, 130.89261],
"2.1667": [-62.94009, 48.26643, 143.90391],
"2.2333": [-62.94009, 48.26643, 143.90391],
"2.3667": [-85.44009, 48.26643, 143.90391],
"2.4167": [-55.02173, 43.31997, 128.51988],
"2.5": [-43.27389, 30.70848, 85.33789],
"2.75": [43.35934, 30.31096, -79.62173]
"2.75": [-3.66253, 12.91538, 13.30298]
},
"position": {
"0.1167": [0, 0, -0.58203],
"0.3333": [-3.19069, 0.26674, 8.12],
"0.4": [-3.19069, 0.26674, 8.12],
"0.9833": [-3.19069, 0.26674, 8.12],
"1.0": [-3.19741, -3.59435, 4.76412],
"1.6667": [-3.19741, -3.59435, 4.76412],
"1.7167": [-4.29005, -3.93562, 7.32852],
"1.7833": [-5.7839, -2.25389, 8.81802],
"2.0333": [-7.81624, -1.14434, 3.37054],
"2.1667": [-9.37827, -0.70494, 3.44014],
"2.25": [-9.37827, -0.70494, 3.44014],
"2.3667": [-9.37827, -0.70494, 6.44014],
"2.4167": [-9.37827, -0.70494, 6.44014],
"2.5": [-6.32823, -2.3892, 0.11393],
"2.75": [0, 0, -0.58203]
"0.1167": [-0.3, -0.8, -2.7],
"0.3333": [-0.09069, -1.78326, 3.07],
"1.6667": [-0.09069, -1.78326, 3.07],
"1.7167": [-1.54005, -5.98562, 5.87852],
"1.7667": [-4.7839, -6.15389, 3.86802],
"2.05": [-3.86, 0.43, 1.89],
"2.1667": [-3.47827, 3.14506, 3.54014],
"2.2333": [-3.47827, 3.14506, 3.54014],
"2.3667": [-3.47827, 3.14506, 7.54014],
"2.4167": [-4.37827, -0.70494, 4.44014],
"2.5": [-5.32823, -1.3892, 1.11393],
"2.75": [-0.3, -0.8, -2.7]
}
},
"bolt": {
@ -2520,6 +2521,14 @@
"1.5167": [-21, 0, 0],
"1.55": [0, 0, 0]
}
},
"Righthand": {
"position": {
"0.1": [0, 0, 0],
"0.2": [-0.75, 0, 0],
"1.7667": [-0.75, 0, 0],
"1.8333": [0, 0, 0]
}
}
},
"sound_effects": {
@ -2823,6 +2832,7 @@
"Righthand": {
"rotation": {
"1.9333": [0, 0, 0],
"2.0167": [-0.42998, -8.83789, -8.81644],
"2.1167": [-0.6395, -3.41987, -15.44385],
"2.2333": [-0.6395, -3.41987, -15.44385],
"2.3667": [-2.58155, -2.2056, -19.32444],
@ -2832,35 +2842,31 @@
"2.7167": [0, 0, 0]
},
"position": {
"1.9333": [0, 0, 0],
"2.1167": [0.51703, 2.88499, -5.25573],
"2.2333": [0.51703, 2.88499, -5.25573],
"2.3667": [0.51703, 2.62327, -1.32213],
"2.5": [0.51703, 2.62327, -1.32213],
"2.5667": [0.51703, 2.62327, -2.07994],
"0.1": [0, 0, 0],
"0.2": [-0.75, 0, 0],
"1.7667": [-0.75, 0, 0],
"1.9333": [-0.75, 0, 0],
"2.0167": [-1.67, 1.31, -2.62],
"2.1167": [-1.48297, 2.88499, -5.75573],
"2.2333": [-1.48297, 2.88499, -5.75573],
"2.3667": [-1.48297, 2.62327, -1.82213],
"2.5": [-1.48297, 2.62327, -1.32213],
"2.5667": [-1.48297, 2.62327, -2.07994],
"2.7167": [0, 0, 0]
}
},
"Lefthand": {
"rotation": {
"0.1167": [43.35934, 30.31096, -79.62173],
"0.1833": [8.79054, 27.06142, -16.41798],
"0.3333": [29.46956, 50.70814, -61.78204],
"0.4": [29.46956, 50.70814, -61.78204],
"0.9833": [29.46956, 50.70814, -61.78204],
"1.0": [24.46409, 34.39391, -25.62434],
"1.6667": [24.46409, 34.39391, -25.62434],
"1.85": [43.35934, 30.31096, -79.62173]
"0.1167": [-3.66253, 12.91538, 13.30298],
"0.3333": [24.37037, 15.9389, -21.54738],
"1.6667": [24.37037, 15.9389, -21.54738],
"1.85": [-3.66253, 12.91538, 13.30298]
},
"position": {
"0.1167": [0, 0, -0.58203],
"0.1833": [-0.7603, -0.64759, 5.84197],
"0.3333": [-3.19062, 0.51479, 7.66796],
"0.4": [-3.19062, 0.51479, 7.66796],
"0.9833": [-3.19062, 0.51479, 7.66796],
"1.0": [-4.03226, -1.03498, 7.44705],
"1.6667": [-4.03226, -1.03498, 7.44705],
"1.85": [0, 0, -0.58203]
"0.1167": [-0.3, -0.8, -2.7],
"0.3333": [0.50931, -2.33326, 3.27],
"1.6667": [0.50931, -2.33326, 3.27],
"1.85": [-0.3, -0.8, -2.7]
}
},
"bolt": {

View file

@ -16,337 +16,206 @@
"0": {
"rotation": {
"0.0": {
"vector": [0, 0, 0]
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.0833": {
"vector": [2.5, -4.08, 1.84]
"0.1667": {
"post": [8.55, -3.98, 1.84],
"lerp_mode": "catmullrom"
},
"0.3333": {
"vector": [0.25, -7.5, -15],
"easing": "easeInElastic"
"post": [0.25, -22.25, -24],
"lerp_mode": "catmullrom"
},
"0.4167": {
"vector": [-7.25, -7.5, -15],
"easing": "easeInElastic"
"post": [-7.25, -22.25, -24],
"lerp_mode": "catmullrom"
},
"0.5": {
"vector": [-5.25, -7.51, -15]
"post": [-5.25, -22.26, -24],
"lerp_mode": "catmullrom"
},
"0.625": {
"vector": [-0.85, -8.89, -4.1],
"easing": "easeInOutSine"
"post": [-0.85, -23.64, -13.1],
"lerp_mode": "catmullrom"
},
"0.9167": {
"vector": [-7.23, -11.05, -8.02]
"post": [-7.23, -25.8, -17.02],
"lerp_mode": "catmullrom"
},
"1.25": {
"vector": [-1.46, -26.71, -16.61]
"post": [0.54, -26.71, -25.61],
"lerp_mode": "catmullrom"
},
"1.6667": {
"vector": [-11.38143, -25.34825, -17.46108],
"easing": "easeInElastic"
"post": [-0.88143, -25.34825, -26.46108],
"lerp_mode": "catmullrom"
},
"1.9167": {
"vector": [-23.00432, -21.76626, -8.7001]
"post": [-9.00432, -21.76626, -16.2001],
"lerp_mode": "catmullrom"
},
"2.0": {
"vector": [-19.73837, -24.77408, -13.27127]
"post": [-5.73837, -24.77408, -20.77127],
"lerp_mode": "catmullrom"
},
"2.0833": {
"vector": [-11.72334, -30.128, -11.30744]
"post": [-6.38588, -29.58558, -1.50662],
"lerp_mode": "catmullrom"
},
"2.3333": {
"vector": [-0.11112, -2.35652, 10.98841]
"post": [-0.11112, -2.35652, 10.98841],
"lerp_mode": "catmullrom"
},
"2.4583": {
"vector": [-0.0016, -0.13105, -1.38954]
"post": [-0.0016, -0.13105, -1.38954],
"lerp_mode": "catmullrom"
},
"2.5833": {
"vector": [0, 0, 0],
"easing": "easeInOutQuad"
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
}
},
"position": {
"0.0": {
"vector": [0, 0, 0]
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.4167": {
"vector": [0, 0.25, 3.25],
"easing": "easeInElastic"
"post": [0, 0.25, 3.25],
"lerp_mode": "catmullrom"
},
"0.4583": {
"vector": [-0.03, 0.43, 0.64],
"easing": "easeOutSine"
"post": [0.17, 0.43, 0.64],
"lerp_mode": "catmullrom"
},
"0.5417": {
"vector": [-0.06, 0.56, 2.21016]
"post": [-0.06, 0.56, 2.21016],
"lerp_mode": "catmullrom"
},
"0.75": {
"vector": [-0.29, 0.3, 2.09],
"easing": "easeInOutSine"
"post": [-0.29, 0.3, 2.09],
"lerp_mode": "catmullrom"
},
"1.0417": {
"vector": [-0.6, 0.53, 1.95]
"post": [-0.25, 0.53, 1.95],
"lerp_mode": "catmullrom"
},
"1.4167": {
"vector": [-0.9, 0.70547, 2]
"post": [-0.3, 0.70547, 2],
"lerp_mode": "catmullrom"
},
"1.9167": {
"vector": [-1, 0.35, 1.5]
"post": [-0.2, 0.35, 1.5],
"lerp_mode": "catmullrom"
},
"2.0": {
"vector": [-0.92461, 0.40317, 1.28968]
"post": [-0.92461, 0.40317, 1.28968],
"lerp_mode": "catmullrom"
},
"2.0833": {
"vector": [-1.31413, 0.00682, 2.2102]
"post": [-1.31413, 0.00682, 2.2102],
"lerp_mode": "catmullrom"
},
"2.2917": {
"vector": [0, 0, -1]
"post": [0, -0.25, -1],
"lerp_mode": "catmullrom"
},
"2.375": {
"vector": [0, 0, 0.93]
"post": [0, 0.2, 0.93],
"lerp_mode": "catmullrom"
},
"2.5833": {
"vector": [0, 0, 0]
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
}
}
},
"Lefthand": {
"rotation": {
"0.0833": {
"vector": [0, 0, 0]
},
"0.4583": {
"vector": [17.28178, 11.81938, -13.74589],
"easing": "easeOutBack"
},
"0.5833": {
"vector": [17.89, 13.29, -10.54],
"easing": "easeInOutSine"
},
"0.9167": {
"vector": [-15.26666, -7.21079, -32.09116]
},
"1.3333": {
"vector": [11.33836, 15.57679, -32.68369],
"easing": "easeOutBack"
},
"1.5833": {
"vector": [21.25681, 14.51031, -31.92152]
},
"1.625": {
"vector": [22.15477, 15.58476, -35.05004]
},
"1.6667": {
"vector": [24.59206, 11.83166, -28.91263]
},
"1.75": {
"vector": [28.1312, 15.12708, -33.43052]
},
"1.8333": {
"vector": [32.67296, 7.36719, -31.31941],
"easing": "linear"
},
"2.0": {
"vector": [31.94221, 8.54088, -32.21219]
},
"2.0833": {
"vector": [35.21697, 9.07234, -33.53801],
"easing": "easeOutBack"
},
"2.25": {
"vector": [10.49188, 18.26991, -36.52254]
},
"2.4167": {
"vector": [0, 0, 0]
}
"0.0833": [0, 0, 0],
"0.4167": [-31.86957, -19.37363, 82.48453],
"0.5": [-31.86957, -19.37363, 82.48453],
"0.9167": [-15.26666, -7.21079, -32.09116],
"1.3333": [-11.99301, 13.76329, -22.8141],
"1.5": [-11.99301, 13.76329, -22.8141],
"1.5833": [-28.82126, -23.56361, 62.7473],
"1.625": [-27.43413, -24.53569, 58.73275],
"1.6667": [-33.07026, -26.56442, 69.10617],
"1.75": [-28.78617, -30.44277, 61.77328],
"1.8333": [-42.377, -33.41831, 75.18478],
"2.0": [-40.19312, -33.04337, 72.40808],
"2.0833": [-31.86957, -19.37363, 82.48453],
"2.25": [-9.57051, -10.79639, 27.95699],
"2.4167": [0, 0, 0]
},
"position": {
"0.0833": {
"vector": [0, 0, 0]
},
"0.4167": {
"vector": [-0.19579, -2.08768, -5.5753],
"easing": "easeOutBack"
},
"0.5417": {
"vector": [0, -1.82, -11.4],
"easing": "easeInElastic"
},
"0.7083": {
"vector": [6.6, -1.87, 0.6]
},
"0.9167": {
"vector": [7.55491, -9.57868, 6.1249]
},
"1.3333": {
"vector": [10, -9.37, 6.62],
"easing": "easeInOutBack"
},
"1.8333": {
"vector": [2.6, -1.9, -12.4],
"easing": "linear"
},
"2.0": {
"vector": [2.8, -1.9, -9.8]
},
"2.0833": {
"vector": [3, -1.9, -10.2],
"easing": "easeInOutExpo"
},
"2.4167": {
"vector": [0, 0, 0]
}
"0.0833": [0, 0, 0],
"0.4167": [-0.19579, 0.61232, -3.5753],
"0.5": [0, -1.82, -14.4],
"0.7083": [6.6, -1.87, 0.6],
"0.9167": [7.55491, -9.57868, 6.1249],
"1.3333": [9.45, -8.82, 6.62],
"1.5": [9.45, -8.82, 6.62],
"1.8333": [-0.9, 1.1, -8.4],
"2.0": [-0.9, 1.1, -6.4],
"2.0833": [-0.19579, 0.61232, -5.5753],
"2.4167": [0, 0, 0]
}
},
"head": {
"rotation": {
"0.0": {
"vector": [0, 0, 0]
},
"0.4167": {
"vector": [0, 0, 0]
},
"1.25": {
"vector": [-380, 0, 0]
},
"1.3333": {
"vector": [-30.68206, -27.03402, 52.54628]
},
"1.8333": {
"vector": [0, 0, 0]
},
"2.0833": {
"vector": [0, 0, 0]
}
"0.0": [0, 0, 0],
"0.4167": [0, 0, 0],
"1.25": [-380, 0, 0],
"1.3333": [-30.68206, -27.03402, 52.54628],
"1.5": [-30.68206, -27.03402, 52.54628],
"1.8333": [0, 0, 0],
"2.0833": [0, 0, 0]
},
"position": {
"0.0": {
"vector": [0, 0, 0]
},
"0.4167": {
"vector": [0.0441, 0.16396, -0.02671]
},
"0.4583": {
"vector": [0.26827, 0.95056, -1.6981]
},
"0.5": {
"vector": [-0.36805, 1.03264, -6.9702]
},
"0.5417": {
"vector": [-1.4502, 0.88538, -14.51111]
},
"0.5833": {
"vector": [-3.04715, 1.19976, -21.54721]
},
"0.625": {
"vector": [-4.25545, 0.3486, -27.45078]
},
"0.6667": {
"vector": [-5.50466, -2.79569, -33.3676]
},
"0.7083": {
"vector": [-6.97396, -6.91091, -39.16939]
},
"0.75": {
"vector": [-8.75181, -12.66452, -44.72621],
"easing": "linear"
},
"0.7917": {
"vector": [-10.84411, -20.08928, -49.88713]
},
"0.8333": {
"vector": [-13.34003, -29.71342, -54.55761]
},
"0.875": {
"vector": [-16.22188, -40.6649, -58.75257]
},
"0.9167": {
"vector": [-19.65388, -53.69834, -62.25089]
},
"0.9583": {
"vector": [-26.60318, -67.42803, -66.09012]
},
"1.0": {
"vector": [-35.3251, -86.10628, -69.13573]
},
"1.0417": {
"vector": [-45.47726, -106.73784, -71.55172]
},
"1.0833": {
"vector": [-57.82789, -132.39146, -73.01751]
},
"1.125": {
"vector": [-72.39921, -162.95675, -73.13111]
},
"1.1667": {
"vector": [-89.34055, -197.99001, -72.07032]
},
"1.2083": {
"vector": [-109.12621, -239.05802, -69.27181]
},
"1.3333": {
"vector": [10, -9, 13]
},
"1.8333": {
"vector": [0, 0, -2.09375],
"easing": "linear"
},
"2.0833": {
"vector": [0, 0, 0],
"easing": "easeInElastic"
}
"0.0": [0, 0, 0],
"0.4167": [0.0441, 0.16396, -0.02671],
"0.4583": [0.26827, 0.95056, -1.6981],
"0.5": [-0.36805, 1.03264, -6.9702],
"0.5417": [-1.4502, 0.88538, -14.51111],
"0.5833": [-3.04715, 1.19976, -21.54721],
"0.625": [-4.25545, 0.3486, -27.45078],
"0.6667": [-5.50466, -2.79569, -33.3676],
"0.7083": [-6.97396, -6.91091, -39.16939],
"0.75": [-8.75181, -12.66452, -44.72621],
"0.7917": [-10.84411, -20.08928, -49.88713],
"0.8333": [-13.34003, -29.71342, -54.55761],
"0.875": [-16.22188, -40.6649, -58.75257],
"0.9167": [-19.65388, -53.69834, -62.25089],
"0.9583": [-26.60318, -67.42803, -66.09012],
"1.0": [-35.3251, -86.10628, -69.13573],
"1.0417": [-45.47726, -106.73784, -71.55172],
"1.0833": [-57.82789, -132.39146, -73.01751],
"1.125": [-72.39921, -162.95675, -73.13111],
"1.1667": [-89.34055, -197.99001, -72.07032],
"1.2083": [-109.12621, -239.05802, -69.27181],
"1.3333": [10, -9, 13],
"1.5": [10, -9, 13],
"1.8333": [0, 0, -2.09375],
"2.0833": [0, 0, 0]
}
},
"camera": {
"rotation": {
"0.0": {
"vector": [0, 0, 0]
},
"0.3333": {
"vector": [0, 0, -2],
"easing": "easeInElastic",
"easingArgs": [2]
},
"0.4167": {
"vector": [1, 1, 1],
"easing": "linear"
},
"0.5417": {
"vector": [-0.5, -1, -1],
"easing": "linear"
},
"0.6667": {
"vector": [0.25, 0, -2],
"easing": "linear"
},
"1.1667": {
"vector": [0.59, 0, -0.82]
},
"1.625": {
"vector": [0.33, 0.67, -1.2]
},
"2.0": {
"vector": [0, 1, -1.3]
},
"2.0417": {
"vector": [-1, -2, 1],
"easing": "linear"
},
"2.125": {
"vector": [1, 1, 0.2],
"easing": "linear"
},
"2.1667": {
"vector": [0.5, -1, 0.8],
"easing": "linear"
},
"2.3333": {
"vector": [-0.125, 0, -0.5]
},
"2.5833": {
"vector": [0, 0, 0]
}
"0.0": [0, 0, 0],
"0.3333": [0, 0, -2],
"0.4167": [1, 1, 1],
"0.5417": [-0.5, -1, -1],
"0.6667": [0.25, 0, -2],
"1.1667": [0.59, 0, -0.82],
"1.625": [0.33, 0.67, -1.2],
"2.0": [0, 1, -1.3],
"2.0417": [-1, -2, 1],
"2.125": [1, 1, 0.2],
"2.1667": [0.5, -1, 0.8],
"2.3333": [-0.125, 0, -0.5],
"2.5833": [0, 0, 0]
}
}
},
@ -361,53 +230,25 @@
"bones": {
"0": {
"rotation": {
"0.0": {
"vector": [27.21312, -47.42646, -2.0218]
},
"0.0833": {
"vector": [12.5, -15, 0]
},
"0.2083": {
"vector": [3.48268, 0.40464, 8.20687]
},
"0.4167": {
"vector": [0, 0, -2]
},
"0.5": {
"vector": [0, 0, 0]
}
"0.0": [27.21312, -47.42646, -2.0218],
"0.0833": [12.5, -15, 0],
"0.2083": [3.48268, 0.40464, 8.20687],
"0.4167": [0, 0, -2],
"0.5": [0, 0, 0]
},
"position": {
"0.0": {
"vector": [3, -17.3, 0]
},
"0.2083": {
"vector": [0, 0, -1.65]
},
"0.2917": {
"vector": [0, 0, 0.93]
},
"0.5": {
"vector": [0, 0, 0]
}
"0.0": [3, -17.3, 0],
"0.2083": [0, 0, -1.65],
"0.2917": [0, 0, 0.93],
"0.5": [0, 0, 0]
}
},
"camera": {
"rotation": {
"0.0": {
"vector": [0, 0, 0]
},
"0.2083": {
"vector": [0, 0, 0]
},
"0.2917": {
"vector": [0.25, -0.5, 0.5],
"easing": "easeInSine"
},
"0.4167": {
"vector": [0, 0, 0],
"easing": "easeOutSine"
}
"0.0": [0, 0, 0],
"0.2083": [0, 0, 0],
"0.2917": [0.25, -0.5, 0.5],
"0.4167": [0, 0, 0]
}
}
}
@ -418,71 +259,27 @@
"bones": {
"0": {
"rotation": {
"0.0": {
"vector": [4.74287, -58.94632, 9.89514]
},
"0.2": {
"vector": [-8.55104, -59.60571, 19.61648],
"easing": "easeInSine"
},
"0.4": {
"vector": [-8.58141, -58.99717, 19.60323],
"easing": "easeOutSine"
},
"0.6": {
"vector": [-0.82277, -58.8651, 9.93666],
"easing": "easeInSine"
},
"0.8": {
"vector": [4.74287, -58.94632, 9.89514]
}
"0.0": [4.74287, -58.94632, 9.89514],
"0.2": [-8.55104, -59.60571, 19.61648],
"0.4": [-8.58141, -58.99717, 19.60323],
"0.6": [-0.82277, -58.8651, 9.93666],
"0.8": [4.74287, -58.94632, 9.89514]
},
"position": {
"0.0": {
"vector": [5.5, -3, 0]
},
"0.2": {
"vector": [3.75, -2.5, 0],
"easing": "easeInSine"
},
"0.4": {
"vector": [2.5, -3, 0],
"easing": "easeOutSine"
},
"0.6": {
"vector": [4.25, -2.5, 0],
"easing": "easeInSine"
},
"0.8": {
"vector": [5.5, -3, 0]
}
}
},
"Righthand": {
"rotation": {
"vector": [0, 12.5, 0]
},
"position": {
"vector": [2.19838, 0, -0.07415]
"0.0": [5.5, -3, 0],
"0.2": [3.75, -2.5, 0],
"0.4": [2.5, -3, 0],
"0.6": [4.25, -2.5, 0],
"0.8": [5.5, -3, 0]
}
},
"camera": {
"rotation": {
"0.0": {
"vector": [-0.3, -0.3, 0.3]
},
"0.2": {
"vector": [0.3, 0, -0.3]
},
"0.4": {
"vector": [-0.3, 0.3, 0.3]
},
"0.6": {
"vector": [0.3, 0, -0.3]
},
"0.8": {
"vector": [-0.3, -0.3, 0.3]
}
"0.0": [-0.3, -0.3, 0.3],
"0.2": [0.3, 0, -0.3],
"0.4": [-0.3, 0.3, 0.3],
"0.6": [0.3, 0, -0.3],
"0.8": [-0.3, -0.3, 0.3]
}
}
}
@ -493,70 +290,30 @@
"bones": {
"0": {
"rotation": {
"0.0": {
"vector": [-64.40359, 6.54216, -8.29677]
},
"0.175": {
"vector": [-63.64549, 6.90094, -2.09726],
"easing": "easeInSine"
},
"0.35": {
"vector": [-64.40359, 6.54216, -8.29677],
"easing": "easeOutSine"
},
"0.525": {
"vector": [-65.4022, 6.21514, -14.3956],
"easing": "easeInSine"
},
"0.7": {
"vector": [-64.40359, 6.54216, -8.29677],
"easing": "easeOutSine"
}
"0.0": [-64.40359, 6.54216, -8.29677],
"0.175": [-63.64549, 6.90094, -2.09726],
"0.35": [-64.40359, 6.54216, -8.29677],
"0.525": [-65.4022, 6.21514, -14.3956],
"0.7": [-64.40359, 6.54216, -8.29677]
},
"position": {
"0.0": {
"vector": [-3.5, 2, 0],
"easing": "easeOutSine"
},
"0.175": {
"vector": [-4.5, 4, 0],
"easing": "easeInSine"
},
"0.35": {
"vector": [-5.5, 2, 0],
"easing": "easeOutSine"
},
"0.525": {
"vector": [-4.5, 4, 0],
"easing": "easeInSine"
},
"0.7": {
"vector": [-3.5, 2, 0],
"easing": "easeOutSine"
}
"0.0": [-3.5, 2, 0],
"0.175": [-4.5, 4, 0],
"0.35": [-5.5, 2, 0],
"0.525": [-4.5, 4, 0],
"0.7": [-3.5, 2, 0]
}
},
"camera": {
"rotation": {
"0.0": {
"vector": [-0.3, -0.3, 0.3]
},
"0.175": {
"vector": [0.3, 0, -0.3]
},
"0.35": {
"vector": [-0.3, 0.3, 0.3]
},
"0.525": {
"vector": [0.3, 0, -0.3]
},
"0.7": {
"vector": [-0.3, -0.3, 0.3]
"0.0": [-0.3, -0.3, 0.3],
"0.175": [0.3, 0, -0.3],
"0.35": [-0.3, 0.3, 0.3],
"0.525": [0.3, 0, -0.3],
"0.7": [-0.3, -0.3, 0.3]
}
}
}
}
}
},
"geckolib_format_version": 2
}

View file

@ -19826,19 +19826,19 @@
{
"name": "Lefthand",
"parent": "magazine",
"pivot": [6.23575, -6.41469, -1.32145],
"rotation": [86.71153, -50.16741, -123.46245],
"pivot": [1.28636, -0.07038, -7.39903],
"rotation": [-88.72948, -51.54928, -132.8024],
"cubes": [
{
"origin": [4.63575, -6.41469, -3.07145],
"size": [3, 12, 4],
"origin": [-0.71364, -1.07038, -9.39903],
"size": [4, 12, 4],
"uv": {
"north": {"uv": [35.5, 31], "uv_size": [0.25, 0.25]},
"east": {"uv": [35.5, 31], "uv_size": [0.25, 0.25]},
"south": {"uv": [35.5, 31], "uv_size": [0.25, 0.25]},
"west": {"uv": [35.5, 31], "uv_size": [0.25, 0.25]},
"up": {"uv": [35.75, 31.25], "uv_size": [-0.25, -0.25]},
"down": {"uv": [35.75, 31.25], "uv_size": [-0.25, -0.25]}
"north": {"uv": [9.5, 35.5], "uv_size": [-0.5, -0.5]},
"east": {"uv": [9.5, 35.5], "uv_size": [-0.5, -0.5]},
"south": {"uv": [9.5, 35.5], "uv_size": [-0.5, -0.5]},
"west": {"uv": [10.5, 34], "uv_size": [-0.5, -0.5]},
"up": {"uv": [9, 35], "uv_size": [0.5, 0.5]},
"down": {"uv": [9, 35], "uv_size": [0.5, 0.5]}
}
}
]
@ -22120,19 +22120,19 @@
{
"name": "Righthand",
"parent": "0",
"pivot": [-3.9878, -4.75077, 12.17668],
"rotation": [107.23447, 13.26214, -173.79815],
"pivot": [-0.60468, -1.33634, 1.54587],
"rotation": [-75.81552, 9.63414, -177.43973],
"cubes": [
{
"origin": [-5.9878, -3.75077, 10.17668],
"origin": [-2.60468, -2.33634, -0.45413],
"size": [4, 12, 4],
"uv": {
"north": {"uv": [4, 4], "uv_size": [0.25, 0.25]},
"east": {"uv": [4, 4], "uv_size": [0.25, 0.25]},
"south": {"uv": [4, 4], "uv_size": [0.25, 0.25]},
"west": {"uv": [4, 4], "uv_size": [0.25, 0.25]},
"up": {"uv": [4.25, 4.25], "uv_size": [-0.25, -0.25]},
"down": {"uv": [4.25, 4.25], "uv_size": [-0.25, -0.25]}
"north": {"uv": [10.5, 31], "uv_size": [-0.5, 0.5]},
"east": {"uv": [10.5, 31], "uv_size": [-0.5, 0.5]},
"south": {"uv": [10.5, 31], "uv_size": [-0.5, 0.5]},
"west": {"uv": [10.5, 31], "uv_size": [-0.5, 0.5]},
"up": {"uv": [10, 31.5], "uv_size": [0.5, -0.5]},
"down": {"uv": [10, 31.5], "uv_size": [0.5, -0.5]}
}
}
]

File diff suppressed because it is too large Load diff

View file

@ -6,7 +6,7 @@
"identifier": "geometry.taser",
"texture_width": 32,
"texture_height": 32,
"visible_bounds_width": 3,
"visible_bounds_width": 4,
"visible_bounds_height": 3,
"visible_bounds_offset": [0, 0.5, 0]
},
@ -167,11 +167,11 @@
{
"name": "Righthand",
"parent": "0",
"pivot": [-2.4, -2.9, 11.5],
"rotation": [96.64168, 7.15102, -177.73292],
"pivot": [-1.15468, -2.08634, -0.45413],
"rotation": [-76.32882, 10.3564, 179.6036],
"cubes": [
{
"origin": [-4.4, -2.9, 9.5],
"origin": [-3.15468, -3.08634, -2.45413],
"size": [4, 12, 4],
"uv": {
"north": {"uv": [1.25, 30], "uv_size": [-1.25, 2]},
@ -187,14 +187,12 @@
{
"name": "Lefthand",
"parent": "0",
"pivot": [2.2, -6.3, 9.6],
"rotation": [109.69635, -4.47536, 178.48092],
"pivot": [0.4046, -2.34567, -1.07012],
"rotation": [-68.00049, -19.4896, 179.16409],
"cubes": [
{
"origin": [0.6, -6.3, 7.9],
"origin": [-1.5954, -3.34567, -3.07012],
"size": [4, 12, 4],
"pivot": [2.6, -0.3, 9.9],
"rotation": [0, 17, 0],
"uv": {
"north": {"uv": [1.25, 32], "uv_size": [-1.25, -2]},
"east": {"uv": [1.25, 32], "uv_size": [-1.25, -2]},

View file

@ -42,6 +42,7 @@
"item.superbwarfare.glock_17": "GLOCK-17",
"item.superbwarfare.glock_18": "GLOCK-18",
"item.superbwarfare.m_1911": "M1911A1",
"item.superbwarfare.mp_443": "MP-443",
"item.superbwarfare.qbz_95": "QBZ-95-1",
"item.superbwarfare.k_98": "KAR-98K",
"item.superbwarfare.mosin_nagant": "Mosin Nagant",
@ -93,6 +94,7 @@
"item.superbwarfare.taser_blueprint": "TASER Blueprint",
"item.superbwarfare.glock_17_blueprint": "GLOCK-17 Blueprint",
"item.superbwarfare.glock_18_blueprint": "GLOCK-18 Blueprint",
"item.superbwarfare.mp_443_blueprint": "Mp-443 Blueprint",
"item.superbwarfare.m_1911_blueprint": "M1911 Blueprint",
"item.superbwarfare.qbz_95_blueprint": "QBZ-95-1 Blueprint",
"item.superbwarfare.k_98_blueprint": "KAR-98K Blueprint",

View file

@ -42,6 +42,7 @@
"item.superbwarfare.glock_17": "格洛克17手枪",
"item.superbwarfare.glock_18": "格洛克18手枪",
"item.superbwarfare.m_1911": "M1911手枪",
"item.superbwarfare.mp_443": "MP-443手枪",
"item.superbwarfare.qbz_95": "95-1式自动步枪",
"item.superbwarfare.k_98": "KAR-98K",
"item.superbwarfare.mosin_nagant": "莫辛纳甘",
@ -93,6 +94,7 @@
"item.superbwarfare.taser_blueprint": "泰瑟枪蓝图",
"item.superbwarfare.glock_17_blueprint": "格洛克17手枪蓝图",
"item.superbwarfare.glock_18_blueprint": "格洛克18手枪蓝图",
"item.superbwarfare.mp_443_blueprint": "Mp-443手枪蓝图",
"item.superbwarfare.m_1911_blueprint": "M1911手枪蓝图",
"item.superbwarfare.qbz_95_blueprint": "95-1式自动步枪蓝图",
"item.superbwarfare.k_98_blueprint": "KAR-98K蓝图",

View file

@ -0,0 +1,165 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"0": "superbwarfare:item/mp443_3d",
"particle": "superbwarfare:item/mp443_3d"
},
"elements": [
{
"from": [7.1, 7, 9.5],
"to": [8.9, 8, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 6, 2]},
"faces": {
"north": {"uv": [6, 8, 7, 8.5], "texture": "#0"},
"east": {"uv": [7, 3, 9.5, 3.5], "texture": "#0"},
"south": {"uv": [8, 7, 9, 7.5], "texture": "#0"},
"west": {"uv": [7, 3.5, 9.5, 4], "texture": "#0"},
"up": {"uv": [5, 8, 4, 5.5], "texture": "#0"},
"down": {"uv": [6, 5.5, 5, 8], "texture": "#0"}
}
},
{
"from": [7.1, 7, 7],
"to": [8.9, 7.5, 9.5],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 6, 2]},
"faces": {
"north": {"uv": [3, 8.5, 4, 9], "texture": "#0"},
"east": {"uv": [3, 8, 4.5, 8.5], "texture": "#0"},
"south": {"uv": [4, 8.5, 5, 9], "texture": "#0"},
"west": {"uv": [4.5, 8, 6, 8.5], "texture": "#0"},
"up": {"uv": [8, 1.5, 7, 0], "texture": "#0"},
"down": {"uv": [8, 1.5, 7, 3], "texture": "#0"}
}
},
{
"from": [7.1, 7, 3],
"to": [8.9, 8, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 6, 2]},
"faces": {
"north": {"uv": [5, 8.5, 6, 9], "texture": "#0"},
"east": {"uv": [8, 0, 10, 0.5], "texture": "#0"},
"south": {"uv": [6, 8.5, 7, 9], "texture": "#0"},
"west": {"uv": [8, 0.5, 10, 1], "texture": "#0"},
"up": {"uv": [7, 4, 6, 2], "texture": "#0"},
"down": {"uv": [4, 6, 3, 8], "texture": "#0"}
}
},
{
"from": [7.1, 5, 6.5],
"to": [8.9, 7, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 4, 2]},
"faces": {
"north": {"uv": [0.5, 7.5, 1.5, 8.5], "texture": "#0"},
"east": {"uv": [3, 0, 7, 1], "texture": "#0"},
"south": {"uv": [1.5, 7.5, 2.5, 8.5], "texture": "#0"},
"west": {"uv": [3, 1, 7, 2], "texture": "#0"},
"up": {"uv": [4, 6, 3, 2], "texture": "#0"},
"down": {"uv": [1, 3.5, 0, 7.5], "texture": "#0"}
}
},
{
"from": [7.1, 5.75723, 12.92312],
"to": [8.9, 7.60723, 13.69312],
"rotation": {"angle": 22.5, "axis": "x", "origin": [7, 4.60723, 11.94312]},
"faces": {
"north": {"uv": [8, 1, 9, 2], "texture": "#0"},
"east": {"uv": [2, 8.5, 2.5, 9.5], "texture": "#0"},
"south": {"uv": [8, 2, 9, 3], "texture": "#0"},
"west": {"uv": [7, 8.5, 7.5, 9.5], "texture": "#0"},
"up": {"uv": [9.5, 8.5, 8.5, 8], "texture": "#0"},
"down": {"uv": [10, 1, 9, 1.5], "texture": "#0"}
}
},
{
"from": [7.2, 6.5, 2],
"to": [8.8, 7.9, 9.75],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 4, 2]},
"faces": {
"north": {"uv": [8.5, 7.5, 9.5, 8], "texture": "#0"},
"east": {"uv": [6, 4, 10, 4.5], "texture": "#0"},
"south": {"uv": [8, 8.5, 9, 9], "texture": "#0"},
"west": {"uv": [6, 4.5, 10, 5], "texture": "#0"},
"up": {"uv": [2, 7.5, 1, 3.5], "texture": "#0"},
"down": {"uv": [3, 3.5, 2, 7.5], "texture": "#0"}
}
},
{
"from": [7.35, 5.25, 2],
"to": [8.65, 6.5, 6.5],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 4, 2]},
"faces": {
"north": {"uv": [3.5, 9, 4, 9.5], "texture": "#0"},
"east": {"uv": [7, 5, 9.5, 5.5], "texture": "#0"},
"south": {"uv": [4, 9, 4.5, 9.5], "texture": "#0"},
"west": {"uv": [7, 5.5, 9.5, 6], "texture": "#0"},
"up": {"uv": [7.5, 8.5, 7, 6], "texture": "#0"},
"down": {"uv": [0.5, 7.5, 0, 10], "texture": "#0"}
}
},
{
"from": [7.75, 3.25, 7],
"to": [8.25, 5, 7.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 4.125, 7.125]},
"faces": {
"north": {"uv": [8, 7.5, 8.5, 8.5], "texture": "#0"},
"east": {"uv": [0.5, 8.5, 1, 9.5], "texture": "#0"},
"south": {"uv": [1, 8.5, 1.5, 9.5], "texture": "#0"},
"west": {"uv": [1.5, 8.5, 2, 9.5], "texture": "#0"},
"up": {"uv": [9.5, 2, 9, 1.5], "texture": "#0"},
"down": {"uv": [9.5, 2, 9, 2.5], "texture": "#0"}
}
},
{
"from": [7.75, 3.25, 7.25],
"to": [8.25, 3.5, 10.75],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 3.375, 8.875]},
"faces": {
"north": {"uv": [9, 2.5, 9.5, 3], "texture": "#0"},
"east": {"uv": [7.5, 6, 9.5, 6.5], "texture": "#0"},
"south": {"uv": [3, 9, 3.5, 9.5], "texture": "#0"},
"west": {"uv": [7.5, 6.5, 9.5, 7], "texture": "#0"},
"up": {"uv": [3, 9.5, 2.5, 7.5], "texture": "#0"},
"down": {"uv": [8, 7, 7.5, 9], "texture": "#0"}
}
},
{
"from": [7.15781, -0.26537, 10.40224],
"to": [8.84219, 6.23463, 13.15224],
"rotation": {"angle": -22.5, "axis": "x", "origin": [7, 4.23463, 12.15224]},
"faces": {
"north": {"uv": [4, 2, 5, 5.5], "texture": "#0"},
"east": {"uv": [0, 0, 1.5, 3.5], "texture": "#0"},
"south": {"uv": [5, 2, 6, 5.5], "texture": "#0"},
"west": {"uv": [1.5, 0, 3, 3.5], "texture": "#0"},
"up": {"uv": [7, 6.5, 6, 5], "texture": "#0"},
"down": {"uv": [7, 6.5, 6, 8], "texture": "#0"}
}
}
],
"display": {
"thirdperson_righthand": {
"translation": [-1, 1.5, 0],
"scale": [0.5, 0.5, 0.5]
},
"thirdperson_lefthand": {
"scale": [0, 0, 0]
},
"firstperson_lefthand": {
"translation": [0, -80, 0],
"scale": [0, 0, 0]
},
"ground": {
"translation": [0, -0.25, 0],
"scale": [0.75, 0.75, 0.75]
},
"head": {
"translation": [0, 10.25, 0]
},
"fixed": {
"rotation": [90, 45, -90],
"translation": [1.25, 4, 0],
"scale": [1.2, 1.2, 1.2]
}
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "superbwarfare:item/mp443_icon"
}
}

View file

@ -0,0 +1,27 @@
{
"loader": "forge:separate_transforms",
"gui_light": "front",
"base": {
"parent": "superbwarfare:item/glock_17_base"
},
"perspectives": {
"gui": {
"parent": "superbwarfare:item/mp443_icon"
},
"thirdperson_righthand": {
"parent": "superbwarfare:item/mp443_3d"
},
"thirdperson_lefthand": {
"parent": "superbwarfare:item/mp443_3d"
},
"ground": {
"parent": "superbwarfare:item/mp443_3d"
},
"fixed": {
"parent": "superbwarfare:item/mp443_3d"
},
"head": {
"parent": "superbwarfare:item/mp443_3d"
}
}
}

View file

@ -1359,50 +1359,18 @@
}
]
},
"glock_18_fire_1p": {
"mp_443_fire_1p": {
"sounds": [
{
"name": "superbwarfare:glock_17/glock_fire_1p",
"name": "superbwarfare:mp443/mp443_fire_1p",
"stream": false
}
]
},
"glock_18_fire_3p": {
"mp_443_fire_3p": {
"sounds": [
{
"name": "superbwarfare:glock_17/glock_fire_3p",
"stream": false
}
]
},
"glock_18_far": {
"sounds": [
{
"name": "superbwarfare:glock_17/glock_far",
"stream": false
}
]
},
"glock_18_veryfar": {
"sounds": [
{
"name": "superbwarfare:glock_17/glock_veryfar",
"stream": false
}
]
},
"glock_18_reload_normal": {
"sounds": [
{
"name": "superbwarfare:glock_17/glock_reload_normal",
"stream": false
}
]
},
"glock_18_reload_empty": {
"sounds": [
{
"name": "superbwarfare:glock_17/glock_reload_empty",
"name": "superbwarfare:mp443/mp443_fire_3p",
"stream": false
}
]
@ -1439,22 +1407,6 @@
}
]
},
"m_1911_reload_normal": {
"sounds": [
{
"name": "superbwarfare:glock_17/glock_reload_normal",
"stream": false
}
]
},
"m_1911_reload_empty": {
"sounds": [
{
"name": "superbwarfare:glock_17/glock_reload_empty",
"stream": false
}
]
},
"qbz_95_fire_1p": {
"sounds": [
{

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 390 B

View file

@ -0,0 +1,15 @@
{
"Spread": 2.5,
"RecoilX": 0.004,
"RecoilY": 0.013,
"Damage": 5.5,
"Headshot": 1.5,
"Velocity": 17,
"Magazine": 17,
"Weight": 1,
"NormalReloadTime": 44,
"EmptyReloadTime": 47,
"BypassesArmor": 0.15,
"SoundRadius": 8,
"RPM": 400
}

View file

@ -32,6 +32,20 @@
}
]
},
{
"type": "minecraft:item",
"name": "superbwarfare:mp_443_blueprint",
"weight": 50,
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 1
}
}
]
},
{
"type": "minecraft:item",
"name": "superbwarfare:m_1911_blueprint",

View file

@ -7,7 +7,21 @@
{
"type": "minecraft:item",
"name": "superbwarfare:glock_17_blueprint",
"weight": 9,
"weight": 10,
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 1
}
}
]
},
{
"type": "minecraft:item",
"name": "superbwarfare:mp_443_blueprint",
"weight": 10,
"functions": [
{
"function": "set_count",

View file

@ -0,0 +1,15 @@
{
"type": "minecraft:smithing_transform",
"template": {
"item": "superbwarfare:mp_443_blueprint"
},
"base": {
"item": "superbwarfare:common_material_pack"
},
"addition": {
"item": "minecraft:iron_ingot"
},
"result": {
"item": "superbwarfare:mp_443"
}
}

View file

@ -0,0 +1,24 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"pattern": [
"aba",
"aca",
"aaa"
],
"key": {
"a": {
"item": "minecraft:diamond"
},
"b": {
"item": "superbwarfare:mp_443_blueprint"
},
"c": {
"item": "minecraft:lapis_lazuli"
}
},
"result": {
"item": "superbwarfare:mp_443_blueprint",
"count": 2
}
}