fix: update data to 1.21.4

This commit is contained in:
trafficlunar 2024-12-27 20:29:19 +00:00
parent a5bea3b585
commit e4719200d3
19 changed files with 3281 additions and 300 deletions

View file

@ -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);

View file

@ -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}
/>

View file

@ -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 {

View file

@ -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: {

View file

@ -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);
};

View file

@ -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;

View file

@ -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() {