添加炮击指示器模型,HUD,配方
This commit is contained in:
parent
cba9ad73f8
commit
2e4fd79576
10 changed files with 453 additions and 36 deletions
|
@ -214,7 +214,7 @@ public class ClickHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player.isUsingItem() && player.getUseItem().is(ModItems.ARTILLERY_INDICATOR.get())) {
|
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);
|
event.setCanceled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,17 +2,24 @@ package com.atsuishio.superbwarfare.client.overlay;
|
||||||
|
|
||||||
import com.atsuishio.superbwarfare.Mod;
|
import com.atsuishio.superbwarfare.Mod;
|
||||||
import com.atsuishio.superbwarfare.entity.vehicle.base.VehicleEntity;
|
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.FormatTool;
|
||||||
import com.atsuishio.superbwarfare.tools.TraceTool;
|
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.DeltaTracker;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.gui.GuiGraphics;
|
import net.minecraft.client.gui.GuiGraphics;
|
||||||
import net.minecraft.client.gui.LayeredDraw;
|
import net.minecraft.client.gui.LayeredDraw;
|
||||||
|
import net.minecraft.client.renderer.GameRenderer;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.util.Mth;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.Items;
|
|
||||||
import net.minecraft.world.level.ClipContext;
|
import net.minecraft.world.level.ClipContext;
|
||||||
import net.minecraft.world.phys.BlockHitResult;
|
import net.minecraft.world.phys.BlockHitResult;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
|
@ -21,18 +28,48 @@ import net.neoforged.api.distmarker.OnlyIn;
|
||||||
|
|
||||||
import javax.annotation.ParametersAreNonnullByDefault;
|
import javax.annotation.ParametersAreNonnullByDefault;
|
||||||
|
|
||||||
|
import static com.atsuishio.superbwarfare.client.RenderHelper.preciseBlit;
|
||||||
|
|
||||||
@OnlyIn(Dist.CLIENT)
|
@OnlyIn(Dist.CLIENT)
|
||||||
public class SpyglassRangeOverlay implements LayeredDraw.Layer {
|
public class SpyglassRangeOverlay implements LayeredDraw.Layer {
|
||||||
|
|
||||||
public static final ResourceLocation ID = Mod.loc("spyglass_range");
|
public static final ResourceLocation ID = Mod.loc("spyglass_range");
|
||||||
|
|
||||||
|
private static float scopeScale = 1;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ParametersAreNonnullByDefault
|
@ParametersAreNonnullByDefault
|
||||||
public void render(GuiGraphics guiGraphics, DeltaTracker deltaTracker) {
|
public void render(GuiGraphics guiGraphics, DeltaTracker deltaTracker) {
|
||||||
int w = guiGraphics.guiWidth();
|
PoseStack poseStack = guiGraphics.pose();
|
||||||
int h = guiGraphics.guiHeight();
|
|
||||||
Player player = Minecraft.getInstance().player;
|
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;
|
boolean lookAtEntity = false;
|
||||||
|
|
||||||
BlockHitResult result = player.level().clip(new ClipContext(player.getEyePosition(), player.getEyePosition().add(player.getViewVector(1).scale(512)),
|
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) {
|
if (lookAtEntity) {
|
||||||
guiGraphics.drawString(Minecraft.getInstance().font, Component.translatable("tips.superbwarfare.drone.range")
|
guiGraphics.drawString(Minecraft.getInstance().font, Component.translatable("tips.superbwarfare.drone.range")
|
||||||
.append(Component.literal(FormatTool.format1D(entityRange, "M ") + lookingEntity.getDisplayName().getString())),
|
.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 {
|
} else {
|
||||||
if (blockRange > 500) {
|
if (blockRange > 500) {
|
||||||
guiGraphics.drawString(Minecraft.getInstance().font, Component.translatable("tips.superbwarfare.drone.range")
|
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 {
|
} else {
|
||||||
guiGraphics.drawString(Minecraft.getInstance().font, Component.translatable("tips.superbwarfare.drone.range")
|
guiGraphics.drawString(Minecraft.getInstance().font, Component.translatable("tips.superbwarfare.drone.range")
|
||||||
.append(Component.literal(FormatTool.format1D(blockRange, "M"))),
|
.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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1025,13 +1025,23 @@ public class ClientEventHandler {
|
||||||
ItemStack rightHandItem = player.getItemInHand(rightHand);
|
ItemStack rightHandItem = player.getItemInHand(rightHand);
|
||||||
final var tag = NBTTool.getTag(rightHandItem);
|
final var tag = NBTTool.getTag(rightHandItem);
|
||||||
|
|
||||||
if (event.getHand() == leftHand && rightHandItem.getItem() instanceof GunItem) {
|
if (event.getHand() == leftHand) {
|
||||||
|
if (rightHandItem.getItem() instanceof GunItem) {
|
||||||
event.setCanceled(true);
|
event.setCanceled(true);
|
||||||
}
|
}
|
||||||
|
if (player.isUsingItem() && player.getUseItem().is(ModItems.ARTILLERY_INDICATOR.get())) {
|
||||||
if (event.getHand() == rightHand && rightHandItem.getItem() instanceof GunItem && drawTime > 0.15) {
|
|
||||||
event.setCanceled(true);
|
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();
|
ItemStack stack = player.getMainHandItem();
|
||||||
if (stack.is(ModItems.MONITOR.get()) && tag.getBoolean("Using")
|
if (stack.is(ModItems.MONITOR.get()) && tag.getBoolean("Using")
|
||||||
|
@ -1462,17 +1472,13 @@ public class ClientEventHandler {
|
||||||
|
|
||||||
double factor;
|
double factor;
|
||||||
|
|
||||||
if (stack.is(ModItems.ARTILLERY_INDICATOR.get())) {
|
if (player.isUsingItem() && player.getUseItem().is(ModItems.ARTILLERY_INDICATOR.get()) && mc.options.getCameraType() == CameraType.FIRST_PERSON) {
|
||||||
if (player.isUsingItem() && player.getUseItem().is(ModItems.ARTILLERY_INDICATOR.get())) {
|
factor = 4 + artilleryIndicatorCustomZoom;
|
||||||
factor = 2 + artilleryIndicatorCustomZoom;
|
|
||||||
} else {
|
|
||||||
factor = 1;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
factor = 1;
|
factor = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
artilleryIndicatorZoom = Mth.lerp(0.6 * times, artilleryIndicatorZoom, factor);
|
artilleryIndicatorZoom = Mth.lerp(0.3 * times, artilleryIndicatorZoom, factor);
|
||||||
|
|
||||||
event.setFOV(event.getFOV() / artilleryIndicatorZoom);
|
event.setFOV(event.getFOV() / artilleryIndicatorZoom);
|
||||||
|
|
||||||
|
@ -1561,6 +1567,10 @@ public class ClientEventHandler {
|
||||||
if (player == null) return;
|
if (player == null) return;
|
||||||
if (!mc.options.getCameraType().isFirstPerson()) return;
|
if (!mc.options.getCameraType().isFirstPerson()) return;
|
||||||
|
|
||||||
|
if (player.isUsingItem() && player.getUseItem().is(ModItems.ARTILLERY_INDICATOR.get())) {
|
||||||
|
event.setCanceled(true);
|
||||||
|
}
|
||||||
|
|
||||||
ItemStack stack = player.getMainHandItem();
|
ItemStack stack = player.getMainHandItem();
|
||||||
final var tag = NBTTool.getTag(stack);
|
final var tag = NBTTool.getTag(stack);
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,8 @@ import com.atsuishio.superbwarfare.tools.TraceTool;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import net.minecraft.ChatFormatting;
|
import net.minecraft.ChatFormatting;
|
||||||
import net.minecraft.core.BlockPos;
|
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.chat.Component;
|
||||||
import net.minecraft.network.codec.ByteBufCodecs;
|
import net.minecraft.network.codec.ByteBufCodecs;
|
||||||
import net.minecraft.network.codec.StreamCodec;
|
import net.minecraft.network.codec.StreamCodec;
|
||||||
|
@ -31,6 +33,7 @@ import java.util.Objects;
|
||||||
import java.util.stream.StreamSupport;
|
import java.util.stream.StreamSupport;
|
||||||
|
|
||||||
import static com.atsuishio.superbwarfare.entity.vehicle.MortarEntity.FIRE_TIME;
|
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 record SetFiringParametersMessage(int msgType) implements CustomPacketPayload {
|
||||||
public static final Type<SetFiringParametersMessage> TYPE = new Type<>(Mod.loc("set_firing_parameters"));
|
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())) {
|
if (mainStack.is(ModItems.ARTILLERY_INDICATOR.get())) {
|
||||||
// TODO 这数据读写是一坨什么玩意
|
|
||||||
BlockPos pos;
|
|
||||||
if (player.isShiftKeyDown()) {
|
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) {
|
if (lookAtEntity) {
|
||||||
pos = lookingEntity.blockPosition();
|
pos = lookingEntity.blockPosition();
|
||||||
} else {
|
} else {
|
||||||
|
@ -94,21 +114,20 @@ public record SetFiringParametersMessage(int msgType) implements CustomPacketPay
|
||||||
+ "," + pos.getZ()
|
+ "," + pos.getZ()
|
||||||
+ "]")), true);
|
+ "]")), true);
|
||||||
}
|
}
|
||||||
|
// List<Entity> entities = getCannon(player, player.level(), mainStack.getOrCreateTag().getString("LinkedCannon"));
|
||||||
List<Entity> entities = getCannon(player, player.level(), NBTTool.getTag(mainStack).getString("LinkedCannon"));
|
// for (var e : entities) {
|
||||||
for (var e : entities) {
|
// if (e instanceof MortarEntity mortarEntity) {
|
||||||
if (e instanceof MortarEntity mortarEntity) {
|
// if (player.isShiftKeyDown()) {
|
||||||
if (player.isShiftKeyDown()) {
|
// if (!mortarEntity.setTarget(mainStack)) {
|
||||||
if (!mortarEntity.setTarget(mainStack)) {
|
// player.displayClientMessage(Component.translatable("tips.superbwarfare.mortar.warn").withStyle(ChatFormatting.RED), true);
|
||||||
player.displayClientMessage(Component.translatable("tips.superbwarfare.mortar.warn").withStyle(ChatFormatting.RED), true);
|
// }
|
||||||
}
|
// } else {
|
||||||
} else {
|
// if (mortarEntity.stack.getItem() instanceof MortarShell && mortarEntity.getEntityData().get(FIRE_TIME) == 0) {
|
||||||
if (mortarEntity.stack.getItem() instanceof MortarShell && mortarEntity.getEntityData().get(FIRE_TIME) == 0) {
|
// mortarEntity.fire(player);
|
||||||
mortarEntity.fire(player);
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -251,6 +251,7 @@
|
||||||
"item.superbwarfare.light_armament_module": "Light Armament Module",
|
"item.superbwarfare.light_armament_module": "Light Armament Module",
|
||||||
"item.superbwarfare.medium_armament_module": "Medium Armament Module",
|
"item.superbwarfare.medium_armament_module": "Medium Armament Module",
|
||||||
"item.superbwarfare.heavy_armament_module": "Heavy Armament Module",
|
"item.superbwarfare.heavy_armament_module": "Heavy Armament Module",
|
||||||
|
"item.superbwarfare.artillery_indicator": "Artillery Indicator",
|
||||||
|
|
||||||
"attribute.superbwarfare.bullet_resistance": "Bullet Resistance",
|
"attribute.superbwarfare.bullet_resistance": "Bullet Resistance",
|
||||||
|
|
||||||
|
|
|
@ -251,6 +251,7 @@
|
||||||
"item.superbwarfare.light_armament_module": "轻型武装模块",
|
"item.superbwarfare.light_armament_module": "轻型武装模块",
|
||||||
"item.superbwarfare.medium_armament_module": "中型武装模块",
|
"item.superbwarfare.medium_armament_module": "中型武装模块",
|
||||||
"item.superbwarfare.heavy_armament_module": "重型武装模块",
|
"item.superbwarfare.heavy_armament_module": "重型武装模块",
|
||||||
|
"item.superbwarfare.artillery_indicator": "火炮指示器",
|
||||||
|
|
||||||
"attribute.superbwarfare.bullet_resistance": "子弹防护",
|
"attribute.superbwarfare.bullet_resistance": "子弹防护",
|
||||||
|
|
||||||
|
|
|
@ -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 |
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue