移除光剑,优化AK动画,添加vector的配件支持
|
@ -1,4 +1,4 @@
|
|||
// 1.20.1 2024-11-14T03:25:59.6528686 Tags for minecraft:item mod id superbwarfare
|
||||
// 1.20.1 2024-11-16T20:28:57.8771961 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
|
||||
|
@ -27,12 +27,12 @@ af6fd64b4a685c353f243763db268f7b2304c009 data/forge/tags/items/storage_blocks/le
|
|||
3743c2790deca7e779d3e4b82f092de39b446988 data/forge/tags/items/storage_blocks/steel.json
|
||||
144e54d908121dee498b2ebba3b24b09fd6f18d9 data/forge/tags/items/storage_blocks/tungsten.json
|
||||
4d4dfd25a2a749e000e1bb742c2f984d4e094e5d data/superbwarfare/tags/items/cannot_reload.json
|
||||
d1fe14a7d67387be04db7b0b2de6eba51721de27 data/superbwarfare/tags/items/can_apply_barrel.json
|
||||
06903a776ee9462fc6013b2c7f6e9afdef092aaa data/superbwarfare/tags/items/can_apply_grip.json
|
||||
d1fe14a7d67387be04db7b0b2de6eba51721de27 data/superbwarfare/tags/items/can_apply_magazine.json
|
||||
d1fe14a7d67387be04db7b0b2de6eba51721de27 data/superbwarfare/tags/items/can_apply_scope.json
|
||||
4076a1feed311ef566e890e64f70c1c79a8feb49 data/superbwarfare/tags/items/can_apply_stock.json
|
||||
d1fe14a7d67387be04db7b0b2de6eba51721de27 data/superbwarfare/tags/items/can_custom_gun.json
|
||||
785859aa510afdd9153a306eda6acfac71eefa9f data/superbwarfare/tags/items/can_apply_barrel.json
|
||||
25f2401d6f8c466b44274bcb6eddad6fa6f6d94f data/superbwarfare/tags/items/can_apply_grip.json
|
||||
785859aa510afdd9153a306eda6acfac71eefa9f data/superbwarfare/tags/items/can_apply_magazine.json
|
||||
785859aa510afdd9153a306eda6acfac71eefa9f data/superbwarfare/tags/items/can_apply_scope.json
|
||||
92e3d5c30f3d6893d64dddc24d748250a6760ba4 data/superbwarfare/tags/items/can_apply_stock.json
|
||||
785859aa510afdd9153a306eda6acfac71eefa9f data/superbwarfare/tags/items/can_custom_gun.json
|
||||
dff9ff6d6637951191906cb55a210ae5a3ad5cd6 data/superbwarfare/tags/items/extra_one_ammo.json
|
||||
52598e22974c8da0d2852defe4c9005e1d67744b data/superbwarfare/tags/items/gun.json
|
||||
62eb408544731ce4cfcd119d8a6cc74731189ac0 data/superbwarfare/tags/items/handgun.json
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
"superbwarfare:ak_47",
|
||||
"superbwarfare:m_4",
|
||||
"superbwarfare:hk_416",
|
||||
"superbwarfare:qbz_95"
|
||||
"superbwarfare:qbz_95",
|
||||
"superbwarfare:vector"
|
||||
]
|
||||
}
|
|
@ -4,6 +4,7 @@
|
|||
"superbwarfare:m_4",
|
||||
"superbwarfare:hk_416",
|
||||
"superbwarfare:qbz_95",
|
||||
"superbwarfare:ak_47"
|
||||
"superbwarfare:ak_47",
|
||||
"superbwarfare:vector"
|
||||
]
|
||||
}
|
|
@ -4,6 +4,7 @@
|
|||
"superbwarfare:ak_47",
|
||||
"superbwarfare:m_4",
|
||||
"superbwarfare:hk_416",
|
||||
"superbwarfare:qbz_95"
|
||||
"superbwarfare:qbz_95",
|
||||
"superbwarfare:vector"
|
||||
]
|
||||
}
|
|
@ -4,6 +4,7 @@
|
|||
"superbwarfare:ak_47",
|
||||
"superbwarfare:m_4",
|
||||
"superbwarfare:hk_416",
|
||||
"superbwarfare:qbz_95"
|
||||
"superbwarfare:qbz_95",
|
||||
"superbwarfare:vector"
|
||||
]
|
||||
}
|
|
@ -3,6 +3,7 @@
|
|||
"superbwarfare:ak_12",
|
||||
"superbwarfare:ak_47",
|
||||
"superbwarfare:m_4",
|
||||
"superbwarfare:hk_416"
|
||||
"superbwarfare:hk_416",
|
||||
"superbwarfare:vector"
|
||||
]
|
||||
}
|
|
@ -4,6 +4,7 @@
|
|||
"superbwarfare:ak_47",
|
||||
"superbwarfare:m_4",
|
||||
"superbwarfare:hk_416",
|
||||
"superbwarfare:qbz_95"
|
||||
"superbwarfare:qbz_95",
|
||||
"superbwarfare:vector"
|
||||
]
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
package net.mcreator.superbwarfare.client.layer;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import net.mcreator.superbwarfare.ModUtils;
|
||||
import net.mcreator.superbwarfare.item.LightSaber;
|
||||
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 LightSaberLayer extends GeoRenderLayer<LightSaber> {
|
||||
private static final ResourceLocation LAYER = new ResourceLocation(ModUtils.MODID, "textures/item/light_saber_e.png");
|
||||
|
||||
public LightSaberLayer(GeoRenderer<LightSaber> entityRenderer) {
|
||||
super(entityRenderer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(PoseStack poseStack, LightSaber 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);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
package net.mcreator.superbwarfare.client.layer;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import net.mcreator.superbwarfare.ModUtils;
|
||||
import net.mcreator.superbwarfare.init.ModTags;
|
||||
import net.mcreator.superbwarfare.item.gun.machinegun.MinigunItem;
|
||||
import net.minecraft.client.Minecraft;
|
||||
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 net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import software.bernie.geckolib.cache.object.BakedGeoModel;
|
||||
import software.bernie.geckolib.renderer.GeoRenderer;
|
||||
import software.bernie.geckolib.renderer.layer.GeoRenderLayer;
|
||||
|
||||
public class MinigunHeatLayer extends GeoRenderLayer<MinigunItem> {
|
||||
private static final ResourceLocation LAYER = new ResourceLocation(ModUtils.MODID, "textures/item/minigun_heat_e.png");
|
||||
|
||||
public MinigunHeatLayer(GeoRenderer<MinigunItem> itemGeoRenderer) {
|
||||
super(itemGeoRenderer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(PoseStack poseStack, MinigunItem animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) {
|
||||
RenderType glowRenderType = RenderType.eyes(LAYER);
|
||||
Player player = Minecraft.getInstance().player;
|
||||
if (player == null) return;
|
||||
ItemStack stack = player.getMainHandItem();
|
||||
if (!stack.is(ModTags.Items.GUN)) return;
|
||||
float heat = (float) stack.getOrCreateTag().getDouble("heat");
|
||||
getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, heat / 55, heat / 55, heat / 55, 1);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
package net.mcreator.superbwarfare.client.model.item;
|
||||
|
||||
import net.mcreator.superbwarfare.ModUtils;
|
||||
import net.mcreator.superbwarfare.item.LightSaber;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import software.bernie.geckolib.model.GeoModel;
|
||||
|
||||
public class LightSaberItemModel extends GeoModel<LightSaber> {
|
||||
|
||||
@Override
|
||||
public ResourceLocation getAnimationResource(LightSaber animatable) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getModelResource(LightSaber animatable) {
|
||||
return ModUtils.loc("geo/light_saber.geo.json");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getTextureResource(LightSaber animatable) {
|
||||
return ModUtils.loc("textures/item/light_saber.png");
|
||||
}
|
||||
}
|
|
@ -34,7 +34,6 @@ public class MinigunItemModel extends GeoModel<MinigunItem> {
|
|||
public void setCustomAnimations(MinigunItem animatable, long instanceId, AnimationState animationState) {
|
||||
CoreGeoBone gun = getAnimationProcessor().getBone("barrel");
|
||||
CoreGeoBone shen = getAnimationProcessor().getBone("shen");
|
||||
CoreGeoBone heat_barrels = getAnimationProcessor().getBone("heatbarrels");
|
||||
|
||||
Player player = Minecraft.getInstance().player;
|
||||
if (player == null) return;
|
||||
|
@ -57,10 +56,6 @@ public class MinigunItemModel extends GeoModel<MinigunItem> {
|
|||
double fp = ClientEventHandler.firePos;
|
||||
double fr = ClientEventHandler.fireRot;
|
||||
|
||||
float heat = (float) stack.getOrCreateTag().getDouble("heat");
|
||||
|
||||
heat_barrels.setScaleZ(4 * heat);
|
||||
|
||||
int rpm = stack.getOrCreateTag().getInt("rpm");
|
||||
|
||||
gun.setRotZ(gun.getRotZ() + times * -0.07f * ((float) rpm / 1200) * ClientEventHandler.miniGunRot);
|
||||
|
|
|
@ -15,8 +15,15 @@ import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
|
|||
import software.bernie.geckolib.core.animation.AnimationState;
|
||||
import software.bernie.geckolib.model.GeoModel;
|
||||
|
||||
import static net.mcreator.superbwarfare.event.PlayerEventHandler.isProne;
|
||||
|
||||
public class VectorItemModel extends GeoModel<VectorItem> {
|
||||
|
||||
public static float fireRotY = 0f;
|
||||
public static float fireRotZ = 0f;
|
||||
public static float rotXBipod = 0f;
|
||||
public static float rotXSight = 0f;
|
||||
|
||||
@Override
|
||||
public ResourceLocation getAnimationResource(VectorItem animatable) {
|
||||
return ModUtils.loc("animations/vector.animation.json");
|
||||
|
@ -35,9 +42,15 @@ public class VectorItemModel extends GeoModel<VectorItem> {
|
|||
@Override
|
||||
public void setCustomAnimations(VectorItem animatable, long instanceId, AnimationState animationState) {
|
||||
CoreGeoBone gun = getAnimationProcessor().getBone("bone");
|
||||
CoreGeoBone shen = getAnimationProcessor().getBone("shen");
|
||||
CoreGeoBone scope = getAnimationProcessor().getBone("scope");
|
||||
CoreGeoBone scope = getAnimationProcessor().getBone("Scope1");
|
||||
// CoreGeoBone scope2 = getAnimationProcessor().getBone("Scope2");
|
||||
// CoreGeoBone scope3 = getAnimationProcessor().getBone("Scope3");
|
||||
CoreGeoBone cross1 = getAnimationProcessor().getBone("Cross1");
|
||||
// CoreGeoBone cross2 = getAnimationProcessor().getBone("Cross2");
|
||||
// CoreGeoBone cross3 = getAnimationProcessor().getBone("Cross3");
|
||||
CoreGeoBone kmj = getAnimationProcessor().getBone("kuaimanji");
|
||||
CoreGeoBone sight1fold = getAnimationProcessor().getBone("SightFold1");
|
||||
CoreGeoBone sight2fold = getAnimationProcessor().getBone("SightFold2");
|
||||
|
||||
Player player = Minecraft.getInstance().player;
|
||||
if (player == null) return;
|
||||
|
@ -69,31 +82,69 @@ public class VectorItemModel extends GeoModel<VectorItem> {
|
|||
double turnRotX = ClientEventHandler.turnRot[0];
|
||||
double turnRotY = ClientEventHandler.turnRot[1];
|
||||
double turnRotZ = ClientEventHandler.turnRot[2];
|
||||
double fpz = ClientEventHandler.firePosZ * 13 * times;
|
||||
double fpz = ClientEventHandler.firePosZ * 20 * times;
|
||||
double fp = ClientEventHandler.firePos;
|
||||
double fr = ClientEventHandler.fireRot;
|
||||
|
||||
gun.setPosX(2.35f * (float) zp);
|
||||
gun.setPosY(0.74f * (float) zp - (float) (0.2f * zpz));
|
||||
gun.setPosZ(5f * (float) zp + (float) (0.3f * zpz));
|
||||
int type = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.SCOPE);
|
||||
|
||||
float posY = switch (type) {
|
||||
case 1 -> 0.74f;
|
||||
case 2 -> 0.12f;
|
||||
default -> 0.07f;
|
||||
};
|
||||
|
||||
gun.setPosX(2.356f * (float) zp);
|
||||
gun.setPosY(posY * (float) zp - (float) (0.2f * zpz));
|
||||
gun.setPosZ((type == 2 ? 6 : 5) * (float) zp + (float) (0.3f * zpz));
|
||||
gun.setScaleZ(1f - (0.5f * (float) zp));
|
||||
scope.setScaleZ(1f - (0.2f * (float) zp));
|
||||
|
||||
stack.getOrCreateTag().putBoolean("HoloHidden", gun.getPosX() <= 2);
|
||||
|
||||
shen.setPosX((float) (0.95f * ClientEventHandler.recoilHorizon * fpz * fp));
|
||||
shen.setPosY((float) (-0.05f * fp - 0.04f * fr));
|
||||
shen.setPosZ(0.25f * (float) (7.825 * fp + 0.64f * fr + 2.35 * fpz));
|
||||
shen.setRotX((float) (0.02f * fp + 0.07f * fr + 0.01f * fpz));
|
||||
shen.setRotY((float) (0.1f * ClientEventHandler.recoilHorizon * fpz));
|
||||
shen.setRotZ((float) ((0.08f + 0.1 * fr) * ClientEventHandler.recoilHorizon));
|
||||
CoreGeoBone shen;
|
||||
if (zt < 0.5) {
|
||||
shen = getAnimationProcessor().getBone("fireRootNormal");
|
||||
} else {
|
||||
shen = switch (type) {
|
||||
case 0 -> getAnimationProcessor().getBone("fireRoot0");
|
||||
case 1 -> getAnimationProcessor().getBone("fireRoot1");
|
||||
case 2 -> getAnimationProcessor().getBone("fireRoot2");
|
||||
case 3 -> getAnimationProcessor().getBone("fireRoot3");
|
||||
default -> getAnimationProcessor().getBone("fireRootNormal");
|
||||
};
|
||||
}
|
||||
|
||||
shen.setPosX((float) (shen.getPosX() * (1 - 0.5 * zt)));
|
||||
shen.setPosY((float) (shen.getPosY() * (1 + 0.4 * zt)));
|
||||
shen.setPosZ((float) (shen.getPosZ() * (1 - 0.3 * zt)));
|
||||
shen.setRotX((float) (shen.getRotX() * (1 - 0.9 * zt)));
|
||||
shen.setRotY((float) (shen.getRotY() * (1 - 0.9 * zt)));
|
||||
shen.setRotZ((float) (shen.getRotZ() * (1 - 0.9 * zt)));
|
||||
fireRotY = (float) Mth.lerp(0.5f * times, fireRotY, 0.2f * ClientEventHandler.recoilHorizon * fpz);
|
||||
fireRotZ = (float) Mth.lerp(2f * times, fireRotZ, (0.2f + 0.3 * fpz) * ClientEventHandler.recoilHorizon);
|
||||
|
||||
shen.setPosX(-0.4f * (float) (ClientEventHandler.recoilHorizon * (0.5 + 0.4 * ClientEventHandler.fireSpread)));
|
||||
shen.setPosY((float) (0.15f * fp + 0.18f * fr));
|
||||
shen.setPosZ((float) (0.375 * fp + 0.44f * fr + 0.75 * fpz));
|
||||
shen.setRotX((float) (0.01f * fp + 0.05f * fr + 0.01f * fpz));
|
||||
shen.setRotY(fireRotY);
|
||||
shen.setRotZ(fireRotZ);
|
||||
|
||||
shen.setPosX((float) (shen.getPosX() * (1 - 0.1 * zt)));
|
||||
shen.setPosY((float) (shen.getPosY() * (-1 + 0.8 * zt)));
|
||||
shen.setPosZ((float) (shen.getPosZ() * (1 - 0.1 * zt)));
|
||||
shen.setRotX((float) (shen.getRotX() * (1 - (type == 3 ? 0.96 : type == 1 ? 0.8 : 0.9) * zt)));
|
||||
shen.setRotY((float) (shen.getRotY() * (1 - (type == 3 ? 0.95 : 0.9) * zt)));
|
||||
shen.setRotZ((float) (shen.getRotZ() * (1 - 0.4 * zt)));
|
||||
|
||||
cross1.setPosY(-0.25f * (float) fpz);
|
||||
// cross2.setPosY(-0.7f * (float) fpz);
|
||||
// cross3.setPosY(-0.2f * (float) fpz);
|
||||
|
||||
rotXSight = Mth.lerp(1.5f * times, rotXSight, type == 0 ? 0 : 90);
|
||||
sight1fold.setRotX(rotXSight * Mth.DEG_TO_RAD);
|
||||
sight2fold.setRotX(rotXSight * Mth.DEG_TO_RAD);
|
||||
|
||||
CoreGeoBone l = getAnimationProcessor().getBone("l");
|
||||
CoreGeoBone r = getAnimationProcessor().getBone("r");
|
||||
rotXBipod = Mth.lerp(1.5f * times, rotXBipod, isProne(player) ? -90 : 0);
|
||||
l.setRotX(rotXBipod * Mth.DEG_TO_RAD);
|
||||
r.setRotX(rotXBipod * Mth.DEG_TO_RAD);
|
||||
|
||||
CoreGeoBone root = getAnimationProcessor().getBone("root");
|
||||
root.setPosX((float) (movePosX + 20 * ClientEventHandler.drawTime + 9.3f * mph));
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
package net.mcreator.superbwarfare.client.renderer.item;
|
||||
|
||||
import net.mcreator.superbwarfare.item.LightSaber;
|
||||
import net.mcreator.superbwarfare.client.layer.LightSaberLayer;
|
||||
import net.mcreator.superbwarfare.client.model.item.LightSaberItemModel;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import software.bernie.geckolib.renderer.GeoItemRenderer;
|
||||
|
||||
public class LightSaberItemRenderer extends GeoItemRenderer<LightSaber> {
|
||||
public LightSaberItemRenderer() {
|
||||
super(new LightSaberItemModel());
|
||||
this.addRenderLayer(new LightSaberLayer(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getTextureLocation(LightSaber instance) {
|
||||
return super.getTextureLocation(instance);
|
||||
}
|
||||
}
|
|
@ -3,6 +3,7 @@ package net.mcreator.superbwarfare.client.renderer.item;
|
|||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import net.mcreator.superbwarfare.client.AnimationHelper;
|
||||
import net.mcreator.superbwarfare.client.layer.MinigunHeatLayer;
|
||||
import net.mcreator.superbwarfare.client.layer.MinigunLayer;
|
||||
import net.mcreator.superbwarfare.client.model.item.MinigunItemModel;
|
||||
import net.mcreator.superbwarfare.event.ClientEventHandler;
|
||||
|
@ -30,6 +31,7 @@ public class MinigunItemRenderer extends GeoItemRenderer<MinigunItem> {
|
|||
public MinigunItemRenderer() {
|
||||
super(new MinigunItemModel());
|
||||
this.addRenderLayer(new MinigunLayer(this));
|
||||
this.addRenderLayer(new MinigunHeatLayer(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -90,10 +92,6 @@ public class MinigunItemRenderer extends GeoItemRenderer<MinigunItem> {
|
|||
bone.setRotZ((float) (0.5 * (Math.random() - 0.5)));
|
||||
}
|
||||
}
|
||||
|
||||
if (name.equals("light")) {
|
||||
bone.setHidden((ClientEventHandler.firePosTimer == 0 || ClientEventHandler.firePosTimer > 0.5));
|
||||
}
|
||||
}
|
||||
|
||||
if (this.transformType.firstPerson() && renderingArms) {
|
||||
|
|
|
@ -3,10 +3,12 @@ package net.mcreator.superbwarfare.client.renderer.item;
|
|||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import net.mcreator.superbwarfare.client.AnimationHelper;
|
||||
import net.mcreator.superbwarfare.client.ItemModelHelper;
|
||||
import net.mcreator.superbwarfare.client.layer.VectorLayer;
|
||||
import net.mcreator.superbwarfare.client.model.item.VectorItemModel;
|
||||
import net.mcreator.superbwarfare.event.ClientEventHandler;
|
||||
import net.mcreator.superbwarfare.item.gun.smg.VectorItem;
|
||||
import net.mcreator.superbwarfare.tools.GunsTool;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.model.PlayerModel;
|
||||
import net.minecraft.client.player.AbstractClientPlayer;
|
||||
|
@ -83,20 +85,35 @@ public class VectorItemRenderer extends GeoItemRenderer<VectorItem> {
|
|||
if (player != null) {
|
||||
ItemStack itemStack = player.getMainHandItem();
|
||||
|
||||
if (name.equals("holo")) {
|
||||
bone.setHidden(itemStack.getOrCreateTag().getBoolean("HoloHidden") || GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_MOUSE_BUTTON_RIGHT) != GLFW.GLFW_PRESS);
|
||||
if (name.equals("Cross1")) {
|
||||
bone.setHidden(itemStack.getOrCreateTag().getBoolean("HoloHidden")
|
||||
|| GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_MOUSE_BUTTON_RIGHT) != GLFW.GLFW_PRESS
|
||||
|| GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.SCOPE) != 1);
|
||||
}
|
||||
|
||||
if (name.equals("Cross2")) {
|
||||
bone.setHidden(itemStack.getOrCreateTag().getBoolean("HoloHidden")
|
||||
|| GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_MOUSE_BUTTON_RIGHT) != GLFW.GLFW_PRESS
|
||||
|| GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.SCOPE) != 2);
|
||||
}
|
||||
|
||||
if (name.equals("tuoxin")) {
|
||||
bone.setHidden(GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.STOCK) == 0);
|
||||
}
|
||||
|
||||
if (name.equals("flare")) {
|
||||
if (ClientEventHandler.firePosTimer == 0 || ClientEventHandler.firePosTimer > 0.5) {
|
||||
if (ClientEventHandler.firePosTimer == 0 || ClientEventHandler.firePosTimer > 0.5 || GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.BARREL) == 2) {
|
||||
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.setScaleX((float) (0.55 + 0.5 * (Math.random() - 0.5)));
|
||||
bone.setScaleY((float) (0.55 + 0.5 * (Math.random() - 0.5)));
|
||||
bone.setRotZ((float) (0.5 * (Math.random() - 0.5)));
|
||||
}
|
||||
}
|
||||
|
||||
ItemModelHelper.handleGunAttachments(bone, itemStack, name);
|
||||
|
||||
}
|
||||
|
||||
if (this.transformType.firstPerson() && renderingArms) {
|
||||
|
|
|
@ -41,7 +41,7 @@ public class ArmorPlateOverlay {
|
|||
if (stack == ItemStack.EMPTY) return;
|
||||
if (stack.getTag() == null || !stack.getTag().contains("ArmorPlate")) return;
|
||||
|
||||
double amount = stack.getTag().getDouble("ArmorPlate");
|
||||
double amount = 2 * stack.getTag().getDouble("ArmorPlate");
|
||||
|
||||
int armorLevel = 1;
|
||||
if (stack.is(ModTags.Items.MILITARY_ARMOR)) {
|
||||
|
|
|
@ -116,17 +116,17 @@ public class ModItemTagProvider extends ItemTagsProvider {
|
|||
|
||||
this.tag(ModTags.Items.MILITARY_ARMOR).add(ModItems.RU_CHEST_6B43.get(), ModItems.US_CHEST_IOTV.get());
|
||||
|
||||
this.tag(ModTags.Items.CAN_CUSTOM_GUN).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.QBZ_95.get());
|
||||
this.tag(ModTags.Items.CAN_CUSTOM_GUN).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.QBZ_95.get(), ModItems.VECTOR.get());
|
||||
|
||||
this.tag(ModTags.Items.CAN_APPLY_BARREL).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.QBZ_95.get());
|
||||
this.tag(ModTags.Items.CAN_APPLY_BARREL).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.QBZ_95.get(), ModItems.VECTOR.get());
|
||||
|
||||
this.tag(ModTags.Items.CAN_APPLY_GRIP).add(ModItems.AK_12.get(), ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.QBZ_95.get(), ModItems.AK_47.get());
|
||||
this.tag(ModTags.Items.CAN_APPLY_GRIP).add(ModItems.AK_12.get(), ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.QBZ_95.get(), ModItems.AK_47.get(), ModItems.VECTOR.get());
|
||||
|
||||
this.tag(ModTags.Items.CAN_APPLY_SCOPE).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.QBZ_95.get());
|
||||
this.tag(ModTags.Items.CAN_APPLY_SCOPE).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.QBZ_95.get(), ModItems.VECTOR.get());
|
||||
|
||||
this.tag(ModTags.Items.CAN_APPLY_MAGAZINE).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.QBZ_95.get());
|
||||
this.tag(ModTags.Items.CAN_APPLY_MAGAZINE).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.QBZ_95.get(), ModItems.VECTOR.get());
|
||||
|
||||
this.tag(ModTags.Items.CAN_APPLY_STOCK).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get());
|
||||
this.tag(ModTags.Items.CAN_APPLY_STOCK).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.VECTOR.get());
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -197,7 +197,7 @@ public class MortarEntity extends Entity implements GeoEntity, AnimatedEntity {
|
|||
ItemHandlerHelper.giveItemToPlayer(player, new ItemStack(ModItems.MORTAR_DEPLOYER.get()));
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
this.entityData.set(Y_ROT, player.getYRot());
|
||||
this.entityData.set(Y_ROT, Mth.clamp(player.getYRot(), -180, 180));
|
||||
}
|
||||
|
||||
return InteractionResult.SUCCESS;
|
||||
|
|
|
@ -40,6 +40,12 @@ public class PlayerEventHandler {
|
|||
if (stack.is(ModItems.MONITOR.get()) && stack.getOrCreateTag().getBoolean("Using")) {
|
||||
stack.getOrCreateTag().putBoolean("Using", false);
|
||||
}
|
||||
for (ItemStack pStack : player.getInventory().items) {
|
||||
if (pStack.is(ModTags.Items.GUN)) {
|
||||
pStack.getOrCreateTag().putBoolean("draw", true);
|
||||
pStack.getOrCreateTag().putBoolean("init", false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
|
@ -59,6 +65,12 @@ public class PlayerEventHandler {
|
|||
|
||||
handleRespawnReload(player);
|
||||
handleRespawnAutoArmor(player);
|
||||
|
||||
for (ItemStack pStack : player.getInventory().items) {
|
||||
if (pStack.is(ModTags.Items.GUN)) {
|
||||
pStack.getOrCreateTag().putBoolean("draw", true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
|
@ -344,17 +356,17 @@ public class PlayerEventHandler {
|
|||
armorLevel = 3;
|
||||
}
|
||||
|
||||
if (armorPlate < armorLevel * 30) {
|
||||
if (armorPlate < armorLevel * 15) {
|
||||
for (var stack : player.getInventory().items) {
|
||||
if (stack.is(ModItems.ARMOR_PLATE.get())) {
|
||||
if (stack.getTag() != null && stack.getTag().getBoolean("Infinite")) {
|
||||
armor.getOrCreateTag().putDouble("ArmorPlate", armorLevel * 30);
|
||||
armor.getOrCreateTag().putDouble("ArmorPlate", armorLevel * 15);
|
||||
|
||||
if (player instanceof ServerPlayer serverPlayer) {
|
||||
serverPlayer.level().playSound(null, serverPlayer.getOnPos(), SoundEvents.ARMOR_EQUIP_IRON, SoundSource.PLAYERS, 0.5f, 1);
|
||||
}
|
||||
} else {
|
||||
for (int index0 = 0; index0 < Math.ceil(((armorLevel * 30) - armorPlate) / 30); index0++) {
|
||||
for (int index0 = 0; index0 < Math.ceil(((armorLevel * 15) - armorPlate) / 15); index0++) {
|
||||
stack.finishUsingItem(player.level(), player);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -118,7 +118,6 @@ public class ModItems {
|
|||
|
||||
public static final RegistryObject<Item> MONITOR = ITEMS.register("monitor", Monitor::new);
|
||||
public static final RegistryObject<Item> TARGET_DEPLOYER = ITEMS.register("target_deployer", TargetDeployer::new);
|
||||
public static final RegistryObject<Item> LIGHT_SABER = ITEMS.register("light_saber", LightSaber::new);
|
||||
public static final RegistryObject<Item> KNIFE = ITEMS.register("knife", Knife::new);
|
||||
public static final RegistryObject<Item> HAMMER = ITEMS.register("hammer", Hammer::new);
|
||||
public static final RegistryObject<Item> CROWBAR = ITEMS.register("crowbar", Crowbar::new);
|
||||
|
|
|
@ -167,6 +167,9 @@ public class ModSounds {
|
|||
public static final RegistryObject<SoundEvent> VECTOR_FIRE_3P = REGISTRY.register("vector_fire_3p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "vector_fire_3p")));
|
||||
public static final RegistryObject<SoundEvent> VECTOR_FAR = REGISTRY.register("vector_far", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "vector_far")));
|
||||
public static final RegistryObject<SoundEvent> VECTOR_VERYFAR = REGISTRY.register("vector_veryfar", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "vector_veryfar")));
|
||||
public static final RegistryObject<SoundEvent> VECTOR_FIRE_1P_S = REGISTRY.register("vector_fire_1p_s", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "vector_fire_1p_s")));
|
||||
public static final RegistryObject<SoundEvent> VECTOR_FIRE_3P_S = REGISTRY.register("vector_fire_3p_s", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "vector_fire_3p_s")));
|
||||
public static final RegistryObject<SoundEvent> VECTOR_FAR_S = REGISTRY.register("vector_far_s", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "vector_far_s")));
|
||||
public static final RegistryObject<SoundEvent> VECTOR_RELOAD_NORMAL = REGISTRY.register("vector_reload_normal", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "vector_reload_normal")));
|
||||
public static final RegistryObject<SoundEvent> VECTOR_RELOAD_EMPTY = REGISTRY.register("vector_reload_empty", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "vector_reload_empty")));
|
||||
|
||||
|
@ -204,8 +207,6 @@ public class ModSounds {
|
|||
public static final RegistryObject<SoundEvent> M_60_RELOAD_NORMAL = REGISTRY.register("m_60_reload_normal", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "m_60_reload_normal")));
|
||||
public static final RegistryObject<SoundEvent> M_60_RELOAD_EMPTY = REGISTRY.register("m_60_reload_empty", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "m_60_reload_empty")));
|
||||
|
||||
public static final RegistryObject<SoundEvent> LIGHT_SABER = REGISTRY.register("lightsaber", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "lightsaber")));
|
||||
|
||||
public static final RegistryObject<SoundEvent> SVD_FIRE_1P = REGISTRY.register("svd_fire_1p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "svd_fire_1p")));
|
||||
public static final RegistryObject<SoundEvent> SVD_FIRE_3P = REGISTRY.register("svd_fire_3p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "svd_fire_3p")));
|
||||
public static final RegistryObject<SoundEvent> SVD_FAR = REGISTRY.register("svd_far", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "svd_far")));
|
||||
|
|
|
@ -49,7 +49,7 @@ public class ArmorPlate extends Item {
|
|||
armorLevel = 3;
|
||||
}
|
||||
|
||||
if (armor.getOrCreateTag().getDouble("ArmorPlate") < armorLevel * 30) {
|
||||
if (armor.getOrCreateTag().getDouble("ArmorPlate") < armorLevel * 15) {
|
||||
playerIn.startUsingItem(handIn);
|
||||
}
|
||||
|
||||
|
@ -73,7 +73,7 @@ public class ArmorPlate extends Item {
|
|||
armorLevel = 3;
|
||||
}
|
||||
|
||||
armor.getOrCreateTag().putDouble("ArmorPlate", Mth.clamp(armor.getOrCreateTag().getDouble("ArmorPlate") + 30, 0, armorLevel * 30));
|
||||
armor.getOrCreateTag().putDouble("ArmorPlate", Mth.clamp(armor.getOrCreateTag().getDouble("ArmorPlate") + 15, 0, armorLevel * 15));
|
||||
|
||||
if (pLivingEntity instanceof ServerPlayer serverPlayer) {
|
||||
serverPlayer.level().playSound(null, serverPlayer.getOnPos(), SoundEvents.ARMOR_EQUIP_IRON, SoundSource.PLAYERS, 0.5f, 1);
|
||||
|
@ -89,7 +89,7 @@ public class ArmorPlate extends Item {
|
|||
|
||||
@Override
|
||||
public int getUseDuration(ItemStack stack) {
|
||||
return 30;
|
||||
return 20;
|
||||
}
|
||||
|
||||
public static ItemStack getInfiniteInstance() {
|
||||
|
|
|
@ -1,112 +0,0 @@
|
|||
package net.mcreator.superbwarfare.item;
|
||||
|
||||
import com.google.common.collect.HashMultimap;
|
||||
import com.google.common.collect.Multimap;
|
||||
import net.mcreator.superbwarfare.ModUtils;
|
||||
import net.mcreator.superbwarfare.client.renderer.item.LightSaberItemRenderer;
|
||||
import net.mcreator.superbwarfare.init.ModSounds;
|
||||
import net.mcreator.superbwarfare.tools.SoundTool;
|
||||
import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.entity.EquipmentSlot;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
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.item.*;
|
||||
import net.minecraft.world.item.enchantment.Enchantment;
|
||||
import net.minecraft.world.item.enchantment.EnchantmentCategory;
|
||||
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.util.GeckoLibUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class LightSaber extends SwordItem implements GeoItem, AnimatedItem {
|
||||
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||
public String animationProcedure = "empty";
|
||||
public static ItemDisplayContext transformType;
|
||||
|
||||
public LightSaber() {
|
||||
super(Tiers.NETHERITE, 10, -1.8f, new Item.Properties().rarity(Rarity.EPIC));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initializeClient(Consumer<IClientItemExtensions> consumer) {
|
||||
super.initializeClient(consumer);
|
||||
consumer.accept(new IClientItemExtensions() {
|
||||
private final BlockEntityWithoutLevelRenderer renderer = new LightSaberItemRenderer();
|
||||
|
||||
@Override
|
||||
public BlockEntityWithoutLevelRenderer getCustomRenderer() {
|
||||
return renderer;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void getTransformType(ItemDisplayContext type) {
|
||||
transformType = type;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public AnimatableInstanceCache getAnimatableInstanceCache() {
|
||||
return this.cache;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Multimap<Attribute, AttributeModifier> getDefaultAttributeModifiers(EquipmentSlot equipmentSlot) {
|
||||
Multimap<Attribute, AttributeModifier> map = super.getDefaultAttributeModifiers(equipmentSlot);
|
||||
UUID uuid = new UUID(equipmentSlot.toString().hashCode(), 0);
|
||||
if (equipmentSlot == EquipmentSlot.MAINHAND) {
|
||||
map = HashMultimap.create(map);
|
||||
map.put(Attributes.MOVEMENT_SPEED, new AttributeModifier(uuid, ModUtils.ATTRIBUTE_MODIFIER, 0.2f, AttributeModifier.Operation.MULTIPLY_BASE));
|
||||
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnchantmentValue() {
|
||||
return 22;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnchantable(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) {
|
||||
return enchantment.category == EnchantmentCategory.BREAKABLE || enchantment.category == EnchantmentCategory.WEAPON;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAnimationProcedure(String procedure) {
|
||||
this.animationProcedure = procedure;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDamageable(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onEntitySwing(ItemStack itemstack, LivingEntity entity) {
|
||||
boolean retval = super.onEntitySwing(itemstack, entity);
|
||||
entity.playSound(ModSounds.LIGHT_SABER.get(), 1f, 1f);
|
||||
|
||||
if (entity instanceof ServerPlayer serverPlayer) {
|
||||
SoundTool.playLocalSound(serverPlayer, ModSounds.LIGHT_SABER.get(), 1f, 1f);
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
}
|
|
@ -137,8 +137,6 @@ public class M4Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
ItemStack stack = player.getMainHandItem();
|
||||
if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP;
|
||||
|
||||
boolean grip = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.GRIP) == 1 || GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.GRIP) == 2;
|
||||
|
||||
if (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).edit) {
|
||||
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.m4.edit"));
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package net.mcreator.superbwarfare.item.gun.smg;
|
||||
|
||||
import net.mcreator.superbwarfare.ModUtils;
|
||||
import net.mcreator.superbwarfare.client.PoseTool;
|
||||
import net.mcreator.superbwarfare.client.renderer.item.VectorItemRenderer;
|
||||
import net.mcreator.superbwarfare.event.ClientEventHandler;
|
||||
import net.mcreator.superbwarfare.init.ModItems;
|
||||
|
@ -8,23 +9,26 @@ import net.mcreator.superbwarfare.init.ModSounds;
|
|||
import net.mcreator.superbwarfare.init.ModTags;
|
||||
import net.mcreator.superbwarfare.item.AnimatedItem;
|
||||
import net.mcreator.superbwarfare.item.gun.GunItem;
|
||||
import net.mcreator.superbwarfare.network.ModVariables;
|
||||
import net.mcreator.superbwarfare.perk.Perk;
|
||||
import net.mcreator.superbwarfare.perk.PerkHelper;
|
||||
import net.mcreator.superbwarfare.tools.GunsTool;
|
||||
import net.mcreator.superbwarfare.client.PoseTool;
|
||||
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.nbt.CompoundTag;
|
||||
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.Entity;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemDisplayContext;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.Rarity;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
|
||||
import software.bernie.geckolib.animatable.GeoItem;
|
||||
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
|
||||
|
@ -73,15 +77,23 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
if (player == null) return PlayState.STOP;
|
||||
ItemStack stack = player.getMainHandItem();
|
||||
if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP;
|
||||
|
||||
boolean drum = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.MAGAZINE) == 2;
|
||||
|
||||
if (stack.getOrCreateTag().getBoolean("is_empty_reloading")) {
|
||||
if (drum) {
|
||||
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.vec.reload_empty_drum"));
|
||||
} else {
|
||||
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.vec.reload_empty"));
|
||||
}
|
||||
}
|
||||
|
||||
if (stack.getOrCreateTag().getBoolean("is_normal_reloading")) {
|
||||
if (drum) {
|
||||
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.vec.reload_normal_drum"));
|
||||
} else {
|
||||
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.vec.reload_normal"));
|
||||
}
|
||||
}
|
||||
|
||||
if (player.isSprinting() && player.onGround() && player.getPersistentData().getDouble("noRun") == 0 && ClientEventHandler.drawTime < 0.01) {
|
||||
if (player.hasEffect(MobEffects.MOVEMENT_SPEED)) {
|
||||
|
@ -94,10 +106,25 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.vec.idle"));
|
||||
}
|
||||
|
||||
private PlayState editPredicate(AnimationState<VectorItem> 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.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).edit) {
|
||||
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.vector.edit"));
|
||||
}
|
||||
|
||||
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.vec.idle"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
|
||||
AnimationController<VectorItem> idleController = new AnimationController<>(this, "idleController", 2, this::idlePredicate);
|
||||
data.add(idleController);
|
||||
var editController = new AnimationController<>(this, "editController", 1, this::editPredicate);
|
||||
data.add(editController);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -105,6 +132,37 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
return this.cache;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void inventoryTick(ItemStack stack, Level world, Entity entity, int slot, boolean selected) {
|
||||
super.inventoryTick(stack, world, entity, slot, selected);
|
||||
|
||||
int scopeType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.SCOPE);
|
||||
int barrelType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.BARREL);
|
||||
int magType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.MAGAZINE);
|
||||
int stockType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.STOCK);
|
||||
|
||||
int customMag = switch (magType) {
|
||||
case 1 -> 20;
|
||||
case 2 -> 57;
|
||||
default -> 0;
|
||||
};
|
||||
|
||||
if (scopeType == 3) {
|
||||
CompoundTag tag = stack.getOrCreateTag().getCompound("Attachments");
|
||||
tag.putInt("Scope", 0);
|
||||
}
|
||||
|
||||
double customZoom = switch (scopeType) {
|
||||
case 0, 1 -> 0;
|
||||
case 2 -> 0.75;
|
||||
default -> stack.getOrCreateTag().getDouble("CustomZoom");
|
||||
};
|
||||
|
||||
|
||||
stack.getOrCreateTag().putDouble("CustomZoom", customZoom);
|
||||
stack.getOrCreateTag().putInt("customMag", customMag);
|
||||
}
|
||||
|
||||
public static ItemStack getGunInstance() {
|
||||
ItemStack stack = new ItemStack(ModItems.VECTOR.get());
|
||||
GunsTool.initCreativeGun(stack, ModItems.VECTOR.getId().getPath());
|
||||
|
|
|
@ -19844,11 +19844,11 @@
|
|||
{
|
||||
"name": "Lefthand",
|
||||
"parent": "magazine",
|
||||
"pivot": [7.08731, -6.05141, -1.32145],
|
||||
"rotation": [142.14654, -3.17741, 144.27444],
|
||||
"pivot": [6.23575, -6.41469, -1.32145],
|
||||
"rotation": [86.71153, -50.16741, -123.46245],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [5.48731, -6.05141, -3.07145],
|
||||
"origin": [4.63575, -6.41469, -3.07145],
|
||||
"size": [3, 12, 4],
|
||||
"uv": {
|
||||
"north": {"uv": [35.5, 31], "uv_size": [0.25, 0.25]},
|
||||
|
|
|
@ -152,7 +152,6 @@
|
|||
"item.superbwarfare.ancient_cpu": "Ancient CPU",
|
||||
"item.superbwarfare.target_deployer": "Target",
|
||||
"item.superbwarfare.senpai_spawn_egg": "Senpai Spawn Egg",
|
||||
"item.superbwarfare.light_saber": "Light Saber",
|
||||
"item.superbwarfare.knife": "Knife",
|
||||
"item.superbwarfare.hammer": "Hammer",
|
||||
"item.superbwarfare.crowbar": "Crowbar",
|
||||
|
|
|
@ -152,7 +152,6 @@
|
|||
"item.superbwarfare.ancient_cpu": "古代处理器",
|
||||
"item.superbwarfare.target_deployer": "标靶",
|
||||
"item.superbwarfare.senpai_spawn_egg": "野兽先辈刷怪蛋",
|
||||
"item.superbwarfare.light_saber": "光剑",
|
||||
"item.superbwarfare.knife": "军刀",
|
||||
"item.superbwarfare.hammer": "大锤",
|
||||
"item.superbwarfare.crowbar": "撬棍",
|
||||
|
|
|
@ -751,6 +751,30 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"vector_fire_1p_s": {
|
||||
"sounds": [
|
||||
{
|
||||
"name": "superbwarfare:vector/vector_fire_1p_s",
|
||||
"stream": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"vector_fire_3p_s": {
|
||||
"sounds": [
|
||||
{
|
||||
"name": "superbwarfare:vector/vector_fire_3p_s",
|
||||
"stream": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"vector_far_s": {
|
||||
"sounds": [
|
||||
{
|
||||
"name": "superbwarfare:vector/vector_far_s",
|
||||
"stream": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"vector_reload_normal": {
|
||||
"sounds": [
|
||||
{
|
||||
|
@ -1718,22 +1742,6 @@
|
|||
]
|
||||
},
|
||||
|
||||
"lightsaber": {
|
||||
"sounds": [
|
||||
{
|
||||
"name": "superbwarfare:lightsaber1",
|
||||
"stream": false
|
||||
},
|
||||
{
|
||||
"name": "superbwarfare:lightsaber2",
|
||||
"stream": false
|
||||
},
|
||||
{
|
||||
"name": "superbwarfare:lightsaber3",
|
||||
"stream": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"bullet_supply": {
|
||||
"sounds": [
|
||||
{
|
||||
|
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 15 KiB |
|
@ -5,7 +5,7 @@
|
|||
"damage": 6,
|
||||
"headshot": 1.5,
|
||||
"velocity": 16,
|
||||
"mag": 33,
|
||||
"mag": 13,
|
||||
"projectile_amount": 1,
|
||||
"weight": 3,
|
||||
"FireMode": 2,
|
||||
|
@ -16,6 +16,6 @@
|
|||
"normal_reload_time": 46,
|
||||
"EmptyReloadTime": 64,
|
||||
"BypassesArmor": 0.15,
|
||||
"SoundRadius": 4,
|
||||
"SoundRadius": 11,
|
||||
"rpm": 1200
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"category": "misc",
|
||||
"pattern": [
|
||||
"a",
|
||||
"b",
|
||||
"c"
|
||||
],
|
||||
"key": {
|
||||
"a": {
|
||||
"item": "minecraft:red_stained_glass_pane"
|
||||
},
|
||||
"b": {
|
||||
"item": "minecraft:beacon"
|
||||
},
|
||||
"c": {
|
||||
"item": "superbwarfare:shield_cell"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "superbwarfare:light_saber",
|
||||
"count": 1
|
||||
}
|
||||
}
|