同步更新内容(阴险,tag,战利品表,其他资源文件等)

This commit is contained in:
Light_Quanta 2025-04-02 19:13:06 +08:00
parent 52d6e23494
commit ca11334147
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
150 changed files with 6874 additions and 313 deletions

View file

@ -1,4 +1,4 @@
// 1.21.1 2025-03-27T19:21:19.6262589 Tags for minecraft:item mod id superbwarfare
// 1.21.1 2025-04-02T18:07:51.8627648 Tags for minecraft:item mod id superbwarfare
44a232152f5941d0435a35483b37f8ed22fd10bf data/c/tags/item/dusts.json
0fa06c2ff83bf09797e3ddff90f62d1124e645b4 data/c/tags/item/dusts/coal_coke.json
295ddf906b7133a0558d03e9a60eea18281fe430 data/c/tags/item/dusts/iron.json
@ -29,10 +29,10 @@ af6fd64b4a685c353f243763db268f7b2304c009 data/c/tags/item/storage_blocks/lead.js
362d41246c4c832d114e8b8942b105f4010d4ba0 data/superbwarfare/tags/item/blueprint.json
b2487459d95ca9a319bfbd94e60a48de60e07297 data/superbwarfare/tags/item/blueprint/cannon.json
889e4b56462df422f57191f07229009dcf2073e3 data/superbwarfare/tags/item/blueprint/common.json
2512dd03ae847ab6b4a9cc60d32ff3b3a5cdad82 data/superbwarfare/tags/item/blueprint/epic.json
3c4adac76810982986b6cd9845192ae8416324f4 data/superbwarfare/tags/item/blueprint/epic.json
8014c67b62b785b4b7e23d8e5aa70343c30b2fbd data/superbwarfare/tags/item/blueprint/legendary.json
2a49f09e9374bf7f355aae50be470169406ff2d3 data/superbwarfare/tags/item/blueprint/rare.json
748a5e10c7eb644efcfbce889daff4d68a0ceb2b data/superbwarfare/tags/item/gun.json
3154110c8f6b5d1473d558b7d0d2f752396dff34 data/superbwarfare/tags/item/blueprint/rare.json
8d846ffd414f5878a783e5a2a094e72df4354f8f data/superbwarfare/tags/item/gun.json
409af265147e812b6f6558c51f1cb83b0f61b7d3 data/superbwarfare/tags/item/handgun.json
0ab1b2a8f5433e0d1b03446a9d0d9428e9d64feb data/superbwarfare/tags/item/heavy_weapon.json
3cc00928c041f710b50eb1f7a817e0345f6f96b3 data/superbwarfare/tags/item/ingots/cemented_carbide.json
@ -40,7 +40,7 @@ a1c6460b9c956972b74d5ad5cd206e9ae3560b03 data/superbwarfare/tags/item/ingots/ste
65ddb0a8a671cc65af8e3754fc23e7d24c3587b7 data/superbwarfare/tags/item/launcher.json
b404c6fd99d2ca68c6738f225cb7d68ee443c10a data/superbwarfare/tags/item/machine_gun.json
a53020091752016da6602ee1b8b7e08823614344 data/superbwarfare/tags/item/military_armor.json
57750741ce5781bb44a44f0d085c6abc2b4651b6 data/superbwarfare/tags/item/normal_gun.json
35840286824cc674ec120615dd5dc14980769e15 data/superbwarfare/tags/item/normal_gun.json
15328cd564c931cc0a4fc000596240f93a7b29a1 data/superbwarfare/tags/item/revolver.json
aaa533157491a82b8e23b2914deef67c4078cbed data/superbwarfare/tags/item/rifle.json
a249d9d052cdc24b34e0e51ab991329f6c76e8ab data/superbwarfare/tags/item/shotgun.json
@ -50,6 +50,6 @@ a249d9d052cdc24b34e0e51ab991329f6c76e8ab data/superbwarfare/tags/item/shotgun.js
de0d84361d5208127bff21e915987ec561cdef13 data/superbwarfare/tags/item/storage_blocks/steel.json
9af8a0147d1e920ef2a2b990bc9010367cf3b7df data/superbwarfare/tags/item/use_handgun_ammo.json
0ab1b2a8f5433e0d1b03446a9d0d9428e9d64feb data/superbwarfare/tags/item/use_heavy_ammo.json
2899774c6325135847a85b09121ce25587aa275e data/superbwarfare/tags/item/use_rifle_ammo.json
ee130846fa0c4e4a51833c6a0b1de7daaa098a73 data/superbwarfare/tags/item/use_rifle_ammo.json
a249d9d052cdc24b34e0e51ab991329f6c76e8ab data/superbwarfare/tags/item/use_shotgun_ammo.json
7a12c751d024c06b3e88657afddc84fce8e13295 data/superbwarfare/tags/item/use_sniper_ammo.json

View file

@ -1,4 +1,4 @@
// 1.21.1 2025-04-02T16:28:49.3323684 Loot Tables
// 1.21.1 2025-04-02T18:07:51.8657658 Loot Tables
98386b2e65b2afb7cf5b0cabf6a7b0f062c1e640 data/superbwarfare/loot_table/blocks/barbed_wire.json
811e69929a14e6736015849c220100bb58d914c9 data/superbwarfare/loot_table/blocks/cemented_carbide_block.json
1f482bc1f0a1026d0e1b75ee28c6f541b56747a5 data/superbwarfare/loot_table/blocks/charging_station.json
@ -20,4 +20,4 @@ fb31a40f6a04000f317823cbb80eda8588ba9c69 data/superbwarfare/loot_table/blocks/si
073b9c242ea372f7b34883835c0b02a9ca8d94e5 data/superbwarfare/loot_table/blocks/small_container.json
83112ebff477e322bd3d23ed4653c7c02b230473 data/superbwarfare/loot_table/blocks/steel_block.json
71fc892124b5343e10688cabc2fb7c87d83cfef8 data/superbwarfare/loot_table/blocks/tungsten_block.json
f586b1d608c55d6fba6277baf138a6c84855e4c6 data/superbwarfare/loot_table/containers/blueprints.json
7e75ff103ccdbcf6be6f61413a4173115195f0a9 data/superbwarfare/loot_table/containers/blueprints.json

View file

@ -1,4 +1,4 @@
// 1.21.1 2025-03-29T00:41:26.2074689 Item Models: superbwarfare
// 1.21.1 2025-04-02T18:07:51.8677118 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
@ -41,6 +41,7 @@ e7a6de100f377835831211168d98c8d19434af24 assets/superbwarfare/models/item/he_hea
d23520b099cb796401635fe75b5b852fc957d4ea assets/superbwarfare/models/item/high_energy_explosives.json
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/hk_416_blueprint.json
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/hunting_rifle_blueprint.json
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/insidious_blueprint.json
3c9dcc3393e16ca354b01162316f1ddae92338ec assets/superbwarfare/models/item/iron_action.json
6e7a2bd5ffb78bd218e3a55daba3e9c256470757 assets/superbwarfare/models/item/iron_barrel.json
e04bbd61e716fc5d53c9425aba508fc3287bfd57 assets/superbwarfare/models/item/iron_powder.json

View file

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

View file

@ -32,112 +32,117 @@
{
"type": "minecraft:item",
"name": "superbwarfare:glock_18_blueprint",
"weight": 62
"weight": 42
},
{
"type": "minecraft:item",
"name": "superbwarfare:m_79_blueprint",
"weight": 62
"weight": 42
},
{
"type": "minecraft:item",
"name": "superbwarfare:m_4_blueprint",
"weight": 62
"weight": 42
},
{
"type": "minecraft:item",
"name": "superbwarfare:sks_blueprint",
"weight": 62
"weight": 42
},
{
"type": "minecraft:item",
"name": "superbwarfare:m_870_blueprint",
"weight": 62
"weight": 42
},
{
"type": "minecraft:item",
"name": "superbwarfare:ak_47_blueprint",
"weight": 62
"weight": 42
},
{
"type": "minecraft:item",
"name": "superbwarfare:k_98_blueprint",
"weight": 62
"weight": 42
},
{
"type": "minecraft:item",
"name": "superbwarfare:mosin_nagant_blueprint",
"weight": 62
},
{
"type": "minecraft:item",
"name": "superbwarfare:trachelium_blueprint",
"weight": 12
},
{
"type": "minecraft:item",
"name": "superbwarfare:hunting_rifle_blueprint",
"weight": 12
},
{
"type": "minecraft:item",
"name": "superbwarfare:rpg_blueprint",
"weight": 12
},
{
"type": "minecraft:item",
"name": "superbwarfare:bocek_blueprint",
"weight": 12
"weight": 42
},
{
"type": "minecraft:item",
"name": "superbwarfare:hk_416_blueprint",
"weight": 12
},
{
"type": "minecraft:item",
"name": "superbwarfare:rpk_blueprint",
"weight": 12
},
{
"type": "minecraft:item",
"name": "superbwarfare:vector_blueprint",
"weight": 12
},
{
"type": "minecraft:item",
"name": "superbwarfare:mk_14_blueprint",
"weight": 12
},
{
"type": "minecraft:item",
"name": "superbwarfare:m_60_blueprint",
"weight": 12
},
{
"type": "minecraft:item",
"name": "superbwarfare:svd_blueprint",
"weight": 12
},
{
"type": "minecraft:item",
"name": "superbwarfare:m_98b_blueprint",
"weight": 12
"weight": 42
},
{
"type": "minecraft:item",
"name": "superbwarfare:ak_12_blueprint",
"weight": 12
},
{
"type": "minecraft:item",
"name": "superbwarfare:devotion_blueprint",
"weight": 12
"weight": 42
},
{
"type": "minecraft:item",
"name": "superbwarfare:qbz_95_blueprint",
"weight": 12
"weight": 42
},
{
"type": "minecraft:item",
"name": "superbwarfare:rpg_blueprint",
"weight": 42
},
{
"type": "minecraft:item",
"name": "superbwarfare:trachelium_blueprint",
"weight": 15
},
{
"type": "minecraft:item",
"name": "superbwarfare:hunting_rifle_blueprint",
"weight": 15
},
{
"type": "minecraft:item",
"name": "superbwarfare:bocek_blueprint",
"weight": 15
},
{
"type": "minecraft:item",
"name": "superbwarfare:rpk_blueprint",
"weight": 15
},
{
"type": "minecraft:item",
"name": "superbwarfare:vector_blueprint",
"weight": 15
},
{
"type": "minecraft:item",
"name": "superbwarfare:mk_14_blueprint",
"weight": 15
},
{
"type": "minecraft:item",
"name": "superbwarfare:m_60_blueprint",
"weight": 15
},
{
"type": "minecraft:item",
"name": "superbwarfare:svd_blueprint",
"weight": 15
},
{
"type": "minecraft:item",
"name": "superbwarfare:m_98b_blueprint",
"weight": 15
},
{
"type": "minecraft:item",
"name": "superbwarfare:devotion_blueprint",
"weight": 15
},
{
"type": "minecraft:item",
"name": "superbwarfare:insidious_blueprint",
"weight": 15
},
{
"type": "minecraft:item",

View file

@ -2,17 +2,14 @@
"values": [
"superbwarfare:trachelium_blueprint",
"superbwarfare:hunting_rifle_blueprint",
"superbwarfare:rpg_blueprint",
"superbwarfare:bocek_blueprint",
"superbwarfare:hk_416_blueprint",
"superbwarfare:rpk_blueprint",
"superbwarfare:vector_blueprint",
"superbwarfare:mk_14_blueprint",
"superbwarfare:m_60_blueprint",
"superbwarfare:svd_blueprint",
"superbwarfare:m_98b_blueprint",
"superbwarfare:ak_12_blueprint",
"superbwarfare:devotion_blueprint",
"superbwarfare:qbz_95_blueprint"
"superbwarfare:insidious_blueprint"
]
}

View file

@ -8,6 +8,10 @@
"superbwarfare:ak_47_blueprint",
"superbwarfare:k_98_blueprint",
"superbwarfare:mosin_nagant_blueprint",
"superbwarfare:m2hb_blueprint"
"superbwarfare:m2hb_blueprint",
"superbwarfare:hk_416_blueprint",
"superbwarfare:ak_12_blueprint",
"superbwarfare:qbz_95_blueprint",
"superbwarfare:rpg_blueprint"
]
}

View file

@ -14,6 +14,7 @@
"superbwarfare:m_4",
"superbwarfare:hk_416",
"superbwarfare:qbz_95",
"superbwarfare:insidious",
"superbwarfare:mk_14",
"superbwarfare:marlin",
"superbwarfare:k_98",

View file

@ -26,6 +26,7 @@
"superbwarfare:qbz_95",
"superbwarfare:k_98",
"superbwarfare:mosin_nagant",
"superbwarfare:mp_443"
"superbwarfare:mp_443",
"superbwarfare:insidious"
]
}

View file

@ -12,6 +12,7 @@
"superbwarfare:ak_12",
"superbwarfare:qbz_95",
"superbwarfare:rpk",
"superbwarfare:trachelium"
"superbwarfare:trachelium",
"superbwarfare:insidious"
]
}

View file

@ -38,8 +38,7 @@ import net.neoforged.neoforge.client.settings.KeyConflictContext;
import net.neoforged.neoforge.network.PacketDistributor;
import org.lwjgl.glfw.GLFW;
import static com.atsuishio.superbwarfare.event.ClientEventHandler.cantFireTime;
import static com.atsuishio.superbwarfare.event.ClientEventHandler.drawTime;
import static com.atsuishio.superbwarfare.event.ClientEventHandler.*;
@EventBusSubscriber(bus = EventBusSubscriber.Bus.GAME, value = Dist.CLIENT)
@ -211,6 +210,7 @@ public class ClickHandler {
// }
if (key == ModKeyMappings.RELOAD.getKey().getValue()) {
ClientEventHandler.burstFireSize = 0;
PacketDistributor.sendToServer(new ReloadMessage(0));
}
if (key == ModKeyMappings.FIRE_MODE.getKey().getValue()) {
@ -317,8 +317,17 @@ public class ClickHandler {
ClientEventHandler.holdFire = true;
}
if (stack.getItem() instanceof GunItem gunItem && !(player.getVehicle() != null && player.getVehicle() instanceof CannonEntity)) {
var tag = NBTTool.getTag(stack);
if (stack.getItem() instanceof GunItem gunItem && !(player.getVehicle() != null
&& player.getVehicle() instanceof CannonEntity) && clientTimer.getProgress() == 0 && cantFireTime == 0
&& (!(tag.getBoolean("is_normal_reloading") || tag.getBoolean("is_empty_reloading"))
&& !GunsTool.getGunBooleanTag(tag, "Reloading")
&& !GunsTool.getGunBooleanTag(tag, "Charging")
&& !GunsTool.getGunBooleanTag(tag, "NeedBoltAction", false))
&& cantFireTime == 0
&& drawTime < 0.01
&& !notInGame()
) {
if ((!(tag.getBoolean("is_normal_reloading") || tag.getBoolean("is_empty_reloading"))
&& !GunsTool.getGunBooleanTag(tag, "Reloading")
&& !GunsTool.getGunBooleanTag(tag, "Charging")
@ -332,14 +341,18 @@ public class ClickHandler {
if (!gunItem.useBackpackAmmo(stack) && GunsTool.getGunIntTag(tag, "Ammo", 0) <= 0 && GunsTool.getGunIntTag(tag, "ReloadTime") == 0) {
if (ReloadConfig.LEFT_CLICK_RELOAD.get()) {
PacketDistributor.sendToServer(new ReloadMessage(0));
ClientEventHandler.burstFireSize = 0;
}
} else {
PacketDistributor.sendToServer(new FireMessage(0));
if (GunsTool.getGunIntTag(tag, "FireMode") == 1) {
if (ClientEventHandler.burstFireSize == 0) {
ClientEventHandler.burstFireSize = GunsTool.getGunIntTag(tag, "BurstSize", 1);
}
} else {
if (!stack.is(ModItems.BOCEK.get())) {
ClientEventHandler.holdFire = true;
}
if (GunsTool.getGunIntTag(tag, "FireMode") == 1 && ClientEventHandler.burstFireSize == 0) {
ClientEventHandler.burstFireSize = GunsTool.getGunIntTag(tag, "BurstSize", 1);
}
}
}

View file

@ -0,0 +1,27 @@
package com.atsuishio.superbwarfare.client.layer.gun;
import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.item.gun.rifle.InsidiousItem;
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 InsidiousLayer extends GeoRenderLayer<InsidiousItem> {
private static final ResourceLocation LAYER = Mod.loc("textures/item/insidious_e.png");
public InsidiousLayer(GeoRenderer<InsidiousItem> entityRenderer) {
super(entityRenderer);
}
@Override
public void render(PoseStack poseStack, InsidiousItem 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, 0xFFFFFFFF);
}
}

View file

@ -0,0 +1,112 @@
package com.atsuishio.superbwarfare.client.model.item;
import com.atsuishio.superbwarfare.Mod;
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.rifle.InsidiousItem;
import com.atsuishio.superbwarfare.tools.NBTTool;
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.animation.AnimationState;
import software.bernie.geckolib.cache.object.GeoBone;
import software.bernie.geckolib.model.GeoModel;
public class InsidiousItemModel extends GeoModel<InsidiousItem> {
public static float fireRotY = 0f;
public static float fireRotZ = 0f;
@Override
public ResourceLocation getAnimationResource(InsidiousItem animatable) {
return Mod.loc("animations/insidious.animation.json");
}
@Override
public ResourceLocation getModelResource(InsidiousItem animatable) {
return Mod.loc("geo/insidious.geo.json");
}
@Override
public ResourceLocation getTextureResource(InsidiousItem animatable) {
return Mod.loc("textures/item/insidious.png");
}
@Override
public void setCustomAnimations(InsidiousItem animatable, long instanceId, AnimationState animationState) {
GeoBone gun = getAnimationProcessor().getBone("bone");
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().getTimer().getRealtimeDeltaTicks(), 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 * 13 * times;
double fp = ClientEventHandler.firePos;
double fr = ClientEventHandler.fireRot;
gun.setPosX(4.18f * (float) zp);
gun.setPosY(1.25f * (float) zp - (float) (0.2f * zpz));
gun.setPosZ(6.2f * (float) zp + (float) (0.5f * zpz));
gun.setScaleZ(1f - (0.82f * (float) zp));
var tag = NBTTool.getTag(stack);
tag.putBoolean("HoloHidden", !(gun.getPosX() > 3));
NBTTool.saveTag(stack, tag);
GeoBone shen = getAnimationProcessor().getBone("fireRootNormal");
fireRotY = (float) Mth.lerp(0.3f * times, fireRotY, 0.2f * ClientEventHandler.recoilHorizon * fpz);
fireRotZ = (float) Mth.lerp(2f * times, fireRotZ, (0.4f + 0.5 * 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.08f * fr + 0.01f * fpz));
shen.setRotY(fireRotY);
shen.setRotZ(fireRotZ);
shen.setPosX((float) (shen.getPosX() * (1 - 0.4 * zt)));
shen.setPosY((float) (shen.getPosY() * (-1 + 0.8 * zt)));
shen.setPosZ((float) (shen.getPosZ() * (1 - 0.6 * zt)));
shen.setRotX((float) (shen.getRotX() * (1 - 0.9 * zt)));
shen.setRotY((float) (shen.getRotY() * (1 - 0.85 * zt)));
shen.setRotZ((float) (shen.getRotZ() * (1 - 0.9 * zt)));
CrossHairOverlay.gunRot = shen.getRotZ();
GeoBone 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));
GeoBone camera = getAnimationProcessor().getBone("camera");
GeoBone main = getAnimationProcessor().getBone("0");
float numR = (float) (1 - 0.98 * zt);
float numP = (float) (1 - 0.92 * zt);
AnimationHelper.handleReloadShakeAnimation(stack, main, camera, numR, numP);
ClientEventHandler.shake(Mth.RAD_TO_DEG * camera.getRotX(), Mth.RAD_TO_DEG * camera.getRotY(), Mth.RAD_TO_DEG * camera.getRotZ());
}
}

View file

@ -0,0 +1,116 @@
package com.atsuishio.superbwarfare.client.renderer.item;
import com.atsuishio.superbwarfare.client.AnimationHelper;
import com.atsuishio.superbwarfare.client.model.item.InsidiousItemModel;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.gun.rifle.InsidiousItem;
import com.atsuishio.superbwarfare.tools.GunsTool;
import com.atsuishio.superbwarfare.tools.NBTTool;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.resources.ResourceLocation;
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 java.util.HashSet;
import java.util.Set;
public class InsidiousItemRenderer extends GeoItemRenderer<InsidiousItem> {
public InsidiousItemRenderer() {
super(new InsidiousItemModel());
// TODO render layer
// this.addRenderLayer(new InsidiousLayer(this));
}
@Override
public RenderType getRenderType(InsidiousItem 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 InsidiousItem 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, InsidiousItem animatable, BakedGeoModel model, RenderType type, MultiBufferSource renderTypeBuffer, VertexConsumer vertexBuilder, boolean isRenderer, float partialTicks, int packedLightIn,
int packedOverlayIn, int color) {
this.currentBuffer = renderTypeBuffer;
this.renderType = type;
this.animatable = animatable;
super.actuallyRender(matrixStackIn, animatable, model, type, renderTypeBuffer, vertexBuilder, isRenderer, partialTicks, packedLightIn, packedOverlayIn, color);
if (this.renderArms) {
this.renderArms = false;
}
}
@Override
public void renderRecursively(PoseStack stack, InsidiousItem animatable, GeoBone bone, RenderType type, MultiBufferSource buffer, VertexConsumer bufferIn, boolean isReRender, float partialTick, int packedLightIn, int packedOverlayIn, int color) {
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));
}
var 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 || GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.BARREL) == 2) {
bone.setHidden(true);
} else {
bone.setHidden(false);
bone.setScaleX((float) (0.95 + 0.5 * (Math.random() - 0.5)));
bone.setScaleY((float) (0.95 + 0.5 * (Math.random() - 0.5)));
bone.setRotZ((float) (0.5 * (Math.random() - 0.5)));
}
}
if (name.equals("rot1")) {
bone.setRotZ((System.currentTimeMillis() % 36000000) / 400f);
}
if (name.equals("rot2")) {
bone.setRotZ(-(System.currentTimeMillis() % 36000000) / 400f);
}
if (name.equals("cross")) {
bone.setHidden(NBTTool.getTag(itemStack).getBoolean("HoloHidden") || !ClientEventHandler.zoom);
}
if (renderingArms) {
AnimationHelper.renderArms(mc, player, this.transformType, stack, name, bone, SCALE_RECIPROCAL, this.currentBuffer, type, packedLightIn, false, false);
}
super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, color);
}
@Override
public ResourceLocation getTextureLocation(InsidiousItem instance) {
return super.getTextureLocation(instance);
}
}

View file

@ -24,7 +24,7 @@ public enum C4InfoProvider implements IEntityComponentProvider {
tooltip.add(Component.translatable("des.jade_plugin_superbwarfare.c4.remote_control").withStyle(ChatFormatting.YELLOW));
} else {
// 定时
var timeLeft = ExplosionConfig.C4_EXPLOSION_COUNTDOWN.get() - c4.tickCount;
var timeLeft = ExplosionConfig.C4_EXPLOSION_COUNTDOWN.get() - c4.getBombTick();
tooltip.add(Component.translatable(
"des.jade_plugin_superbwarfare.c4.time_left",
String.format("%.2f", timeLeft / 20.0)

View file

@ -30,28 +30,32 @@ public class ModContainerLootProvider implements LootTableSubProvider {
new PoolTriple(ModItems.TASER_BLUEPRINT.get(), 60, 0),
new PoolTriple(ModItems.MARLIN_BLUEPRINT.get(), 60, 0),
new PoolTriple(ModItems.M_1911_BLUEPRINT.get(), 60, 0),
new PoolTriple(ModItems.GLOCK_18_BLUEPRINT.get(), 62, 0),
new PoolTriple(ModItems.M_79_BLUEPRINT.get(), 62, 0),
new PoolTriple(ModItems.M_4_BLUEPRINT.get(), 62, 0),
new PoolTriple(ModItems.SKS_BLUEPRINT.get(), 62, 0),
new PoolTriple(ModItems.M_870_BLUEPRINT.get(), 62, 0),
new PoolTriple(ModItems.AK_47_BLUEPRINT.get(), 62, 0),
new PoolTriple(ModItems.K_98_BLUEPRINT.get(), 62, 0),
new PoolTriple(ModItems.MOSIN_NAGANT_BLUEPRINT.get(), 62, 0),
new PoolTriple(ModItems.TRACHELIUM_BLUEPRINT.get(), 12, 0),
new PoolTriple(ModItems.HUNTING_RIFLE_BLUEPRINT.get(), 12, 0),
new PoolTriple(ModItems.RPG_BLUEPRINT.get(), 12, 0),
new PoolTriple(ModItems.BOCEK_BLUEPRINT.get(), 12, 0),
new PoolTriple(ModItems.HK_416_BLUEPRINT.get(), 12, 0),
new PoolTriple(ModItems.RPK_BLUEPRINT.get(), 12, 0),
new PoolTriple(ModItems.VECTOR_BLUEPRINT.get(), 12, 0),
new PoolTriple(ModItems.MK_14_BLUEPRINT.get(), 12, 0),
new PoolTriple(ModItems.M_60_BLUEPRINT.get(), 12, 0),
new PoolTriple(ModItems.SVD_BLUEPRINT.get(), 12, 0),
new PoolTriple(ModItems.M_98B_BLUEPRINT.get(), 12, 0),
new PoolTriple(ModItems.AK_12_BLUEPRINT.get(), 12, 0),
new PoolTriple(ModItems.DEVOTION_BLUEPRINT.get(), 12, 0),
new PoolTriple(ModItems.QBZ_95_BLUEPRINT.get(), 12, 0),
new PoolTriple(ModItems.GLOCK_18_BLUEPRINT.get(), 42, 0),
new PoolTriple(ModItems.M_79_BLUEPRINT.get(), 42, 0),
new PoolTriple(ModItems.M_4_BLUEPRINT.get(), 42, 0),
new PoolTriple(ModItems.SKS_BLUEPRINT.get(), 42, 0),
new PoolTriple(ModItems.M_870_BLUEPRINT.get(), 42, 0),
new PoolTriple(ModItems.AK_47_BLUEPRINT.get(), 42, 0),
new PoolTriple(ModItems.K_98_BLUEPRINT.get(), 42, 0),
new PoolTriple(ModItems.MOSIN_NAGANT_BLUEPRINT.get(), 42, 0),
new PoolTriple(ModItems.HK_416_BLUEPRINT.get(), 42, 0),
new PoolTriple(ModItems.AK_12_BLUEPRINT.get(), 42, 0),
new PoolTriple(ModItems.QBZ_95_BLUEPRINT.get(), 42, 0),
new PoolTriple(ModItems.RPG_BLUEPRINT.get(), 42, 0),
new PoolTriple(ModItems.TRACHELIUM_BLUEPRINT.get(), 15, 0),
new PoolTriple(ModItems.HUNTING_RIFLE_BLUEPRINT.get(), 15, 0),
new PoolTriple(ModItems.BOCEK_BLUEPRINT.get(), 15, 0),
new PoolTriple(ModItems.RPK_BLUEPRINT.get(), 15, 0),
new PoolTriple(ModItems.VECTOR_BLUEPRINT.get(), 15, 0),
new PoolTriple(ModItems.MK_14_BLUEPRINT.get(), 15, 0),
new PoolTriple(ModItems.M_60_BLUEPRINT.get(), 15, 0),
new PoolTriple(ModItems.SVD_BLUEPRINT.get(), 15, 0),
new PoolTriple(ModItems.M_98B_BLUEPRINT.get(), 15, 0),
new PoolTriple(ModItems.DEVOTION_BLUEPRINT.get(), 15, 0),
new PoolTriple(ModItems.INSIDIOUS_BLUEPRINT.get(), 15, 0),
new PoolTriple(ModItems.AA_12_BLUEPRINT.get(), 5, 0),
new PoolTriple(ModItems.NTW_20_BLUEPRINT.get(), 5, 0),
new PoolTriple(ModItems.MINIGUN_BLUEPRINT.get(), 5, 0),

View file

@ -153,6 +153,7 @@ public class ModItemModelProvider extends ItemModelProvider {
cannonBlueprintItem(ModItems.ANNIHILATOR_BLUEPRINT);
gunBlueprintItem(ModItems.M_2_HB_BLUEPRINT);
gunBlueprintItem(ModItems.SECONDARY_CATACLYSM_BLUEPRINT);
gunBlueprintItem(ModItems.INSIDIOUS_BLUEPRINT);
// blocks
evenSimplerBlockItem(ModBlocks.BARBED_WIRE);

View file

@ -97,7 +97,7 @@ public class ModItemTagProvider extends ItemTagsProvider {
ModItems.HOMEMADE_SHOTGUN.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.MP_443.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(), ModItems.INSIDIOUS.get()
);
this.tag(ModTags.Items.USE_HANDGUN_AMMO).add(
@ -105,7 +105,7 @@ public class ModItemTagProvider extends ItemTagsProvider {
);
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());
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(), ModItems.INSIDIOUS.get());
this.tag(ModTags.Items.USE_SHOTGUN_AMMO).add(ModItems.HOMEMADE_SHOTGUN.get(), ModItems.M_870.get(), ModItems.AA_12.get());
@ -122,18 +122,23 @@ public class ModItemTagProvider extends ItemTagsProvider {
this.tag(ModTags.Items.BLUEPRINT).addTags(ModTags.Items.COMMON_BLUEPRINT, ModTags.Items.RARE_BLUEPRINT, ModTags.Items.EPIC_BLUEPRINT,
ModTags.Items.LEGENDARY_BLUEPRINT, ModTags.Items.CANNON_BLUEPRINT);
this.tag(ModTags.Items.COMMON_BLUEPRINT).add(ModItems.GLOCK_17_BLUEPRINT.get(), ModItems.MP_443_BLUEPRINT.get(), ModItems.MARLIN_BLUEPRINT.get(),
ModItems.TASER_BLUEPRINT.get(), ModItems.M_1911_BLUEPRINT.get());
this.tag(ModTags.Items.RARE_BLUEPRINT).add(ModItems.GLOCK_18_BLUEPRINT.get(), ModItems.M_79_BLUEPRINT.get(), ModItems.M_4_BLUEPRINT.get(),
ModItems.SKS_BLUEPRINT.get(), ModItems.M_870_BLUEPRINT.get(), ModItems.AK_47_BLUEPRINT.get(), ModItems.K_98_BLUEPRINT.get(),
ModItems.MOSIN_NAGANT_BLUEPRINT.get(), ModItems.M_2_HB_BLUEPRINT.get());
this.tag(ModTags.Items.EPIC_BLUEPRINT).add(ModItems.TRACHELIUM_BLUEPRINT.get(), ModItems.HUNTING_RIFLE_BLUEPRINT.get(), ModItems.RPG_BLUEPRINT.get(),
ModItems.BOCEK_BLUEPRINT.get(), ModItems.HK_416_BLUEPRINT.get(), ModItems.RPK_BLUEPRINT.get(), ModItems.VECTOR_BLUEPRINT.get(),
ModItems.MK_14_BLUEPRINT.get(), ModItems.M_60_BLUEPRINT.get(), ModItems.SVD_BLUEPRINT.get(), ModItems.M_98B_BLUEPRINT.get(),
ModItems.AK_12_BLUEPRINT.get(), ModItems.DEVOTION_BLUEPRINT.get(), ModItems.QBZ_95_BLUEPRINT.get());
ModItems.MOSIN_NAGANT_BLUEPRINT.get(), ModItems.M_2_HB_BLUEPRINT.get(), ModItems.HK_416_BLUEPRINT.get(), ModItems.AK_12_BLUEPRINT.get()
, ModItems.QBZ_95_BLUEPRINT.get(), ModItems.RPG_BLUEPRINT.get());
this.tag(ModTags.Items.EPIC_BLUEPRINT).add(ModItems.TRACHELIUM_BLUEPRINT.get(), ModItems.HUNTING_RIFLE_BLUEPRINT.get(), ModItems.BOCEK_BLUEPRINT.get(),
ModItems.RPK_BLUEPRINT.get(), ModItems.VECTOR_BLUEPRINT.get(), ModItems.MK_14_BLUEPRINT.get(), ModItems.M_60_BLUEPRINT.get(), ModItems.SVD_BLUEPRINT.get(),
ModItems.M_98B_BLUEPRINT.get(), ModItems.DEVOTION_BLUEPRINT.get(), ModItems.INSIDIOUS_BLUEPRINT.get());
this.tag(ModTags.Items.LEGENDARY_BLUEPRINT).add(ModItems.AA_12_BLUEPRINT.get(), ModItems.NTW_20_BLUEPRINT.get(), ModItems.MINIGUN_BLUEPRINT.get(),
ModItems.SENTINEL_BLUEPRINT.get(), ModItems.JAVELIN_BLUEPRINT.get(), ModItems.SECONDARY_CATACLYSM_BLUEPRINT.get(), ModItems.MK_42_BLUEPRINT.get(),
ModItems.MLE_1934_BLUEPRINT.get(), ModItems.ANNIHILATOR_BLUEPRINT.get());
this.tag(ModTags.Items.CANNON_BLUEPRINT).add(ModItems.MK_42_BLUEPRINT.get(), ModItems.MLE_1934_BLUEPRINT.get(), ModItems.ANNIHILATOR_BLUEPRINT.get());
}

View file

@ -1,14 +1,11 @@
package com.atsuishio.superbwarfare.entity.projectile;
import com.atsuishio.superbwarfare.config.server.ExplosionConfig;
import com.atsuishio.superbwarfare.init.ModDamageTypes;
import com.atsuishio.superbwarfare.init.ModEntities;
import com.atsuishio.superbwarfare.init.ModItems;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.tools.CustomExplosion;
import com.atsuishio.superbwarfare.tools.EntityFindUtil;
import com.atsuishio.superbwarfare.tools.NBTTool;
import com.atsuishio.superbwarfare.tools.ParticleTool;
import net.minecraft.core.BlockPos;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.core.registries.Registries;
@ -17,6 +14,7 @@ import net.minecraft.nbt.NbtUtils;
import net.minecraft.network.syncher.EntityDataAccessor;
import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.network.syncher.SynchedEntityData;
import net.minecraft.server.players.OldUsersConverter;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundSource;
import net.minecraft.util.Mth;
@ -25,17 +23,13 @@ import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.*;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.entity.projectile.Projectile;
import net.minecraft.world.entity.projectile.ProjectileUtil;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.ClipContext;
import net.minecraft.world.level.Explosion;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.*;
import net.minecraft.world.phys.shapes.VoxelShape;
import net.neoforged.neoforge.event.EventHooks;
import net.neoforged.neoforge.items.ItemHandlerHelper;
import org.jetbrains.annotations.NotNull;
import software.bernie.geckolib.animatable.GeoEntity;
import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache;
@ -44,14 +38,19 @@ import software.bernie.geckolib.util.GeckoLibUtil;
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import java.util.Optional;
import java.util.UUID;
import static com.atsuishio.superbwarfare.item.C4Bomb.TAG_CONTROL;
public class C4Entity extends Projectile implements GeoEntity {
public class C4Entity extends Entity implements GeoEntity {
protected static final EntityDataAccessor<Optional<UUID>> OWNER_UUID = SynchedEntityData.defineId(C4Entity.class, EntityDataSerializers.OPTIONAL_UUID);
protected static final EntityDataAccessor<String> LAST_ATTACKER_UUID = SynchedEntityData.defineId(C4Entity.class, EntityDataSerializers.STRING);
protected static final EntityDataAccessor<String> TARGET_UUID = SynchedEntityData.defineId(C4Entity.class, EntityDataSerializers.STRING);
public static final EntityDataAccessor<Boolean> IS_CONTROLLABLE = SynchedEntityData.defineId(C4Entity.class, EntityDataSerializers.BOOLEAN);
public static final EntityDataAccessor<Integer> BOMB_TICK = SynchedEntityData.defineId(C4Entity.class, EntityDataSerializers.INT);
public static final int DEFAULT_DEFUSE_PROGRESS = 100;
@ -67,37 +66,51 @@ public class C4Entity extends Projectile implements GeoEntity {
public C4Entity(LivingEntity owner, Level level) {
super(ModEntities.C_4.get(), level);
this.setOwner(owner);
this.setOwnerUUID(owner.getUUID());
}
public C4Entity(LivingEntity owner, Level level, boolean isControllable) {
super(ModEntities.C_4.get(), level);
this.setOwner(owner);
this.setOwnerUUID(owner.getUUID());
this.entityData.set(IS_CONTROLLABLE, isControllable);
}
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
builder.define(LAST_ATTACKER_UUID, "undefined");
builder.define(TARGET_UUID, "undefined");
builder.define(IS_CONTROLLABLE, false);
builder.define(OWNER_UUID, Optional.empty())
.define(LAST_ATTACKER_UUID, "undefined")
.define(TARGET_UUID, "undefined")
.define(IS_CONTROLLABLE, false)
.define(BOMB_TICK, 0);
}
public void setOwnerUUID(@Nullable UUID pUuid) {
this.entityData.set(OWNER_UUID, Optional.ofNullable(pUuid));
}
@Nullable
public UUID getOwnerUUID() {
return this.entityData.get(OWNER_UUID).orElse(null);
}
@Override
public void addAdditionalSaveData(@NotNull CompoundTag compound) {
super.addAdditionalSaveData(compound);
compound.putString("Target", this.entityData.get(TARGET_UUID));
compound.putString("LastAttacker", this.entityData.get(LAST_ATTACKER_UUID));
compound.putBoolean("IsControllable", this.entityData.get(IS_CONTROLLABLE));
compound.putInt("BombTick", this.entityData.get(BOMB_TICK));
if (this.lastState != null) {
compound.put("InBlockState", NbtUtils.writeBlockState(this.lastState));
}
if (this.getOwnerUUID() != null) {
compound.putUUID("Owner", this.getOwnerUUID());
}
}
@Override
public void readAdditionalSaveData(@NotNull CompoundTag compound) {
super.readAdditionalSaveData(compound);
if (compound.contains("LastAttacker")) {
this.entityData.set(LAST_ATTACKER_UUID, compound.getString("LastAttacker"));
}
@ -113,21 +126,43 @@ public class C4Entity extends Projectile implements GeoEntity {
if (compound.contains("IsControllable")) {
this.entityData.set(IS_CONTROLLABLE, compound.getBoolean("IsControllable"));
}
if (compound.contains("BombTick")) {
this.entityData.set(BOMB_TICK, compound.getInt("BombTick"));
}
UUID uuid;
if (compound.hasUUID("Owner")) {
uuid = compound.getUUID("Owner");
} else {
String s = compound.getString("Owner");
assert this.getServer() != null;
uuid = OldUsersConverter.convertMobOwnerIfNecessary(this.getServer(), s);
}
if (uuid != null) {
try {
this.setOwnerUUID(uuid);
} catch (Throwable ignored) {
}
}
}
@Override
@ParametersAreNonnullByDefault
public @NotNull InteractionResult interact(Player player, InteractionHand hand) {
if (this.getOwner() == player && player.isShiftKeyDown()) {
if (!this.level().isClientSide()) {
this.discard();
}
if (!player.getAbilities().instabuild) {
ItemHandlerHelper.giveItemToPlayer(player, this.getItemStack());
}
return InteractionResult.sidedSuccess(this.level().isClientSide());
}
// TODO this.getOwner()
// if (this.getOwner() == player && player.isShiftKeyDown()) {
// if (!this.level().isClientSide()) {
// this.discard();
// }
//
// if (!player.getAbilities().instabuild) {
// ItemHandlerHelper.giveItemToPlayer(player, this.getItemStack());
// }
// return InteractionResult.sidedSuccess(this.level().isClientSide());
// }
return InteractionResult.PASS;
}
@ -136,18 +171,21 @@ public class C4Entity extends Projectile implements GeoEntity {
super.tick();
if (!this.entityData.get(IS_CONTROLLABLE)) {
if (this.tickCount >= ExplosionConfig.C4_EXPLOSION_COUNTDOWN.get()) {
int bombTick = this.entityData.get(BOMB_TICK);
if (bombTick >= ExplosionConfig.C4_EXPLOSION_COUNTDOWN.get()) {
this.explode();
}
int countdown = ExplosionConfig.C4_EXPLOSION_COUNTDOWN.get();
if (countdown - tickCount > 39 && tickCount % ((20 * (countdown - tickCount)) / countdown + 1) == 0) {
if (countdown - bombTick > 39 && bombTick % ((20 * (countdown - bombTick)) / countdown + 1) == 0) {
this.level().playSound(null, this.getOnPos(), ModSounds.C4_BEEP.get(), SoundSource.PLAYERS, 1, 1);
}
if (tickCount == countdown - 39) {
if (bombTick == countdown - 39) {
this.level().playSound(null, this.getOnPos(), ModSounds.C4_FINAL.get(), SoundSource.PLAYERS, 2, 1);
}
this.entityData.set(BOMB_TICK, bombTick + 1);
}
Vec3 motion = this.getDeltaMovement();
@ -280,19 +318,44 @@ public class C4Entity extends Projectile implements GeoEntity {
this.yRotO = getYRot();
}
@Override
protected void updateRotation() {
if (getDeltaMovement().length() > 0.05 && !inGround && !onEntity) {
super.updateRotation();
Vec3 vec3 = this.getDeltaMovement();
double d0 = vec3.horizontalDistance();
this.setXRot(lerpRotation(this.xRotO, (float) (Mth.atan2(vec3.y, d0) * (double) (180F / (float) Math.PI))));
this.setYRot(lerpRotation(this.yRotO, (float) (Mth.atan2(vec3.x, vec3.z) * (double) (180F / (float) Math.PI))));
}
}
protected static float lerpRotation(float pCurrentRotation, float pTargetRotation) {
while (pTargetRotation - pCurrentRotation < -180.0F) {
pCurrentRotation -= 360.0F;
}
while (pTargetRotation - pCurrentRotation >= 180.0F) {
pCurrentRotation += 360.0F;
}
return Mth.lerp(0.2F, pCurrentRotation, pTargetRotation);
}
@Nullable
protected EntityHitResult findHitEntity(Vec3 pStartVec, Vec3 pEndVec) {
return ProjectileUtil.getEntityHitResult(this.level(), this, pStartVec, pEndVec, this.getBoundingBox().expandTowards(this.getDeltaMovement()).inflate(1.0D), this::canHitEntity);
return ProjectileUtil.getEntityHitResult(this.level(), this, pStartVec, pEndVec, this.getBoundingBox().expandTowards(this.getDeltaMovement()).inflate(1.0D),
this::canHitEntity);
}
protected boolean canHitEntity(Entity pTarget) {
if (!pTarget.canBeHitByProjectile()) {
return false;
} else {
// TODO this.getOwner()
// Entity entity = this.getOwner();
Entity entity = null;
return entity == null || !entity.isPassengerOfSameVehicle(pTarget);
}
}
@Override
protected void onHit(HitResult pResult) {
switch (pResult.getType()) {
case BLOCK:
@ -306,9 +369,7 @@ public class C4Entity extends Projectile implements GeoEntity {
}
}
@Override
protected void onHitEntity(@NotNull EntityHitResult pResult) {
super.onHitEntity(pResult);
Entity entity = pResult.getEntity();
if (tickCount < 2 || entity == this.getVehicle() || entity instanceof C4Entity) return;
this.entityData.set(TARGET_UUID, entity.getStringUUID());
@ -318,10 +379,8 @@ public class C4Entity extends Projectile implements GeoEntity {
this.xRotO = this.getXRot();
}
@Override
protected void onHitBlock(BlockHitResult pResult) {
this.lastState = this.level().getBlockState(pResult.getBlockPos());
super.onHitBlock(pResult);
Vec3 vec3 = pResult.getLocation().subtract(this.getX(), this.getY(), this.getZ());
this.setDeltaMovement(vec3);
Vec3 vec31 = vec3.normalize().scale(0.05F);
@ -350,13 +409,14 @@ public class C4Entity extends Projectile implements GeoEntity {
}
}
CustomExplosion explosion = new CustomExplosion(level(), this,
ModDamageTypes.causeProjectileBoomDamage(level().registryAccess(), this, this.getOwner()), ExplosionConfig.C4_EXPLOSION_DAMAGE.get(),
pos.x, pos.y, pos.z, ExplosionConfig.C4_EXPLOSION_RADIUS.get(), ExplosionConfig.EXPLOSION_DESTROY.get() ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.KEEP).setDamageMultiplier(1);
explosion.explode();
EventHooks.onExplosionStart(level(), explosion);
ParticleTool.spawnHugeExplosionParticles(level(), position());
explosion.finalizeExplosion(false);
// TODO this.getOwner() explosion
// CustomExplosion explosion = new CustomExplosion(level(), this,
// ModDamageTypes.causeProjectileBoomDamage(level().registryAccess(), this, this.getOwner()), ExplosionConfig.C4_EXPLOSION_DAMAGE.get(),
// pos.x, pos.y, pos.z, ExplosionConfig.C4_EXPLOSION_RADIUS.get(), ExplosionConfig.EXPLOSION_DESTROY.get() ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.KEEP).setDamageMultiplier(1);
// explosion.explode();
// EventHooks.onExplosionStart(level(), explosion);
// ParticleTool.spawnHugeExplosionParticles(level(), position());
// explosion.finalizeExplosion(false);
this.discard();
}
@ -401,4 +461,8 @@ public class C4Entity extends Projectile implements GeoEntity {
this.level().addFreshEntity(entity);
}
}
public int getBombTick() {
return this.entityData.get(BOMB_TICK);
}
}

View file

@ -559,7 +559,7 @@ public class ClientEventHandler {
burstFireSize = 1;
}
if (burstFireSize == 1) {
cantFireTime = 40;
cantFireTime = 30;
}
}
@ -1512,6 +1512,7 @@ public class ClientEventHandler {
lungeDraw = 30;
lungeSprint = 0;
lungeAttack = 0;
burstFireSize = 0;
}
private static void handleWeaponDraw(LivingEntity entity, final CompoundTag tag) {

View file

@ -64,6 +64,7 @@ public class ModItems {
public static final DeferredHolder<Item, M4Item> M_4 = GUNS.register("m_4", M4Item::new);
public static final DeferredHolder<Item, Hk416Item> HK_416 = GUNS.register("hk_416", Hk416Item::new);
public static final DeferredHolder<Item, Qbz95Item> QBZ_95 = GUNS.register("qbz_95", Qbz95Item::new);
public static final DeferredHolder<Item, InsidiousItem> INSIDIOUS = GUNS.register("insidious", InsidiousItem::new);
public static final DeferredHolder<Item, Mk14Item> MK_14 = GUNS.register("mk_14", Mk14Item::new);
public static final DeferredHolder<Item, MarlinItem> MARLIN = GUNS.register("marlin", MarlinItem::new);
public static final DeferredHolder<Item, K98Item> K_98 = GUNS.register("k_98", K98Item::new);
@ -244,6 +245,7 @@ public class ModItems {
public static final DeferredHolder<Item, BlueprintItem> JAVELIN_BLUEPRINT = ITEMS.register("javelin_blueprint", () -> new BlueprintItem(ModRarity.getLegendary()));
public static final DeferredHolder<Item, BlueprintItem> M_2_HB_BLUEPRINT = ITEMS.register("m2hb_blueprint", () -> new BlueprintItem(Rarity.RARE));
public static final DeferredHolder<Item, BlueprintItem> SECONDARY_CATACLYSM_BLUEPRINT = ITEMS.register("secondary_cataclysm_blueprint", () -> new BlueprintItem(ModRarity.getLegendary()));
public static final DeferredHolder<Item, BlueprintItem> INSIDIOUS_BLUEPRINT = ITEMS.register("insidious_blueprint", () -> new BlueprintItem(Rarity.EPIC));
public static final DeferredHolder<Item, BlueprintItem> MK_42_BLUEPRINT = ITEMS.register("mk_42_blueprint", () -> new BlueprintItem(ModRarity.getLegendary()));
public static final DeferredHolder<Item, BlueprintItem> MLE_1934_BLUEPRINT = ITEMS.register("mle_1934_blueprint", () -> new BlueprintItem(ModRarity.getLegendary()));
public static final DeferredHolder<Item, BlueprintItem> ANNIHILATOR_BLUEPRINT = ITEMS.register("annihilator_blueprint", () -> new BlueprintItem(ModRarity.getLegendary()));

View file

@ -431,5 +431,11 @@ public class ModSounds {
public static final DeferredHolder<SoundEvent, SoundEvent> PRISM_FIRE_3P = REGISTRY.register("prism_fire_3p", () -> SoundEvent.createVariableRangeEvent(Mod.loc("prism_fire_3p")));
public static final DeferredHolder<SoundEvent, SoundEvent> PRISM_FIRE_1P_2 = REGISTRY.register("prism_fire_1p_2", () -> SoundEvent.createVariableRangeEvent(Mod.loc("prism_fire_1p_2")));
public static final DeferredHolder<SoundEvent, SoundEvent> PRISM_FIRE_3P_2 = REGISTRY.register("prism_fire_3p_2", () -> SoundEvent.createVariableRangeEvent(Mod.loc("prism_fire_3p_2")));
public static final DeferredHolder<SoundEvent, SoundEvent> INSIDIOUS_FIRE_1P = REGISTRY.register("insidious_fire_1p", () -> SoundEvent.createVariableRangeEvent(Mod.loc("insidious_fire_1p")));
public static final DeferredHolder<SoundEvent, SoundEvent> INSIDIOUS_FIRE_3P = REGISTRY.register("insidious_fire_3p", () -> SoundEvent.createVariableRangeEvent(Mod.loc("insidious_fire_3p")));
public static final DeferredHolder<SoundEvent, SoundEvent> INSIDIOUS_FAR = REGISTRY.register("insidious_far", () -> SoundEvent.createVariableRangeEvent(Mod.loc("insidious_far")));
public static final DeferredHolder<SoundEvent, SoundEvent> INSIDIOUS_VERYFAR = REGISTRY.register("insidious_veryfar", () -> SoundEvent.createVariableRangeEvent(Mod.loc("insidious_veryfar")));
public static final DeferredHolder<SoundEvent, SoundEvent> INSIDIOUS_RELOAD_EMPTY = REGISTRY.register("insidious_reload_empty", () -> SoundEvent.createVariableRangeEvent(Mod.loc("insidious_reload_empty")));
}

View file

@ -139,8 +139,16 @@ public class ModVillagers {
new ItemStack(ModItems.M_870_BLUEPRINT.get()), 10, 25, 0.05f));
trades.get(3).add(new BasicItemListing(new ItemStack(Items.EMERALD, 32),
new ItemStack(ModItems.K_98_BLUEPRINT.get()), 10, 25, 0.05f));
trades.get(3).add(new BasicItemListing(new ItemStack(Items.EMERALD, 40),
trades.get(3).add(new BasicItemListing(new ItemStack(Items.EMERALD, 32),
new ItemStack(ModItems.MOSIN_NAGANT_BLUEPRINT.get()), 10, 25, 0.05f));
trades.get(3).add(new BasicItemListing(new ItemStack(Items.EMERALD, 32),
new ItemStack(ModItems.RPG_BLUEPRINT.get()), 10, 25, 0.05f));
trades.get(3).add(new BasicItemListing(new ItemStack(Items.EMERALD, 32),
new ItemStack(ModItems.HK_416_BLUEPRINT.get()), 10, 25, 0.05f));
trades.get(3).add(new BasicItemListing(new ItemStack(Items.EMERALD, 32),
new ItemStack(ModItems.QBZ_95_BLUEPRINT.get()), 10, 25, 0.05f));
trades.get(3).add(new BasicItemListing(new ItemStack(Items.EMERALD, 32),
new ItemStack(ModItems.AK_12_BLUEPRINT.get()), 10, 25, 0.05f));
// 等级 4 交易
trades.get(4).add(new BasicItemListing(new ItemStack(Items.EMERALD, 2),
@ -202,10 +210,6 @@ public class ModVillagers {
trades.get(5).add(new BasicItemListing(new ItemStack(Items.EMERALD, 64),
new ItemStack(ModItems.HUNTING_RIFLE_BLUEPRINT.get()), 10, 30, 0.05f));
trades.get(5).add(new BasicItemListing(new ItemStack(Items.EMERALD, 64),
new ItemStack(ModItems.RPG_BLUEPRINT.get()), 10, 30, 0.05f));
trades.get(5).add(new BasicItemListing(new ItemStack(Items.EMERALD, 64),
new ItemStack(ModItems.HK_416_BLUEPRINT.get()), 10, 30, 0.05f));
trades.get(5).add(new BasicItemListing(new ItemStack(Items.EMERALD, 64),
new ItemStack(ModItems.RPK_BLUEPRINT.get()), 10, 30, 0.05f));
trades.get(5).add(new BasicItemListing(new ItemStack(Items.EMERALD, 64),
@ -220,10 +224,6 @@ public class ModVillagers {
new ItemStack(ModItems.M_98B_BLUEPRINT.get()), 10, 30, 0.05f));
trades.get(5).add(new BasicItemListing(new ItemStack(Items.EMERALD, 64),
new ItemStack(ModItems.DEVOTION_BLUEPRINT.get()), 10, 30, 0.05f));
trades.get(5).add(new BasicItemListing(new ItemStack(Items.EMERALD, 64),
new ItemStack(ModItems.QBZ_95_BLUEPRINT.get()), 10, 30, 0.05f));
trades.get(5).add(new BasicItemListing(new ItemStack(Items.EMERALD, 64),
new ItemStack(ModItems.AK_12_BLUEPRINT.get()), 10, 30, 0.05f));
trades.get(5).add(new BasicItemListing(new ItemStack(Items.EMERALD, 16),
new ItemStack(ModItems.HE_5_INCHES.get(), 1), 8, 10, 0.05f));

View file

@ -12,7 +12,6 @@ import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.entity.projectile.Projectile;
import net.minecraft.world.item.Item;
@ -43,7 +42,7 @@ public class C4Bomb extends Item implements ProjectileItem {
C4Entity entity = new C4Entity(player, level, flag);
entity.setPos(player.getX() + 0.25 * player.getLookAngle().x, player.getEyeY() - 0.2f + 0.25 * player.getLookAngle().y, player.getZ() + 0.25 * player.getLookAngle().z);
entity.setDeltaMovement(0.5 * player.getLookAngle().x, 0.5 * player.getLookAngle().y, 0.5 * player.getLookAngle().z);
entity.setOwner(player);
entity.setOwnerUUID(player.getUUID());
level.addFreshEntity(entity);
}
@ -83,9 +82,10 @@ public class C4Bomb extends Item implements ProjectileItem {
@Override
@ParametersAreNonnullByDefault
public @NotNull Projectile asProjectile(Level level, Position pos, ItemStack stack, Direction direction) {
var c4 = new C4Entity((LivingEntity) null, level);
c4.setPos(pos.x(), pos.y(), pos.z());
return c4;
// TODO 重写发射器行为
// var c4 = new C4Entity((LivingEntity) null, level);
// c4.setPos(pos.x(), pos.y(), pos.z());
return null;
}
@Override

View file

@ -26,7 +26,10 @@ public class Detonator extends Item {
public static List<Entity> getC4(Player player, Level level) {
return StreamSupport.stream(EntityFindUtil.getEntities(level).getAll().spliterator(), false)
.filter(e -> e instanceof C4Entity c4 && c4.getOwner() == player)
.filter(e -> e instanceof C4Entity c4
// TODO c4.getOwner()
// && c4.getOwner() == player
)
.toList();
}

View file

@ -54,7 +54,7 @@ public class RpgItem extends GunItem implements GeoItem, SpecialFireWeapon {
public static ItemDisplayContext transformType;
public RpgItem() {
super(new Properties().stacksTo(1).rarity(Rarity.EPIC));
super(new Properties().stacksTo(1).rarity(Rarity.RARE));
}
@Override

View file

@ -42,7 +42,7 @@ public class AK12Item extends GunItem implements GeoItem {
}
public AK12Item() {
super(new Properties().stacksTo(1).rarity(Rarity.EPIC));
super(new Properties().stacksTo(1).rarity(Rarity.RARE));
}
@Override

View file

@ -36,7 +36,7 @@ public class Hk416Item extends GunItem implements GeoItem {
public static ItemDisplayContext transformType;
public Hk416Item() {
super(new Properties().stacksTo(1).rarity(Rarity.EPIC));
super(new Properties().stacksTo(1).rarity(Rarity.RARE));
}
@Override

View file

@ -0,0 +1,116 @@
package com.atsuishio.superbwarfare.item.gun.rifle;
import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.client.renderer.item.InsidiousItemRenderer;
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.gun.GunItem;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.GunsTool;
import com.atsuishio.superbwarfare.tools.NBTTool;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.effect.MobEffects;
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 software.bernie.geckolib.animatable.GeoItem;
import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache;
import software.bernie.geckolib.animation.*;
import software.bernie.geckolib.renderer.GeoItemRenderer;
import software.bernie.geckolib.util.GeckoLibUtil;
import java.util.Set;
public class InsidiousItem extends GunItem implements GeoItem {
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public static ItemDisplayContext transformType;
public InsidiousItem() {
super(new Properties().stacksTo(1).rarity(Rarity.EPIC));
}
@Override
public GeoItemRenderer<? extends Item> getRenderer() {
return new InsidiousItemRenderer();
}
public void getTransformType(ItemDisplayContext type) {
transformType = type;
}
private PlayState idlePredicate(AnimationState<InsidiousItem> 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;
var tag = NBTTool.getTag(stack);
if (tag.getBoolean("is_empty_reloading")) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.insidious.reload"));
}
if (player.isSprinting() && player.onGround() && player.getPersistentData().getDouble("noRun") == 0 && ClientEventHandler.drawTime < 0.01) {
if (player.hasEffect(MobEffects.MOVEMENT_SPEED)) {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.insidious.run_fast"));
} else {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.insidious.run"));
}
}
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.insidious.idle"));
}
@Override
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
AnimationController<InsidiousItem> idleController = new AnimationController<>(this, "idleController", 2, this::idlePredicate);
data.add(idleController);
}
@Override
public AnimatableInstanceCache getAnimatableInstanceCache() {
return this.cache;
}
public static ItemStack getGunInstance() {
ItemStack stack = new ItemStack(ModItems.INSIDIOUS.get());
GunsTool.initCreativeGun(stack, ModItems.INSIDIOUS.getId().getPath());
return stack;
}
@Override
public Set<SoundEvent> getReloadSound() {
return Set.of(ModSounds.VECTOR_RELOAD_NORMAL.get(), ModSounds.VECTOR_RELOAD_EMPTY.get());
}
@Override
public ResourceLocation getGunIcon() {
return Mod.loc("textures/gun_icon/insidious_icon.png");
}
@Override
public String getGunDisplayName() {
return "INSIDIOUS";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.BURST.flag;
}
}

View file

@ -38,7 +38,7 @@ public class Qbz95Item extends GunItem implements GeoItem {
public static ItemDisplayContext transformType;
public Qbz95Item() {
super(new Properties().stacksTo(1).rarity(Rarity.EPIC));
super(new Properties().stacksTo(1).rarity(Rarity.RARE));
}
@Override
@ -146,7 +146,6 @@ public class Qbz95Item extends GunItem implements GeoItem {
final var rootTag = NBTTool.getTag(stack);
int scopeType = GunsTool.getAttachmentType(rootTag, GunsTool.AttachmentType.SCOPE);
int magType = GunsTool.getAttachmentType(rootTag, GunsTool.AttachmentType.MAGAZINE);
;
if (magType == 1) {
CompoundTag tag = rootTag.getCompound("Attachments");

View file

@ -0,0 +1,611 @@
{
"format_version": "1.8.0",
"animations": {
"animation.insidious.idle": {
"animation_length": 1
},
"animation.insidious.reload": {
"animation_length": 3,
"bones": {
"0": {
"rotation": {
"0.0417": {
"pre": [0, 0, 0],
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.125": {
"post": [2.5, 0, 0],
"lerp_mode": "catmullrom"
},
"0.25": {
"post": [-5.33, -4.8, -23.37],
"lerp_mode": "catmullrom"
},
"0.375": {
"post": [-8.745, -6.73, -37.66],
"lerp_mode": "catmullrom"
},
"0.5": {
"post": [-4.795, -5.16, -36.31],
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": [-9.54131, -5.38038, -28.80396],
"lerp_mode": "catmullrom"
},
"0.5833": {
"post": [-10.79799, -6.63854, -38.68136],
"lerp_mode": "catmullrom"
},
"0.6667": {
"post": [-12.90518, -6.42231, -31.2782],
"lerp_mode": "catmullrom"
},
"0.75": {
"post": [-11.96, -6.27, -37.745],
"lerp_mode": "catmullrom"
},
"0.875": {
"post": [-10.365, -5.41, -36.45],
"lerp_mode": "catmullrom"
},
"1.125": {
"post": [-7.33, -3.33, -43.12],
"lerp_mode": "catmullrom"
},
"1.2083": {
"post": [-10.16224, -7.3703, -46.05436],
"lerp_mode": "catmullrom"
},
"1.25": {
"post": [-10.98734, -8.10449, -43.96957],
"lerp_mode": "catmullrom"
},
"1.375": {
"post": [-14.725, -13.11, -43.08],
"lerp_mode": "catmullrom"
},
"1.4167": {
"post": [-11.865, -11.685, -34.695],
"lerp_mode": "catmullrom"
},
"1.4583": {
"post": [-12.39, -12.66, -39.545],
"lerp_mode": "catmullrom"
},
"1.5417": {
"post": [-12.915, -13.64, -38.045],
"lerp_mode": "catmullrom"
},
"1.5833": {
"post": [-15.28, -11.95, -36.55],
"lerp_mode": "catmullrom"
},
"1.6667": {
"post": [-16.84, -11.19, -29.38],
"lerp_mode": "catmullrom"
},
"1.75": {
"post": [-17.605, -11.36, -26.285],
"lerp_mode": "catmullrom"
},
"1.7917": {
"post": [-12.26, -11.32, -34.25],
"lerp_mode": "catmullrom"
},
"1.8333": {
"post": [-14.52, -11.07, -27.18],
"lerp_mode": "catmullrom"
},
"1.9167": {
"post": [-16.79, -10.81, -32.01],
"lerp_mode": "catmullrom"
},
"2.0": {
"post": [-14.335, -10.84, -27.575],
"lerp_mode": "catmullrom"
},
"2.0833": {
"post": [-8.5, -6.56, -15.54],
"lerp_mode": "catmullrom"
},
"2.125": {
"post": [1.77, -4.42, -9.53],
"lerp_mode": "catmullrom"
},
"2.2083": {
"post": [0.625, -0.14, 2.5],
"lerp_mode": "catmullrom"
},
"2.25": {
"post": [4.15, 1.63, 5.18],
"lerp_mode": "catmullrom"
},
"2.3333": {
"post": [0.59, 0.41, -1.1425],
"lerp_mode": "catmullrom"
},
"2.4167": {
"post": [-0.62, -0.09, 1.21625],
"lerp_mode": "catmullrom"
},
"2.5417": {
"post": [-0.33125, 0, -0.35],
"lerp_mode": "catmullrom"
},
"2.6667": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
}
},
"position": {
"0.0": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.0833": {
"post": [-0.35, -0.66, -0.22],
"lerp_mode": "catmullrom"
},
"0.1667": {
"post": [-0.715, -0.595, -0.57],
"lerp_mode": "catmullrom"
},
"0.2917": {
"post": [-1.99375, 2.42625, -1.8425],
"lerp_mode": "catmullrom"
},
"0.375": {
"post": [-2.81875, 3.39125, -2.3125],
"lerp_mode": "catmullrom"
},
"0.5": {
"post": [-2.52375, 2.74625, -2.0025],
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": [-2.31375, 3.14625, -2.0325],
"lerp_mode": "catmullrom"
},
"0.625": {
"post": [-2.53375, 3.19125, -2.1025],
"lerp_mode": "catmullrom"
},
"0.7917": {
"post": [-2.60875, 3.56125, -2.6325],
"lerp_mode": "catmullrom"
},
"1.0": {
"post": [-2.64375, 3.14625, -2.9025],
"lerp_mode": "catmullrom"
},
"1.125": {
"post": [-2.75, 2.04, -3.7],
"lerp_mode": "catmullrom"
},
"1.2083": {
"post": [-2.76, 1.7, -4],
"lerp_mode": "catmullrom"
},
"1.25": {
"post": [-2.78, 1.79, -4.04],
"lerp_mode": "catmullrom"
},
"1.375": {
"post": [-2.59375, 1.86625, -4.1025],
"lerp_mode": "catmullrom"
},
"1.4167": {
"post": [-2.29375, 1.37125, -3.7525],
"lerp_mode": "catmullrom"
},
"1.5": {
"post": [-2.66375, 1.32625, -4.3225],
"lerp_mode": "catmullrom"
},
"1.625": {
"post": [-2.81875, 2.32625, -4.5025],
"lerp_mode": "catmullrom"
},
"1.75": {
"post": [-2.61875, 2.91125, -4.6025],
"lerp_mode": "catmullrom"
},
"1.7917": {
"post": [-3.00875, 2.24625, -4.7725],
"lerp_mode": "catmullrom"
},
"1.875": {
"post": [-2.92875, 2.36125, -4.7725],
"lerp_mode": "catmullrom"
},
"2.0": {
"post": [-2.89875, 1.54625, -4.5125],
"lerp_mode": "catmullrom"
},
"2.125": {
"post": [-0.59, -0.03, -7.53],
"lerp_mode": "catmullrom"
},
"2.2083": {
"post": [0, -0.32, -2.3],
"lerp_mode": "catmullrom"
},
"2.25": {
"post": [0, -0.21, 0.2],
"lerp_mode": "catmullrom"
},
"2.3333": {
"post": [0, 0.04, -0.15],
"lerp_mode": "catmullrom"
},
"2.4167": {
"post": [0, 0, 0.2],
"lerp_mode": "catmullrom"
},
"2.5417": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
}
}
},
"magazine": {
"rotation": {
"0.5": [0, 0, 0],
"0.5417": [-2.5, 0, 0],
"0.5833": [-2.5, 0, 0],
"0.625": [-2.5, 0, 0],
"0.6667": [-2.5, 0, 0],
"0.7083": [-2.5, 0, 0],
"0.75": [-2.5, 0, 0],
"0.7917": [-2.5, 0, 0],
"0.8333": [-2.5, 0, 0],
"0.875": [-2.5, 0, 0],
"0.9167": [-2.5, 0, 0],
"0.9583": [-2.5, 0, 0],
"1.0": [-2.5, 0, 0],
"1.0417": [-2.5, 0, 0],
"1.125": [-12.57284, 32.86527, -15.03904],
"1.2083": [-8.31, 0, 0],
"1.2917": [-3.38, 0, 0],
"1.375": [-1.25, 0, 0],
"1.4167": [0, 0, 0],
"2.2083": [0, 0, 0]
},
"position": {
"0.4583": [0, 0, 0],
"0.5": [0, -1, 0],
"0.5417": [-0.82, -4.95, -0.07],
"0.5833": [-1.98, -10.25, 1.735],
"0.625": [-3, -14.09, 4],
"0.6667": [-3.23, -14.62, 4.16],
"0.7083": [-3.49, -15.02, 4.3],
"0.75": [-3.76, -15.3, 4.41],
"0.7917": [-4.03, -15.48, 4.48],
"0.8333": [-4.28, -15.54, 4.52],
"0.875": [-4.5, -15.51, 4.52],
"0.9167": [-4.69, -15.38, 4.49],
"0.9583": [-4.83, -15.17, 4.43],
"1.0": [-4.9, -14.88, 4.32],
"1.0417": [-4.81, -14.09, 4],
"1.125": [-2.52, -9.08, -2.995],
"1.2083": [0.36, -2.95875, -1.2425],
"1.2917": [0.27, -3.2575, -0.88],
"1.375": [0, -2.95875, -0.24375],
"1.4167": [0, 0, 0],
"2.2083": [0, 0, 0]
}
},
"Lefthand": {
"rotation": {
"0.0": [0, 0, 0],
"0.0667": [-3.1936, 24.51049, 7.5871],
"0.2": [-3.14008, 19.39916, 11.32393],
"0.2917": [-4.46292, 0.94838, 16.96183],
"0.4583": [-4.46292, 0.94838, 16.96183],
"0.7083": [-4.46292, 0.94838, 16.96183],
"0.8167": [-28.33435, -12.61568, 45.95484],
"1.5417": [-28.33435, -12.61568, 45.95484],
"1.75": [-15.82573, 15.60063, 31.96328],
"1.8": [-19.88703, 0.29301, 34.55901],
"1.9333": [-18.4573, 3.88617, 32.29314],
"2.0417": [0, 0, 7],
"2.1083": [0, 0, 0]
},
"position": {
"0.0": [0, 0, 0],
"0.0667": [0, -0.8, 0],
"0.2": [-0.09, -3.36, 9.03],
"0.2917": [-0.15, -2.75, 16],
"0.4583": [-0.15, -2.75, 16],
"0.7083": [-0.15, -2.75, 16],
"0.8167": [-0.55, -2.75, 17.65],
"1.5417": [-0.55, -2.75, 17.65],
"1.6417": [-1, -3.59, 15.87],
"1.75": [-0.55, -7.7, 14.1],
"1.8": [-0.55, -3.35, 16.25],
"1.9333": [-0.55, -5.5, 14.15],
"2.0417": [0, -1, 2],
"2.1083": [0, 0, 0]
}
},
"camera": {
"rotation": {
"0.0": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.0833": {
"post": [-0.32, 0, 0.39],
"lerp_mode": "catmullrom"
},
"0.1667": {
"post": [1.25, 0.25, 0.22],
"lerp_mode": "catmullrom"
},
"0.25": {
"post": [2.3, 0.59, -0.06],
"lerp_mode": "catmullrom"
},
"0.3333": {
"post": [3.185, 0.82, -0.24],
"lerp_mode": "catmullrom"
},
"0.4167": {
"post": [3.35, 0.81, -0.07],
"lerp_mode": "catmullrom"
},
"0.5": {
"post": [3.01, 0.62, -0.02],
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": [2.94, 0.01, -1.15],
"lerp_mode": "catmullrom"
},
"0.625": {
"post": [2.9, 0.27, 0.505],
"lerp_mode": "catmullrom"
},
"0.7083": {
"post": [2.84, 0.49, -0.46],
"lerp_mode": "catmullrom"
},
"0.7917": {
"post": [3.05, 0.67, 0.21],
"lerp_mode": "catmullrom"
},
"0.875": {
"post": [3.12, 0.5, 0.065],
"lerp_mode": "catmullrom"
},
"0.9583": {
"post": [3.2, 0.23, 0.27],
"lerp_mode": "catmullrom"
},
"1.0417": {
"post": [3.28, -0.07, 0.34],
"lerp_mode": "catmullrom"
},
"1.125": {
"post": [3.34, -0.3, 0.39],
"lerp_mode": "catmullrom"
},
"1.2083": {
"post": [3.33, -0.43, 0.41],
"lerp_mode": "catmullrom"
},
"1.2917": {
"post": [3.22, -0.37, 0.33],
"lerp_mode": "catmullrom"
},
"1.375": {
"post": [3.15, -0.27, 0.41],
"lerp_mode": "catmullrom"
},
"1.4167": {
"post": [3.31, -0.09, 1.38],
"lerp_mode": "catmullrom"
},
"1.4583": {
"post": [3.11, -0.27, -0.055],
"lerp_mode": "catmullrom"
},
"1.5": {
"post": [3.3, -0.38, 0.12],
"lerp_mode": "catmullrom"
},
"1.5417": {
"post": [3.51, -0.51, 0.71],
"lerp_mode": "catmullrom"
},
"1.625": {
"post": [3.52, -0.66, 0.125],
"lerp_mode": "catmullrom"
},
"1.7083": {
"post": [3.48, -0.81, 0.62],
"lerp_mode": "catmullrom"
},
"1.75": {
"post": [3.46, -0.84, 0.71],
"lerp_mode": "catmullrom"
},
"1.7917": {
"post": [3.45, -0.57, 1.6],
"lerp_mode": "catmullrom"
},
"1.8333": {
"post": [3.64, -0.49, 1.185],
"lerp_mode": "catmullrom"
},
"1.875": {
"post": [3.45, -0.57, 0.07],
"lerp_mode": "catmullrom"
},
"1.9583": {
"post": [2.91, -0.51, 1.025],
"lerp_mode": "catmullrom"
},
"2.0417": {
"post": [2.09, -0.39, 0.41],
"lerp_mode": "catmullrom"
},
"2.125": {
"post": [0.97, -0.21, 0.12],
"lerp_mode": "catmullrom"
},
"2.2083": {
"post": [-0.23, -0.04, -0.19],
"lerp_mode": "catmullrom"
},
"2.25": {
"post": [-0.62, 0.015, 0.62],
"lerp_mode": "catmullrom"
},
"2.3333": {
"post": [-0.15, -0.005, -0.385],
"lerp_mode": "catmullrom"
},
"2.4167": {
"post": [0.18, -0.06, 0.06],
"lerp_mode": "catmullrom"
},
"2.5417": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
}
}
}
}
},
"animation.insidious.run": {
"loop": true,
"animation_length": 0.8,
"bones": {
"0": {
"rotation": {
"0.0": {
"post": [-19.82442, -57.81517, 38.62375],
"lerp_mode": "catmullrom"
},
"0.2": {
"post": [-23.65942, -57.81517, 38.62375],
"lerp_mode": "catmullrom"
},
"0.4": {
"post": [-19.82442, -57.81517, 38.62375],
"lerp_mode": "catmullrom"
},
"0.6": {
"post": [-15.98942, -57.81517, 38.62375],
"lerp_mode": "catmullrom"
},
"0.8": {
"post": [-19.82442, -57.81517, 38.62375],
"lerp_mode": "catmullrom"
}
},
"position": {
"0.0": {
"post": [6.85, -3.45, 0],
"lerp_mode": "catmullrom"
},
"0.2": {
"post": [4.8, -2.45, 0],
"lerp_mode": "catmullrom"
},
"0.4": {
"post": [3.1, -3.45, 0],
"lerp_mode": "catmullrom"
},
"0.6": {
"post": [4.35, -2.45, 0],
"lerp_mode": "catmullrom"
},
"0.8": {
"post": [6.85, -3.45, 0],
"lerp_mode": "catmullrom"
}
}
},
"camera": {
"rotation": {
"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]
}
}
}
},
"animation.insidious.run_fast": {
"loop": true,
"animation_length": 0.7,
"bones": {
"0": {
"rotation": {
"0.0": {
"post": [-71.5441, -6.20641, 4.89071],
"lerp_mode": "catmullrom"
},
"0.175": {
"post": [-70.25009, -7.82623, 12.8696],
"lerp_mode": "catmullrom"
},
"0.35": {
"post": [-71.08194, -7.98816, 6.64209],
"lerp_mode": "catmullrom"
},
"0.525": {
"post": [-72.13904, -8.06078, 0.51567],
"lerp_mode": "catmullrom"
},
"0.7": {
"post": [-71.72375, -6.1867, 4.79361],
"lerp_mode": "catmullrom"
}
},
"position": {
"0.025": {
"pre": [-4.16372, -0.29873, 1.6264],
"post": [-4.16372, -0.29873, 1.6264],
"lerp_mode": "catmullrom"
},
"0.2": {
"post": [-5.48, 1.92384, 0.57456],
"lerp_mode": "catmullrom"
},
"0.375": {
"post": [-6.50607, -0.3312, 1.48533],
"lerp_mode": "catmullrom"
},
"0.55": {
"post": [-5.58238, 1.87846, 0.58809],
"lerp_mode": "catmullrom"
},
"0.725": {
"post": [-4.16372, -0.29873, 1.6264],
"lerp_mode": "catmullrom"
}
}
},
"Lefthand": {
"rotation": [-30, -12.5, 7.5],
"position": [15, -7, 37]
},
"camera": {
"rotation": {
"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]
}
}
}
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -48,6 +48,7 @@
"item.superbwarfare.mosin_nagant": "Mosin Nagant",
"item.superbwarfare.javelin": "FGM-148 Javelin",
"item.superbwarfare.secondary_cataclysm": "Secondary Cataclysm",
"item.superbwarfare.insidious": "Insidious",
"des.superbwarfare.guns.damage": "Damage: ",
"des.superbwarfare.guns.level": "Level: ",
@ -108,6 +109,7 @@
"item.superbwarfare.annihilator_blueprint": "Annihilator Energy Gun Blueprint",
"item.superbwarfare.m2hb_blueprint": "M2HB Blueprint",
"item.superbwarfare.secondary_cataclysm_blueprint": "Secondary Cataclysm Blueprint",
"item.superbwarfare.insidious_blueprint": "Insidious Blueprint",
"item.superbwarfare.common_material_pack": "Common Material Pack",
"item.superbwarfare.rare_material_pack": "Rare Material Pack",

View file

@ -48,6 +48,7 @@
"item.superbwarfare.mosin_nagant": "莫辛纳甘",
"item.superbwarfare.javelin": "FGM-148标枪导弹",
"item.superbwarfare.secondary_cataclysm": "二次灾变",
"item.superbwarfare.insidious": "阴险",
"des.superbwarfare.guns.upgrade_point": "升级点数: ",
"des.superbwarfare.guns.damage": "伤害: ",
@ -108,6 +109,7 @@
"item.superbwarfare.annihilator_blueprint": "歼灭者能量炮蓝图",
"item.superbwarfare.m2hb_blueprint": "M2HB重机枪蓝图",
"item.superbwarfare.secondary_cataclysm_blueprint": "二次灾变蓝图",
"item.superbwarfare.insidious_blueprint": "阴险蓝图",
"item.superbwarfare.common_material_pack": "普通材料包",
"item.superbwarfare.rare_material_pack": "稀有材料包",

View file

@ -0,0 +1,47 @@
{
"credit": "Made with Blockbench",
"parent": "builtin/entity",
"texture_size": [
256,
256
],
"gui_light": "front",
"display": {
"firstperson_righthand": {
"translation": [
-4.75,
1,
-0.50
],
"scale": [
1.0,
1.0,
1.25
]
},
"firstperson_lefthand": {
"scale": [
0,
0,
0
]
},
"gui": {
"rotation": [
165.69,
-39.63,
178.66
],
"translation": [
-1.9,
-3.25,
0
],
"scale": [
0.18,
0.18,
0.18
]
}
}
}

View file

@ -0,0 +1,27 @@
{
"loader": "neoforge:separate_transforms",
"gui_light": "front",
"base": {
"parent": "superbwarfare:item/insidious_base"
},
"perspectives": {
"gui": {
"parent": "superbwarfare:item/insidious_icon"
},
"thirdperson_righthand": {
"parent": "superbwarfare:item/insidious_3d"
},
"thirdperson_lefthand": {
"parent": "superbwarfare:item/insidious_3d"
},
"ground": {
"parent": "superbwarfare:item/insidious_3d"
},
"fixed": {
"parent": "superbwarfare:item/insidious_3d"
},
"head": {
"parent": "superbwarfare:item/insidious_3d"
}
}
}

View file

@ -0,0 +1,638 @@
{
"credit": "Made with Blockbench",
"texture_size": [64, 64],
"textures": {
"0": "superbwarfare:item/insidious_3d",
"particle": "superbwarfare:item/insidious_3d"
},
"elements": [
{
"from": [7, 6, -9],
"to": [9, 7.25, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [7.75, 0.25, 8.25, 0.5], "texture": "#0"},
"east": {"uv": [5.5, 3.5, 9.5, 3.75], "texture": "#0"},
"south": {"uv": [4.25, 7.75, 4.75, 8], "texture": "#0"},
"west": {"uv": [5.5, 3.75, 9.5, 4], "texture": "#0"},
"up": {"uv": [0.5, 7.5, 0, 3.5], "texture": "#0"},
"down": {"uv": [1, 3.5, 0.5, 7.5], "texture": "#0"}
}
},
{
"from": [6.75, 6, 4],
"to": [9.25, 9.25, 20],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [6.5, 0.5, 7.25, 1.25], "texture": "#0"},
"east": {"uv": [2.5, 0, 6.5, 0.75], "texture": "#0"},
"south": {"uv": [6, 6.5, 6.75, 7.25], "texture": "#0"},
"west": {"uv": [2.5, 0.75, 6.5, 1.5], "texture": "#0"},
"up": {"uv": [3.25, 5.5, 2.5, 1.5], "texture": "#0"},
"down": {"uv": [4, 1.5, 3.25, 5.5], "texture": "#0"}
}
},
{
"from": [6.75, 9.25, 7],
"to": [9.25, 11.5, 10],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [6.75, 5.5, 7.5, 6], "texture": "#0"},
"east": {"uv": [1.75, 7, 2.5, 7.5], "texture": "#0"},
"south": {"uv": [4, 7, 4.75, 7.5], "texture": "#0"},
"west": {"uv": [4.75, 7, 5.5, 7.5], "texture": "#0"},
"up": {"uv": [7.5, 4.75, 6.75, 4], "texture": "#0"},
"down": {"uv": [7.5, 4.75, 6.75, 5.5], "texture": "#0"}
}
},
{
"from": [6.75, -1, 10],
"to": [9.25, 6, 20],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [4, 3.5, 4.75, 5.25], "texture": "#0"},
"east": {"uv": [0, 0, 2.5, 1.75], "texture": "#0"},
"south": {"uv": [4.75, 3.5, 5.5, 5.25], "texture": "#0"},
"west": {"uv": [0, 1.75, 2.5, 3.5], "texture": "#0"},
"up": {"uv": [1.75, 6, 1, 3.5], "texture": "#0"},
"down": {"uv": [2.5, 3.5, 1.75, 6], "texture": "#0"}
}
},
{
"from": [6.75, -1.80923, 4.31825],
"to": [9.25, 5.44077, 6.31825],
"rotation": {"angle": -22.5, "axis": "x", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [4, 5.25, 4.75, 7], "texture": "#0"},
"east": {"uv": [2.5, 5.5, 3, 7.25], "texture": "#0"},
"south": {"uv": [4.75, 5.25, 5.5, 7], "texture": "#0"},
"west": {"uv": [3, 5.5, 3.5, 7.25], "texture": "#0"},
"up": {"uv": [8, 1, 7.25, 0.5], "texture": "#0"},
"down": {"uv": [8, 1, 7.25, 1.5], "texture": "#0"}
}
},
{
"from": [6.75, 2, 2.5],
"to": [9.25, 6.25, 5.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [1, 6, 1.75, 7], "texture": "#0"},
"east": {"uv": [1.75, 6, 2.5, 7], "texture": "#0"},
"south": {"uv": [6, 4, 6.75, 5], "texture": "#0"},
"west": {"uv": [6, 5, 6.75, 6], "texture": "#0"},
"up": {"uv": [7.5, 7.25, 6.75, 6.5], "texture": "#0"},
"down": {"uv": [1.75, 7, 1, 7.75], "texture": "#0"}
}
},
{
"from": [7.5, 2.5, -2],
"to": [8.75, 2.75, 2.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [4.5, 8, 4.75, 8.25], "texture": "#0"},
"east": {"uv": [7.25, 1.5, 8.5, 1.75], "texture": "#0"},
"south": {"uv": [8, 4.75, 8.25, 5], "texture": "#0"},
"west": {"uv": [7.25, 1.75, 8.5, 2], "texture": "#0"},
"up": {"uv": [7.5, 3.25, 7.25, 2], "texture": "#0"},
"down": {"uv": [2.75, 7.25, 2.5, 8.5], "texture": "#0"}
}
},
{
"from": [7.5, 1.02004, -4.94027],
"to": [8.75, 1.27004, 0.05973],
"rotation": {"angle": 22.5, "axis": "x", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8, 5, 8.25, 5.25], "texture": "#0"},
"east": {"uv": [7.25, 3.25, 8.5, 3.5], "texture": "#0"},
"south": {"uv": [8, 6.75, 8.25, 7], "texture": "#0"},
"west": {"uv": [5.5, 7.25, 6.75, 7.5], "texture": "#0"},
"up": {"uv": [3, 8.5, 2.75, 7.25], "texture": "#0"},
"down": {"uv": [3.25, 7.25, 3, 8.5], "texture": "#0"}
}
},
{
"from": [7.5, -1.47246, -4.59037],
"to": [8.75, -1.22246, -2.09037],
"rotation": {"angle": 45, "axis": "x", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8, 7, 8.25, 7.25], "texture": "#0"},
"east": {"uv": [6.5, 1.25, 7.25, 1.5], "texture": "#0"},
"south": {"uv": [8, 7.75, 8.25, 8], "texture": "#0"},
"west": {"uv": [7.5, 2.5, 8.25, 2.75], "texture": "#0"},
"up": {"uv": [2.5, 8.25, 2.25, 7.5], "texture": "#0"},
"down": {"uv": [4.25, 7.5, 4, 8.25], "texture": "#0"}
}
},
{
"from": [6.5, 6, -6],
"to": [7.25, 8.25, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [1.5, 7.75, 1.75, 8.25], "texture": "#0"},
"east": {"uv": [4, 1.5, 7.25, 2], "texture": "#0"},
"south": {"uv": [4.75, 7.75, 5, 8.25], "texture": "#0"},
"west": {"uv": [4, 2, 7.25, 2.5], "texture": "#0"},
"up": {"uv": [3.75, 8.75, 3.5, 5.5], "texture": "#0"},
"down": {"uv": [4, 5.5, 3.75, 8.75], "texture": "#0"}
}
},
{
"from": [6.5, 6, 7],
"to": [9.5, 8.25, 12],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [7.75, 4.75, 8, 5.25], "texture": "#0"},
"east": {"uv": [6, 6, 7.25, 6.5], "texture": "#0"},
"south": {"uv": [5.25, 7.75, 5.5, 8.25], "texture": "#0"},
"west": {"uv": [6.5, 0, 7.75, 0.5], "texture": "#0"},
"up": {"uv": [3.5, 8.5, 3.25, 7.25], "texture": "#0"},
"down": {"uv": [7, 7.25, 6.75, 8.5], "texture": "#0"}
}
},
{
"from": [8.75, 6, -6],
"to": [9.5, 8.25, 7],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [5.5, 7.75, 5.75, 8.25], "texture": "#0"},
"east": {"uv": [4, 2.5, 7.25, 3], "texture": "#0"},
"south": {"uv": [5.75, 7.75, 6, 8.25], "texture": "#0"},
"west": {"uv": [4, 3, 7.25, 3.5], "texture": "#0"},
"up": {"uv": [5.75, 7.25, 5.5, 4], "texture": "#0"},
"down": {"uv": [6, 4, 5.75, 7.25], "texture": "#0"}
}
},
{
"from": [6.5, 8.25, -1],
"to": [7.25, 9.25, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8, 8, 8.25, 8.25], "texture": "#0"},
"east": {"uv": [7.25, 6, 8.5, 6.25], "texture": "#0"},
"south": {"uv": [8.25, 0.25, 8.5, 0.5], "texture": "#0"},
"west": {"uv": [7.25, 6.25, 8.5, 6.5], "texture": "#0"},
"up": {"uv": [7.25, 8.5, 7, 7.25], "texture": "#0"},
"down": {"uv": [7.5, 7.25, 7.25, 8.5], "texture": "#0"}
}
},
{
"from": [6.75, 9.25, 2],
"to": [7, 11.25, 2.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [7.75, 6.75, 8, 7.25], "texture": "#0"},
"east": {"uv": [7.5, 7.75, 7.75, 8.25], "texture": "#0"},
"south": {"uv": [7.75, 7.75, 8, 8.25], "texture": "#0"},
"west": {"uv": [0.5, 8, 0.75, 8.5], "texture": "#0"},
"up": {"uv": [8.5, 0.75, 8.25, 0.5], "texture": "#0"},
"down": {"uv": [8.5, 0.75, 8.25, 1], "texture": "#0"}
}
},
{
"from": [6.75, 11.25, 2],
"to": [9.25, 11.5, 2.25],
"rotation": {"angle": 0, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [7.5, 2.75, 8.25, 3], "texture": "#0"},
"east": {"uv": [8.25, 1, 8.5, 1.25], "texture": "#0"},
"south": {"uv": [7.5, 3, 8.25, 3.25], "texture": "#0"},
"west": {"uv": [8.25, 1.25, 8.5, 1.5], "texture": "#0"},
"up": {"uv": [8.25, 4.25, 7.5, 4], "texture": "#0"},
"down": {"uv": [5, 7.5, 4.25, 7.75], "texture": "#0"}
}
},
{
"from": [9, 9.25, 2],
"to": [9.25, 11.25, 2.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8, 0.5, 8.25, 1], "texture": "#0"},
"east": {"uv": [0.75, 8, 1, 8.5], "texture": "#0"},
"south": {"uv": [8, 1, 8.25, 1.5], "texture": "#0"},
"west": {"uv": [1.75, 8, 2, 8.5], "texture": "#0"},
"up": {"uv": [1.75, 8.5, 1.5, 8.25], "texture": "#0"},
"down": {"uv": [2.5, 8.25, 2.25, 8.5], "texture": "#0"}
}
},
{
"from": [8.75, 8.25, -1],
"to": [9.5, 9.25, 4.25],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8.25, 2.5, 8.5, 2.75], "texture": "#0"},
"east": {"uv": [7.5, 2, 8.75, 2.25], "texture": "#0"},
"south": {"uv": [8.25, 2.75, 8.5, 3], "texture": "#0"},
"west": {"uv": [7.5, 2.25, 8.75, 2.5], "texture": "#0"},
"up": {"uv": [0.25, 8.75, 0, 7.5], "texture": "#0"},
"down": {"uv": [0.5, 7.5, 0.25, 8.75], "texture": "#0"}
}
},
{
"from": [6.5, 9.50903, -2.82959],
"to": [7.25, 10.50903, 0.17041],
"rotation": {"angle": -22.5, "axis": "x", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8.25, 3, 8.5, 3.25], "texture": "#0"},
"east": {"uv": [7.5, 4.25, 8.25, 4.5], "texture": "#0"},
"south": {"uv": [4, 8.25, 4.25, 8.5], "texture": "#0"},
"west": {"uv": [7.5, 4.5, 8.25, 4.75], "texture": "#0"},
"up": {"uv": [7.75, 5.5, 7.5, 4.75], "texture": "#0"},
"down": {"uv": [5.25, 7.5, 5, 8.25], "texture": "#0"}
}
},
{
"from": [8.75, 9.50903, -2.82959],
"to": [9.5, 10.50903, 0.17041],
"rotation": {"angle": -22.5, "axis": "x", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8.25, 4, 8.5, 4.25], "texture": "#0"},
"east": {"uv": [5.25, 7.5, 6, 7.75], "texture": "#0"},
"south": {"uv": [8.25, 4.25, 8.5, 4.5], "texture": "#0"},
"west": {"uv": [7.5, 5.5, 8.25, 5.75], "texture": "#0"},
"up": {"uv": [6.25, 8.25, 6, 7.5], "texture": "#0"},
"down": {"uv": [6.5, 7.5, 6.25, 8.25], "texture": "#0"}
}
},
{
"from": [6.5, 8.648, 3.25086],
"to": [7.25, 9.648, 6.25086],
"rotation": {"angle": 22.5, "axis": "x", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [4.5, 8.25, 4.75, 8.5], "texture": "#0"},
"east": {"uv": [7.5, 5.75, 8.25, 6], "texture": "#0"},
"south": {"uv": [8.25, 4.5, 8.5, 4.75], "texture": "#0"},
"west": {"uv": [7.5, 6.5, 8.25, 6.75], "texture": "#0"},
"up": {"uv": [6.75, 8.25, 6.5, 7.5], "texture": "#0"},
"down": {"uv": [7.75, 6.75, 7.5, 7.5], "texture": "#0"}
}
},
{
"from": [8.75, 8.648, 3.25086],
"to": [9.5, 9.648, 6.25086],
"rotation": {"angle": 22.5, "axis": "x", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [4.75, 8.25, 5, 8.5], "texture": "#0"},
"east": {"uv": [7.5, 7.5, 8.25, 7.75], "texture": "#0"},
"south": {"uv": [8.25, 4.75, 8.5, 5], "texture": "#0"},
"west": {"uv": [7.75, 0, 8.5, 0.25], "texture": "#0"},
"up": {"uv": [1.25, 8.5, 1, 7.75], "texture": "#0"},
"down": {"uv": [1.5, 7.75, 1.25, 8.5], "texture": "#0"}
}
},
{
"from": [8.21469, 7.15219, -9],
"to": [9.31469, 8.25219, -8.5],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [5, 8.25, 5.25, 8.5], "texture": "#0"},
"east": {"uv": [8.25, 5, 8.5, 5.25], "texture": "#0"},
"south": {"uv": [5.25, 8.25, 5.5, 8.5], "texture": "#0"},
"west": {"uv": [8.25, 5.25, 8.5, 5.5], "texture": "#0"},
"up": {"uv": [5.75, 8.5, 5.5, 8.25], "texture": "#0"},
"down": {"uv": [8.5, 5.5, 8.25, 5.75], "texture": "#0"}
}
},
{
"from": [7.86385, 7.38661, -8.5],
"to": [8.96385, 8.48661, -8],
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [5.75, 8.25, 6, 8.5], "texture": "#0"},
"east": {"uv": [8.25, 5.75, 8.5, 6], "texture": "#0"},
"south": {"uv": [6, 8.25, 6.25, 8.5], "texture": "#0"},
"west": {"uv": [6.25, 8.25, 6.5, 8.5], "texture": "#0"},
"up": {"uv": [6.75, 8.5, 6.5, 8.25], "texture": "#0"},
"down": {"uv": [8.5, 6.5, 8.25, 6.75], "texture": "#0"}
}
},
{
"from": [7.45, 7.46893, -8],
"to": [8.55, 8.56893, -7.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8.25, 6.75, 8.5, 7], "texture": "#0"},
"east": {"uv": [8.25, 7, 8.5, 7.25], "texture": "#0"},
"south": {"uv": [8.25, 7.25, 8.5, 7.5], "texture": "#0"},
"west": {"uv": [7.5, 8.25, 7.75, 8.5], "texture": "#0"},
"up": {"uv": [8.5, 7.75, 8.25, 7.5], "texture": "#0"},
"down": {"uv": [8, 8.25, 7.75, 8.5], "texture": "#0"}
}
},
{
"from": [7.03615, 7.38661, -7.5],
"to": [8.13615, 8.48661, -7],
"rotation": {"angle": -22.5, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8.25, 7.75, 8.5, 8], "texture": "#0"},
"east": {"uv": [8, 8.25, 8.25, 8.5], "texture": "#0"},
"south": {"uv": [8.25, 8, 8.5, 8.25], "texture": "#0"},
"west": {"uv": [8.25, 8.25, 8.5, 8.5], "texture": "#0"},
"up": {"uv": [8.75, 0.25, 8.5, 0], "texture": "#0"},
"down": {"uv": [8.75, 0.25, 8.5, 0.5], "texture": "#0"}
}
},
{
"from": [7.03615, 7.38661, -5.5],
"to": [8.13615, 8.48661, -5],
"rotation": {"angle": -22.5, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [0.5, 8.5, 0.75, 8.75], "texture": "#0"},
"east": {"uv": [8.5, 0.5, 8.75, 0.75], "texture": "#0"},
"south": {"uv": [0.75, 8.5, 1, 8.75], "texture": "#0"},
"west": {"uv": [8.5, 0.75, 8.75, 1], "texture": "#0"},
"up": {"uv": [1.25, 8.75, 1, 8.5], "texture": "#0"},
"down": {"uv": [8.75, 1, 8.5, 1.25], "texture": "#0"}
}
},
{
"from": [8.21469, 7.15219, -7],
"to": [9.31469, 8.25219, -6.5],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [1.25, 8.5, 1.5, 8.75], "texture": "#0"},
"east": {"uv": [8.5, 1.25, 8.75, 1.5], "texture": "#0"},
"south": {"uv": [1.5, 8.5, 1.75, 8.75], "texture": "#0"},
"west": {"uv": [8.5, 1.5, 8.75, 1.75], "texture": "#0"},
"up": {"uv": [2, 8.75, 1.75, 8.5], "texture": "#0"},
"down": {"uv": [8.75, 1.75, 8.5, 2], "texture": "#0"}
}
},
{
"from": [7.86385, 7.38661, -6.5],
"to": [8.96385, 8.48661, -6],
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [2, 8.5, 2.25, 8.75], "texture": "#0"},
"east": {"uv": [2.25, 8.5, 2.5, 8.75], "texture": "#0"},
"south": {"uv": [2.5, 8.5, 2.75, 8.75], "texture": "#0"},
"west": {"uv": [8.5, 2.5, 8.75, 2.75], "texture": "#0"},
"up": {"uv": [3, 8.75, 2.75, 8.5], "texture": "#0"},
"down": {"uv": [8.75, 2.75, 8.5, 3], "texture": "#0"}
}
},
{
"from": [7.45, 7.46893, -6],
"to": [8.55, 8.56893, -5.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [3, 8.5, 3.25, 8.75], "texture": "#0"},
"east": {"uv": [8.5, 3, 8.75, 3.25], "texture": "#0"},
"south": {"uv": [3.25, 8.5, 3.5, 8.75], "texture": "#0"},
"west": {"uv": [8.5, 3.25, 8.75, 3.5], "texture": "#0"},
"up": {"uv": [4.25, 8.75, 4, 8.5], "texture": "#0"},
"down": {"uv": [8.75, 4, 8.5, 4.25], "texture": "#0"}
}
},
{
"from": [7.03615, 7.38661, -3.5],
"to": [8.13615, 8.48661, -3],
"rotation": {"angle": -22.5, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [4.25, 8.5, 4.5, 8.75], "texture": "#0"},
"east": {"uv": [8.5, 4.25, 8.75, 4.5], "texture": "#0"},
"south": {"uv": [4.5, 8.5, 4.75, 8.75], "texture": "#0"},
"west": {"uv": [8.5, 4.5, 8.75, 4.75], "texture": "#0"},
"up": {"uv": [5, 8.75, 4.75, 8.5], "texture": "#0"},
"down": {"uv": [8.75, 4.75, 8.5, 5], "texture": "#0"}
}
},
{
"from": [8.21469, 7.15219, -5],
"to": [9.31469, 8.25219, -4.5],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [5, 8.5, 5.25, 8.75], "texture": "#0"},
"east": {"uv": [8.5, 5, 8.75, 5.25], "texture": "#0"},
"south": {"uv": [5.25, 8.5, 5.5, 8.75], "texture": "#0"},
"west": {"uv": [8.5, 5.25, 8.75, 5.5], "texture": "#0"},
"up": {"uv": [5.75, 8.75, 5.5, 8.5], "texture": "#0"},
"down": {"uv": [8.75, 5.5, 8.5, 5.75], "texture": "#0"}
}
},
{
"from": [7.86385, 7.38661, -4.5],
"to": [8.96385, 8.48661, -4],
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [5.75, 8.5, 6, 8.75], "texture": "#0"},
"east": {"uv": [8.5, 5.75, 8.75, 6], "texture": "#0"},
"south": {"uv": [6, 8.5, 6.25, 8.75], "texture": "#0"},
"west": {"uv": [8.5, 6, 8.75, 6.25], "texture": "#0"},
"up": {"uv": [6.5, 8.75, 6.25, 8.5], "texture": "#0"},
"down": {"uv": [8.75, 6.25, 8.5, 6.5], "texture": "#0"}
}
},
{
"from": [7.45, 7.46893, -4],
"to": [8.55, 8.56893, -3.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [6.5, 8.5, 6.75, 8.75], "texture": "#0"},
"east": {"uv": [8.5, 6.5, 8.75, 6.75], "texture": "#0"},
"south": {"uv": [6.75, 8.5, 7, 8.75], "texture": "#0"},
"west": {"uv": [8.5, 6.75, 8.75, 7], "texture": "#0"},
"up": {"uv": [7.25, 8.75, 7, 8.5], "texture": "#0"},
"down": {"uv": [8.75, 7, 8.5, 7.25], "texture": "#0"}
}
},
{
"from": [7.03615, 7.38661, -1.5],
"to": [8.13615, 8.48661, -1],
"rotation": {"angle": -22.5, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [7.25, 8.5, 7.5, 8.75], "texture": "#0"},
"east": {"uv": [8.5, 7.25, 8.75, 7.5], "texture": "#0"},
"south": {"uv": [7.5, 8.5, 7.75, 8.75], "texture": "#0"},
"west": {"uv": [8.5, 7.5, 8.75, 7.75], "texture": "#0"},
"up": {"uv": [8, 8.75, 7.75, 8.5], "texture": "#0"},
"down": {"uv": [8.75, 7.75, 8.5, 8], "texture": "#0"}
}
},
{
"from": [8.21469, 7.15219, -3],
"to": [9.31469, 8.25219, -2.5],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8, 8.5, 8.25, 8.75], "texture": "#0"},
"east": {"uv": [8.5, 8, 8.75, 8.25], "texture": "#0"},
"south": {"uv": [8.25, 8.5, 8.5, 8.75], "texture": "#0"},
"west": {"uv": [8.5, 8.25, 8.75, 8.5], "texture": "#0"},
"up": {"uv": [8.75, 8.75, 8.5, 8.5], "texture": "#0"},
"down": {"uv": [0.25, 8.75, 0, 9], "texture": "#0"}
}
},
{
"from": [7.86385, 7.38661, -2.5],
"to": [8.96385, 8.48661, -2],
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8.75, 0, 9, 0.25], "texture": "#0"},
"east": {"uv": [0.25, 8.75, 0.5, 9], "texture": "#0"},
"south": {"uv": [8.75, 0.25, 9, 0.5], "texture": "#0"},
"west": {"uv": [0.5, 8.75, 0.75, 9], "texture": "#0"},
"up": {"uv": [9, 0.75, 8.75, 0.5], "texture": "#0"},
"down": {"uv": [1, 8.75, 0.75, 9], "texture": "#0"}
}
},
{
"from": [7.45, 7.46893, -2],
"to": [8.55, 8.56893, -1.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8.75, 0.75, 9, 1], "texture": "#0"},
"east": {"uv": [1, 8.75, 1.25, 9], "texture": "#0"},
"south": {"uv": [8.75, 1, 9, 1.25], "texture": "#0"},
"west": {"uv": [1.25, 8.75, 1.5, 9], "texture": "#0"},
"up": {"uv": [9, 1.5, 8.75, 1.25], "texture": "#0"},
"down": {"uv": [1.75, 8.75, 1.5, 9], "texture": "#0"}
}
},
{
"from": [7.03615, 7.38661, 0.5],
"to": [8.13615, 8.48661, 1],
"rotation": {"angle": -22.5, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8.75, 1.5, 9, 1.75], "texture": "#0"},
"east": {"uv": [1.75, 8.75, 2, 9], "texture": "#0"},
"south": {"uv": [8.75, 1.75, 9, 2], "texture": "#0"},
"west": {"uv": [2, 8.75, 2.25, 9], "texture": "#0"},
"up": {"uv": [9, 2.25, 8.75, 2], "texture": "#0"},
"down": {"uv": [2.5, 8.75, 2.25, 9], "texture": "#0"}
}
},
{
"from": [8.21469, 7.15219, -1],
"to": [9.31469, 8.25219, -0.5],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8.75, 2.25, 9, 2.5], "texture": "#0"},
"east": {"uv": [2.5, 8.75, 2.75, 9], "texture": "#0"},
"south": {"uv": [8.75, 2.5, 9, 2.75], "texture": "#0"},
"west": {"uv": [2.75, 8.75, 3, 9], "texture": "#0"},
"up": {"uv": [9, 3, 8.75, 2.75], "texture": "#0"},
"down": {"uv": [3.25, 8.75, 3, 9], "texture": "#0"}
}
},
{
"from": [7.86385, 7.38661, -0.5],
"to": [8.96385, 8.48661, 0],
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8.75, 3, 9, 3.25], "texture": "#0"},
"east": {"uv": [3.25, 8.75, 3.5, 9], "texture": "#0"},
"south": {"uv": [8.75, 3.25, 9, 3.5], "texture": "#0"},
"west": {"uv": [3.5, 8.75, 3.75, 9], "texture": "#0"},
"up": {"uv": [4, 9, 3.75, 8.75], "texture": "#0"},
"down": {"uv": [4.25, 8.75, 4, 9], "texture": "#0"}
}
},
{
"from": [7.45, 7.46893, 0],
"to": [8.55, 8.56893, 0.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8.75, 4, 9, 4.25], "texture": "#0"},
"east": {"uv": [4.25, 8.75, 4.5, 9], "texture": "#0"},
"south": {"uv": [8.75, 4.25, 9, 4.5], "texture": "#0"},
"west": {"uv": [4.5, 8.75, 4.75, 9], "texture": "#0"},
"up": {"uv": [9, 4.75, 8.75, 4.5], "texture": "#0"},
"down": {"uv": [5, 8.75, 4.75, 9], "texture": "#0"}
}
},
{
"from": [7.03615, 7.38661, 2.5],
"to": [8.13615, 8.48661, 3],
"rotation": {"angle": -22.5, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8.75, 4.75, 9, 5], "texture": "#0"},
"east": {"uv": [5, 8.75, 5.25, 9], "texture": "#0"},
"south": {"uv": [8.75, 5, 9, 5.25], "texture": "#0"},
"west": {"uv": [5.25, 8.75, 5.5, 9], "texture": "#0"},
"up": {"uv": [9, 5.5, 8.75, 5.25], "texture": "#0"},
"down": {"uv": [5.75, 8.75, 5.5, 9], "texture": "#0"}
}
},
{
"from": [8.21469, 7.15219, 1],
"to": [9.31469, 8.25219, 1.5],
"rotation": {"angle": 45, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8.75, 5.5, 9, 5.75], "texture": "#0"},
"east": {"uv": [5.75, 8.75, 6, 9], "texture": "#0"},
"south": {"uv": [8.75, 5.75, 9, 6], "texture": "#0"},
"west": {"uv": [6, 8.75, 6.25, 9], "texture": "#0"},
"up": {"uv": [9, 6.25, 8.75, 6], "texture": "#0"},
"down": {"uv": [6.5, 8.75, 6.25, 9], "texture": "#0"}
}
},
{
"from": [7.86385, 7.38661, 1.5],
"to": [8.96385, 8.48661, 2],
"rotation": {"angle": 22.5, "axis": "z", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8.75, 6.25, 9, 6.5], "texture": "#0"},
"east": {"uv": [6.5, 8.75, 6.75, 9], "texture": "#0"},
"south": {"uv": [8.75, 6.5, 9, 6.75], "texture": "#0"},
"west": {"uv": [6.75, 8.75, 7, 9], "texture": "#0"},
"up": {"uv": [9, 7, 8.75, 6.75], "texture": "#0"},
"down": {"uv": [7.25, 8.75, 7, 9], "texture": "#0"}
}
},
{
"from": [7.45, 7.46893, 2],
"to": [8.55, 8.56893, 2.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [8.75, 7, 9, 7.25], "texture": "#0"},
"east": {"uv": [7.25, 8.75, 7.5, 9], "texture": "#0"},
"south": {"uv": [8.75, 7.25, 9, 7.5], "texture": "#0"},
"west": {"uv": [7.5, 8.75, 7.75, 9], "texture": "#0"},
"up": {"uv": [9, 7.75, 8.75, 7.5], "texture": "#0"},
"down": {"uv": [8, 8.75, 7.75, 9], "texture": "#0"}
}
},
{
"from": [7, 6, -10],
"to": [9, 8.25, -9],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.9375, 2.75]},
"faces": {
"north": {"uv": [0.5, 7.5, 1, 8], "texture": "#0"},
"east": {"uv": [2, 8, 2.25, 8.5], "texture": "#0"},
"south": {"uv": [1.75, 7.5, 2.25, 8], "texture": "#0"},
"west": {"uv": [4.25, 8, 4.5, 8.5], "texture": "#0"},
"up": {"uv": [8.25, 5.5, 7.75, 5.25], "texture": "#0"},
"down": {"uv": [8.25, 7.25, 7.75, 7.5], "texture": "#0"}
}
}
],
"display": {
"thirdperson_righthand": {
"translation": [-1.25, 1.5, 0.75],
"scale": [0.7, 0.7, 0.7]
},
"thirdperson_lefthand": {
"translation": [-1.25, -1.25, 0.75],
"scale": [0, 0, 0]
},
"ground": {
"translation": [0, 4.5, 0],
"scale": [0.7, 0.7, 0.7]
},
"head": {
"translation": [0, 8.5, 0]
},
"fixed": {
"rotation": [90, -45, 90],
"translation": [-2, 0.75, 0],
"scale": [0.75, 0.75, 0.75]
}
},
"groups": [
{
"name": "bone2",
"origin": [13, 14, 0],
"color": 0,
"children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45]
}
]
}

View file

@ -0,0 +1,6 @@
{
"parent": "superbwarfare:displaysettings/insidious.item",
"textures": {
"layer0": "superbwarfare:item/insidious"
}
}

View file

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8 KiB

After

Width:  |  Height:  |  Size: 8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7 KiB

After

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7 KiB

After

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9 KiB

After

Width:  |  Height:  |  Size: 9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View file

@ -0,0 +1,16 @@
{
"Spread": 4,
"RecoilX": 0.006,
"RecoilY": 0.011,
"Damage": 11,
"Headshot": 1.5,
"Velocity": 50,
"Magazine": 48,
"Weight": 6,
"FireMode": 1,
"BurstSize": 4,
"EmptyReloadTime": 56,
"BypassesArmor": 0.4,
"SoundRadius": 12,
"RPM": 900
}

View file

@ -203,7 +203,21 @@
{
"type": "minecraft:item",
"name": "superbwarfare:rpg_blueprint",
"weight": 1,
"weight": 15,
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 1
}
}
]
},
{
"type": "minecraft:item",
"name": "superbwarfare:qbz_95_blueprint",
"weight": 15,
"functions": [
{
"function": "set_count",
@ -217,7 +231,7 @@
{
"type": "minecraft:item",
"name": "superbwarfare:hk_416_blueprint",
"weight": 1,
"weight": 15,
"functions": [
{
"function": "set_count",
@ -231,7 +245,7 @@
{
"type": "minecraft:item",
"name": "superbwarfare:ak_12_blueprint",
"weight": 1,
"weight": 15,
"functions": [
{
"function": "set_count",

View file

@ -4,34 +4,6 @@
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "superbwarfare:qbz_95_blueprint",
"weight": 10,
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 1
}
}
]
},
{
"type": "minecraft:item",
"name": "superbwarfare:ak_12_blueprint",
"weight": 10,
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 1
}
}
]
},
{
"type": "minecraft:item",
"name": "superbwarfare:hunting_rifle_blueprint",
@ -46,34 +18,6 @@
}
]
},
{
"type": "minecraft:item",
"name": "superbwarfare:rpg_blueprint",
"weight": 10,
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 1
}
}
]
},
{
"type": "minecraft:item",
"name": "superbwarfare:hk_416_blueprint",
"weight": 10,
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 1
}
}
]
},
{
"type": "minecraft:item",
"name": "superbwarfare:rpk_blueprint",

View file

@ -189,7 +189,7 @@
{
"type": "minecraft:item",
"name": "superbwarfare:rpg_blueprint",
"weight": 10,
"weight": 15,
"functions": [
{
"function": "set_count",
@ -203,7 +203,7 @@
{
"type": "minecraft:item",
"name": "superbwarfare:hk_416_blueprint",
"weight": 10,
"weight": 15,
"functions": [
{
"function": "set_count",
@ -217,7 +217,7 @@
{
"type": "minecraft:item",
"name": "superbwarfare:ak_12_blueprint",
"weight": 10,
"weight": 15,
"functions": [
{
"function": "set_count",
@ -329,7 +329,7 @@
{
"type": "minecraft:item",
"name": "superbwarfare:qbz_95_blueprint",
"weight": 10,
"weight": 15,
"functions": [
{
"function": "set_count",

View file

@ -4,10 +4,10 @@
"item": "superbwarfare:ak_12_blueprint"
},
"base": {
"item": "superbwarfare:epic_material_pack"
"item": "superbwarfare:rare_material_pack"
},
"addition": {
"tag": "superbwarfare:ingots/cemented_carbide"
"tag": "superbwarfare:ingots/steel"
},
"result": {
"item": "superbwarfare:ak_12"

View file

@ -10,7 +10,7 @@
"item": "minecraft:iron_ingot"
},
"b": {
"tag": "c:dyes/green"
"tag": "forge:dyes/green"
}
},
"result": {

View file

@ -8,10 +8,10 @@
],
"key": {
"b": {
"tag": "c:plates/copper"
"tag": "forge:plates/copper"
},
"c": {
"tag": "c:glass_panes"
"tag": "forge:glass_panes"
},
"d": {
"item": "minecraft:redstone"

View file

@ -8,7 +8,7 @@
],
"key": {
"a": {
"tag": "c:ingots/copper"
"tag": "forge:ingots/copper"
},
"b": {
"item": "minecraft:iron_ingot"

View file

@ -3,10 +3,10 @@
"category": "misc",
"ingredients": [
{
"tag": "c:dusts/iron"
"tag": "forge:dusts/iron"
},
{
"tag": "c:dusts/coal_coke"
"tag": "forge:dusts/coal_coke"
}
],
"result": {

View file

@ -10,7 +10,7 @@
"tag": "superbwarfare:ingots/steel"
},
"b": {
"tag": "c:dyes/black"
"tag": "forge:dyes/black"
},
"c": {
"item": "superbwarfare:steel_ingot"

View file

@ -8,7 +8,7 @@
],
"key": {
"a": {
"tag": "c:plates/copper"
"tag": "forge:plates/copper"
},
"b": {
"item": "minecraft:gunpowder"

View file

@ -11,7 +11,7 @@
"item": "minecraft:copper_ingot"
},
"b": {
"tag": "c:plates/copper"
"tag": "forge:plates/copper"
},
"c": {
"item": "minecraft:gunpowder"

View file

@ -11,7 +11,7 @@
"tag": "superbwarfare:ingots/steel"
},
"b": {
"tag": "c:ingots/copper"
"tag": "forge:ingots/copper"
},
"c": {
"item": "minecraft:gunpowder"

View file

@ -14,7 +14,7 @@
"item": "minecraft:sugar"
},
"c": {
"tag": "c:sand"
"tag": "forge:sand"
}
},
"result": {

View file

@ -4,10 +4,10 @@
"item": "superbwarfare:hk_416_blueprint"
},
"base": {
"item": "superbwarfare:epic_material_pack"
"item": "superbwarfare:rare_material_pack"
},
"addition": {
"tag": "superbwarfare:ingots/cemented_carbide"
"tag": "superbwarfare:ingots/steel"
},
"result": {
"item": "superbwarfare:hk_416"

View file

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

View file

@ -0,0 +1,15 @@
{
"type": "minecraft:smithing_transform",
"template": {
"item": "superbwarfare:insidious_blueprint"
},
"base": {
"item": "superbwarfare:epic_material_pack"
},
"addition": {
"tag": "superbwarfare:ingots/cemented_carbide"
},
"result": {
"item": "superbwarfare:insidious"
}
}

View file

@ -0,0 +1,10 @@
{
"type": "minecraft:blasting",
"category": "misc",
"experience": 0.7,
"cookingtime": 100,
"ingredient": {
"item": "superbwarfare:iron_powder"
},
"result": "minecraft:iron_ingot"
}

View file

@ -0,0 +1,10 @@
{
"type": "minecraft:smelting",
"category": "misc",
"experience": 0.7,
"cookingtime": 200,
"ingredient": {
"item": "superbwarfare:iron_powder"
},
"result": "minecraft:iron_ingot"
}

View file

@ -7,7 +7,7 @@
],
"key": {
"a": {
"tag": "c:ingots/steel"
"tag": "forge:ingots/steel"
},
"b": {
"item": "minecraft:stick"

View file

@ -11,7 +11,7 @@
"item": "superbwarfare:lead_ingot"
},
"b": {
"tag": "neoforge:ingots/lead"
"tag":"forge:ingots/lead"
}
},
"result": {

View file

@ -0,0 +1,15 @@
{
"type": "minecraft:blasting",
"category": "misc",
"experience": 0.7,
"cookingtime": 100,
"ingredient": [
{
"item": "superbwarfare:galena_ore"
},
{
"item": "superbwarfare:deepslate_galena_ore"
}
],
"result": "superbwarfare:lead_ingot"
}

View file

@ -0,0 +1,18 @@
{
"type": "minecraft:blasting",
"cookingtime": 100,
"experience": 0.3,
"ingredient": {
"tag": "forge:dusts/lead"
},
"result": "superbwarfare:lead_ingot",
"conditions": [
{
"type": "forge:not",
"value": {
"type": "forge:tag_empty",
"tag": "forge:dusts/lead"
}
}
]
}

Some files were not shown because too many files have changed in this diff Show more