mirror of
https://github.com/trafficlunar/blockmatic.git
synced 2026-06-28 14:44:12 +00:00
fix: update data to 1.21.4
This commit is contained in:
parent
a5bea3b585
commit
e4719200d3
19 changed files with 3281 additions and 300 deletions
|
|
@ -5,6 +5,7 @@ import * as PIXI from "pixi.js";
|
|||
import { useApp } from "@pixi/react";
|
||||
import { CompositeTilemap, settings } from "@pixi/tilemap";
|
||||
|
||||
import { getBlockData } from "@/utils/getBlockData";
|
||||
import { findBlockFromRgb } from "@/utils/findBlockFromRgb";
|
||||
|
||||
interface Props {
|
||||
|
|
@ -17,16 +18,19 @@ interface Props {
|
|||
imageDimensions: Dimension;
|
||||
coords: Position;
|
||||
scale: number;
|
||||
version: number;
|
||||
setLoading: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
}
|
||||
|
||||
// Lifts 16,000 tiles limit
|
||||
settings.use32bitIndex = true;
|
||||
|
||||
function Blocks({ blocks, setBlocks, missingTexture, textures, solidTextures, image, imageDimensions, coords, scale, setLoading }: Props) {
|
||||
function Blocks({ blocks, setBlocks, missingTexture, textures, solidTextures, image, imageDimensions, coords, scale, version, setLoading }: Props) {
|
||||
const app = useApp();
|
||||
const tilemapRef = useRef<CompositeTilemap>();
|
||||
|
||||
const blockData = getBlockData(version);
|
||||
|
||||
const tileBlocks = () => {
|
||||
if (!tilemapRef.current) return;
|
||||
const tilemap = tilemapRef.current;
|
||||
|
|
@ -80,7 +84,7 @@ function Blocks({ blocks, setBlocks, missingTexture, textures, solidTextures, im
|
|||
const newBlocks: Block[] = [];
|
||||
|
||||
for (let i = 0; i < imageData.data.length; i += 4) {
|
||||
const block = findBlockFromRgb(imageData.data[i], imageData.data[i + 1], imageData.data[i + 2], imageData.data[i + 3]);
|
||||
const block = findBlockFromRgb(blockData, imageData.data[i], imageData.data[i + 1], imageData.data[i + 2], imageData.data[i + 3]);
|
||||
|
||||
const x = Math.floor((i / 4) % imageData.width);
|
||||
const y = Math.floor(i / 4 / imageData.width);
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ import welcomeBlocksData from "@/data/welcome.json";
|
|||
PIXI.settings.SCALE_MODE = PIXI.SCALE_MODES.NEAREST;
|
||||
|
||||
function Canvas() {
|
||||
const { stageSize, canvasSize, blocks, coords, scale, setStageSize, setBlocks, setCoords, setScale } = useContext(CanvasContext);
|
||||
const { stageSize, canvasSize, blocks, coords, scale, version, setStageSize, setBlocks, setCoords, setScale } = useContext(CanvasContext);
|
||||
const { image, imageDimensions } = useContext(ImageContext);
|
||||
const { setLoading } = useContext(LoadingContext);
|
||||
const { settings } = useContext(SettingsContext);
|
||||
|
|
@ -301,6 +301,7 @@ function Canvas() {
|
|||
imageDimensions={imageDimensions}
|
||||
coords={coords}
|
||||
scale={scale}
|
||||
version={version}
|
||||
setLoading={setLoading}
|
||||
/>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { CanvasContext } from "@/context/Canvas";
|
||||
import { useContext, useEffect, useState } from "react";
|
||||
|
||||
import _blockData from "@/data/blocks/programmer-art/data.json";
|
||||
import _blockData from "@/data/blocks/data.json";
|
||||
const blockData: BlockData = _blockData;
|
||||
|
||||
interface Props {
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import { DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTit
|
|||
import { Button } from "@/components/ui/button";
|
||||
import { Input } from "@/components/ui/input";
|
||||
|
||||
import _blockData from "@/data/blocks/programmer-art/data.json";
|
||||
import _blockData from "@/data/blocks/data.json";
|
||||
const blockData: BlockData = _blockData;
|
||||
|
||||
function SaveLitematic({ close }: DialogProps) {
|
||||
|
|
@ -92,7 +92,7 @@ function SaveLitematic({ close }: DialogProps) {
|
|||
|
||||
// Generate NBT data
|
||||
const data = {
|
||||
MinecraftDataVersion: new nbt.Int32(3955),
|
||||
MinecraftDataVersion: new nbt.Int32(4189),
|
||||
Version: new nbt.Int32(7),
|
||||
SubVersion: new nbt.Int32(1),
|
||||
Metadata: {
|
||||
|
|
|
|||
|
|
@ -1,32 +1,34 @@
|
|||
import { useContext, useEffect, useMemo, useState } from "react";
|
||||
import { Alpha, ShadeSlider, Wheel, hsvaToHex, hsvaToRgba, rgbaToHsva } from "@uiw/react-color";
|
||||
|
||||
import { Button } from "@/components/ui/button";
|
||||
import { Input } from "@/components/ui/input";
|
||||
import { Label } from "@/components/ui/label";
|
||||
|
||||
import { CanvasContext } from "@/context/Canvas";
|
||||
import { ToolContext } from "@/context/Tool";
|
||||
|
||||
import { getBlockData } from "@/utils/getBlockData";
|
||||
import { findBlockFromRgb } from "@/utils/findBlockFromRgb";
|
||||
|
||||
import _blockData from "@/data/blocks/programmer-art/data.json";
|
||||
import { Button } from "../ui/button";
|
||||
const blockData: BlockData = _blockData;
|
||||
|
||||
function ColorPicker() {
|
||||
const { version } = useContext(CanvasContext);
|
||||
const { selectedBlock, setSelectedBlock } = useContext(ToolContext);
|
||||
|
||||
const [hsva, setHsva] = useState({ h: 0, s: 0, v: 49.4, a: 1 });
|
||||
const rgb = useMemo(() => hsvaToRgba(hsva), [hsva]);
|
||||
|
||||
const limitRgba = (x: number) => Math.min(Math.max(x, 0), 255);
|
||||
const blockData = getBlockData(version);
|
||||
|
||||
useEffect(() => {
|
||||
const blockInfo = blockData[selectedBlock];
|
||||
const rgbColor = { r: blockInfo.color[0], g: blockInfo.color[1], b: blockInfo.color[2], a: blockInfo.color[3] / 255 };
|
||||
setHsva(rgbaToHsva(rgbColor));
|
||||
}, [selectedBlock]);
|
||||
}, [selectedBlock, blockData]);
|
||||
|
||||
const onClickSet = () => {
|
||||
const block = findBlockFromRgb(rgb.r, rgb.g, rgb.b, rgb.a * 255);
|
||||
const block = findBlockFromRgb(blockData, rgb.r, rgb.g, rgb.b, rgb.a * 255);
|
||||
setSelectedBlock(block);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@ import { useContext, useEffect, useMemo, useState } from "react";
|
|||
import { Container, Graphics, Sprite, Stage } from "@pixi/react";
|
||||
import { BlocksIcon } from "lucide-react";
|
||||
|
||||
import { CanvasContext } from "@/context/Canvas";
|
||||
import { TexturesContext } from "@/context/Textures";
|
||||
import { ThemeContext } from "@/context/Theme";
|
||||
import { ToolContext } from "@/context/Tool";
|
||||
|
||||
import _blockData from "@/data/blocks/programmer-art/data.json";
|
||||
const blockData: BlockData = _blockData;
|
||||
import { getBlockData } from "@/utils/getBlockData";
|
||||
|
||||
interface Props {
|
||||
stageWidth: number;
|
||||
|
|
@ -15,6 +15,7 @@ interface Props {
|
|||
}
|
||||
|
||||
function SelectorBlocks({ stageWidth, searchInput }: Props) {
|
||||
const { version } = useContext(CanvasContext);
|
||||
const { missingTexture, textures } = useContext(TexturesContext);
|
||||
const { isDark } = useContext(ThemeContext);
|
||||
const { selectedBlock, setSelectedBlock } = useContext(ToolContext);
|
||||
|
|
@ -22,8 +23,10 @@ function SelectorBlocks({ stageWidth, searchInput }: Props) {
|
|||
const [hoverPosition, setHoverPosition] = useState<Position | null>(null);
|
||||
const [selectedBlockPosition, setSelectedBlockPosition] = useState<Position | null>({ x: 0, y: 0 });
|
||||
|
||||
const blockData = getBlockData(version);
|
||||
|
||||
const blocksPerColumn = Math.floor(stageWidth / (32 + 2));
|
||||
const filteredBlocks = useMemo(() => Object.keys(blockData).filter((value) => value.includes(searchInput)), [searchInput]);
|
||||
const filteredBlocks = useMemo(() => Object.keys(blockData).filter((value) => value.includes(searchInput)), [searchInput, blockData]);
|
||||
|
||||
const getBlockPosition = (index: number): Position => {
|
||||
const x = (index % blocksPerColumn) * (32 + 2) + 2;
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/comp
|
|||
import { TexturesContext } from "@/context/Textures";
|
||||
import { ToolContext } from "@/context/Tool";
|
||||
|
||||
import _blockData from "@/data/blocks/programmer-art/data.json";
|
||||
import _blockData from "@/data/blocks/data.json";
|
||||
const blockData: BlockData = _blockData;
|
||||
|
||||
function SelectedBlock() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue