添加炮击指示器模型,HUD,配方

This commit is contained in:
Atsuishio 2025-07-09 01:09:28 +08:00 committed by Light_Quanta
parent cba9ad73f8
commit 2e4fd79576
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
10 changed files with 453 additions and 36 deletions

View file

@ -214,7 +214,7 @@ public class ClickHandler {
}
if (player.isUsingItem() && player.getUseItem().is(ModItems.ARTILLERY_INDICATOR.get())) {
artilleryIndicatorCustomZoom = Mth.clamp(artilleryIndicatorCustomZoom + 0.4 * scroll, 0, 9);
artilleryIndicatorCustomZoom = Mth.clamp(artilleryIndicatorCustomZoom + 0.4 * scroll, -2, 6);
event.setCanceled(true);
}

View file

@ -2,17 +2,24 @@ package com.atsuishio.superbwarfare.client.overlay;
import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.entity.vehicle.base.VehicleEntity;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModItems;
import com.atsuishio.superbwarfare.tools.FormatTool;
import com.atsuishio.superbwarfare.tools.TraceTool;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.CameraType;
import net.minecraft.client.DeltaTracker;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.LayeredDraw;
import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.ClipContext;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.Vec3;
@ -21,18 +28,48 @@ import net.neoforged.api.distmarker.OnlyIn;
import javax.annotation.ParametersAreNonnullByDefault;
import static com.atsuishio.superbwarfare.client.RenderHelper.preciseBlit;
@OnlyIn(Dist.CLIENT)
public class SpyglassRangeOverlay implements LayeredDraw.Layer {
public static final ResourceLocation ID = Mod.loc("spyglass_range");
private static float scopeScale = 1;
@Override
@ParametersAreNonnullByDefault
public void render(GuiGraphics guiGraphics, DeltaTracker deltaTracker) {
int w = guiGraphics.guiWidth();
int h = guiGraphics.guiHeight();
PoseStack poseStack = guiGraphics.pose();
Player player = Minecraft.getInstance().player;
if (player != null && (player.getMainHandItem().getItem() == Items.SPYGLASS || player.getOffhandItem().getItem() == Items.SPYGLASS) && player.isUsingItem()) {
if (player == null) return;
var screenWidth = guiGraphics.guiWidth();
var screenHeight = guiGraphics.guiHeight();
if (((player.isUsingItem() && player.getUseItem().is(ModItems.ARTILLERY_INDICATOR.get())) || player.isScoping()) && Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON) {
if (player.getMainHandItem().getItem() == ModItems.ARTILLERY_INDICATOR.get()) {
poseStack.pushPose();
RenderSystem.disableDepthTest();
RenderSystem.depthMask(false);
RenderSystem.enableBlend();
RenderSystem.setShader(GameRenderer::getPositionTexShader);
RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
RenderSystem.setShaderColor(1, 1, 1, 1);
float deltaFrame = Minecraft.getInstance().getTimer().getRealtimeDeltaTicks();
scopeScale = (float) Mth.lerp(0.5F * deltaFrame, scopeScale, 1.35F + (0.2f * ClientEventHandler.firePos));
float f = (float) Math.min(screenWidth, screenHeight);
float f1 = Math.min((float) screenWidth / f, (float) screenHeight / f) * scopeScale;
float i = Mth.floor(f * f1);
float j = Mth.floor(f * f1);
float k = ((screenWidth - i) / 2);
float l = ((screenHeight - j) / 2);
float w = i * 21 / 9;
preciseBlit(guiGraphics, Mod.loc("textures/screens/spyglass.png"), k - (2 * w / 7), l, 0, 0.0F, w, j, w, j);
poseStack.popPose();
}
boolean lookAtEntity = false;
BlockHitResult result = player.level().clip(new ClipContext(player.getEyePosition(), player.getEyePosition().add(player.getViewVector(1).scale(512)),
@ -54,17 +91,19 @@ public class SpyglassRangeOverlay implements LayeredDraw.Layer {
if (lookAtEntity) {
guiGraphics.drawString(Minecraft.getInstance().font, Component.translatable("tips.superbwarfare.drone.range")
.append(Component.literal(FormatTool.format1D(entityRange, "M ") + lookingEntity.getDisplayName().getString())),
w / 2 + 12, h / 2 - 28, -1, false);
screenWidth / 2 + 12, screenHeight / 2 - 28, -1, false);
} else {
if (blockRange > 500) {
guiGraphics.drawString(Minecraft.getInstance().font, Component.translatable("tips.superbwarfare.drone.range")
.append(Component.literal("---M")), w / 2 + 12, h / 2 - 28, -1, false);
.append(Component.literal("---M")), screenWidth / 2 + 12, screenHeight / 2 - 28, -1, false);
} else {
guiGraphics.drawString(Minecraft.getInstance().font, Component.translatable("tips.superbwarfare.drone.range")
.append(Component.literal(FormatTool.format1D(blockRange, "M"))),
w / 2 + 12, h / 2 - 28, -1, false);
screenWidth / 2 + 12, screenHeight / 2 - 28, -1, false);
}
}
} else {
scopeScale = 1;
}
}
}

View file

@ -1025,12 +1025,22 @@ public class ClientEventHandler {
ItemStack rightHandItem = player.getItemInHand(rightHand);
final var tag = NBTTool.getTag(rightHandItem);
if (event.getHand() == leftHand && rightHandItem.getItem() instanceof GunItem) {
event.setCanceled(true);
if (event.getHand() == leftHand) {
if (rightHandItem.getItem() instanceof GunItem) {
event.setCanceled(true);
}
if (player.isUsingItem() && player.getUseItem().is(ModItems.ARTILLERY_INDICATOR.get())) {
event.setCanceled(true);
}
}
if (event.getHand() == rightHand && rightHandItem.getItem() instanceof GunItem && drawTime > 0.15) {
event.setCanceled(true);
if (event.getHand() == rightHand) {
if (rightHandItem.getItem() instanceof GunItem && drawTime > 0.15) {
event.setCanceled(true);
}
if (player.isUsingItem() && player.getUseItem().is(ModItems.ARTILLERY_INDICATOR.get())) {
event.setCanceled(true);
}
}
ItemStack stack = player.getMainHandItem();
@ -1462,17 +1472,13 @@ public class ClientEventHandler {
double factor;
if (stack.is(ModItems.ARTILLERY_INDICATOR.get())) {
if (player.isUsingItem() && player.getUseItem().is(ModItems.ARTILLERY_INDICATOR.get())) {
factor = 2 + artilleryIndicatorCustomZoom;
} else {
factor = 1;
}
if (player.isUsingItem() && player.getUseItem().is(ModItems.ARTILLERY_INDICATOR.get()) && mc.options.getCameraType() == CameraType.FIRST_PERSON) {
factor = 4 + artilleryIndicatorCustomZoom;
} else {
factor = 1;
}
artilleryIndicatorZoom = Mth.lerp(0.6 * times, artilleryIndicatorZoom, factor);
artilleryIndicatorZoom = Mth.lerp(0.3 * times, artilleryIndicatorZoom, factor);
event.setFOV(event.getFOV() / artilleryIndicatorZoom);
@ -1561,6 +1567,10 @@ public class ClientEventHandler {
if (player == null) return;
if (!mc.options.getCameraType().isFirstPerson()) return;
if (player.isUsingItem() && player.getUseItem().is(ModItems.ARTILLERY_INDICATOR.get())) {
event.setCanceled(true);
}
ItemStack stack = player.getMainHandItem();
final var tag = NBTTool.getTag(stack);

View file

@ -12,6 +12,8 @@ import com.atsuishio.superbwarfare.tools.TraceTool;
import io.netty.buffer.ByteBuf;
import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.Tag;
import net.minecraft.network.chat.Component;
import net.minecraft.network.codec.ByteBufCodecs;
import net.minecraft.network.codec.StreamCodec;
@ -31,6 +33,7 @@ import java.util.Objects;
import java.util.stream.StreamSupport;
import static com.atsuishio.superbwarfare.entity.vehicle.MortarEntity.FIRE_TIME;
import static com.atsuishio.superbwarfare.item.ArtilleryIndicator.TAG_MORTARS;
public record SetFiringParametersMessage(int msgType) implements CustomPacketPayload {
public static final Type<SetFiringParametersMessage> TYPE = new Type<>(Mod.loc("set_firing_parameters"));
@ -77,9 +80,26 @@ public record SetFiringParametersMessage(int msgType) implements CustomPacketPay
}
if (mainStack.is(ModItems.ARTILLERY_INDICATOR.get())) {
// TODO 这数据读写是一坨什么玩意
BlockPos pos;
if (player.isShiftKeyDown()) {
var mainTag = NBTTool.getTag(mainStack);
ListTag tags = mainTag.getList(TAG_MORTARS, Tag.TAG_COMPOUND);
for (int i = 0; i < tags.size(); i++) {
var tag = tags.getCompound(i);
Entity entity = EntityFindUtil.findEntity(player.level(), tag.getString("UUID"));
if (entity instanceof MortarEntity mortarEntity) {
if (player.isShiftKeyDown()) {
if (mortarEntity.stack.getItem() instanceof MortarShell && mortarEntity.getEntityData().get(FIRE_TIME) == 0) {
mortarEntity.fire(player);
}
} else {
if (!mortarEntity.setTarget(mainStack)) {
player.displayClientMessage(Component.translatable("tips.superbwarfare.mortar.warn").withStyle(ChatFormatting.RED), true);
}
}
}
}
} else {
BlockPos pos;
if (lookAtEntity) {
pos = lookingEntity.blockPosition();
} else {
@ -94,21 +114,20 @@ public record SetFiringParametersMessage(int msgType) implements CustomPacketPay
+ "," + pos.getZ()
+ "]")), true);
}
List<Entity> entities = getCannon(player, player.level(), NBTTool.getTag(mainStack).getString("LinkedCannon"));
for (var e : entities) {
if (e instanceof MortarEntity mortarEntity) {
if (player.isShiftKeyDown()) {
if (!mortarEntity.setTarget(mainStack)) {
player.displayClientMessage(Component.translatable("tips.superbwarfare.mortar.warn").withStyle(ChatFormatting.RED), true);
}
} else {
if (mortarEntity.stack.getItem() instanceof MortarShell && mortarEntity.getEntityData().get(FIRE_TIME) == 0) {
mortarEntity.fire(player);
}
}
}
}
// List<Entity> entities = getCannon(player, player.level(), mainStack.getOrCreateTag().getString("LinkedCannon"));
// for (var e : entities) {
// if (e instanceof MortarEntity mortarEntity) {
// if (player.isShiftKeyDown()) {
// if (!mortarEntity.setTarget(mainStack)) {
// player.displayClientMessage(Component.translatable("tips.superbwarfare.mortar.warn").withStyle(ChatFormatting.RED), true);
// }
// } else {
// if (mortarEntity.stack.getItem() instanceof MortarShell && mortarEntity.getEntityData().get(FIRE_TIME) == 0) {
// mortarEntity.fire(player);
// }
// }
// }
// }
}
}

View file

@ -251,6 +251,7 @@
"item.superbwarfare.light_armament_module": "Light Armament Module",
"item.superbwarfare.medium_armament_module": "Medium Armament Module",
"item.superbwarfare.heavy_armament_module": "Heavy Armament Module",
"item.superbwarfare.artillery_indicator": "Artillery Indicator",
"attribute.superbwarfare.bullet_resistance": "Bullet Resistance",

View file

@ -251,6 +251,7 @@
"item.superbwarfare.light_armament_module": "轻型武装模块",
"item.superbwarfare.medium_armament_module": "中型武装模块",
"item.superbwarfare.heavy_armament_module": "重型武装模块",
"item.superbwarfare.artillery_indicator": "火炮指示器",
"attribute.superbwarfare.bullet_resistance": "子弹防护",

View file

@ -0,0 +1,328 @@
{
"credit": "Made with Blockbench",
"texture_size": [32, 32],
"textures": {
"1": "superbwarfare:item/artillery_indicator",
"particle": "superbwarfare:item/artillery_indicator"
},
"elements": [
{
"from": [9.9, 4.9, 6.9],
"to": [12.1, 8.6, 9.1],
"rotation": {"angle": 0, "axis": "y", "origin": [3, 0, 0]},
"faces": {
"north": {"uv": [2.5, 7.5, 3.5, 9.5], "texture": "#1"},
"east": {"uv": [3.5, 7.5, 4.5, 9.5], "texture": "#1"},
"south": {"uv": [4.5, 7.5, 5.5, 9.5], "texture": "#1"},
"west": {"uv": [7.5, 7, 8.5, 9], "texture": "#1"},
"up": {"uv": [2.5, 11, 1.5, 10], "texture": "#1"},
"down": {"uv": [3.5, 10, 2.5, 11], "texture": "#1"}
}
},
{
"from": [5.25, 11, 7.25],
"to": [11.75, 12, 8.75],
"rotation": {"angle": 0, "axis": "y", "origin": [3, 0, 0]},
"faces": {
"north": {"uv": [0, 9.5, 3.5, 10], "texture": "#1"},
"east": {"uv": [10.5, 8.5, 11.5, 9], "texture": "#1"},
"south": {"uv": [3.5, 9.5, 7, 10], "texture": "#1"},
"west": {"uv": [10.5, 9, 11.5, 9.5], "texture": "#1"},
"up": {"uv": [9.5, 6, 6, 5], "texture": "#1"}
}
},
{
"from": [5, 11, 7],
"to": [12, 11.1, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [3, 0, 0]},
"faces": {
"north": {"uv": [9.5, 5, 13, 5.5], "texture": "#1"},
"east": {"uv": [10.5, 9.5, 11.5, 10], "texture": "#1"},
"south": {"uv": [9.5, 5.5, 13, 6], "texture": "#1"},
"west": {"uv": [10.5, 10, 11.5, 10.5], "texture": "#1"},
"up": {"uv": [9.5, 7, 6, 6], "texture": "#1"}
}
},
{
"from": [4.75, 11.75, 6.75],
"to": [12.25, 12.25, 7.25],
"rotation": {"angle": 0, "axis": "y", "origin": [3, 0, 0]},
"faces": {
"north": {"uv": [7, 4, 11, 4.5], "texture": "#1"},
"east": {"uv": [2.5, 7, 3, 7.5], "texture": "#1"},
"south": {"uv": [7, 4.5, 11, 5], "texture": "#1"},
"west": {"uv": [8.5, 10, 9, 10.5], "texture": "#1"},
"up": {"uv": [12, 0.5, 8, 0], "texture": "#1"},
"down": {"uv": [12, 0.5, 8, 1], "texture": "#1"}
}
},
{
"from": [4.75, 11.75, 8.75],
"to": [12.25, 12.25, 9.25],
"rotation": {"angle": 0, "axis": "y", "origin": [3, 0, 1.75]},
"faces": {
"north": {"uv": [8, 1, 12, 1.5], "texture": "#1"},
"east": {"uv": [11.5, 3.5, 12, 4], "texture": "#1"},
"south": {"uv": [8, 1.5, 12, 2], "texture": "#1"},
"west": {"uv": [4, 11.5, 4.5, 12], "texture": "#1"},
"up": {"uv": [12, 2.5, 8, 2], "texture": "#1"},
"down": {"uv": [12, 2.5, 8, 3], "texture": "#1"}
}
},
{
"from": [11.75, 11.75, 7.25],
"to": [12.25, 12.25, 8.75],
"rotation": {"angle": 0, "axis": "y", "origin": [4.75, 0, 10.75]},
"faces": {
"east": {"uv": [10.5, 10.5, 11.5, 11], "texture": "#1"},
"west": {"uv": [1.5, 11, 2.5, 11.5], "texture": "#1"},
"up": {"uv": [3, 12, 2.5, 11], "texture": "#1"},
"down": {"uv": [3.5, 11, 3, 12], "texture": "#1"}
}
},
{
"from": [4.75, 11.75, 7.25],
"to": [5.25, 12.25, 8.75],
"rotation": {"angle": 0, "axis": "y", "origin": [-2, 0, 10.75]},
"faces": {
"east": {"uv": [3.5, 11, 4.5, 11.5], "texture": "#1"},
"west": {"uv": [11, 4, 12, 4.5], "texture": "#1"},
"up": {"uv": [5, 12, 4.5, 11], "texture": "#1"},
"down": {"uv": [11.5, 6, 11, 7], "texture": "#1"}
}
},
{
"from": [5.1, 5.35, 7],
"to": [9.6, 6.1, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [-2, 0, 0]},
"faces": {
"north": {"uv": [10, 3, 12, 3.5], "texture": "#1"},
"east": {"uv": [11, 4.5, 12, 5], "texture": "#1"},
"south": {"uv": [3.5, 10, 5.5, 10.5], "texture": "#1"},
"west": {"uv": [7.5, 11, 8.5, 11.5], "texture": "#1"},
"up": {"uv": [7.5, 9.5, 5.5, 8.5], "texture": "#1"},
"down": {"uv": [10.5, 7, 8.5, 8], "texture": "#1"}
}
},
{
"from": [5.85, 5.1, 7.85],
"to": [7.1, 5.35, 9.1],
"rotation": {"angle": -45, "axis": "y", "origin": [6.85, 5.725, 7.85]},
"faces": {
"north": {"uv": [5, 11.5, 5.5, 12], "texture": "#1"},
"east": {"uv": [11.5, 6, 12, 6.5], "texture": "#1"},
"south": {"uv": [6.5, 11.5, 7, 12], "texture": "#1"},
"west": {"uv": [11.5, 6.5, 12, 7], "texture": "#1"},
"up": {"uv": [8, 12, 7.5, 11.5], "texture": "#1"},
"down": {"uv": [8.5, 11.5, 8, 12], "texture": "#1"}
}
},
{
"from": [8.1, 5.1, 7.85],
"to": [9.1, 5.35, 8.85],
"rotation": {"angle": -45, "axis": "y", "origin": [8.85, 5.725, 7.85]},
"faces": {
"north": {"uv": [11.5, 8.5, 12, 9], "texture": "#1"},
"east": {"uv": [9, 11.5, 9.5, 12], "texture": "#1"},
"south": {"uv": [11.5, 9, 12, 9.5], "texture": "#1"},
"west": {"uv": [9.5, 11.5, 10, 12], "texture": "#1"},
"up": {"uv": [12, 10, 11.5, 9.5], "texture": "#1"},
"down": {"uv": [10.5, 11.5, 10, 12], "texture": "#1"}
}
},
{
"from": [4.75, 6, 6.75],
"to": [12.25, 11, 9.25],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 8, 7]},
"faces": {
"north": {"uv": [0, 0, 4, 2.5], "texture": "#1"},
"east": {"uv": [3, 5, 4.5, 7.5], "texture": "#1"},
"south": {"uv": [0, 2.5, 4, 5], "texture": "#1"},
"west": {"uv": [4.5, 5, 6, 7.5], "texture": "#1"},
"up": {"uv": [8, 1.5, 4, 0], "texture": "#1"},
"down": {"uv": [8, 1.5, 4, 3], "texture": "#1"}
}
},
{
"from": [9.25, 6.5, 9.25],
"to": [12, 10.75, 9.5],
"rotation": {"angle": 0, "axis": "y", "origin": [10.625, 8.625, 9.375]},
"faces": {
"east": {"uv": [5.5, 10, 6, 12], "texture": "#1"},
"south": {"uv": [0, 7, 1.5, 9], "texture": "#1"},
"up": {"uv": [1.5, 9.5, 0, 9], "texture": "#1"},
"down": {"uv": [11.5, 3.5, 10, 4], "texture": "#1"}
}
},
{
"from": [8.6525, 6.5, 8.73333],
"to": [9.4025, 10.75, 8.98333],
"rotation": {"angle": -22.5, "axis": "y", "origin": [8.0275, 8.625, 8.85833]},
"faces": {
"south": {"uv": [6, 10, 6.5, 12], "texture": "#1"},
"up": {"uv": [12, 10.5, 11.5, 10], "texture": "#1"},
"down": {"uv": [11, 11.5, 10.5, 12], "texture": "#1"}
}
},
{
"from": [12.25, 6, 7.25],
"to": [12.75, 10.5, 8.75],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 8, 7]},
"faces": {
"north": {"uv": [7, 9.5, 7.5, 12], "texture": "#1"},
"east": {"uv": [1.5, 7, 2.5, 9.5], "texture": "#1"},
"south": {"uv": [1, 10, 1.5, 12.5], "texture": "#1"},
"up": {"uv": [6, 8.5, 5.5, 7.5], "texture": "#1"},
"down": {"uv": [5.5, 10.5, 5, 11.5], "texture": "#1"}
}
},
{
"from": [4.5, 9.75, 6.5],
"to": [6.5, 10.25, 9.5],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 8, 7]},
"faces": {
"north": {"uv": [9.5, 11, 10.5, 11.5], "texture": "#1"},
"east": {"uv": [3.5, 10.5, 5, 11], "texture": "#1"},
"south": {"uv": [10.5, 11, 11.5, 11.5], "texture": "#1"},
"west": {"uv": [10.5, 7, 12, 7.5], "texture": "#1"},
"up": {"uv": [8.5, 10.5, 7.5, 9], "texture": "#1"},
"down": {"uv": [10.5, 8, 9.5, 9.5], "texture": "#1"}
}
},
{
"from": [4.5, 8.75, 6.5],
"to": [6.5, 9.25, 9.5],
"rotation": {"angle": 0, "axis": "y", "origin": [5.5, 9, 8]},
"faces": {
"north": {"uv": [0, 11.5, 1, 12], "texture": "#1"},
"east": {"uv": [7.5, 10.5, 9, 11], "texture": "#1"},
"south": {"uv": [1.5, 11.5, 2.5, 12], "texture": "#1"},
"west": {"uv": [10.5, 7.5, 12, 8], "texture": "#1"},
"up": {"uv": [10.5, 11, 9.5, 9.5], "texture": "#1"},
"down": {"uv": [1, 10, 0, 11.5], "texture": "#1"}
}
},
{
"from": [5.25, 8.5, 6.5],
"to": [5.75, 9, 6.75],
"rotation": {"angle": -45, "axis": "z", "origin": [4.75, 8.75, 8]},
"faces": {
"north": {"uv": [11.5, 10.5, 12, 11], "texture": "#1"},
"east": {"uv": [11, 11.5, 11.5, 12], "texture": "#1"},
"west": {"uv": [11.5, 11, 12, 11.5], "texture": "#1"},
"up": {"uv": [12, 12, 11.5, 11.5], "texture": "#1"},
"down": {"uv": [0.5, 12, 0, 12.5], "texture": "#1"}
}
},
{
"from": [5.25, 7.5, 6.5],
"to": [5.75, 8, 6.75],
"rotation": {"angle": -45, "axis": "z", "origin": [4.75, 7.75, 8]},
"faces": {
"north": {"uv": [12, 0, 12.5, 0.5], "texture": "#1"},
"east": {"uv": [0.5, 12, 1, 12.5], "texture": "#1"},
"west": {"uv": [12, 0.5, 12.5, 1], "texture": "#1"},
"up": {"uv": [12.5, 1.5, 12, 1], "texture": "#1"},
"down": {"uv": [2, 12, 1.5, 12.5], "texture": "#1"}
}
},
{
"from": [4.5, 5.5, 7.25],
"to": [10, 9.75, 8.75],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 7]},
"faces": {
"north": {"uv": [4, 3, 7, 5], "texture": "#1"},
"south": {"uv": [0, 5, 3, 7], "texture": "#1"},
"west": {"uv": [8.5, 8, 9.5, 10], "texture": "#1"},
"down": {"uv": [10, 3, 7, 4], "texture": "#1"}
}
},
{
"from": [8.75, 6.25, 6.25],
"to": [11.75, 9, 6.75],
"rotation": {"angle": 0, "axis": "y", "origin": [10.25, 7.625, 6.5]},
"faces": {
"north": {"uv": [6, 7, 7.5, 8.5], "texture": "#1"},
"east": {"uv": [6.5, 10, 7, 11.5], "texture": "#1"},
"west": {"uv": [9, 10, 9.5, 11.5], "texture": "#1"},
"down": {"uv": [12, 8, 10.5, 8.5], "texture": "#1"}
}
},
{
"from": [8.75, 8.79966, 6.75716],
"to": [11.75, 10.29966, 7.25716],
"rotation": {"angle": 22.5, "axis": "x", "origin": [10.25, 10.17466, 7.00716]},
"faces": {
"north": {"uv": [9.5, 6, 11, 7], "texture": "#1"},
"east": {"uv": [8.5, 11, 9, 12], "texture": "#1"},
"west": {"uv": [3.5, 11.5, 4, 12.5], "texture": "#1"}
}
}
],
"display": {
"thirdperson_righthand": {
"translation": [-2, -2, 0]
},
"thirdperson_lefthand": {
"translation": [-2, -2, 0]
},
"firstperson_righthand": {
"rotation": [10.98, 1.37, 4.05],
"translation": [-3.25, -0.25, 0.5]
},
"firstperson_lefthand": {
"rotation": [10.98, 1.37, 4.05],
"translation": [-3.25, -0.25, 0.5]
},
"ground": {
"rotation": [90, 0, 0]
},
"gui": {
"rotation": [-67.5, 0, 45],
"translation": [0.25, -0.5, 0],
"scale": [1.5, 1.5, 1.5]
},
"head": {
"rotation": [90, 0, 0],
"translation": [0, -0.25, -13.25],
"scale": [1.6, 1.6, 1.6]
},
"fixed": {
"translation": [0, 0, -1.5],
"scale": [1.5, 1.5, 1.5]
}
},
"groups": [
{
"name": "group",
"origin": [0, 0, 0],
"color": 0,
"children": [
0,
1,
2,
3,
4,
5,
6,
{
"name": "group",
"origin": [0, 0, 0],
"color": 0,
"children": [7, 8, 9]
},
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 725 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"pattern": [
"aba"
],
"key": {
"a": {
"item": "minecraft:spyglass"
},
"b": {
"item": "superbwarfare:monitor"
}
},
"result": {
"id": "superbwarfare:artillery_indicator",
"count": 1
}
}