diff --git a/.build/index.js b/.build/index.js deleted file mode 100644 index eefd4f7500baa144912f571ce8df79326564170a..0000000000000000000000000000000000000000 --- a/.build/index.js +++ /dev/null @@ -1,4 +0,0 @@ -"use strict"; -const s = "\u6B22\u8FCE\u6765\u5230 InsCode"; -console.log(s); -//# sourceMappingURL=index.js.map diff --git a/.build/index.js.map b/.build/index.js.map deleted file mode 100644 index bd551c6d794db71f1248463d8d77fef9bb8ec757..0000000000000000000000000000000000000000 --- a/.build/index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../index.ts"], - "sourcesContent": ["const s: string = \"\u6B22\u8FCE\u6765\u5230 InsCode\";\nconsole.log(s);\n"], - "mappings": ";AAAA,MAAM,IAAY;AAClB,QAAQ,IAAI,CAAC;", - "names": [] -} diff --git a/.config/build.sh b/.config/build.sh deleted file mode 100644 index 11fd4353d48e0cc7836f0c1e5347da11ded3ae4f..0000000000000000000000000000000000000000 --- a/.config/build.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -set -e - -rm -rf .build -mkdir -p ./.build - -ENTRYPOINTS=$(find -type f -name '*.[tj]s' -not -path './node_modules/*') - -esbuild $ENTRYPOINTS \ - --log-level=warning \ - --outdir='./.build' \ - --outbase=. \ - --sourcemap \ - --target='node16' \ - --platform='node' \ - --format='cjs' diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..15928bf0140cdb5c28965f8a99a672d4a5b25527 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local +*-lock.yaml diff --git a/.inscode b/.inscode index ce46aa7d32cdcabc18c2aeed77a06d75edc8d9ae..3b99d97697b03a51e4f2759faad2196f6ce16fc4 100644 --- a/.inscode +++ b/.inscode @@ -1,4 +1,4 @@ -run = "node --enable-source-maps .build/index.js" +run = "upm add guess;npm run dev" entrypoint = "index.ts" [nix] diff --git a/.upm/store.json b/.upm/store.json new file mode 100644 index 0000000000000000000000000000000000000000..be7f137b38a7418ba18d379e88a8c52c2c57489e --- /dev/null +++ b/.upm/store.json @@ -0,0 +1 @@ +{"version":2,"languages":{"nodejs-yarn":{"specfileHash":"abab35c9ba66256c189aa42c5e29aa02","lockfileHash":"b4fe953f33f9be5c0086b24be0e7aad5"}}} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..180c25a1e5a3aa4ef74f3b393c86004e98a833b9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Vyse12138 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..3c015f9affacfcbe7a43bd03e9c72b17c292f192 --- /dev/null +++ b/README.md @@ -0,0 +1,30 @@ +# minecraft-threejs + +English | [中文](https://github.com/vyse12138/minecraft-threejs/blob/main/README_ZH.md) + +Minecraft clone made with Three.js and TypeScript + +Check it out: [Minecraft - Three.js](https://mc.yulei.me/) + +Recommend to use Chrome to get the best experience + +![preview](https://user-images.githubusercontent.com/88306344/154383952-9b33bad4-eebb-4a98-a12e-f5f137422d06.gif) + +## Features: + +- Destroy block and place block +- Mouse wheel (or number key) to select different block types +- Movement and collision detection +- Random terrain / blocks / tree generations +- Infinite world +- Game save / load +- Sound effect and BGM +- Highlight the block at crosshair +- Basic UI and settings +- Mobile friendly + +## Working on: + +- Multiplayer +- Generates water +- Higher performance algorithm diff --git a/README_ZH.md b/README_ZH.md new file mode 100644 index 0000000000000000000000000000000000000000..cc4068d7f8868b34c7ae280830a8f01d62ee4ace --- /dev/null +++ b/README_ZH.md @@ -0,0 +1,31 @@ +# minecraft-threejs + +中文 | [English](https://github.com/vyse12138/minecraft-threejs) + +基于 Three.js 和 TypeScript 的网页版我的世界 + +试玩:[Minecraft - Three.js](https://mcz.yulei.me) + +建议使用 Chrome 来获得最佳的体验 + +![preview](https://user-images.githubusercontent.com/88306344/154383952-9b33bad4-eebb-4a98-a12e-f5f137422d06.gif) + +## 已支持: + +- 方块的放置 / 破坏 +- 鼠标滚轮(数字键)选择不同的方块类型 +- 移动和碰撞检测 +- 随机的地形和树木生成 +- 无限的世界 +- 保存 / 读取游戏 +- 音效和背景音乐 +- 可调节的渲染距离和视野范围 +- 高亮准心方块 +- 基本的 UI +- 支持桌面以及手机试玩 + +## 开发中: + +- 更高效的算法(时间切片渲染算法和方块放置 / 破坏算法) +- 生成水 +- 联机模式 diff --git a/index.html b/index.html new file mode 100644 index 0000000000000000000000000000000000000000..c444d9f3a41d633b04a6826703d763d4e1c10919 --- /dev/null +++ b/index.html @@ -0,0 +1,93 @@ + + + + + + + + Minecraft - Three.js + + + + + + + + + + + + + + + + + + + + diff --git a/index.ts b/index.ts deleted file mode 100644 index df8a3b59c0bb8c77ba2f987fdeda605e8cd07bf8..0000000000000000000000000000000000000000 --- a/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -const s: string = "欢迎来到 InsCode"; -console.log(s); diff --git a/package.json b/package.json new file mode 100644 index 0000000000000000000000000000000000000000..aa448d8d36cec284db45bc6e3cb6735c4186664f --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "minecraft-threejs", + "version": "0.0.0", + "license": "MIT", + "author": "Yulei Zhu", + "description": "Minecraft clone made with Three.js and TypeScript", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview --port 8080", + "lint": "tsc --noEmit" + }, + "devDependencies": { + "@types/three": "^0.137.0", + "typescript": "^4.5.5", + "vite": "^2.8.0" + }, + "dependencies": { + "guess": "^1.0.2", + "three": "^0.137.0" + } +} diff --git a/src/audio/blocks/dirt1.ogg b/src/audio/blocks/dirt1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..97ae71e0923f814e006b275606d26d28a8c047a2 Binary files /dev/null and b/src/audio/blocks/dirt1.ogg differ diff --git a/src/audio/blocks/dirt2.ogg b/src/audio/blocks/dirt2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5133141161422bfdf3c12e71e1d32385a15c3254 Binary files /dev/null and b/src/audio/blocks/dirt2.ogg differ diff --git a/src/audio/blocks/dirt3.ogg b/src/audio/blocks/dirt3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1b8debd795fe93955bbc8a0727029a1839c7df5f Binary files /dev/null and b/src/audio/blocks/dirt3.ogg differ diff --git a/src/audio/blocks/dirt4.ogg b/src/audio/blocks/dirt4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..94a0c1cbe86bb36a87ba7114e60e60d37a3f9302 Binary files /dev/null and b/src/audio/blocks/dirt4.ogg differ diff --git a/src/audio/blocks/grass1.ogg b/src/audio/blocks/grass1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..12f575110abad218ab5688899fdb29db5e5ec08c Binary files /dev/null and b/src/audio/blocks/grass1.ogg differ diff --git a/src/audio/blocks/grass2.ogg b/src/audio/blocks/grass2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..05dff55c8fe2587119663e41c50d8b199ccf1465 Binary files /dev/null and b/src/audio/blocks/grass2.ogg differ diff --git a/src/audio/blocks/grass3.ogg b/src/audio/blocks/grass3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e792b343e97865979e4286bba8e1184fd905f651 Binary files /dev/null and b/src/audio/blocks/grass3.ogg differ diff --git a/src/audio/blocks/grass4.ogg b/src/audio/blocks/grass4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8421e6ae7f5baa5ae0b43a4a718c001222937e0a Binary files /dev/null and b/src/audio/blocks/grass4.ogg differ diff --git a/src/audio/blocks/leaf1.ogg b/src/audio/blocks/leaf1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3eee4c168ca6800fd66d01f280abcc9113ed4350 Binary files /dev/null and b/src/audio/blocks/leaf1.ogg differ diff --git a/src/audio/blocks/leaf2.ogg b/src/audio/blocks/leaf2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0b480e36fc076c7981c35ebea6c428a9c37eaf80 Binary files /dev/null and b/src/audio/blocks/leaf2.ogg differ diff --git a/src/audio/blocks/leaf3.ogg b/src/audio/blocks/leaf3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..332945b4717bf04216d6c4de1a2caf2a768a6f32 Binary files /dev/null and b/src/audio/blocks/leaf3.ogg differ diff --git a/src/audio/blocks/leaf4.ogg b/src/audio/blocks/leaf4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ac41361ed3eea05c2c301423180d368b822a3474 Binary files /dev/null and b/src/audio/blocks/leaf4.ogg differ diff --git a/src/audio/blocks/sand1.ogg b/src/audio/blocks/sand1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e9cb62d711997bbb140fb5bd82adb43f4d3e842d Binary files /dev/null and b/src/audio/blocks/sand1.ogg differ diff --git a/src/audio/blocks/sand2.ogg b/src/audio/blocks/sand2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ce2eeb09da9ebca55c2977682127bd3cf25fbf1b Binary files /dev/null and b/src/audio/blocks/sand2.ogg differ diff --git a/src/audio/blocks/sand3.ogg b/src/audio/blocks/sand3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..c94fc1b10f2af3926aa526b9bccff0464bcec372 Binary files /dev/null and b/src/audio/blocks/sand3.ogg differ diff --git a/src/audio/blocks/sand4.ogg b/src/audio/blocks/sand4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ae2d818d0f09f612ef22e9848acb65419976d5ae Binary files /dev/null and b/src/audio/blocks/sand4.ogg differ diff --git a/src/audio/blocks/stone1.ogg b/src/audio/blocks/stone1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..746d282e81c9fbcdfde0966a3123096ecf3c87ba Binary files /dev/null and b/src/audio/blocks/stone1.ogg differ diff --git a/src/audio/blocks/stone2.ogg b/src/audio/blocks/stone2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..333c9704ece8e9482fd4097af66fe5c8596cba9a Binary files /dev/null and b/src/audio/blocks/stone2.ogg differ diff --git a/src/audio/blocks/stone3.ogg b/src/audio/blocks/stone3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f8b629fc3d782f588dc98ed562f2231425cb23ea Binary files /dev/null and b/src/audio/blocks/stone3.ogg differ diff --git a/src/audio/blocks/stone4.ogg b/src/audio/blocks/stone4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d705cf350e749642f45f3d035385c988d7dbed49 Binary files /dev/null and b/src/audio/blocks/stone4.ogg differ diff --git a/src/audio/blocks/tree1.ogg b/src/audio/blocks/tree1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f9a474a38d5b67cc788e86b02c6d88cd69e9bce4 Binary files /dev/null and b/src/audio/blocks/tree1.ogg differ diff --git a/src/audio/blocks/tree2.ogg b/src/audio/blocks/tree2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b55d49ba593ecee7396a9d1e6579657149da34f3 Binary files /dev/null and b/src/audio/blocks/tree2.ogg differ diff --git a/src/audio/blocks/tree3.ogg b/src/audio/blocks/tree3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..61922ae9a57b0abb1249056e9846caca00b0bd2e Binary files /dev/null and b/src/audio/blocks/tree3.ogg differ diff --git a/src/audio/blocks/tree4.ogg b/src/audio/blocks/tree4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f5a02c500713e72ef79f10493b9b07f3a11503f7 Binary files /dev/null and b/src/audio/blocks/tree4.ogg differ diff --git a/src/audio/index.ts b/src/audio/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..3c244a978a57b10ea2f9da6338e2485508943494 --- /dev/null +++ b/src/audio/index.ts @@ -0,0 +1,107 @@ +import * as THREE from 'three' +import hal3 from './musics/hal3.ogg' +import { BlockType } from '../terrain' + +import grass1 from './blocks/grass1.ogg' +import grass2 from './blocks/grass2.ogg' +import grass3 from './blocks/grass3.ogg' +import grass4 from './blocks/grass4.ogg' + +import sand1 from './blocks/sand1.ogg' +import sand2 from './blocks/sand2.ogg' +import sand3 from './blocks/sand3.ogg' +import sand4 from './blocks/sand4.ogg' + +import stone1 from './blocks/stone1.ogg' +import stone2 from './blocks/stone2.ogg' +import stone3 from './blocks/stone3.ogg' +import stone4 from './blocks/stone4.ogg' + +import dirt1 from './blocks/dirt1.ogg' +import dirt2 from './blocks/dirt2.ogg' +import dirt3 from './blocks/dirt3.ogg' +import dirt4 from './blocks/dirt4.ogg' + +import tree1 from './blocks/tree1.ogg' +import tree2 from './blocks/tree2.ogg' +import tree3 from './blocks/tree3.ogg' +import tree4 from './blocks/tree4.ogg' + +import leaf1 from './blocks/leaf1.ogg' +import leaf2 from './blocks/leaf2.ogg' +import leaf3 from './blocks/leaf3.ogg' +import leaf4 from './blocks/leaf4.ogg' +import { isMobile } from '../utils' + +export default class Audio { + constructor(camera: THREE.PerspectiveCamera) { + if (isMobile) return + + const listener = new THREE.AudioListener() + const audioLoader = new THREE.AudioLoader() + camera.add(listener) + + // load bgm + const bgm = new THREE.Audio(listener) + bgm.autoplay = false + audioLoader.load(hal3, buffer => { + bgm.setBuffer(buffer) + bgm.setVolume(0.1) + bgm.setLoop(true) + if (bgm.isPlaying) { + bgm.pause() + bgm.play() + } + }) + + // play / pause bgm + document.addEventListener('pointerlockchange', () => { + if (document.pointerLockElement && !bgm.isPlaying && !this.disabled) { + bgm.play() + } else { + bgm.pause() + } + }) + + // load sound effect + for (const types of this.sourceSet) { + const audios: THREE.Audio[] = [] + for (const type of types) { + audioLoader.load(type, buffer => { + const audio = new THREE.Audio(listener!) + audio.setBuffer(buffer) + audio.setVolume(0.15) + audios.push(audio) + }) + } + this.soundSet.push(audios) + } + } + + disabled = false + + sourceSet = [ + [grass1, grass2, grass3, grass4], + [sand1, sand2, sand3, sand4], + [tree1, tree2, tree3, tree4], + [leaf1, leaf2, leaf3, leaf4], + [dirt1, dirt2, dirt3, dirt4], + [stone1, stone2, stone3, stone4], + [stone1, stone2, stone3, stone4], + [tree1, tree2, tree3, tree4], + [stone1, stone2, stone3, stone4], + [stone1, stone2, stone3, stone4], + [stone1, stone2, stone3, stone4] + ] + + soundSet: THREE.Audio[][] = [] + + index = 0 + + playSound(type: BlockType) { + if (!this.disabled && !isMobile) { + this.index++ === 3 && (this.index = 0) + this.soundSet[type]?.[this.index]?.play() + } + } +} diff --git a/src/audio/musics/calm1.ogg b/src/audio/musics/calm1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e76b31784018041a1a5c91294dc77b30f146fab9 Binary files /dev/null and b/src/audio/musics/calm1.ogg differ diff --git a/src/audio/musics/calm2.ogg b/src/audio/musics/calm2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b02df7b9ba435568c2a9dff5543dc0216d568ecc Binary files /dev/null and b/src/audio/musics/calm2.ogg differ diff --git a/src/audio/musics/calm3.ogg b/src/audio/musics/calm3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a4cfafed0b17ab032e40b741a99f09d71e7018b5 Binary files /dev/null and b/src/audio/musics/calm3.ogg differ diff --git a/src/audio/musics/hal1.ogg b/src/audio/musics/hal1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..bcbe583a48f9253657ce1a49513c445ef0c8a8f8 Binary files /dev/null and b/src/audio/musics/hal1.ogg differ diff --git a/src/audio/musics/hal2.ogg b/src/audio/musics/hal2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3ea6b6f609580abdc3ca27efc46e297a17680f6b Binary files /dev/null and b/src/audio/musics/hal2.ogg differ diff --git a/src/audio/musics/hal3.ogg b/src/audio/musics/hal3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6f8984f770f1b7b805e48808a8b67a716a9c71db Binary files /dev/null and b/src/audio/musics/hal3.ogg differ diff --git a/src/audio/musics/hal4.ogg b/src/audio/musics/hal4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e3f8dbf19a40e575faaa327b743d30d0ad9e4a33 Binary files /dev/null and b/src/audio/musics/hal4.ogg differ diff --git a/src/audio/musics/piano1.ogg b/src/audio/musics/piano1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4c7254959d2596d194ebbebe1cd3d2471a4b7d9a Binary files /dev/null and b/src/audio/musics/piano1.ogg differ diff --git a/src/audio/musics/piano2.ogg b/src/audio/musics/piano2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ce138e726786f20e85ddaf591269f7d5ec89c9e9 Binary files /dev/null and b/src/audio/musics/piano2.ogg differ diff --git a/src/audio/musics/piano3.ogg b/src/audio/musics/piano3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0b919924bad51b55d0b059df73a2e3e8810fa2de Binary files /dev/null and b/src/audio/musics/piano3.ogg differ diff --git a/src/control/index.ts b/src/control/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..036ad8aa0727537267eb0403fe043ce0c06b0a1c --- /dev/null +++ b/src/control/index.ts @@ -0,0 +1,1109 @@ +import * as THREE from 'three' +import { PointerLockControls } from 'three/examples/jsm/controls/PointerLockControls' +import Player, { Mode } from '../player' +import Terrain, { BlockType } from '../terrain' + +import Block from '../terrain/mesh/block' +import Noise from '../terrain/noise' +import Audio from '../audio' +import { isMobile } from '../utils' +enum Side { + front, + back, + left, + right, + down, + up +} + +export default class Control { + constructor( + scene: THREE.Scene, + camera: THREE.PerspectiveCamera, + player: Player, + terrain: Terrain, + audio: Audio + ) { + this.scene = scene + this.camera = camera + this.player = player + this.terrain = terrain + this.control = new PointerLockControls(camera, document.body) + this.audio = audio + + this.raycaster = new THREE.Raycaster() + this.raycaster.far = 8 + this.far = this.player.body.height + + this.initRayCaster() + this.initEventListeners() + } + + // core properties + scene: THREE.Scene + camera: THREE.PerspectiveCamera + player: Player + terrain: Terrain + control: PointerLockControls + audio: Audio + velocity = new THREE.Vector3(0, 0, 0) + + // collide and jump properties + frontCollide = false + backCollide = false + leftCollide = false + rightCollide = false + downCollide = true + upCollide = false + isJumping = false + + raycasterDown = new THREE.Raycaster() + raycasterUp = new THREE.Raycaster() + raycasterFront = new THREE.Raycaster() + raycasterBack = new THREE.Raycaster() + raycasterRight = new THREE.Raycaster() + raycasterLeft = new THREE.Raycaster() + + tempMesh = new THREE.InstancedMesh( + new THREE.BoxGeometry(1, 1, 1), + new THREE.MeshBasicMaterial(), + 100 + ) + tempMeshMatrix = new THREE.InstancedBufferAttribute( + new Float32Array(100 * 16), + 16 + ) + + // other properties + p1 = performance.now() + p2 = performance.now() + raycaster: THREE.Raycaster + far: number + + holdingBlock = BlockType.grass + holdingBlocks = [ + BlockType.grass, + BlockType.stone, + BlockType.tree, + BlockType.wood, + BlockType.diamond, + BlockType.quartz, + BlockType.glass, + BlockType.grass, + BlockType.grass, + BlockType.grass + ] + holdingIndex = 0 + wheelGap = false + clickInterval?: ReturnType + jumpInterval?: ReturnType + mouseHolding = false + spaceHolding = false + + initRayCaster = () => { + this.raycasterUp.ray.direction = new THREE.Vector3(0, 1, 0) + this.raycasterDown.ray.direction = new THREE.Vector3(0, -1, 0) + this.raycasterFront.ray.direction = new THREE.Vector3(1, 0, 0) + this.raycasterBack.ray.direction = new THREE.Vector3(-1, 0, 0) + this.raycasterLeft.ray.direction = new THREE.Vector3(0, 0, -1) + this.raycasterRight.ray.direction = new THREE.Vector3(0, 0, 1) + + this.raycasterUp.far = 1.2 + this.raycasterDown.far = this.player.body.height + this.raycasterFront.far = this.player.body.width + this.raycasterBack.far = this.player.body.width + this.raycasterLeft.far = this.player.body.width + this.raycasterRight.far = this.player.body.width + } + + setMovementHandler = (e: KeyboardEvent) => { + if (e.repeat) { + return + } + + switch (e.key) { + case 'q': + if (this.player.mode === Mode.walking) { + this.player.setMode(Mode.flying) + } else { + this.player.setMode(Mode.walking) + } + this.velocity.y = 0 + this.velocity.x = 0 + this.velocity.z = 0 + break + case 'w': + case 'W': + this.velocity.x += this.player.speed + break + case 's': + case 'S': + this.velocity.x -= this.player.speed + break + case 'a': + case 'A': + this.velocity.z -= this.player.speed + break + case 'd': + case 'D': + this.velocity.z += this.player.speed + break + case ' ': + if (this.player.mode === Mode.walking) { + // jump + if (!this.isJumping) { + this.velocity.y = 8 + this.isJumping = true + this.downCollide = false + this.far = 0 + setTimeout(() => { + this.far = this.player.body.height + }, 300) + } + } else { + this.velocity.y += this.player.speed + } + if (this.player.mode === Mode.walking && !this.spaceHolding) { + this.spaceHolding = true + this.jumpInterval = setInterval(() => { + this.setMovementHandler(e) + }, 10) + } + break + case 'Shift': + if (this.player.mode === Mode.walking) { + } else { + this.velocity.y -= this.player.speed + } + break + default: + break + } + } + + resetMovementHandler = (e: KeyboardEvent) => { + if (e.repeat) { + return + } + + switch (e.key) { + case 'w': + case 'W': + this.velocity.x = 0 + break + case 's': + case 'S': + this.velocity.x = 0 + break + case 'a': + case 'A': + this.velocity.z = 0 + break + case 'd': + case 'D': + this.velocity.z = 0 + break + case ' ': + this.jumpInterval && clearInterval(this.jumpInterval) + this.spaceHolding = false + if (this.player.mode === Mode.walking) { + return + } + this.velocity.y = 0 + break + case 'Shift': + if (this.player.mode === Mode.walking) { + return + } + this.velocity.y = 0 + break + default: + break + } + } + + mousedownHandler = (e: MouseEvent) => { + e.preventDefault() + // let p1 = performance.now() + this.raycaster.setFromCamera({ x: 0, y: 0 }, this.camera) + const block = this.raycaster.intersectObjects(this.terrain.blocks)[0] + const matrix = new THREE.Matrix4() + + switch (e.button) { + // left click to remove block + case 0: + { + if (block && block.object instanceof THREE.InstancedMesh) { + // calculate position + block.object.getMatrixAt(block.instanceId!, matrix) + const position = new THREE.Vector3().setFromMatrixPosition(matrix) + + // don't remove bedrock + if ( + (BlockType[block.object.name as any] as unknown as BlockType) === + BlockType.bedrock + ) { + this.terrain.generateAdjacentBlocks(position) + return + } + + // remove the block + block.object.setMatrixAt( + block.instanceId!, + new THREE.Matrix4().set( + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ) + ) + + // block and sound effect + this.audio.playSound( + BlockType[block.object.name as any] as unknown as BlockType + ) + + const mesh = new THREE.Mesh( + new THREE.BoxGeometry(1, 1, 1), + this.terrain.materials.get( + this.terrain.materialType[ + parseInt(BlockType[block.object.name as any]) + ] + ) + ) + mesh.position.set(position.x, position.y, position.z) + this.scene.add(mesh) + const time = performance.now() + let raf = 0 + const animate = () => { + if (performance.now() - time > 250) { + this.scene.remove(mesh) + cancelAnimationFrame(raf) + return + } + raf = requestAnimationFrame(animate) + mesh.geometry.scale(0.85, 0.85, 0.85) + } + animate() + + // update + block.object.instanceMatrix.needsUpdate = true + + // check existence + let existed = false + for (const customBlock of this.terrain.customBlocks) { + if ( + customBlock.x === position.x && + customBlock.y === position.y && + customBlock.z === position.z + ) { + existed = true + customBlock.placed = false + } + } + + // add to custom blocks when it's not existed + if (!existed) { + this.terrain.customBlocks.push( + new Block( + position.x, + position.y, + position.z, + BlockType[block.object.name as any] as unknown as BlockType, + false + ) + ) + } + + // generate adjacent blocks + this.terrain.generateAdjacentBlocks(position) + } + } + break + + // right click to put block + case 2: + { + if (block && block.object instanceof THREE.InstancedMesh) { + // calculate normal and position + const normal = block.face!.normal + block.object.getMatrixAt(block.instanceId!, matrix) + const position = new THREE.Vector3().setFromMatrixPosition(matrix) + + // return when block overlaps with player + if ( + position.x + normal.x === Math.round(this.camera.position.x) && + position.z + normal.z === Math.round(this.camera.position.z) && + (position.y + normal.y === Math.round(this.camera.position.y) || + position.y + normal.y === + Math.round(this.camera.position.y - 1)) + ) { + return + } + + // put the block + matrix.setPosition( + normal.x + position.x, + normal.y + position.y, + normal.z + position.z + ) + this.terrain.blocks[this.holdingBlock].setMatrixAt( + this.terrain.getCount(this.holdingBlock), + matrix + ) + this.terrain.setCount(this.holdingBlock) + + //sound effect + this.audio.playSound(this.holdingBlock) + + // update + this.terrain.blocks[this.holdingBlock].instanceMatrix.needsUpdate = + true + + // add to custom blocks + this.terrain.customBlocks.push( + new Block( + normal.x + position.x, + normal.y + position.y, + normal.z + position.z, + this.holdingBlock, + true + ) + ) + } + } + break + default: + break + } + + if (!isMobile && !this.mouseHolding) { + this.mouseHolding = true + this.clickInterval = setInterval(() => { + this.mousedownHandler(e) + }, 333) + } + + // console.log(performance.now() - p1) + } + mouseupHandler = () => { + this.clickInterval && clearInterval(this.clickInterval) + this.mouseHolding = false + } + + changeHoldingBlockHandler = (e: KeyboardEvent) => { + if (isNaN(parseInt(e.key)) || e.key === '0') { + return + } + this.holdingIndex = parseInt(e.key) - 1 + + this.holdingBlock = this.holdingBlocks[this.holdingIndex] ?? BlockType.grass + } + + wheelHandler = (e: WheelEvent) => { + if (!this.wheelGap) { + this.wheelGap = true + setTimeout(() => { + this.wheelGap = false + }, 100) + if (e.deltaY > 0) { + this.holdingIndex++ + this.holdingIndex > 9 && (this.holdingIndex = 0) + } else if (e.deltaY < 0) { + this.holdingIndex-- + this.holdingIndex < 0 && (this.holdingIndex = 9) + } + this.holdingBlock = + this.holdingBlocks[this.holdingIndex] ?? BlockType.grass + } + } + + initEventListeners = () => { + // add / remove handler when pointer lock / unlock + document.addEventListener('pointerlockchange', () => { + if (document.pointerLockElement) { + document.body.addEventListener( + 'keydown', + this.changeHoldingBlockHandler + ) + document.body.addEventListener('wheel', this.wheelHandler) + document.body.addEventListener('keydown', this.setMovementHandler) + document.body.addEventListener('keyup', this.resetMovementHandler) + document.body.addEventListener('mousedown', this.mousedownHandler) + document.body.addEventListener('mouseup', this.mouseupHandler) + } else { + document.body.removeEventListener( + 'keydown', + this.changeHoldingBlockHandler + ) + document.body.removeEventListener('wheel', this.wheelHandler) + document.body.removeEventListener('keydown', this.setMovementHandler) + document.body.removeEventListener('keyup', this.resetMovementHandler) + document.body.removeEventListener('mousedown', this.mousedownHandler) + document.body.removeEventListener('mouseup', this.mouseupHandler) + this.velocity = new THREE.Vector3(0, 0, 0) + } + }) + } + + // move along X with direction factor + moveX(distance: number, delta: number) { + this.camera.position.x += + distance * (this.player.speed / Math.PI) * 2 * delta + } + + // move along Z with direction factor + moveZ = (distance: number, delta: number) => { + this.camera.position.z += + distance * (this.player.speed / Math.PI) * 2 * delta + } + + // collide checking + collideCheckAll = ( + position: THREE.Vector3, + noise: Noise, + customBlocks: Block[], + far: number + ) => { + this.collideCheck(Side.down, position, noise, customBlocks, far) + this.collideCheck(Side.front, position, noise, customBlocks) + this.collideCheck(Side.back, position, noise, customBlocks) + this.collideCheck(Side.left, position, noise, customBlocks) + this.collideCheck(Side.right, position, noise, customBlocks) + this.collideCheck(Side.up, position, noise, customBlocks) + } + + collideCheck = ( + side: Side, + position: THREE.Vector3, + noise: Noise, + customBlocks: Block[], + far: number = this.player.body.width + ) => { + const matrix = new THREE.Matrix4() + + //reset simulation blocks + let index = 0 + this.tempMesh.instanceMatrix = new THREE.InstancedBufferAttribute( + new Float32Array(100 * 16), + 16 + ) + + // block to remove + let removed = false + let treeRemoved = new Array( + this.terrain.noise.treeHeight + 1 + ).fill(false) + + // get block position + let x = Math.round(position.x) + let z = Math.round(position.z) + + switch (side) { + case Side.front: + x++ + this.raycasterFront.ray.origin = position + break + case Side.back: + x-- + this.raycasterBack.ray.origin = position + break + case Side.left: + z-- + this.raycasterLeft.ray.origin = position + break + case Side.right: + z++ + this.raycasterRight.ray.origin = position + break + case Side.down: + this.raycasterDown.ray.origin = position + this.raycasterDown.far = far + break + case Side.up: + this.raycasterUp.ray.origin = new THREE.Vector3().copy(position) + this.raycasterUp.ray.origin.y-- + break + } + + let y = + Math.floor( + noise.get(x / noise.gap, z / noise.gap, noise.seed) * noise.amp + ) + 30 + + // check custom blocks + for (const block of customBlocks) { + if (block.x === x && block.z === z) { + if (block.placed) { + // placed blocks + matrix.setPosition(block.x, block.y, block.z) + this.tempMesh.setMatrixAt(index++, matrix) + } else if (block.y === y) { + // removed blocks + removed = true + } else { + for (let i = 1; i <= this.terrain.noise.treeHeight; i++) { + if (block.y === y + i) { + treeRemoved[i] = true + } + } + } + } + } + + // update simulation blocks (ignore removed blocks) + if (!removed) { + matrix.setPosition(x, y, z) + this.tempMesh.setMatrixAt(index++, matrix) + } + for (let i = 1; i <= this.terrain.noise.treeHeight; i++) { + if (!treeRemoved[i]) { + let treeOffset = + noise.get(x / noise.treeGap, z / noise.treeGap, noise.treeSeed) * + noise.treeAmp + + let stoneOffset = + noise.get(x / noise.stoneGap, z / noise.stoneGap, noise.stoneSeed) * + noise.stoneAmp + + if ( + treeOffset > noise.treeThreshold && + y >= 27 && + stoneOffset < noise.stoneThreshold + ) { + matrix.setPosition(x, y + i, z) + this.tempMesh.setMatrixAt(index++, matrix) + } + } + } + + this.tempMesh.instanceMatrix.needsUpdate = true + + // update collide + const origin = new THREE.Vector3(position.x, position.y - 1, position.z) + switch (side) { + case Side.front: { + const c1 = this.raycasterFront.intersectObject(this.tempMesh).length + this.raycasterFront.ray.origin = origin + const c2 = this.raycasterFront.intersectObject(this.tempMesh).length + c1 || c2 ? (this.frontCollide = true) : (this.frontCollide = false) + + break + } + case Side.back: { + const c1 = this.raycasterBack.intersectObject(this.tempMesh).length + this.raycasterBack.ray.origin = origin + const c2 = this.raycasterBack.intersectObject(this.tempMesh).length + c1 || c2 ? (this.backCollide = true) : (this.backCollide = false) + break + } + case Side.left: { + const c1 = this.raycasterLeft.intersectObject(this.tempMesh).length + this.raycasterLeft.ray.origin = origin + const c2 = this.raycasterLeft.intersectObject(this.tempMesh).length + c1 || c2 ? (this.leftCollide = true) : (this.leftCollide = false) + break + } + case Side.right: { + const c1 = this.raycasterRight.intersectObject(this.tempMesh).length + this.raycasterRight.ray.origin = origin + const c2 = this.raycasterRight.intersectObject(this.tempMesh).length + c1 || c2 ? (this.rightCollide = true) : (this.rightCollide = false) + break + } + case Side.down: { + const c1 = this.raycasterDown.intersectObject(this.tempMesh).length + c1 ? (this.downCollide = true) : (this.downCollide = false) + break + } + case Side.up: { + const c1 = this.raycasterUp.intersectObject(this.tempMesh).length + c1 ? (this.upCollide = true) : (this.upCollide = false) + break + } + } + } + + update = () => { + this.p1 = performance.now() + const delta = (this.p1 - this.p2) / 1000 + if ( + // dev mode + this.player.mode === Mode.flying + ) { + this.control.moveForward(this.velocity.x * delta) + this.control.moveRight(this.velocity.z * delta) + this.camera.position.y += this.velocity.y * delta + } else { + // normal mode + this.collideCheckAll( + this.camera.position, + this.terrain.noise, + this.terrain.customBlocks, + this.far - this.velocity.y * delta + ) + + // gravity + if (Math.abs(this.velocity.y) < this.player.falling) { + this.velocity.y -= 25 * delta + } + + // up collide handler + if (this.upCollide) { + this.velocity.y = -225 * delta + this.far = this.player.body.height + } + + // down collide and jump handler + if (this.downCollide && !this.isJumping) { + this.velocity.y = 0 + } else if (this.downCollide && this.isJumping) { + this.isJumping = false + } + + // side collide handler + let vector = new THREE.Vector3(0, 0, -1).applyQuaternion( + this.camera.quaternion + ) + let direction = Math.atan2(vector.x, vector.z) + if ( + this.frontCollide || + this.backCollide || + this.leftCollide || + this.rightCollide + ) { + // collide front (positive x) + if (this.frontCollide) { + // camera front + if (direction < Math.PI && direction > 0 && this.velocity.x > 0) { + if ( + (!this.leftCollide && direction > Math.PI / 2) || + (!this.rightCollide && direction < Math.PI / 2) + ) { + this.moveZ(Math.PI / 2 - direction, delta) + } + } else if ( + !this.leftCollide && + !this.rightCollide && + this.velocity.x > 0 + ) { + this.control.moveForward(this.velocity.x * delta) + } + + // camera back + if (direction < 0 && direction > -Math.PI && this.velocity.x < 0) { + if ( + (!this.leftCollide && direction > -Math.PI / 2) || + (!this.rightCollide && direction < -Math.PI / 2) + ) { + this.moveZ(-Math.PI / 2 - direction, delta) + } + } else if ( + !this.leftCollide && + !this.rightCollide && + this.velocity.x < 0 + ) { + this.control.moveForward(this.velocity.x * delta) + } + + // camera left + if ( + direction < Math.PI / 2 && + direction > -Math.PI / 2 && + this.velocity.z < 0 + ) { + if ( + (!this.rightCollide && direction < 0) || + (!this.leftCollide && direction > 0) + ) { + this.moveZ(-direction, delta) + } + } else if ( + !this.leftCollide && + !this.rightCollide && + this.velocity.z < 0 + ) { + this.control.moveRight(this.velocity.z * delta) + } + + // camera right + if ( + (direction < -Math.PI / 2 || direction > Math.PI / 2) && + this.velocity.z > 0 + ) { + if (!this.rightCollide && direction > 0) { + this.moveZ(Math.PI - direction, delta) + } + if (!this.leftCollide && direction < 0) { + this.moveZ(-Math.PI - direction, delta) + } + } else if ( + !this.leftCollide && + !this.rightCollide && + this.velocity.z > 0 + ) { + this.control.moveRight(this.velocity.z * delta) + } + } + + // collide back (negative x) + if (this.backCollide) { + // camera front + if (direction < 0 && direction > -Math.PI && this.velocity.x > 0) { + if ( + (!this.leftCollide && direction < -Math.PI / 2) || + (!this.rightCollide && direction > -Math.PI / 2) + ) { + this.moveZ(Math.PI / 2 + direction, delta) + } + } else if ( + !this.leftCollide && + !this.rightCollide && + this.velocity.x > 0 + ) { + this.control.moveForward(this.velocity.x * delta) + } + + // camera back + if (direction < Math.PI && direction > 0 && this.velocity.x < 0) { + if ( + (!this.leftCollide && direction < Math.PI / 2) || + (!this.rightCollide && direction > Math.PI / 2) + ) { + this.moveZ(direction - Math.PI / 2, delta) + } + } else if ( + !this.leftCollide && + !this.rightCollide && + this.velocity.x < 0 + ) { + this.control.moveForward(this.velocity.x * delta) + } + + // camera left + if ( + (direction < -Math.PI / 2 || direction > Math.PI / 2) && + this.velocity.z < 0 + ) { + if (!this.leftCollide && direction > 0) { + this.moveZ(-Math.PI + direction, delta) + } + if (!this.rightCollide && direction < 0) { + this.moveZ(Math.PI + direction, delta) + } + } else if ( + !this.leftCollide && + !this.rightCollide && + this.velocity.z < 0 + ) { + this.control.moveRight(this.velocity.z * delta) + } + + // camera right + if ( + direction < Math.PI / 2 && + direction > -Math.PI / 2 && + this.velocity.z > 0 + ) { + if ( + (!this.leftCollide && direction < 0) || + (!this.rightCollide && direction > 0) + ) { + this.moveZ(direction, delta) + } + } else if ( + !this.leftCollide && + !this.rightCollide && + this.velocity.z > 0 + ) { + this.control.moveRight(this.velocity.z * delta) + } + } + + // collide left (negative z) + if (this.leftCollide) { + // camera front + if ( + (direction < -Math.PI / 2 || direction > Math.PI / 2) && + this.velocity.x > 0 + ) { + if (!this.frontCollide && direction > 0) { + this.moveX(Math.PI - direction, delta) + } + if (!this.backCollide && direction < 0) { + this.moveX(-Math.PI - direction, delta) + } + } else if ( + !this.frontCollide && + !this.backCollide && + this.velocity.x > 0 + ) { + this.control.moveForward(this.velocity.x * delta) + } else if ( + this.frontCollide && + direction < 0 && + direction > -Math.PI / 2 && + this.velocity.x > 0 + ) { + this.control.moveForward(this.velocity.x * delta) + } else if ( + this.backCollide && + direction < Math.PI / 2 && + direction > 0 && + this.velocity.x > 0 + ) { + this.control.moveForward(this.velocity.x * delta) + } + + // camera back + if ( + direction < Math.PI / 2 && + direction > -Math.PI / 2 && + this.velocity.x < 0 + ) { + if ( + (!this.frontCollide && direction < 0) || + (!this.backCollide && direction > 0) + ) { + this.moveX(-direction, delta) + } + } else if ( + !this.frontCollide && + !this.backCollide && + this.velocity.x < 0 + ) { + this.control.moveForward(this.velocity.x * delta) + } else if ( + this.frontCollide && + direction < Math.PI && + direction > Math.PI / 2 && + this.velocity.x < 0 + ) { + this.control.moveForward(this.velocity.x * delta) + } else if ( + this.backCollide && + direction > -Math.PI && + direction < -Math.PI / 2 && + this.velocity.x < 0 + ) { + this.control.moveForward(this.velocity.x * delta) + } + + // camera left + if (direction > 0 && direction < Math.PI && this.velocity.z < 0) { + if ( + (!this.backCollide && direction > Math.PI / 2) || + (!this.frontCollide && direction < Math.PI / 2) + ) { + this.moveX(Math.PI / 2 - direction, delta) + } + } else if ( + !this.frontCollide && + !this.backCollide && + this.velocity.z < 0 + ) { + this.control.moveRight(this.velocity.z * delta) + } else if ( + this.frontCollide && + direction > -Math.PI && + direction < -Math.PI / 2 && + this.velocity.z < 0 + ) { + this.control.moveRight(this.velocity.z * delta) + } else if ( + this.backCollide && + direction > -Math.PI / 2 && + direction < 0 && + this.velocity.z < 0 + ) { + this.control.moveRight(this.velocity.z * delta) + } + + // camera right + if (direction < 0 && direction > -Math.PI && this.velocity.z > 0) { + if ( + (!this.backCollide && direction > -Math.PI / 2) || + (!this.frontCollide && direction < -Math.PI / 2) + ) { + this.moveX(-Math.PI / 2 - direction, delta) + } + } else if ( + !this.frontCollide && + !this.backCollide && + this.velocity.z > 0 + ) { + this.control.moveRight(this.velocity.z * delta) + } else if ( + this.frontCollide && + direction < Math.PI / 2 && + direction > 0 && + this.velocity.z > 0 + ) { + this.control.moveRight(this.velocity.z * delta) + } else if ( + this.backCollide && + direction < Math.PI && + direction > Math.PI / 2 && + this.velocity.z > 0 + ) { + this.control.moveRight(this.velocity.z * delta) + } + } + + // collide right (positive z) + if (this.rightCollide) { + // camera front + if ( + direction < Math.PI / 2 && + direction > -Math.PI / 2 && + this.velocity.x > 0 + ) { + if ( + (!this.backCollide && direction < 0) || + (!this.frontCollide && direction > 0) + ) { + this.moveX(direction, delta) + } + } else if ( + !this.frontCollide && + !this.backCollide && + this.velocity.x > 0 + ) { + this.control.moveForward(this.velocity.x * delta) + } else if ( + this.frontCollide && + direction < -Math.PI / 2 && + direction > -Math.PI && + this.velocity.x > 0 + ) { + this.control.moveForward(this.velocity.x * delta) + } else if ( + this.backCollide && + direction < Math.PI && + direction > Math.PI / 2 && + this.velocity.x > 0 + ) { + this.control.moveForward(this.velocity.x * delta) + } + + // camera back + if ( + (direction < -Math.PI / 2 || direction > Math.PI / 2) && + this.velocity.x < 0 + ) { + if (!this.backCollide && direction > 0) { + this.moveX(-Math.PI + direction, delta) + } + if (!this.frontCollide && direction < 0) { + this.moveX(Math.PI + direction, delta) + } + } else if ( + !this.frontCollide && + !this.backCollide && + this.velocity.x < 0 + ) { + this.control.moveForward(this.velocity.x * delta) + } else if ( + this.frontCollide && + direction < Math.PI / 2 && + direction > 0 && + this.velocity.x < 0 + ) { + this.control.moveForward(this.velocity.x * delta) + } else if ( + this.backCollide && + direction < 0 && + direction > -Math.PI / 2 && + this.velocity.x < 0 + ) { + this.control.moveForward(this.velocity.x * delta) + } + + // camera left + if (direction < 0 && direction > -Math.PI && this.velocity.z < 0) { + if ( + (!this.frontCollide && direction > -Math.PI / 2) || + (!this.backCollide && direction < -Math.PI / 2) + ) { + this.moveX(Math.PI / 2 + direction, delta) + } + } else if ( + !this.frontCollide && + !this.backCollide && + this.velocity.z < 0 + ) { + this.control.moveRight(this.velocity.z * delta) + } else if ( + this.frontCollide && + direction > Math.PI / 2 && + direction < Math.PI && + this.velocity.z < 0 + ) { + this.control.moveRight(this.velocity.z * delta) + } else if ( + this.backCollide && + direction > 0 && + direction < Math.PI / 2 && + this.velocity.z < 0 + ) { + this.control.moveRight(this.velocity.z * delta) + } + + // camera right + if (direction > 0 && direction < Math.PI && this.velocity.z > 0) { + if ( + (!this.frontCollide && direction > Math.PI / 2) || + (!this.backCollide && direction < Math.PI / 2) + ) { + this.moveX(direction - Math.PI / 2, delta) + } + } else if ( + !this.frontCollide && + !this.backCollide && + this.velocity.z > 0 + ) { + this.control.moveRight(this.velocity.z * delta) + } else if ( + this.frontCollide && + direction > -Math.PI / 2 && + direction < 0 && + this.velocity.z > 0 + ) { + this.control.moveRight(this.velocity.z * delta) + } else if ( + this.backCollide && + direction > -Math.PI && + direction < -Math.PI / 2 && + this.velocity.z > 0 + ) { + this.control.moveRight(this.velocity.z * delta) + } + } + } else { + // no collide + this.control.moveForward(this.velocity.x * delta) + this.control.moveRight(this.velocity.z * delta) + } + + this.camera.position.y += this.velocity.y * delta + + // catching net + if (this.camera.position.y < -100) { + this.camera.position.y = 60 + } + } + this.p2 = this.p1 + } +} diff --git a/src/control/worker/downCollide.ts b/src/control/worker/downCollide.ts new file mode 100644 index 0000000000000000000000000000000000000000..895e23ed11e6ddbcf30d4e15786f70eb7ed29dad --- /dev/null +++ b/src/control/worker/downCollide.ts @@ -0,0 +1,74 @@ +//legacy + +import * as THREE from 'three' +import Block from '../../terrain/mesh/block' +import { ImprovedNoise } from 'three/examples/jsm/math/ImprovedNoise' + +const noise = new ImprovedNoise() +const raycaster = new THREE.Raycaster( + new THREE.Vector3(), + new THREE.Vector3(0, -1, 0), + 0, + 1.8 +) + +onmessage = ( + msg: MessageEvent<{ + position: THREE.Vector3 + far: number + blocks: Block[] + seed: number + noiseGap: number + noiseAmp: number + }> +) => { + raycaster.ray.origin = new THREE.Vector3( + msg.data.position.x, + msg.data.position.y, + msg.data.position.z + ) + raycaster.far = msg.data.far + + let index = 0 + const mesh = new THREE.InstancedMesh( + new THREE.BoxGeometry(1, 1, 1), + new THREE.MeshBasicMaterial(), + 100 + ) + const matrix = new THREE.Matrix4() + + let x = Math.round(msg.data.position.x) + let z = Math.round(msg.data.position.z) + let y = + Math.floor( + noise.noise(x / msg.data.noiseGap, z / msg.data.noiseGap, msg.data.seed) * + msg.data.noiseAmp + ) + 30 + let removed = false + + for (const block of msg.data.blocks) { + if ( + block.x === Math.round(msg.data.position.x) && + block.z === Math.round(msg.data.position.z) + ) { + if (block.placed) { + matrix.setPosition(new THREE.Vector3(block.x, block.y, block.z)) + mesh.setMatrixAt(index++, matrix) + } else if (block.y === y) { + removed = true + } + } + } + + if (!removed) { + matrix.setPosition(new THREE.Vector3(x, y, z)) + mesh.setMatrixAt(index++, matrix) + } + + mesh.instanceMatrix.needsUpdate = true + if (raycaster.intersectObject(mesh).length) { + postMessage(true) + } else { + postMessage(false) + } +} diff --git a/src/control/worker/sideCollide.ts b/src/control/worker/sideCollide.ts new file mode 100644 index 0000000000000000000000000000000000000000..636a874d6d2f3afdf5ef2c48ae478149e9956d6b --- /dev/null +++ b/src/control/worker/sideCollide.ts @@ -0,0 +1,39 @@ +//legacy + +import * as THREE from 'three' + +onmessage = ( + msg: MessageEvent<{ + count: number + matrices: THREE.InstancedBufferAttribute[] + position: THREE.Vector3 + }> +) => { + let meshes = [] + + let raycaster = new THREE.Raycaster( + new THREE.Vector3( + msg.data.position.x, + msg.data.position.y - 1, + msg.data.position.z + ), + new THREE.Vector3(1, 0, 0), + 0, + 0.6 + ) + + for (let matrix of msg.data.matrices) { + let mesh = new THREE.InstancedMesh( + new THREE.BoxGeometry(1, 1, 1), + new THREE.MeshBasicMaterial(), + msg.data.count + ) + mesh.instanceMatrix = matrix + meshes.push(mesh) + } + if (raycaster.intersectObjects(meshes).length) { + postMessage(true) + } else { + postMessage(false) + } +} diff --git a/src/core/index.ts b/src/core/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..33a0508fdca4fa3638f31354f931418d1994aa1f --- /dev/null +++ b/src/core/index.ts @@ -0,0 +1,60 @@ +import * as THREE from 'three' + +export default class Core { + constructor() { + this.camera = new THREE.PerspectiveCamera() + this.renderer = new THREE.WebGLRenderer() + this.scene = new THREE.Scene() + this.initScene() + this.initRenderer() + this.initCamera() + } + + camera: THREE.PerspectiveCamera + scene: THREE.Scene + renderer: THREE.Renderer + + initCamera = () => { + this.camera.fov = 50 + this.camera.aspect = window.innerWidth / window.innerHeight + this.camera.near = 0.01 + this.camera.far = 500 + this.camera.updateProjectionMatrix() + this.camera.position.set(8, 50, 8) + + this.camera.lookAt(100, 30, 100) + + window.addEventListener('resize', () => { + this.camera.aspect = window.innerWidth / window.innerHeight + this.camera.updateProjectionMatrix() + }) + } + + initScene = () => { + this.scene = new THREE.Scene() + const backgroundColor = 0x87ceeb + + this.scene.fog = new THREE.Fog(backgroundColor, 1, 96) + this.scene.background = new THREE.Color(backgroundColor) + + const sunLight = new THREE.PointLight(0xffffff, 0.5) + sunLight.position.set(500, 500, 500) + this.scene.add(sunLight) + + const sunLight2 = new THREE.PointLight(0xffffff, 0.2) + sunLight2.position.set(-500, 500, -500) + this.scene.add(sunLight2) + + const reflectionLight = new THREE.AmbientLight(0x404040) + this.scene.add(reflectionLight) + } + + initRenderer = () => { + this.renderer.setSize(window.innerWidth, window.innerHeight) + document.body.appendChild(this.renderer.domElement) + + window.addEventListener('resize', () => { + this.renderer.setSize(window.innerWidth, window.innerHeight) + }) + } +} diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000000000000000000000000000000000000..e84212863493faf3feb5e0c4ffbea7a2f39eee14 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,34 @@ +import Core from './core' +import Control from './control' +import Player from './player' +import Terrain from './terrain' +import UI from './ui' +import Audio from './audio' + +import './style.css' + +const core = new Core() +const camera = core.camera +const scene = core.scene +const renderer = core.renderer + +const player = new Player() +const audio = new Audio(camera) + +const terrain = new Terrain(scene, camera) +const control = new Control(scene, camera, player, terrain, audio) + +const ui = new UI(terrain, control) + +// animation +;(function animate() { + // let p1 = performance.now() + requestAnimationFrame(animate) + + control.update() + terrain.update() + ui.update() + + renderer.render(scene, camera) + // console.log(performance.now()-p1) +})() diff --git a/src/player/index.ts b/src/player/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..769346f93cb72fb4fe07eb76d4f55f4ff0e1d855 --- /dev/null +++ b/src/player/index.ts @@ -0,0 +1,34 @@ +export enum Mode { + walking = 'walking', + sprinting = 'sprinting', + flying = 'flying', + sprintFlying = 'sprintFlying', + sneaking = 'sneaking' +} + +export enum Speed { + // walking = 4.317, + walking = 5.612, + sprinting = 5.612, + // flying = 10.89, + flying = 21.78, + sprintFlying = 21.78, + sneaking = 1.95 +} +export default class Player { + mode = Mode.walking + speed = Speed[this.mode] + + setMode(Mode: Mode) { + this.mode = Mode + this.speed = Speed[this.mode] + } + falling = 38.4 + + jump = 1.2522 + + body = { + height: 1.8, + width: 0.5 + } +} diff --git a/src/static/block-icon/diamond.png b/src/static/block-icon/diamond.png new file mode 100644 index 0000000000000000000000000000000000000000..302f2fbbc92519918b094a1591c3d35d8e23a664 Binary files /dev/null and b/src/static/block-icon/diamond.png differ diff --git a/src/static/block-icon/glass.png b/src/static/block-icon/glass.png new file mode 100644 index 0000000000000000000000000000000000000000..458d306bfeb4b2a47b45b3a2aaa7a1a1f655f853 Binary files /dev/null and b/src/static/block-icon/glass.png differ diff --git a/src/static/block-icon/grass.png b/src/static/block-icon/grass.png new file mode 100644 index 0000000000000000000000000000000000000000..e80fc85dba008956d92601c86cf898207f24e5db Binary files /dev/null and b/src/static/block-icon/grass.png differ diff --git a/src/static/block-icon/quartz.png b/src/static/block-icon/quartz.png new file mode 100644 index 0000000000000000000000000000000000000000..d807c6428b6a4e124336f87d4e4e9c85c65638d4 Binary files /dev/null and b/src/static/block-icon/quartz.png differ diff --git a/src/static/block-icon/stone.png b/src/static/block-icon/stone.png new file mode 100644 index 0000000000000000000000000000000000000000..9a7400317653704fcc0443c7f0a4ca9b4f0eab9b Binary files /dev/null and b/src/static/block-icon/stone.png differ diff --git a/src/static/block-icon/tree.png b/src/static/block-icon/tree.png new file mode 100644 index 0000000000000000000000000000000000000000..ba0534fb2f0527dee27307267b863a8b421bab18 Binary files /dev/null and b/src/static/block-icon/tree.png differ diff --git a/src/static/block-icon/wood.png b/src/static/block-icon/wood.png new file mode 100644 index 0000000000000000000000000000000000000000..96862b2614a48395c26133c16156206f18da7fc4 Binary files /dev/null and b/src/static/block-icon/wood.png differ diff --git a/src/static/github.svg b/src/static/github.svg new file mode 100644 index 0000000000000000000000000000000000000000..5a3abf8b070b8c786a109a5a67b7addaab77d312 --- /dev/null +++ b/src/static/github.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/static/mc-font-zh.ttf b/src/static/mc-font-zh.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bc4153722df1c14cca6b620bb7eb132b54b0db8d Binary files /dev/null and b/src/static/mc-font-zh.ttf differ diff --git a/src/static/mc-font.otf b/src/static/mc-font.otf new file mode 100644 index 0000000000000000000000000000000000000000..54f08ad42ae2c7e9eb4d46c7b621544e32cfc9a2 Binary files /dev/null and b/src/static/mc-font.otf differ diff --git a/src/static/mc.ico b/src/static/mc.ico new file mode 100644 index 0000000000000000000000000000000000000000..ecc93ff12b32772e61b54ddd3be456cea8d47442 Binary files /dev/null and b/src/static/mc.ico differ diff --git a/src/static/menu.jpeg b/src/static/menu.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..933fe734bb45a8160e67ae04c78a536b96f4ae31 Binary files /dev/null and b/src/static/menu.jpeg differ diff --git a/src/static/textures/block/acacia_door_bottom.png b/src/static/textures/block/acacia_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..53979a2efde3d9dbe4d01a19756b474e802b26f3 Binary files /dev/null and b/src/static/textures/block/acacia_door_bottom.png differ diff --git a/src/static/textures/block/acacia_door_top.png b/src/static/textures/block/acacia_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..4b634d6f905da2b8a3c0cb23794c436529afcfd7 Binary files /dev/null and b/src/static/textures/block/acacia_door_top.png differ diff --git a/src/static/textures/block/acacia_leaves.png b/src/static/textures/block/acacia_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..d5c90f2f274d01f6aea698e60b88292e4e911b7a Binary files /dev/null and b/src/static/textures/block/acacia_leaves.png differ diff --git a/src/static/textures/block/acacia_log.png b/src/static/textures/block/acacia_log.png new file mode 100644 index 0000000000000000000000000000000000000000..3c58949b5c5dd765e38f212e04a306b056bf250e Binary files /dev/null and b/src/static/textures/block/acacia_log.png differ diff --git a/src/static/textures/block/acacia_log_top.png b/src/static/textures/block/acacia_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..4e5c675a5ba9a68b269b8d5f0c236d8ef742374f Binary files /dev/null and b/src/static/textures/block/acacia_log_top.png differ diff --git a/src/static/textures/block/acacia_planks.png b/src/static/textures/block/acacia_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..c24d4c1b816269d87381e560ab4a5bb71de07d9b Binary files /dev/null and b/src/static/textures/block/acacia_planks.png differ diff --git a/src/static/textures/block/acacia_sapling.png b/src/static/textures/block/acacia_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..6817397cb4f451cbd06656c1a97b45b050fd32dd Binary files /dev/null and b/src/static/textures/block/acacia_sapling.png differ diff --git a/src/static/textures/block/activator_rail.png b/src/static/textures/block/activator_rail.png new file mode 100644 index 0000000000000000000000000000000000000000..721f3f5f03408103dd06ba79eb4af7680adb9f2e Binary files /dev/null and b/src/static/textures/block/activator_rail.png differ diff --git a/src/static/textures/block/activator_rail_on.png b/src/static/textures/block/activator_rail_on.png new file mode 100644 index 0000000000000000000000000000000000000000..59844b0c2ab870ff82b049c1054d0f97839a79a0 Binary files /dev/null and b/src/static/textures/block/activator_rail_on.png differ diff --git a/src/static/textures/block/allium.png b/src/static/textures/block/allium.png new file mode 100644 index 0000000000000000000000000000000000000000..118d8fd2839c10ba5b58cbe38a6c4e268bd2cd95 Binary files /dev/null and b/src/static/textures/block/allium.png differ diff --git a/src/static/textures/block/andesite.png b/src/static/textures/block/andesite.png new file mode 100644 index 0000000000000000000000000000000000000000..830e2a81effb2f4e0f1395130e3417838a0bd76c Binary files /dev/null and b/src/static/textures/block/andesite.png differ diff --git a/src/static/textures/block/anvil.png b/src/static/textures/block/anvil.png new file mode 100644 index 0000000000000000000000000000000000000000..732038ec7781db0cafd1d1e64b4e0c44905eac34 Binary files /dev/null and b/src/static/textures/block/anvil.png differ diff --git a/src/static/textures/block/anvil_top.png b/src/static/textures/block/anvil_top.png new file mode 100644 index 0000000000000000000000000000000000000000..f1f6bf71355058641506fee1d3466b9237dd9109 Binary files /dev/null and b/src/static/textures/block/anvil_top.png differ diff --git a/src/static/textures/block/attached_melon_stem.png b/src/static/textures/block/attached_melon_stem.png new file mode 100644 index 0000000000000000000000000000000000000000..62ad943a8c3012bee3a33130f2564794d4fa3872 Binary files /dev/null and b/src/static/textures/block/attached_melon_stem.png differ diff --git a/src/static/textures/block/azure_bluet.png b/src/static/textures/block/azure_bluet.png new file mode 100644 index 0000000000000000000000000000000000000000..40a346dbe38975ff6252eda28c77a61a5b8911d3 Binary files /dev/null and b/src/static/textures/block/azure_bluet.png differ diff --git a/src/static/textures/block/beacon.png b/src/static/textures/block/beacon.png new file mode 100644 index 0000000000000000000000000000000000000000..11468850245e0a1226c9aca1358c06c7d1e70206 Binary files /dev/null and b/src/static/textures/block/beacon.png differ diff --git a/src/static/textures/block/bedrock.png b/src/static/textures/block/bedrock.png new file mode 100644 index 0000000000000000000000000000000000000000..3192fc763524cdd7daa2df0b4eb6ce37a1723628 Binary files /dev/null and b/src/static/textures/block/bedrock.png differ diff --git a/src/static/textures/block/beetroots_stage0.png b/src/static/textures/block/beetroots_stage0.png new file mode 100644 index 0000000000000000000000000000000000000000..af583d8b991491930020c209fd251f00083c19e2 Binary files /dev/null and b/src/static/textures/block/beetroots_stage0.png differ diff --git a/src/static/textures/block/beetroots_stage1.png b/src/static/textures/block/beetroots_stage1.png new file mode 100644 index 0000000000000000000000000000000000000000..4c09ec667bba8c015b31bbd47643e38a7c3631af Binary files /dev/null and b/src/static/textures/block/beetroots_stage1.png differ diff --git a/src/static/textures/block/beetroots_stage2.png b/src/static/textures/block/beetroots_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..426b2af6f0658314c0e315d3e4227908a3ebdd81 Binary files /dev/null and b/src/static/textures/block/beetroots_stage2.png differ diff --git a/src/static/textures/block/beetroots_stage3.png b/src/static/textures/block/beetroots_stage3.png new file mode 100644 index 0000000000000000000000000000000000000000..125dabb356821fd6d6948c3cb0a1a99c0cbde56c Binary files /dev/null and b/src/static/textures/block/beetroots_stage3.png differ diff --git a/src/static/textures/block/birch_door_bottom.png b/src/static/textures/block/birch_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..b29d01ad68e1b79d8fe3c606a6cefda3a12a4969 Binary files /dev/null and b/src/static/textures/block/birch_door_bottom.png differ diff --git a/src/static/textures/block/birch_door_top.png b/src/static/textures/block/birch_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..2e0e6afdee583dab0877df8d729f57c78936c0ab Binary files /dev/null and b/src/static/textures/block/birch_door_top.png differ diff --git a/src/static/textures/block/birch_leaves.png b/src/static/textures/block/birch_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..ce7b162798b14d492e9e25ca937c5a92967bf646 Binary files /dev/null and b/src/static/textures/block/birch_leaves.png differ diff --git a/src/static/textures/block/birch_log.png b/src/static/textures/block/birch_log.png new file mode 100644 index 0000000000000000000000000000000000000000..6496565213e482e5a000f564bc35079794cca02b Binary files /dev/null and b/src/static/textures/block/birch_log.png differ diff --git a/src/static/textures/block/birch_log_top.png b/src/static/textures/block/birch_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..174b337c88c23e9cb71ba35251f67cc104cdfe34 Binary files /dev/null and b/src/static/textures/block/birch_log_top.png differ diff --git a/src/static/textures/block/birch_planks.png b/src/static/textures/block/birch_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..8c75067da21c459c538c8753ee0941166b761c26 Binary files /dev/null and b/src/static/textures/block/birch_planks.png differ diff --git a/src/static/textures/block/birch_sapling.png b/src/static/textures/block/birch_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..d33b34ca8371f2c9a14c8aba4ef4384f0eda7afb Binary files /dev/null and b/src/static/textures/block/birch_sapling.png differ diff --git a/src/static/textures/block/blue_orchid.png b/src/static/textures/block/blue_orchid.png new file mode 100644 index 0000000000000000000000000000000000000000..5889e1b94c0a2fc2b5eaceb67204e61841f45a5f Binary files /dev/null and b/src/static/textures/block/blue_orchid.png differ diff --git a/src/static/textures/block/bone_block_side.png b/src/static/textures/block/bone_block_side.png new file mode 100644 index 0000000000000000000000000000000000000000..6f1a1618e3b96634dd8df319c1c895d7d37de791 Binary files /dev/null and b/src/static/textures/block/bone_block_side.png differ diff --git a/src/static/textures/block/bone_block_top.png b/src/static/textures/block/bone_block_top.png new file mode 100644 index 0000000000000000000000000000000000000000..72e642ef11586639ea3dc35872bf463cdb54f1f4 Binary files /dev/null and b/src/static/textures/block/bone_block_top.png differ diff --git a/src/static/textures/block/bookshelf.png b/src/static/textures/block/bookshelf.png new file mode 100644 index 0000000000000000000000000000000000000000..4a2c24d40d0d9db813ee0bfb52ecc1d13a867923 Binary files /dev/null and b/src/static/textures/block/bookshelf.png differ diff --git a/src/static/textures/block/brewing_stand.png b/src/static/textures/block/brewing_stand.png new file mode 100644 index 0000000000000000000000000000000000000000..af2333fb5dff6cfe869a3af6dea6940819197cef Binary files /dev/null and b/src/static/textures/block/brewing_stand.png differ diff --git a/src/static/textures/block/brewing_stand_base.png b/src/static/textures/block/brewing_stand_base.png new file mode 100644 index 0000000000000000000000000000000000000000..6c7369d377777a3c8928d14a8fee4296b4ddef95 Binary files /dev/null and b/src/static/textures/block/brewing_stand_base.png differ diff --git a/src/static/textures/block/bricks.png b/src/static/textures/block/bricks.png new file mode 100644 index 0000000000000000000000000000000000000000..2ed16c413320d2e2d854316dc4226065c10f200b Binary files /dev/null and b/src/static/textures/block/bricks.png differ diff --git a/src/static/textures/block/brown_mushroom.png b/src/static/textures/block/brown_mushroom.png new file mode 100644 index 0000000000000000000000000000000000000000..57b94d500a0ef536e62c076b80093a4dd6c0a0ed Binary files /dev/null and b/src/static/textures/block/brown_mushroom.png differ diff --git a/src/static/textures/block/brown_mushroom_block.png b/src/static/textures/block/brown_mushroom_block.png new file mode 100644 index 0000000000000000000000000000000000000000..ab3b4c8bccdbae4c24d6a10f2585068958f2915a Binary files /dev/null and b/src/static/textures/block/brown_mushroom_block.png differ diff --git a/src/static/textures/block/cactus_bottom.png b/src/static/textures/block/cactus_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..c613b88632625014544775e1e9bd44f172587f12 Binary files /dev/null and b/src/static/textures/block/cactus_bottom.png differ diff --git a/src/static/textures/block/cactus_side.png b/src/static/textures/block/cactus_side.png new file mode 100644 index 0000000000000000000000000000000000000000..69d689d75a0aaec30020d0dbd5e7130a8b50a662 Binary files /dev/null and b/src/static/textures/block/cactus_side.png differ diff --git a/src/static/textures/block/cactus_top.png b/src/static/textures/block/cactus_top.png new file mode 100644 index 0000000000000000000000000000000000000000..c6905a5255bd685516a4fa3c6dd6fd6ece84b44d Binary files /dev/null and b/src/static/textures/block/cactus_top.png differ diff --git a/src/static/textures/block/cake_bottom.png b/src/static/textures/block/cake_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..86b49993bc6a0682c471788e4d3f2442cb77e429 Binary files /dev/null and b/src/static/textures/block/cake_bottom.png differ diff --git a/src/static/textures/block/cake_inner.png b/src/static/textures/block/cake_inner.png new file mode 100644 index 0000000000000000000000000000000000000000..77234d56c163dedfdf085d80e6b0002ac39cad32 Binary files /dev/null and b/src/static/textures/block/cake_inner.png differ diff --git a/src/static/textures/block/cake_side.png b/src/static/textures/block/cake_side.png new file mode 100644 index 0000000000000000000000000000000000000000..c3014b79cb19dd4cf330e2f97b046f80a8591bae Binary files /dev/null and b/src/static/textures/block/cake_side.png differ diff --git a/src/static/textures/block/cake_top.png b/src/static/textures/block/cake_top.png new file mode 100644 index 0000000000000000000000000000000000000000..4eb484ec0e968f19a541df20adc11881308816e5 Binary files /dev/null and b/src/static/textures/block/cake_top.png differ diff --git a/src/static/textures/block/carrots_stage0.png b/src/static/textures/block/carrots_stage0.png new file mode 100644 index 0000000000000000000000000000000000000000..b329b581573d67ce446e8e82cecb43981ae1375b Binary files /dev/null and b/src/static/textures/block/carrots_stage0.png differ diff --git a/src/static/textures/block/carrots_stage1.png b/src/static/textures/block/carrots_stage1.png new file mode 100644 index 0000000000000000000000000000000000000000..e211d6d6d39d2351ea67964717ff4c0eceb6e0da Binary files /dev/null and b/src/static/textures/block/carrots_stage1.png differ diff --git a/src/static/textures/block/carrots_stage2.png b/src/static/textures/block/carrots_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..f8f8959f9ade2e40ef76eaa38eb4f40ebdce8f12 Binary files /dev/null and b/src/static/textures/block/carrots_stage2.png differ diff --git a/src/static/textures/block/carrots_stage3.png b/src/static/textures/block/carrots_stage3.png new file mode 100644 index 0000000000000000000000000000000000000000..f7b6a8886b93b860bee7a3ac6cfcb8618babd877 Binary files /dev/null and b/src/static/textures/block/carrots_stage3.png differ diff --git a/src/static/textures/block/carved_pumpkin.png b/src/static/textures/block/carved_pumpkin.png new file mode 100644 index 0000000000000000000000000000000000000000..944a32268f4a0954016615460a16849301eb15c5 Binary files /dev/null and b/src/static/textures/block/carved_pumpkin.png differ diff --git a/src/static/textures/block/cauldron_bottom.png b/src/static/textures/block/cauldron_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..4c8591a20ff8f6554abbe9baee8f1348230e9eb9 Binary files /dev/null and b/src/static/textures/block/cauldron_bottom.png differ diff --git a/src/static/textures/block/cauldron_inner.png b/src/static/textures/block/cauldron_inner.png new file mode 100644 index 0000000000000000000000000000000000000000..17fcf4faa6467591c5ab355fcfc390f3dc6586e8 Binary files /dev/null and b/src/static/textures/block/cauldron_inner.png differ diff --git a/src/static/textures/block/cauldron_side.png b/src/static/textures/block/cauldron_side.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf024ea17bc1c528a4a86a7d5fd504e8da17fd3 Binary files /dev/null and b/src/static/textures/block/cauldron_side.png differ diff --git a/src/static/textures/block/cauldron_top.png b/src/static/textures/block/cauldron_top.png new file mode 100644 index 0000000000000000000000000000000000000000..fd672b39ed40f16dff5fdf421b49d9c5315e1bd3 Binary files /dev/null and b/src/static/textures/block/cauldron_top.png differ diff --git a/src/static/textures/block/chain_command_block_back.png b/src/static/textures/block/chain_command_block_back.png new file mode 100644 index 0000000000000000000000000000000000000000..d50623b6365020958a88035b513434ee6b197a92 Binary files /dev/null and b/src/static/textures/block/chain_command_block_back.png differ diff --git a/src/static/textures/block/chain_command_block_back.png.mcmeta b/src/static/textures/block/chain_command_block_back.png.mcmeta new file mode 100644 index 0000000000000000000000000000000000000000..4894b537c138a0cd21e4d64f93ce7ce5206d629a --- /dev/null +++ b/src/static/textures/block/chain_command_block_back.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": true, + "frametime": 10 + } +} diff --git a/src/static/textures/block/chain_command_block_conditional.png b/src/static/textures/block/chain_command_block_conditional.png new file mode 100644 index 0000000000000000000000000000000000000000..6cb6ccc278921b5b06f23b3df945df519bdd22be Binary files /dev/null and b/src/static/textures/block/chain_command_block_conditional.png differ diff --git a/src/static/textures/block/chain_command_block_conditional.png.mcmeta b/src/static/textures/block/chain_command_block_conditional.png.mcmeta new file mode 100644 index 0000000000000000000000000000000000000000..4894b537c138a0cd21e4d64f93ce7ce5206d629a --- /dev/null +++ b/src/static/textures/block/chain_command_block_conditional.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": true, + "frametime": 10 + } +} diff --git a/src/static/textures/block/chain_command_block_front.png b/src/static/textures/block/chain_command_block_front.png new file mode 100644 index 0000000000000000000000000000000000000000..420431d83a82319e0f9d59ce3f597a40cbffef81 Binary files /dev/null and b/src/static/textures/block/chain_command_block_front.png differ diff --git a/src/static/textures/block/chain_command_block_front.png.mcmeta b/src/static/textures/block/chain_command_block_front.png.mcmeta new file mode 100644 index 0000000000000000000000000000000000000000..4894b537c138a0cd21e4d64f93ce7ce5206d629a --- /dev/null +++ b/src/static/textures/block/chain_command_block_front.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": true, + "frametime": 10 + } +} diff --git a/src/static/textures/block/chain_command_block_side.png b/src/static/textures/block/chain_command_block_side.png new file mode 100644 index 0000000000000000000000000000000000000000..31f9ad72a7b7c03e489b674be4f21dd6ae46ff71 Binary files /dev/null and b/src/static/textures/block/chain_command_block_side.png differ diff --git a/src/static/textures/block/chain_command_block_side.png.mcmeta b/src/static/textures/block/chain_command_block_side.png.mcmeta new file mode 100644 index 0000000000000000000000000000000000000000..4894b537c138a0cd21e4d64f93ce7ce5206d629a --- /dev/null +++ b/src/static/textures/block/chain_command_block_side.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": true, + "frametime": 10 + } +} diff --git a/src/static/textures/block/chipped_anvil_top.png b/src/static/textures/block/chipped_anvil_top.png new file mode 100644 index 0000000000000000000000000000000000000000..89d20c69fdbd8b7ef16ec5fd383d8ef524c27f38 Binary files /dev/null and b/src/static/textures/block/chipped_anvil_top.png differ diff --git a/src/static/textures/block/chiseled_quartz_block.png b/src/static/textures/block/chiseled_quartz_block.png new file mode 100644 index 0000000000000000000000000000000000000000..13d7686eb1604af64157ffed8d7a594db112aac3 Binary files /dev/null and b/src/static/textures/block/chiseled_quartz_block.png differ diff --git a/src/static/textures/block/chiseled_quartz_block_top.png b/src/static/textures/block/chiseled_quartz_block_top.png new file mode 100644 index 0000000000000000000000000000000000000000..35a9ef21a48cd28d1d22668a8696321ec1071691 Binary files /dev/null and b/src/static/textures/block/chiseled_quartz_block_top.png differ diff --git a/src/static/textures/block/chiseled_red_sandstone.png b/src/static/textures/block/chiseled_red_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..9095e19bfcd46e593a5f2066e5253bb9eb32eb95 Binary files /dev/null and b/src/static/textures/block/chiseled_red_sandstone.png differ diff --git a/src/static/textures/block/chiseled_sandstone.png b/src/static/textures/block/chiseled_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..fba6f6da564ad1238626eadf517160d883ce0580 Binary files /dev/null and b/src/static/textures/block/chiseled_sandstone.png differ diff --git a/src/static/textures/block/chiseled_stone_bricks.png b/src/static/textures/block/chiseled_stone_bricks.png new file mode 100644 index 0000000000000000000000000000000000000000..a565d8a14e356b77b300b6c704d81017e0b1cf2b Binary files /dev/null and b/src/static/textures/block/chiseled_stone_bricks.png differ diff --git a/src/static/textures/block/chorus_flower.png b/src/static/textures/block/chorus_flower.png new file mode 100644 index 0000000000000000000000000000000000000000..d075807262694d2e356362c1697c9de6f1458d99 Binary files /dev/null and b/src/static/textures/block/chorus_flower.png differ diff --git a/src/static/textures/block/chorus_flower_dead.png b/src/static/textures/block/chorus_flower_dead.png new file mode 100644 index 0000000000000000000000000000000000000000..21f315521ed84dbadbb0907dfc8c72040cfc6a07 Binary files /dev/null and b/src/static/textures/block/chorus_flower_dead.png differ diff --git a/src/static/textures/block/chorus_plant.png b/src/static/textures/block/chorus_plant.png new file mode 100644 index 0000000000000000000000000000000000000000..39924b986be471835f1e6921fe3d9157fd251569 Binary files /dev/null and b/src/static/textures/block/chorus_plant.png differ diff --git a/src/static/textures/block/clay.png b/src/static/textures/block/clay.png new file mode 100644 index 0000000000000000000000000000000000000000..54fd57afa2d3c61af3c1b4841ec56a7855caa57f Binary files /dev/null and b/src/static/textures/block/clay.png differ diff --git a/src/static/textures/block/coal_block.png b/src/static/textures/block/coal_block.png new file mode 100644 index 0000000000000000000000000000000000000000..25351c71ed3eec7302d932208af8c9ea0737db42 Binary files /dev/null and b/src/static/textures/block/coal_block.png differ diff --git a/src/static/textures/block/coal_ore.png b/src/static/textures/block/coal_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..a62d6c1e84039f5c4d75138fe21b6a006ff8bdd2 Binary files /dev/null and b/src/static/textures/block/coal_ore.png differ diff --git a/src/static/textures/block/cobblestone.png b/src/static/textures/block/cobblestone.png new file mode 100644 index 0000000000000000000000000000000000000000..ecf88b23e9a2d99ae126267f24a49b59831e4cc1 Binary files /dev/null and b/src/static/textures/block/cobblestone.png differ diff --git a/src/static/textures/block/cobweb.png b/src/static/textures/block/cobweb.png new file mode 100644 index 0000000000000000000000000000000000000000..d31d5b4265863832903333acc03c213c64750d24 Binary files /dev/null and b/src/static/textures/block/cobweb.png differ diff --git a/src/static/textures/block/cocoa_stage0.png b/src/static/textures/block/cocoa_stage0.png new file mode 100644 index 0000000000000000000000000000000000000000..4fcaaee753ca1e24b4b04f0a2a53cac3002010cb Binary files /dev/null and b/src/static/textures/block/cocoa_stage0.png differ diff --git a/src/static/textures/block/cocoa_stage1.png b/src/static/textures/block/cocoa_stage1.png new file mode 100644 index 0000000000000000000000000000000000000000..9bc8e5dd28f17988345b1a1b9b37dc8aa5fb23ec Binary files /dev/null and b/src/static/textures/block/cocoa_stage1.png differ diff --git a/src/static/textures/block/cocoa_stage2.png b/src/static/textures/block/cocoa_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..901ca3244b7815bd8229e70f9c3caff1e9c1d0af Binary files /dev/null and b/src/static/textures/block/cocoa_stage2.png differ diff --git a/src/static/textures/block/command_block_back.png b/src/static/textures/block/command_block_back.png new file mode 100644 index 0000000000000000000000000000000000000000..c3e9676833de3a3019fd6a6ffd70e4e586c6ab0b Binary files /dev/null and b/src/static/textures/block/command_block_back.png differ diff --git a/src/static/textures/block/command_block_back.png.mcmeta b/src/static/textures/block/command_block_back.png.mcmeta new file mode 100644 index 0000000000000000000000000000000000000000..4894b537c138a0cd21e4d64f93ce7ce5206d629a --- /dev/null +++ b/src/static/textures/block/command_block_back.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": true, + "frametime": 10 + } +} diff --git a/src/static/textures/block/command_block_conditional.png b/src/static/textures/block/command_block_conditional.png new file mode 100644 index 0000000000000000000000000000000000000000..861d11c5d277efd330af074ce782bdf55b48750a Binary files /dev/null and b/src/static/textures/block/command_block_conditional.png differ diff --git a/src/static/textures/block/command_block_conditional.png.mcmeta b/src/static/textures/block/command_block_conditional.png.mcmeta new file mode 100644 index 0000000000000000000000000000000000000000..4894b537c138a0cd21e4d64f93ce7ce5206d629a --- /dev/null +++ b/src/static/textures/block/command_block_conditional.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": true, + "frametime": 10 + } +} diff --git a/src/static/textures/block/command_block_front.png b/src/static/textures/block/command_block_front.png new file mode 100644 index 0000000000000000000000000000000000000000..469eaefbe88244c523e72e9e59ae05581f35c009 Binary files /dev/null and b/src/static/textures/block/command_block_front.png differ diff --git a/src/static/textures/block/command_block_front.png.mcmeta b/src/static/textures/block/command_block_front.png.mcmeta new file mode 100644 index 0000000000000000000000000000000000000000..4894b537c138a0cd21e4d64f93ce7ce5206d629a --- /dev/null +++ b/src/static/textures/block/command_block_front.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": true, + "frametime": 10 + } +} diff --git a/src/static/textures/block/command_block_side.png b/src/static/textures/block/command_block_side.png new file mode 100644 index 0000000000000000000000000000000000000000..0c998139c67bc3501e6421c30d070f235f58ca0d Binary files /dev/null and b/src/static/textures/block/command_block_side.png differ diff --git a/src/static/textures/block/command_block_side.png.mcmeta b/src/static/textures/block/command_block_side.png.mcmeta new file mode 100644 index 0000000000000000000000000000000000000000..4894b537c138a0cd21e4d64f93ce7ce5206d629a --- /dev/null +++ b/src/static/textures/block/command_block_side.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": true, + "frametime": 10 + } +} diff --git a/src/static/textures/block/comparator.png b/src/static/textures/block/comparator.png new file mode 100644 index 0000000000000000000000000000000000000000..f47ebf18298733fbedcc402ea4eb7eff654f6ae1 Binary files /dev/null and b/src/static/textures/block/comparator.png differ diff --git a/src/static/textures/block/comparator_on.png b/src/static/textures/block/comparator_on.png new file mode 100644 index 0000000000000000000000000000000000000000..85cefb89a0dd3e4f12fc057c4909167701f99392 Binary files /dev/null and b/src/static/textures/block/comparator_on.png differ diff --git a/src/static/textures/block/cracked_stone_bricks.png b/src/static/textures/block/cracked_stone_bricks.png new file mode 100644 index 0000000000000000000000000000000000000000..fd8a39cce696d750ea3492f661f064639f3f2536 Binary files /dev/null and b/src/static/textures/block/cracked_stone_bricks.png differ diff --git a/src/static/textures/block/crafting_table_front.png b/src/static/textures/block/crafting_table_front.png new file mode 100644 index 0000000000000000000000000000000000000000..0c292d942907b0e5977037d0babe83270be1519d Binary files /dev/null and b/src/static/textures/block/crafting_table_front.png differ diff --git a/src/static/textures/block/crafting_table_side.png b/src/static/textures/block/crafting_table_side.png new file mode 100644 index 0000000000000000000000000000000000000000..e4f402e6681fc318f9e6cae68f149609e9874694 Binary files /dev/null and b/src/static/textures/block/crafting_table_side.png differ diff --git a/src/static/textures/block/crafting_table_top.png b/src/static/textures/block/crafting_table_top.png new file mode 100644 index 0000000000000000000000000000000000000000..7c7dfa1cd6b85db05b815575db0e7393c84cf750 Binary files /dev/null and b/src/static/textures/block/crafting_table_top.png differ diff --git a/src/static/textures/block/cut_red_sandstone.png b/src/static/textures/block/cut_red_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..2a9a1b72078beea2ea613a2073b18b8d29a862b8 Binary files /dev/null and b/src/static/textures/block/cut_red_sandstone.png differ diff --git a/src/static/textures/block/cut_sandstone.png b/src/static/textures/block/cut_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..a11f122364a95f34c467b7bd9b0ad0104f7253ae Binary files /dev/null and b/src/static/textures/block/cut_sandstone.png differ diff --git a/src/static/textures/block/damaged_anvil_top.png b/src/static/textures/block/damaged_anvil_top.png new file mode 100644 index 0000000000000000000000000000000000000000..a8060884349fcf71b6a63de3fd39db2520dfa05d Binary files /dev/null and b/src/static/textures/block/damaged_anvil_top.png differ diff --git a/src/static/textures/block/dandelion.png b/src/static/textures/block/dandelion.png new file mode 100644 index 0000000000000000000000000000000000000000..80c5be391a6b0232d55b414562b0f1027209cd5e Binary files /dev/null and b/src/static/textures/block/dandelion.png differ diff --git a/src/static/textures/block/dark_oak_door_bottom.png b/src/static/textures/block/dark_oak_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc8fa29523981a8351151ff21b27c223d80acbc Binary files /dev/null and b/src/static/textures/block/dark_oak_door_bottom.png differ diff --git a/src/static/textures/block/dark_oak_door_top.png b/src/static/textures/block/dark_oak_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..9143ff93ef48ab1687e39892dafc65b3c30647da Binary files /dev/null and b/src/static/textures/block/dark_oak_door_top.png differ diff --git a/src/static/textures/block/dark_oak_leaves.png b/src/static/textures/block/dark_oak_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..292def18745ff5e1c2768c05d421c12e2cf5cccf Binary files /dev/null and b/src/static/textures/block/dark_oak_leaves.png differ diff --git a/src/static/textures/block/dark_oak_log.png b/src/static/textures/block/dark_oak_log.png new file mode 100644 index 0000000000000000000000000000000000000000..8e414b428841c7d9d67808ad15712a6f6c7e224e Binary files /dev/null and b/src/static/textures/block/dark_oak_log.png differ diff --git a/src/static/textures/block/dark_oak_log_top.png b/src/static/textures/block/dark_oak_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..755b235b44e39546188add94b67ef4dbdcc8cc99 Binary files /dev/null and b/src/static/textures/block/dark_oak_log_top.png differ diff --git a/src/static/textures/block/dark_oak_planks.png b/src/static/textures/block/dark_oak_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..05e34d75bbe1c9854683967fbfe8a8126d671e61 Binary files /dev/null and b/src/static/textures/block/dark_oak_planks.png differ diff --git a/src/static/textures/block/dark_oak_sapling.png b/src/static/textures/block/dark_oak_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..0cd95d3ae5dba698ea9c457cf37433a7c10ccbb1 Binary files /dev/null and b/src/static/textures/block/dark_oak_sapling.png differ diff --git a/src/static/textures/block/dark_prismarine.png b/src/static/textures/block/dark_prismarine.png new file mode 100644 index 0000000000000000000000000000000000000000..f89d4433cf14a3dffbf3c566d649394c02ab4399 Binary files /dev/null and b/src/static/textures/block/dark_prismarine.png differ diff --git a/src/static/textures/block/dead_bush.png b/src/static/textures/block/dead_bush.png new file mode 100644 index 0000000000000000000000000000000000000000..16bb8449c31cb809bdda8b17b6cd04f1634e2aa3 Binary files /dev/null and b/src/static/textures/block/dead_bush.png differ diff --git a/src/static/textures/block/detector_rail.png b/src/static/textures/block/detector_rail.png new file mode 100644 index 0000000000000000000000000000000000000000..924fbb3454d497288ec5a64c1ee42a84b42db809 Binary files /dev/null and b/src/static/textures/block/detector_rail.png differ diff --git a/src/static/textures/block/detector_rail_on.png b/src/static/textures/block/detector_rail_on.png new file mode 100644 index 0000000000000000000000000000000000000000..b0d9c4794e7a76e1ecbbc2934aca179bc73785d1 Binary files /dev/null and b/src/static/textures/block/detector_rail_on.png differ diff --git a/src/static/textures/block/diamond_block.png b/src/static/textures/block/diamond_block.png new file mode 100644 index 0000000000000000000000000000000000000000..2b81f48356c894c609f509546e3e156196e82845 Binary files /dev/null and b/src/static/textures/block/diamond_block.png differ diff --git a/src/static/textures/block/diamond_ore.png b/src/static/textures/block/diamond_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..4fb805513155c8172c506cc8875efcacce0fb30f Binary files /dev/null and b/src/static/textures/block/diamond_ore.png differ diff --git a/src/static/textures/block/diorite.png b/src/static/textures/block/diorite.png new file mode 100644 index 0000000000000000000000000000000000000000..a390580503c4b21967a2b0e560401702656f7cb9 Binary files /dev/null and b/src/static/textures/block/diorite.png differ diff --git a/src/static/textures/block/dirt.png b/src/static/textures/block/dirt.png new file mode 100644 index 0000000000000000000000000000000000000000..617d353e0d67a14a2952b2a98375eb8a50b97d79 Binary files /dev/null and b/src/static/textures/block/dirt.png differ diff --git a/src/static/textures/block/dispenser_front.png b/src/static/textures/block/dispenser_front.png new file mode 100644 index 0000000000000000000000000000000000000000..60de10fc0a881831d501a406a2dde94d77c776b5 Binary files /dev/null and b/src/static/textures/block/dispenser_front.png differ diff --git a/src/static/textures/block/dispenser_front_vertical.png b/src/static/textures/block/dispenser_front_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..4d433d986243f4de503c50f8b8d8c76c9ccd9bd1 Binary files /dev/null and b/src/static/textures/block/dispenser_front_vertical.png differ diff --git a/src/static/textures/block/dropper_front.png b/src/static/textures/block/dropper_front.png new file mode 100644 index 0000000000000000000000000000000000000000..8fe70ec49ba7b3d49076f5194d83dbdc2426bfac Binary files /dev/null and b/src/static/textures/block/dropper_front.png differ diff --git a/src/static/textures/block/dropper_front_vertical.png b/src/static/textures/block/dropper_front_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..325f8da417c5c2543654a21573c34a4cf74346e3 Binary files /dev/null and b/src/static/textures/block/dropper_front_vertical.png differ diff --git a/src/static/textures/block/emerald_block.png b/src/static/textures/block/emerald_block.png new file mode 100644 index 0000000000000000000000000000000000000000..0f271687c1ffbfa05755d4f659b2ecd304495326 Binary files /dev/null and b/src/static/textures/block/emerald_block.png differ diff --git a/src/static/textures/block/emerald_ore.png b/src/static/textures/block/emerald_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..9a110aa59e345a06657d513ff552a0464c49d013 Binary files /dev/null and b/src/static/textures/block/emerald_ore.png differ diff --git a/src/static/textures/block/enchanting_table_bottom.png b/src/static/textures/block/enchanting_table_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..65be807496f49a39133709055d315c4d5d4edb76 Binary files /dev/null and b/src/static/textures/block/enchanting_table_bottom.png differ diff --git a/src/static/textures/block/enchanting_table_side.png b/src/static/textures/block/enchanting_table_side.png new file mode 100644 index 0000000000000000000000000000000000000000..5930c87d18f3b28d106a851a254ce33e14145f85 Binary files /dev/null and b/src/static/textures/block/enchanting_table_side.png differ diff --git a/src/static/textures/block/enchanting_table_top.png b/src/static/textures/block/enchanting_table_top.png new file mode 100644 index 0000000000000000000000000000000000000000..ef5eea5ba337a9a578f30f571aa633f2723d515c Binary files /dev/null and b/src/static/textures/block/enchanting_table_top.png differ diff --git a/src/static/textures/block/end_portal_frame_eye.png b/src/static/textures/block/end_portal_frame_eye.png new file mode 100644 index 0000000000000000000000000000000000000000..2ff33f9bc7f77849529495d7d622ae255a4c8982 Binary files /dev/null and b/src/static/textures/block/end_portal_frame_eye.png differ diff --git a/src/static/textures/block/end_portal_frame_side.png b/src/static/textures/block/end_portal_frame_side.png new file mode 100644 index 0000000000000000000000000000000000000000..30140f757fc4411e72838d70b751d4f63e07941b Binary files /dev/null and b/src/static/textures/block/end_portal_frame_side.png differ diff --git a/src/static/textures/block/end_portal_frame_top.png b/src/static/textures/block/end_portal_frame_top.png new file mode 100644 index 0000000000000000000000000000000000000000..ced8cafa19fbd21d058385d3a60bd928dbc5fee4 Binary files /dev/null and b/src/static/textures/block/end_portal_frame_top.png differ diff --git a/src/static/textures/block/end_rod.png b/src/static/textures/block/end_rod.png new file mode 100644 index 0000000000000000000000000000000000000000..a710490cc80c25002acff34cd27c4503f8ffbe71 Binary files /dev/null and b/src/static/textures/block/end_rod.png differ diff --git a/src/static/textures/block/end_stone.png b/src/static/textures/block/end_stone.png new file mode 100644 index 0000000000000000000000000000000000000000..bf71b3690aefa20ec6a450a3336c506d7a2076e2 Binary files /dev/null and b/src/static/textures/block/end_stone.png differ diff --git a/src/static/textures/block/end_stone_bricks.png b/src/static/textures/block/end_stone_bricks.png new file mode 100644 index 0000000000000000000000000000000000000000..afa774b705caf36564b6ccfb1c623f5b732503d9 Binary files /dev/null and b/src/static/textures/block/end_stone_bricks.png differ diff --git a/src/static/textures/block/farmland.png b/src/static/textures/block/farmland.png new file mode 100644 index 0000000000000000000000000000000000000000..2a42810dd4efd82e1c523b1ce317954cd96e461e Binary files /dev/null and b/src/static/textures/block/farmland.png differ diff --git a/src/static/textures/block/farmland_moist.png b/src/static/textures/block/farmland_moist.png new file mode 100644 index 0000000000000000000000000000000000000000..24a074b3b022b4f0c2b1408276ee7e1a885bd8df Binary files /dev/null and b/src/static/textures/block/farmland_moist.png differ diff --git a/src/static/textures/block/fern.png b/src/static/textures/block/fern.png new file mode 100644 index 0000000000000000000000000000000000000000..1beec0e019fb0d1b28145aac7ba19359ea0885cd Binary files /dev/null and b/src/static/textures/block/fern.png differ diff --git a/src/static/textures/block/flower_pot.png b/src/static/textures/block/flower_pot.png new file mode 100644 index 0000000000000000000000000000000000000000..7a584f6f3796f36f130ffd6df43b63fe05040a22 Binary files /dev/null and b/src/static/textures/block/flower_pot.png differ diff --git a/src/static/textures/block/frosted_ice_0.png b/src/static/textures/block/frosted_ice_0.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9b5c7afb6cc457f1cf2e185e72e34a25c1c935 Binary files /dev/null and b/src/static/textures/block/frosted_ice_0.png differ diff --git a/src/static/textures/block/frosted_ice_1.png b/src/static/textures/block/frosted_ice_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e01008be839dbaa5b42c606efb027f0df4478da2 Binary files /dev/null and b/src/static/textures/block/frosted_ice_1.png differ diff --git a/src/static/textures/block/frosted_ice_2.png b/src/static/textures/block/frosted_ice_2.png new file mode 100644 index 0000000000000000000000000000000000000000..42aef9549277fa74d15d2f53958d40fdad17ced5 Binary files /dev/null and b/src/static/textures/block/frosted_ice_2.png differ diff --git a/src/static/textures/block/frosted_ice_3.png b/src/static/textures/block/frosted_ice_3.png new file mode 100644 index 0000000000000000000000000000000000000000..8676e60b9595be1901d157b25ddf3a2c0cad6bf2 Binary files /dev/null and b/src/static/textures/block/frosted_ice_3.png differ diff --git a/src/static/textures/block/furnace_front.png b/src/static/textures/block/furnace_front.png new file mode 100644 index 0000000000000000000000000000000000000000..cbab85d5e79a1fc2e5442d7dcc297c5855871df9 Binary files /dev/null and b/src/static/textures/block/furnace_front.png differ diff --git a/src/static/textures/block/furnace_front_on.png b/src/static/textures/block/furnace_front_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e8a1ffb140369acc17721f7cc7d4c553382318e6 Binary files /dev/null and b/src/static/textures/block/furnace_front_on.png differ diff --git a/src/static/textures/block/furnace_side.png b/src/static/textures/block/furnace_side.png new file mode 100644 index 0000000000000000000000000000000000000000..69c5a5dbc7188f18b91abc65a37b560fbac6190c Binary files /dev/null and b/src/static/textures/block/furnace_side.png differ diff --git a/src/static/textures/block/furnace_top.png b/src/static/textures/block/furnace_top.png new file mode 100644 index 0000000000000000000000000000000000000000..083e5991b50303121ea41049d817d4bbce30de1c Binary files /dev/null and b/src/static/textures/block/furnace_top.png differ diff --git a/src/static/textures/block/glass.png b/src/static/textures/block/glass.png new file mode 100644 index 0000000000000000000000000000000000000000..285b47f5e362c3b3142f35430ceec65811523e8a Binary files /dev/null and b/src/static/textures/block/glass.png differ diff --git a/src/static/textures/block/glass_pane_top.png b/src/static/textures/block/glass_pane_top.png new file mode 100644 index 0000000000000000000000000000000000000000..02de5877d8fae5bc97f22db353258646380dd0a4 Binary files /dev/null and b/src/static/textures/block/glass_pane_top.png differ diff --git a/src/static/textures/block/glowstone.png b/src/static/textures/block/glowstone.png new file mode 100644 index 0000000000000000000000000000000000000000..aa0c6da96e30059837540f79cb12db5c129c35ee Binary files /dev/null and b/src/static/textures/block/glowstone.png differ diff --git a/src/static/textures/block/gold_block.png b/src/static/textures/block/gold_block.png new file mode 100644 index 0000000000000000000000000000000000000000..289618fe2b1df15b2a4f3c4525bac43a2218ba11 Binary files /dev/null and b/src/static/textures/block/gold_block.png differ diff --git a/src/static/textures/block/gold_ore.png b/src/static/textures/block/gold_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..eb405116a9e5652d37cfa88d2ca12377c7fcffcf Binary files /dev/null and b/src/static/textures/block/gold_ore.png differ diff --git a/src/static/textures/block/granite.png b/src/static/textures/block/granite.png new file mode 100644 index 0000000000000000000000000000000000000000..390e0b9a6e0ca21769ea8ae033f5d332f2a9c285 Binary files /dev/null and b/src/static/textures/block/granite.png differ diff --git a/src/static/textures/block/grass.png b/src/static/textures/block/grass.png new file mode 100644 index 0000000000000000000000000000000000000000..51a9417fa40d8b6cf6bc4cec8637ae9c86028dd0 Binary files /dev/null and b/src/static/textures/block/grass.png differ diff --git a/src/static/textures/block/grass_block_side.png b/src/static/textures/block/grass_block_side.png new file mode 100644 index 0000000000000000000000000000000000000000..a4975e53478ee3b1fad636c7cc99a2798a043b16 Binary files /dev/null and b/src/static/textures/block/grass_block_side.png differ diff --git a/src/static/textures/block/grass_block_side_overlay.png b/src/static/textures/block/grass_block_side_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..fc3fa9d727b3b8d66bcedd4a3ff057b89b3b9377 Binary files /dev/null and b/src/static/textures/block/grass_block_side_overlay.png differ diff --git a/src/static/textures/block/grass_block_snow.png b/src/static/textures/block/grass_block_snow.png new file mode 100644 index 0000000000000000000000000000000000000000..8b28fc7a03b70454c509aa0c7942d6778cde6593 Binary files /dev/null and b/src/static/textures/block/grass_block_snow.png differ diff --git a/src/static/textures/block/grass_block_top.png b/src/static/textures/block/grass_block_top.png new file mode 100644 index 0000000000000000000000000000000000000000..eaa7e458f702c46fe6eb7d58efdd091cca089530 Binary files /dev/null and b/src/static/textures/block/grass_block_top.png differ diff --git a/src/static/textures/block/grass_path_side.png b/src/static/textures/block/grass_path_side.png new file mode 100644 index 0000000000000000000000000000000000000000..c9de13528ed4076faeb0c05c4dcc516c974695d1 Binary files /dev/null and b/src/static/textures/block/grass_path_side.png differ diff --git a/src/static/textures/block/grass_path_top.png b/src/static/textures/block/grass_path_top.png new file mode 100644 index 0000000000000000000000000000000000000000..9de12c36f762c4f6029fef2a61e6d18d67febcf8 Binary files /dev/null and b/src/static/textures/block/grass_path_top.png differ diff --git a/src/static/textures/block/grass_top_green.png b/src/static/textures/block/grass_top_green.png new file mode 100644 index 0000000000000000000000000000000000000000..5344a0845ceb16d561db009f43601272579b0954 Binary files /dev/null and b/src/static/textures/block/grass_top_green.png differ diff --git a/src/static/textures/block/gravel.png b/src/static/textures/block/gravel.png new file mode 100644 index 0000000000000000000000000000000000000000..09bdcef301725101566036ab92689c435cf1b68e Binary files /dev/null and b/src/static/textures/block/gravel.png differ diff --git a/src/static/textures/block/hay_block_side.png b/src/static/textures/block/hay_block_side.png new file mode 100644 index 0000000000000000000000000000000000000000..7b734ebc58d889477085c9ffeb70a41934936a6f Binary files /dev/null and b/src/static/textures/block/hay_block_side.png differ diff --git a/src/static/textures/block/hay_block_top.png b/src/static/textures/block/hay_block_top.png new file mode 100644 index 0000000000000000000000000000000000000000..84ee05ea4188ea5ba3ad4ffc7b2f129fd3ab3a39 Binary files /dev/null and b/src/static/textures/block/hay_block_top.png differ diff --git a/src/static/textures/block/hopper_inside.png b/src/static/textures/block/hopper_inside.png new file mode 100644 index 0000000000000000000000000000000000000000..17fcf4faa6467591c5ab355fcfc390f3dc6586e8 Binary files /dev/null and b/src/static/textures/block/hopper_inside.png differ diff --git a/src/static/textures/block/hopper_outside.png b/src/static/textures/block/hopper_outside.png new file mode 100644 index 0000000000000000000000000000000000000000..b6265ea93744b54e850abca8247fecce40959ccb Binary files /dev/null and b/src/static/textures/block/hopper_outside.png differ diff --git a/src/static/textures/block/hopper_top.png b/src/static/textures/block/hopper_top.png new file mode 100644 index 0000000000000000000000000000000000000000..709badc2609759e653661ee8241aa8678d36cd6a Binary files /dev/null and b/src/static/textures/block/hopper_top.png differ diff --git a/src/static/textures/block/ice.png b/src/static/textures/block/ice.png new file mode 100644 index 0000000000000000000000000000000000000000..6ae701d0bfd4079ba8cfd464bec2210c63410b5a Binary files /dev/null and b/src/static/textures/block/ice.png differ diff --git a/src/static/textures/block/iron_bars.png b/src/static/textures/block/iron_bars.png new file mode 100644 index 0000000000000000000000000000000000000000..f7df799f71498a76a6db1e333fb6d8980a6a669c Binary files /dev/null and b/src/static/textures/block/iron_bars.png differ diff --git a/src/static/textures/block/iron_block.png b/src/static/textures/block/iron_block.png new file mode 100644 index 0000000000000000000000000000000000000000..5ecaf7fe6d2657915e0ed7b279788304d1ac2072 Binary files /dev/null and b/src/static/textures/block/iron_block.png differ diff --git a/src/static/textures/block/iron_door_bottom.png b/src/static/textures/block/iron_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..240f8ae56a85ec2dedb47b0056b72ffe43ccff3a Binary files /dev/null and b/src/static/textures/block/iron_door_bottom.png differ diff --git a/src/static/textures/block/iron_door_top.png b/src/static/textures/block/iron_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..9b134f3004d2e883b4ed0f88f18b1efb0967b614 Binary files /dev/null and b/src/static/textures/block/iron_door_top.png differ diff --git a/src/static/textures/block/iron_ore.png b/src/static/textures/block/iron_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..31b655bbfaf94bbe1a66e73cdb50809479f8ed02 Binary files /dev/null and b/src/static/textures/block/iron_ore.png differ diff --git a/src/static/textures/block/iron_trapdoor.png b/src/static/textures/block/iron_trapdoor.png new file mode 100644 index 0000000000000000000000000000000000000000..6000d27353223440ba2f841bec4ca38544dd2a0e Binary files /dev/null and b/src/static/textures/block/iron_trapdoor.png differ diff --git a/src/static/textures/block/item_frame.png b/src/static/textures/block/item_frame.png new file mode 100644 index 0000000000000000000000000000000000000000..095de1c97c7eea94e1aa660dd443feb5d4bf9656 Binary files /dev/null and b/src/static/textures/block/item_frame.png differ diff --git a/src/static/textures/block/jack_o_lantern.png b/src/static/textures/block/jack_o_lantern.png new file mode 100644 index 0000000000000000000000000000000000000000..813db302e84216f7bf97477e3e10d6ecadd5e42e Binary files /dev/null and b/src/static/textures/block/jack_o_lantern.png differ diff --git a/src/static/textures/block/jukebox_side.png b/src/static/textures/block/jukebox_side.png new file mode 100644 index 0000000000000000000000000000000000000000..82430ca0c7a86381c8fa2987d9f6ce9d9183b2c8 Binary files /dev/null and b/src/static/textures/block/jukebox_side.png differ diff --git a/src/static/textures/block/jukebox_top.png b/src/static/textures/block/jukebox_top.png new file mode 100644 index 0000000000000000000000000000000000000000..da45dfe8dae6abb821f430b5a6b68b242da43488 Binary files /dev/null and b/src/static/textures/block/jukebox_top.png differ diff --git a/src/static/textures/block/jungle_door_bottom.png b/src/static/textures/block/jungle_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..c9fdb9a3999f1ea3e8821a75f384c8cffa04910d Binary files /dev/null and b/src/static/textures/block/jungle_door_bottom.png differ diff --git a/src/static/textures/block/jungle_door_top.png b/src/static/textures/block/jungle_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..f1068296b2a7a6515c0d74678fffaf07a2ebd7ae Binary files /dev/null and b/src/static/textures/block/jungle_door_top.png differ diff --git a/src/static/textures/block/jungle_leaves.png b/src/static/textures/block/jungle_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..435d02159aaa9dd2cfdf39b8efaeb4a1ffa979cb Binary files /dev/null and b/src/static/textures/block/jungle_leaves.png differ diff --git a/src/static/textures/block/jungle_log.png b/src/static/textures/block/jungle_log.png new file mode 100644 index 0000000000000000000000000000000000000000..0e05f9a8aa4d4eb14f33deb924bcc909485f0136 Binary files /dev/null and b/src/static/textures/block/jungle_log.png differ diff --git a/src/static/textures/block/jungle_log_top.png b/src/static/textures/block/jungle_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..f419b1bf2a38c95caf41d4d6ca11a8e040bf7c8d Binary files /dev/null and b/src/static/textures/block/jungle_log_top.png differ diff --git a/src/static/textures/block/jungle_planks.png b/src/static/textures/block/jungle_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..511c3597e223ee6679619f3c87d9a3877a3c2625 Binary files /dev/null and b/src/static/textures/block/jungle_planks.png differ diff --git a/src/static/textures/block/jungle_sapling.png b/src/static/textures/block/jungle_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..a33daa7addf82a7d4cf132b3517be5424d737e96 Binary files /dev/null and b/src/static/textures/block/jungle_sapling.png differ diff --git a/src/static/textures/block/ladder.png b/src/static/textures/block/ladder.png new file mode 100644 index 0000000000000000000000000000000000000000..129ec763e4ce3cb47f7fd60aada14dede5c67892 Binary files /dev/null and b/src/static/textures/block/ladder.png differ diff --git a/src/static/textures/block/lapis_block.png b/src/static/textures/block/lapis_block.png new file mode 100644 index 0000000000000000000000000000000000000000..6987aa5dd4bfd6af859e7ebd14f8d29da6325489 Binary files /dev/null and b/src/static/textures/block/lapis_block.png differ diff --git a/src/static/textures/block/lapis_ore.png b/src/static/textures/block/lapis_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..c48ec2415c335d0f34d34338090cd898b3bbd9ac Binary files /dev/null and b/src/static/textures/block/lapis_ore.png differ diff --git a/src/static/textures/block/large_fern_bottom.png b/src/static/textures/block/large_fern_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..c9d29c27642ba953a8bcec7d629f6fd0d924ae16 Binary files /dev/null and b/src/static/textures/block/large_fern_bottom.png differ diff --git a/src/static/textures/block/large_fern_top.png b/src/static/textures/block/large_fern_top.png new file mode 100644 index 0000000000000000000000000000000000000000..65eb565774190cc741dee3ffb4a33857506ff7bb Binary files /dev/null and b/src/static/textures/block/large_fern_top.png differ diff --git a/src/static/textures/block/lever.png b/src/static/textures/block/lever.png new file mode 100644 index 0000000000000000000000000000000000000000..102f5d73286a3b1cb9771f1c1d6796d17ff1970f Binary files /dev/null and b/src/static/textures/block/lever.png differ diff --git a/src/static/textures/block/lilac_bottom.png b/src/static/textures/block/lilac_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..26b403558a80acd83878014470eea70dffab2aca Binary files /dev/null and b/src/static/textures/block/lilac_bottom.png differ diff --git a/src/static/textures/block/lilac_top.png b/src/static/textures/block/lilac_top.png new file mode 100644 index 0000000000000000000000000000000000000000..bada10cc7b9c37a31b0b751bf53d3ad95412edf9 Binary files /dev/null and b/src/static/textures/block/lilac_top.png differ diff --git a/src/static/textures/block/lily_pad.png b/src/static/textures/block/lily_pad.png new file mode 100644 index 0000000000000000000000000000000000000000..51608269d0825e1969a29ad7f6bc93089ea5296e Binary files /dev/null and b/src/static/textures/block/lily_pad.png differ diff --git a/src/static/textures/block/magma.png b/src/static/textures/block/magma.png new file mode 100644 index 0000000000000000000000000000000000000000..702265d016ebf861dbc58a6d0b3ffb6a75308976 Binary files /dev/null and b/src/static/textures/block/magma.png differ diff --git a/src/static/textures/block/magma.png.mcmeta b/src/static/textures/block/magma.png.mcmeta new file mode 100644 index 0000000000000000000000000000000000000000..ffc3e52835ab4b700099ad1b838052a868b9a0e9 --- /dev/null +++ b/src/static/textures/block/magma.png.mcmeta @@ -0,0 +1,11 @@ +{ + "animation": { + "frametime": 8, + "interpolate": true, + "frames": [ + 0, + 1, + 2 + ] + } +} diff --git a/src/static/textures/block/melon_side.png b/src/static/textures/block/melon_side.png new file mode 100644 index 0000000000000000000000000000000000000000..0a12fb96a0447cfaced0048cc1145913c876c171 Binary files /dev/null and b/src/static/textures/block/melon_side.png differ diff --git a/src/static/textures/block/melon_top.png b/src/static/textures/block/melon_top.png new file mode 100644 index 0000000000000000000000000000000000000000..82234a85a0ec6528cf62bbb6aed9c0691a3594d7 Binary files /dev/null and b/src/static/textures/block/melon_top.png differ diff --git a/src/static/textures/block/mossy_cobblestone.png b/src/static/textures/block/mossy_cobblestone.png new file mode 100644 index 0000000000000000000000000000000000000000..b3e8290af87df775c0c8b6e78e8aa78cd1dcffc6 Binary files /dev/null and b/src/static/textures/block/mossy_cobblestone.png differ diff --git a/src/static/textures/block/mossy_stone_bricks.png b/src/static/textures/block/mossy_stone_bricks.png new file mode 100644 index 0000000000000000000000000000000000000000..b72ce2283e44f1bd42f6e674e4d62dcd2966f0b7 Binary files /dev/null and b/src/static/textures/block/mossy_stone_bricks.png differ diff --git a/src/static/textures/block/mushroom_block_inside.png b/src/static/textures/block/mushroom_block_inside.png new file mode 100644 index 0000000000000000000000000000000000000000..194114a02ccddbfda1106d845c3bb45040b98c58 Binary files /dev/null and b/src/static/textures/block/mushroom_block_inside.png differ diff --git a/src/static/textures/block/mushroom_stem.png b/src/static/textures/block/mushroom_stem.png new file mode 100644 index 0000000000000000000000000000000000000000..ad6af2c4cf6c72fc77f2cc83b9879f49683dd2c0 Binary files /dev/null and b/src/static/textures/block/mushroom_stem.png differ diff --git a/src/static/textures/block/mycelium_side.png b/src/static/textures/block/mycelium_side.png new file mode 100644 index 0000000000000000000000000000000000000000..8522236bd9ad9d2c411dcac6a18034b34d758635 Binary files /dev/null and b/src/static/textures/block/mycelium_side.png differ diff --git a/src/static/textures/block/mycelium_top.png b/src/static/textures/block/mycelium_top.png new file mode 100644 index 0000000000000000000000000000000000000000..d98ad615d71240ac395b9191d11946bae65214cc Binary files /dev/null and b/src/static/textures/block/mycelium_top.png differ diff --git a/src/static/textures/block/nether_bricks.png b/src/static/textures/block/nether_bricks.png new file mode 100644 index 0000000000000000000000000000000000000000..3c67de5da8bb582567398906eab75777863b9981 Binary files /dev/null and b/src/static/textures/block/nether_bricks.png differ diff --git a/src/static/textures/block/nether_quartz_ore.png b/src/static/textures/block/nether_quartz_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..e4cf57023411fcfbdff32fc72a624ad4a4d70ff9 Binary files /dev/null and b/src/static/textures/block/nether_quartz_ore.png differ diff --git a/src/static/textures/block/nether_wart_block.png b/src/static/textures/block/nether_wart_block.png new file mode 100644 index 0000000000000000000000000000000000000000..a71d08989102a7f4175913d05b76ff0d2a19a8e9 Binary files /dev/null and b/src/static/textures/block/nether_wart_block.png differ diff --git a/src/static/textures/block/nether_wart_stage0.png b/src/static/textures/block/nether_wart_stage0.png new file mode 100644 index 0000000000000000000000000000000000000000..c422334860d1322ff8f98ab994c452f1d484eca9 Binary files /dev/null and b/src/static/textures/block/nether_wart_stage0.png differ diff --git a/src/static/textures/block/nether_wart_stage1.png b/src/static/textures/block/nether_wart_stage1.png new file mode 100644 index 0000000000000000000000000000000000000000..7051185cd9fb20ae8eb16188c4d5a0aa745e333b Binary files /dev/null and b/src/static/textures/block/nether_wart_stage1.png differ diff --git a/src/static/textures/block/nether_wart_stage2.png b/src/static/textures/block/nether_wart_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..b3d724bb5714a31b207f4e5956d8b685efdf2449 Binary files /dev/null and b/src/static/textures/block/nether_wart_stage2.png differ diff --git a/src/static/textures/block/netherrack.png b/src/static/textures/block/netherrack.png new file mode 100644 index 0000000000000000000000000000000000000000..4cb2361ab76d5bbbe8ecba34fa1556e568b971d7 Binary files /dev/null and b/src/static/textures/block/netherrack.png differ diff --git a/src/static/textures/block/note_block.png b/src/static/textures/block/note_block.png new file mode 100644 index 0000000000000000000000000000000000000000..40ecc58a2263965e9b6d5d9cead2b2b8b7348d33 Binary files /dev/null and b/src/static/textures/block/note_block.png differ diff --git a/src/static/textures/block/oak_door_bottom.png b/src/static/textures/block/oak_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..360cadc890d5c9173625f530991662196805e18d Binary files /dev/null and b/src/static/textures/block/oak_door_bottom.png differ diff --git a/src/static/textures/block/oak_door_top.png b/src/static/textures/block/oak_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..35790f416fb995c599edfba1c45e189005a845bf Binary files /dev/null and b/src/static/textures/block/oak_door_top.png differ diff --git a/src/static/textures/block/oak_leaves.png b/src/static/textures/block/oak_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..5fcd721443f9d94bc10d47f1f8103a2c8a94f9a1 Binary files /dev/null and b/src/static/textures/block/oak_leaves.png differ diff --git a/src/static/textures/block/oak_log.png b/src/static/textures/block/oak_log.png new file mode 100644 index 0000000000000000000000000000000000000000..527b9e37c63ebc49461268e309c69d05edc9eb30 Binary files /dev/null and b/src/static/textures/block/oak_log.png differ diff --git a/src/static/textures/block/oak_log_top.png b/src/static/textures/block/oak_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..38d7eb1c7003bfc1565f14e3d6609cbe6ebd6320 Binary files /dev/null and b/src/static/textures/block/oak_log_top.png differ diff --git a/src/static/textures/block/oak_planks.png b/src/static/textures/block/oak_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..39a00be7d241a8fc1378d511fbaeadc5b943c40a Binary files /dev/null and b/src/static/textures/block/oak_planks.png differ diff --git a/src/static/textures/block/oak_sapling.png b/src/static/textures/block/oak_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..7ac141a041d707e8ff961162401498db648310bf Binary files /dev/null and b/src/static/textures/block/oak_sapling.png differ diff --git a/src/static/textures/block/oak_trapdoor.png b/src/static/textures/block/oak_trapdoor.png new file mode 100644 index 0000000000000000000000000000000000000000..cba143b9ea1874457f45f18a129fe2d48dccb220 Binary files /dev/null and b/src/static/textures/block/oak_trapdoor.png differ diff --git a/src/static/textures/block/observer_back.png b/src/static/textures/block/observer_back.png new file mode 100644 index 0000000000000000000000000000000000000000..c9f6f3cbceee3696dbb8875858b8ad79594f0711 Binary files /dev/null and b/src/static/textures/block/observer_back.png differ diff --git a/src/static/textures/block/observer_back_on.png b/src/static/textures/block/observer_back_on.png new file mode 100644 index 0000000000000000000000000000000000000000..4957e0c0ad541377ff02c89bae6b6a0cc15e53da Binary files /dev/null and b/src/static/textures/block/observer_back_on.png differ diff --git a/src/static/textures/block/observer_front.png b/src/static/textures/block/observer_front.png new file mode 100644 index 0000000000000000000000000000000000000000..46321305c4d1bba6fccf6a145d09d40570d7edb2 Binary files /dev/null and b/src/static/textures/block/observer_front.png differ diff --git a/src/static/textures/block/observer_side.png b/src/static/textures/block/observer_side.png new file mode 100644 index 0000000000000000000000000000000000000000..c157097aab1fbd59c7ac6ddf4ff75856020f0f13 Binary files /dev/null and b/src/static/textures/block/observer_side.png differ diff --git a/src/static/textures/block/observer_top.png b/src/static/textures/block/observer_top.png new file mode 100644 index 0000000000000000000000000000000000000000..58ab1e97103c74d5411047e2821403fdac3d5e41 Binary files /dev/null and b/src/static/textures/block/observer_top.png differ diff --git a/src/static/textures/block/obsidian.png b/src/static/textures/block/obsidian.png new file mode 100644 index 0000000000000000000000000000000000000000..65be807496f49a39133709055d315c4d5d4edb76 Binary files /dev/null and b/src/static/textures/block/obsidian.png differ diff --git a/src/static/textures/block/orange_tulip.png b/src/static/textures/block/orange_tulip.png new file mode 100644 index 0000000000000000000000000000000000000000..b90fafecb9a3e7b892de61a18587694fa3332531 Binary files /dev/null and b/src/static/textures/block/orange_tulip.png differ diff --git a/src/static/textures/block/oxeye_daisy.png b/src/static/textures/block/oxeye_daisy.png new file mode 100644 index 0000000000000000000000000000000000000000..b41d76e22931c937b7dd0d627dd8077b4baa912f Binary files /dev/null and b/src/static/textures/block/oxeye_daisy.png differ diff --git a/src/static/textures/block/packed_ice.png b/src/static/textures/block/packed_ice.png new file mode 100644 index 0000000000000000000000000000000000000000..3567697f13afa932845aafbc9bbaa3e85633f8ac Binary files /dev/null and b/src/static/textures/block/packed_ice.png differ diff --git a/src/static/textures/block/peony_bottom.png b/src/static/textures/block/peony_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..85dc0561973f86ea4834d66981457cb05f7f73fa Binary files /dev/null and b/src/static/textures/block/peony_bottom.png differ diff --git a/src/static/textures/block/peony_top.png b/src/static/textures/block/peony_top.png new file mode 100644 index 0000000000000000000000000000000000000000..5f464a9fdd8a86ffa85e6ca20fe477da7e1ad4f9 Binary files /dev/null and b/src/static/textures/block/peony_top.png differ diff --git a/src/static/textures/block/pink_tulip.png b/src/static/textures/block/pink_tulip.png new file mode 100644 index 0000000000000000000000000000000000000000..9425addae0a881bd31f57f770552437933171764 Binary files /dev/null and b/src/static/textures/block/pink_tulip.png differ diff --git a/src/static/textures/block/piston_bottom.png b/src/static/textures/block/piston_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..db43b1c2e4e1e2ce3bcb74f44b67cc58341f47fc Binary files /dev/null and b/src/static/textures/block/piston_bottom.png differ diff --git a/src/static/textures/block/piston_inner.png b/src/static/textures/block/piston_inner.png new file mode 100644 index 0000000000000000000000000000000000000000..7ae58fc64dd40af855cc3d4af01682fee46df2f4 Binary files /dev/null and b/src/static/textures/block/piston_inner.png differ diff --git a/src/static/textures/block/piston_side.png b/src/static/textures/block/piston_side.png new file mode 100644 index 0000000000000000000000000000000000000000..db5d89cb5145f97406fa1fd8b0fdfe9e295e6efd Binary files /dev/null and b/src/static/textures/block/piston_side.png differ diff --git a/src/static/textures/block/piston_top.png b/src/static/textures/block/piston_top.png new file mode 100644 index 0000000000000000000000000000000000000000..320c97b42b485ff733583582bf4d2cf004c25959 Binary files /dev/null and b/src/static/textures/block/piston_top.png differ diff --git a/src/static/textures/block/piston_top_sticky.png b/src/static/textures/block/piston_top_sticky.png new file mode 100644 index 0000000000000000000000000000000000000000..048e0c62960c43a147e406ac49a71db3cf23e52c Binary files /dev/null and b/src/static/textures/block/piston_top_sticky.png differ diff --git a/src/static/textures/block/podzol_top.png b/src/static/textures/block/podzol_top.png new file mode 100644 index 0000000000000000000000000000000000000000..fed5258051e33545a360f49c22c055af06990468 Binary files /dev/null and b/src/static/textures/block/podzol_top.png differ diff --git a/src/static/textures/block/polished_andesite.png b/src/static/textures/block/polished_andesite.png new file mode 100644 index 0000000000000000000000000000000000000000..4d09c954383a1f910bc9e80df28d9190b481ec6f Binary files /dev/null and b/src/static/textures/block/polished_andesite.png differ diff --git a/src/static/textures/block/polished_diorite.png b/src/static/textures/block/polished_diorite.png new file mode 100644 index 0000000000000000000000000000000000000000..b204aa230d466b0b4bb2d90e8cee4e2321ce58e8 Binary files /dev/null and b/src/static/textures/block/polished_diorite.png differ diff --git a/src/static/textures/block/polished_granite.png b/src/static/textures/block/polished_granite.png new file mode 100644 index 0000000000000000000000000000000000000000..ad56724265763e1e4df92b665461ba6b2d2d997f Binary files /dev/null and b/src/static/textures/block/polished_granite.png differ diff --git a/src/static/textures/block/poppy.png b/src/static/textures/block/poppy.png new file mode 100644 index 0000000000000000000000000000000000000000..44e767430455b61c8a40570f0b32d2b81877ed64 Binary files /dev/null and b/src/static/textures/block/poppy.png differ diff --git a/src/static/textures/block/potatoes_stage0.png b/src/static/textures/block/potatoes_stage0.png new file mode 100644 index 0000000000000000000000000000000000000000..c93c4c2ba102df1c23db24061e25bcab91d5e25f Binary files /dev/null and b/src/static/textures/block/potatoes_stage0.png differ diff --git a/src/static/textures/block/potatoes_stage1.png b/src/static/textures/block/potatoes_stage1.png new file mode 100644 index 0000000000000000000000000000000000000000..e7989e99293b058b36035ebd63daa8596e7830bb Binary files /dev/null and b/src/static/textures/block/potatoes_stage1.png differ diff --git a/src/static/textures/block/potatoes_stage2.png b/src/static/textures/block/potatoes_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..51aa6978573ffffd82ac2b0305763f6f1054fa4d Binary files /dev/null and b/src/static/textures/block/potatoes_stage2.png differ diff --git a/src/static/textures/block/potatoes_stage3.png b/src/static/textures/block/potatoes_stage3.png new file mode 100644 index 0000000000000000000000000000000000000000..49c3737103d6ab208004b1802cd0f854dde0fb75 Binary files /dev/null and b/src/static/textures/block/potatoes_stage3.png differ diff --git a/src/static/textures/block/powered_rail.png b/src/static/textures/block/powered_rail.png new file mode 100644 index 0000000000000000000000000000000000000000..4353bf7755d96c84c2854261983b56d28a04a714 Binary files /dev/null and b/src/static/textures/block/powered_rail.png differ diff --git a/src/static/textures/block/powered_rail_on.png b/src/static/textures/block/powered_rail_on.png new file mode 100644 index 0000000000000000000000000000000000000000..55f18f40a93384c562a308bc9a89badb5463cd2f Binary files /dev/null and b/src/static/textures/block/powered_rail_on.png differ diff --git a/src/static/textures/block/prismarine.png b/src/static/textures/block/prismarine.png new file mode 100644 index 0000000000000000000000000000000000000000..e45234b3d3745fd87d66c511e992b1cce41aa09c Binary files /dev/null and b/src/static/textures/block/prismarine.png differ diff --git a/src/static/textures/block/prismarine.png.mcmeta b/src/static/textures/block/prismarine.png.mcmeta new file mode 100644 index 0000000000000000000000000000000000000000..410b327ffd98ceb8b4dc2328769c13ccd52425de --- /dev/null +++ b/src/static/textures/block/prismarine.png.mcmeta @@ -0,0 +1,30 @@ +{ + "animation": { + "frametime": 300, + "interpolate": true, + "frames": [ + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 1, + 2, + 1, + 3, + 1, + 0, + 2, + 1, + 2, + 3, + 2, + 0, + 3, + 1, + 3 + ] + } +} diff --git a/src/static/textures/block/prismarine_bricks.png b/src/static/textures/block/prismarine_bricks.png new file mode 100644 index 0000000000000000000000000000000000000000..ee2b8063bb4120bd1b6c311ee2b12725b6ca77bc Binary files /dev/null and b/src/static/textures/block/prismarine_bricks.png differ diff --git a/src/static/textures/block/pumpkin_side.png b/src/static/textures/block/pumpkin_side.png new file mode 100644 index 0000000000000000000000000000000000000000..ce90346c073c5a443c9436650a0bec6c89571a0d Binary files /dev/null and b/src/static/textures/block/pumpkin_side.png differ diff --git a/src/static/textures/block/pumpkin_stem.png b/src/static/textures/block/pumpkin_stem.png new file mode 100644 index 0000000000000000000000000000000000000000..da7787fe69bec67b8f7bd207642fb7ca664e5c36 Binary files /dev/null and b/src/static/textures/block/pumpkin_stem.png differ diff --git a/src/static/textures/block/pumpkin_top.png b/src/static/textures/block/pumpkin_top.png new file mode 100644 index 0000000000000000000000000000000000000000..c6a8f5e29d36563e0325ae75a900873fbbc9fa24 Binary files /dev/null and b/src/static/textures/block/pumpkin_top.png differ diff --git a/src/static/textures/block/purpur_block.png b/src/static/textures/block/purpur_block.png new file mode 100644 index 0000000000000000000000000000000000000000..69c3898116be3729116ec46e09f8954078b5d65a Binary files /dev/null and b/src/static/textures/block/purpur_block.png differ diff --git a/src/static/textures/block/purpur_pillar.png b/src/static/textures/block/purpur_pillar.png new file mode 100644 index 0000000000000000000000000000000000000000..e22d27beb79e96eb1467bd6a48e8e9afc4771236 Binary files /dev/null and b/src/static/textures/block/purpur_pillar.png differ diff --git a/src/static/textures/block/purpur_pillar_top.png b/src/static/textures/block/purpur_pillar_top.png new file mode 100644 index 0000000000000000000000000000000000000000..2502aed5ba7efdfb2435f45d49a923f0a325f988 Binary files /dev/null and b/src/static/textures/block/purpur_pillar_top.png differ diff --git a/src/static/textures/block/quartz_block_bottom.png b/src/static/textures/block/quartz_block_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..3f832aa3c3d230dc45fe73e3c7f14f4ec7ae7aaf Binary files /dev/null and b/src/static/textures/block/quartz_block_bottom.png differ diff --git a/src/static/textures/block/quartz_block_side.png b/src/static/textures/block/quartz_block_side.png new file mode 100644 index 0000000000000000000000000000000000000000..0d6ee66ed0e4551b4a58800e885b947cac6854d6 Binary files /dev/null and b/src/static/textures/block/quartz_block_side.png differ diff --git a/src/static/textures/block/quartz_block_top.png b/src/static/textures/block/quartz_block_top.png new file mode 100644 index 0000000000000000000000000000000000000000..b777e4dc93be354b8874d1e0ecf8cf119f724820 Binary files /dev/null and b/src/static/textures/block/quartz_block_top.png differ diff --git a/src/static/textures/block/quartz_pillar.png b/src/static/textures/block/quartz_pillar.png new file mode 100644 index 0000000000000000000000000000000000000000..719a7eb88394b82796128ff1df195b141ef2d13d Binary files /dev/null and b/src/static/textures/block/quartz_pillar.png differ diff --git a/src/static/textures/block/quartz_pillar_top.png b/src/static/textures/block/quartz_pillar_top.png new file mode 100644 index 0000000000000000000000000000000000000000..41f5e144b9afea5c6035203746093300d038bd5f Binary files /dev/null and b/src/static/textures/block/quartz_pillar_top.png differ diff --git a/src/static/textures/block/rail.png b/src/static/textures/block/rail.png new file mode 100644 index 0000000000000000000000000000000000000000..5bd29576ce0023ed466da405e7da899d633055bd Binary files /dev/null and b/src/static/textures/block/rail.png differ diff --git a/src/static/textures/block/rail_corner.png b/src/static/textures/block/rail_corner.png new file mode 100644 index 0000000000000000000000000000000000000000..43eaf6201c74237d9637b8bb19a3bdb7ff6ee527 Binary files /dev/null and b/src/static/textures/block/rail_corner.png differ diff --git a/src/static/textures/block/red_mushroom.png b/src/static/textures/block/red_mushroom.png new file mode 100644 index 0000000000000000000000000000000000000000..6b983990e3c8cad105838821b666dea4855ae6db Binary files /dev/null and b/src/static/textures/block/red_mushroom.png differ diff --git a/src/static/textures/block/red_mushroom_block.png b/src/static/textures/block/red_mushroom_block.png new file mode 100644 index 0000000000000000000000000000000000000000..a77969e30c1fb622c7fb234331350ff91a17ab45 Binary files /dev/null and b/src/static/textures/block/red_mushroom_block.png differ diff --git a/src/static/textures/block/red_nether_bricks.png b/src/static/textures/block/red_nether_bricks.png new file mode 100644 index 0000000000000000000000000000000000000000..0b7d471ac8d6a00a37696328a71b65cd8c0645c9 Binary files /dev/null and b/src/static/textures/block/red_nether_bricks.png differ diff --git a/src/static/textures/block/red_sand.png b/src/static/textures/block/red_sand.png new file mode 100644 index 0000000000000000000000000000000000000000..1309006d813a9c4fc6ced7ea241bc76ff470ad81 Binary files /dev/null and b/src/static/textures/block/red_sand.png differ diff --git a/src/static/textures/block/red_sandstone.png b/src/static/textures/block/red_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..f6c5f7e5f4499479b644771fd6ce1d3f7afb2fcb Binary files /dev/null and b/src/static/textures/block/red_sandstone.png differ diff --git a/src/static/textures/block/red_sandstone_bottom.png b/src/static/textures/block/red_sandstone_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..5a91b8169392748a583022d2ebfb18b5b6108673 Binary files /dev/null and b/src/static/textures/block/red_sandstone_bottom.png differ diff --git a/src/static/textures/block/red_sandstone_top.png b/src/static/textures/block/red_sandstone_top.png new file mode 100644 index 0000000000000000000000000000000000000000..61aaa69f2debf6352cc1d2b7f54a88bae5c7eecc Binary files /dev/null and b/src/static/textures/block/red_sandstone_top.png differ diff --git a/src/static/textures/block/red_tulip.png b/src/static/textures/block/red_tulip.png new file mode 100644 index 0000000000000000000000000000000000000000..09c47dfb1d1c782ac02f456f0b9f4ab9e9aaddf2 Binary files /dev/null and b/src/static/textures/block/red_tulip.png differ diff --git a/src/static/textures/block/redstone_block.png b/src/static/textures/block/redstone_block.png new file mode 100644 index 0000000000000000000000000000000000000000..4391e518225edd246a7bcad47c7042587ca8d01c Binary files /dev/null and b/src/static/textures/block/redstone_block.png differ diff --git a/src/static/textures/block/redstone_lamp.png b/src/static/textures/block/redstone_lamp.png new file mode 100644 index 0000000000000000000000000000000000000000..36091677ad89f84cbc74fb0eaf45e1f0652aa18f Binary files /dev/null and b/src/static/textures/block/redstone_lamp.png differ diff --git a/src/static/textures/block/redstone_lamp_on.png b/src/static/textures/block/redstone_lamp_on.png new file mode 100644 index 0000000000000000000000000000000000000000..d89222714899e80bf177d583734ae0d407332d5e Binary files /dev/null and b/src/static/textures/block/redstone_lamp_on.png differ diff --git a/src/static/textures/block/redstone_ore.png b/src/static/textures/block/redstone_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..2490e21562785772f048b6db44ac4a5d7f6ede85 Binary files /dev/null and b/src/static/textures/block/redstone_ore.png differ diff --git a/src/static/textures/block/redstone_torch.png b/src/static/textures/block/redstone_torch.png new file mode 100644 index 0000000000000000000000000000000000000000..d49a7a9d6f13ba7d0d3b9ce658bca4fb9181c2cf Binary files /dev/null and b/src/static/textures/block/redstone_torch.png differ diff --git a/src/static/textures/block/redstone_torch_off.png b/src/static/textures/block/redstone_torch_off.png new file mode 100644 index 0000000000000000000000000000000000000000..cd82b6414b7e6ba25c0f242586bc18ac7bebcc4e Binary files /dev/null and b/src/static/textures/block/redstone_torch_off.png differ diff --git a/src/static/textures/block/repeater.png b/src/static/textures/block/repeater.png new file mode 100644 index 0000000000000000000000000000000000000000..3daa5e6d0f530a28d6af1a6f52d169144ff8ea13 Binary files /dev/null and b/src/static/textures/block/repeater.png differ diff --git a/src/static/textures/block/repeater_on.png b/src/static/textures/block/repeater_on.png new file mode 100644 index 0000000000000000000000000000000000000000..2e6c2ac6f5922411f6e58954d4c266a4af387e0f Binary files /dev/null and b/src/static/textures/block/repeater_on.png differ diff --git a/src/static/textures/block/repeating_command_block_back.png b/src/static/textures/block/repeating_command_block_back.png new file mode 100644 index 0000000000000000000000000000000000000000..87225347899e704d84b84a93bf1d82b0a771e60f Binary files /dev/null and b/src/static/textures/block/repeating_command_block_back.png differ diff --git a/src/static/textures/block/repeating_command_block_back.png.mcmeta b/src/static/textures/block/repeating_command_block_back.png.mcmeta new file mode 100644 index 0000000000000000000000000000000000000000..4894b537c138a0cd21e4d64f93ce7ce5206d629a --- /dev/null +++ b/src/static/textures/block/repeating_command_block_back.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": true, + "frametime": 10 + } +} diff --git a/src/static/textures/block/repeating_command_block_conditional.png b/src/static/textures/block/repeating_command_block_conditional.png new file mode 100644 index 0000000000000000000000000000000000000000..34ccc51a10f37f8046f5e5c3c2c681447ef6772c Binary files /dev/null and b/src/static/textures/block/repeating_command_block_conditional.png differ diff --git a/src/static/textures/block/repeating_command_block_conditional.png.mcmeta b/src/static/textures/block/repeating_command_block_conditional.png.mcmeta new file mode 100644 index 0000000000000000000000000000000000000000..4894b537c138a0cd21e4d64f93ce7ce5206d629a --- /dev/null +++ b/src/static/textures/block/repeating_command_block_conditional.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": true, + "frametime": 10 + } +} diff --git a/src/static/textures/block/repeating_command_block_front.png b/src/static/textures/block/repeating_command_block_front.png new file mode 100644 index 0000000000000000000000000000000000000000..5d909244e99bfed3ac24e53c65b070713f3f4fc3 Binary files /dev/null and b/src/static/textures/block/repeating_command_block_front.png differ diff --git a/src/static/textures/block/repeating_command_block_front.png.mcmeta b/src/static/textures/block/repeating_command_block_front.png.mcmeta new file mode 100644 index 0000000000000000000000000000000000000000..4894b537c138a0cd21e4d64f93ce7ce5206d629a --- /dev/null +++ b/src/static/textures/block/repeating_command_block_front.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": true, + "frametime": 10 + } +} diff --git a/src/static/textures/block/repeating_command_block_side.png b/src/static/textures/block/repeating_command_block_side.png new file mode 100644 index 0000000000000000000000000000000000000000..89305d9fb927a85d1490622a165d110552651cfa Binary files /dev/null and b/src/static/textures/block/repeating_command_block_side.png differ diff --git a/src/static/textures/block/repeating_command_block_side.png.mcmeta b/src/static/textures/block/repeating_command_block_side.png.mcmeta new file mode 100644 index 0000000000000000000000000000000000000000..4894b537c138a0cd21e4d64f93ce7ce5206d629a --- /dev/null +++ b/src/static/textures/block/repeating_command_block_side.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": true, + "frametime": 10 + } +} diff --git a/src/static/textures/block/rose_bush_bottom.png b/src/static/textures/block/rose_bush_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..140a45f6de008d98082e86aaba4c42507b85f988 Binary files /dev/null and b/src/static/textures/block/rose_bush_bottom.png differ diff --git a/src/static/textures/block/rose_bush_top.png b/src/static/textures/block/rose_bush_top.png new file mode 100644 index 0000000000000000000000000000000000000000..3b3207d2b388bd21660fcbe98555bee0cce14a62 Binary files /dev/null and b/src/static/textures/block/rose_bush_top.png differ diff --git a/src/static/textures/block/sand.png b/src/static/textures/block/sand.png new file mode 100644 index 0000000000000000000000000000000000000000..bc48301a6f571835e05876129cbedd4f2c78b316 Binary files /dev/null and b/src/static/textures/block/sand.png differ diff --git a/src/static/textures/block/sandstone.png b/src/static/textures/block/sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..38e10bf8c0e45f73e6bb546852f6cdaa8c2692a0 Binary files /dev/null and b/src/static/textures/block/sandstone.png differ diff --git a/src/static/textures/block/sandstone_bottom.png b/src/static/textures/block/sandstone_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..09a47a4201be114c931a0e9435f8b7c27790b8c7 Binary files /dev/null and b/src/static/textures/block/sandstone_bottom.png differ diff --git a/src/static/textures/block/sandstone_top.png b/src/static/textures/block/sandstone_top.png new file mode 100644 index 0000000000000000000000000000000000000000..fd5ef755fd090c013c497d09fb5c49fb972cb531 Binary files /dev/null and b/src/static/textures/block/sandstone_top.png differ diff --git a/src/static/textures/block/slime_block.png b/src/static/textures/block/slime_block.png new file mode 100644 index 0000000000000000000000000000000000000000..5c45c4ec636e6b71826ca8832eccdcc983f8e113 Binary files /dev/null and b/src/static/textures/block/slime_block.png differ diff --git a/src/static/textures/block/smooth_stone.png b/src/static/textures/block/smooth_stone.png new file mode 100644 index 0000000000000000000000000000000000000000..ffbf234c5c640502a3cf5e980ae06e5efe872ed0 Binary files /dev/null and b/src/static/textures/block/smooth_stone.png differ diff --git a/src/static/textures/block/smooth_stone_slab_side.png b/src/static/textures/block/smooth_stone_slab_side.png new file mode 100644 index 0000000000000000000000000000000000000000..9560c4ab481d6ca4845e4d9a88207eecc28f34bd Binary files /dev/null and b/src/static/textures/block/smooth_stone_slab_side.png differ diff --git a/src/static/textures/block/snow.png b/src/static/textures/block/snow.png new file mode 100644 index 0000000000000000000000000000000000000000..802c4163a3fb859c8720b039038911555071d91f Binary files /dev/null and b/src/static/textures/block/snow.png differ diff --git a/src/static/textures/block/soul_sand.png b/src/static/textures/block/soul_sand.png new file mode 100644 index 0000000000000000000000000000000000000000..9e4b1a6d758fb79c704034099ebc1c368111b60c Binary files /dev/null and b/src/static/textures/block/soul_sand.png differ diff --git a/src/static/textures/block/spawner.png b/src/static/textures/block/spawner.png new file mode 100644 index 0000000000000000000000000000000000000000..5f85452f78cbab3e7f9422980a0d6d2c2a5bc16f Binary files /dev/null and b/src/static/textures/block/spawner.png differ diff --git a/src/static/textures/block/sponge.png b/src/static/textures/block/sponge.png new file mode 100644 index 0000000000000000000000000000000000000000..ffb122959a60ef7b08be9379f77ea95f2bb64e3a Binary files /dev/null and b/src/static/textures/block/sponge.png differ diff --git a/src/static/textures/block/spruce_door_bottom.png b/src/static/textures/block/spruce_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..356c422dfd115c68234b6aadf6061b9a835e961f Binary files /dev/null and b/src/static/textures/block/spruce_door_bottom.png differ diff --git a/src/static/textures/block/spruce_door_top.png b/src/static/textures/block/spruce_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..7b2ec280fbfcdc3cbb5775eae8b3895fdb662484 Binary files /dev/null and b/src/static/textures/block/spruce_door_top.png differ diff --git a/src/static/textures/block/spruce_leaves.png b/src/static/textures/block/spruce_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..875922d99b9b2673178bd609e1272fec9988fdda Binary files /dev/null and b/src/static/textures/block/spruce_leaves.png differ diff --git a/src/static/textures/block/spruce_log.png b/src/static/textures/block/spruce_log.png new file mode 100644 index 0000000000000000000000000000000000000000..b254569d781241ea2c31b16e58a46e7a9c020cb1 Binary files /dev/null and b/src/static/textures/block/spruce_log.png differ diff --git a/src/static/textures/block/spruce_log_top.png b/src/static/textures/block/spruce_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..d5a8516ed3bf8a89de394a07b697545d3562e695 Binary files /dev/null and b/src/static/textures/block/spruce_log_top.png differ diff --git a/src/static/textures/block/spruce_planks.png b/src/static/textures/block/spruce_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..f6c0622560cbce214b59f9e742ed436e955bafb8 Binary files /dev/null and b/src/static/textures/block/spruce_planks.png differ diff --git a/src/static/textures/block/spruce_sapling.png b/src/static/textures/block/spruce_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..37aeb9c013e21644ab345979745d555ce2dc1c9e Binary files /dev/null and b/src/static/textures/block/spruce_sapling.png differ diff --git a/src/static/textures/block/spruce_trapdoor.png b/src/static/textures/block/spruce_trapdoor.png new file mode 100644 index 0000000000000000000000000000000000000000..f26d7d819ac475f4546826ba49e06b17dcb3c929 Binary files /dev/null and b/src/static/textures/block/spruce_trapdoor.png differ diff --git a/src/static/textures/block/stone.png b/src/static/textures/block/stone.png new file mode 100644 index 0000000000000000000000000000000000000000..5c52c6fe177fe7c3686305a8a45e77ba15cbe848 Binary files /dev/null and b/src/static/textures/block/stone.png differ diff --git a/src/static/textures/block/stone_bricks.png b/src/static/textures/block/stone_bricks.png new file mode 100644 index 0000000000000000000000000000000000000000..3cf3520480dfc7e1bdf63832db826d6d5a19b4c3 Binary files /dev/null and b/src/static/textures/block/stone_bricks.png differ diff --git a/src/static/textures/block/stripped_acacia_log_top.png b/src/static/textures/block/stripped_acacia_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..7dc7599ad5e0e77e00ed034f2594f43d8d707a39 Binary files /dev/null and b/src/static/textures/block/stripped_acacia_log_top.png differ diff --git a/src/static/textures/block/stripped_birch_log_top.png b/src/static/textures/block/stripped_birch_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..b50ee12a721464897b74628d758153fe5dac5c83 Binary files /dev/null and b/src/static/textures/block/stripped_birch_log_top.png differ diff --git a/src/static/textures/block/stripped_dark_oak_log_top.png b/src/static/textures/block/stripped_dark_oak_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..d760d5cfc4b701d6d678e913bfd3da3aaa5d0242 Binary files /dev/null and b/src/static/textures/block/stripped_dark_oak_log_top.png differ diff --git a/src/static/textures/block/stripped_jungle_log_top.png b/src/static/textures/block/stripped_jungle_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..e7bfa4212814a834f9549c91fbf4d8ed929c6637 Binary files /dev/null and b/src/static/textures/block/stripped_jungle_log_top.png differ diff --git a/src/static/textures/block/stripped_oak_log_top.png b/src/static/textures/block/stripped_oak_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..8917a4b868946af1327ab9a804096a67e9eecc73 Binary files /dev/null and b/src/static/textures/block/stripped_oak_log_top.png differ diff --git a/src/static/textures/block/stripped_spruce_log_top.png b/src/static/textures/block/stripped_spruce_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..c5601b6fc7fd4adc43a0c7731a50093cccb2c320 Binary files /dev/null and b/src/static/textures/block/stripped_spruce_log_top.png differ diff --git a/src/static/textures/block/sunflower_back.png b/src/static/textures/block/sunflower_back.png new file mode 100644 index 0000000000000000000000000000000000000000..ab287cee4b11d7cc3ff401965ac0b08ebb547976 Binary files /dev/null and b/src/static/textures/block/sunflower_back.png differ diff --git a/src/static/textures/block/sunflower_bottom.png b/src/static/textures/block/sunflower_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..21414d568b0340acb656540f258e4258bf0ff456 Binary files /dev/null and b/src/static/textures/block/sunflower_bottom.png differ diff --git a/src/static/textures/block/sunflower_front.png b/src/static/textures/block/sunflower_front.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2720d02badad21fa60c2935b0fe3ad3b78e40a Binary files /dev/null and b/src/static/textures/block/sunflower_front.png differ diff --git a/src/static/textures/block/sunflower_top.png b/src/static/textures/block/sunflower_top.png new file mode 100644 index 0000000000000000000000000000000000000000..0927112380453052912769e87babc0c686128be3 Binary files /dev/null and b/src/static/textures/block/sunflower_top.png differ diff --git a/src/static/textures/block/tall_grass_bottom.png b/src/static/textures/block/tall_grass_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..0bd08db69b66ab0754e22d1ea893f3c9bb41a060 Binary files /dev/null and b/src/static/textures/block/tall_grass_bottom.png differ diff --git a/src/static/textures/block/tall_grass_top.png b/src/static/textures/block/tall_grass_top.png new file mode 100644 index 0000000000000000000000000000000000000000..6aba39e92539c2c255e75eb9f36ce07f064a7367 Binary files /dev/null and b/src/static/textures/block/tall_grass_top.png differ diff --git a/src/static/textures/block/terracotta.png b/src/static/textures/block/terracotta.png new file mode 100644 index 0000000000000000000000000000000000000000..1f78b1556e0725d6a6d0e3ce098458572af49ac1 Binary files /dev/null and b/src/static/textures/block/terracotta.png differ diff --git a/src/static/textures/block/tnt_bottom.png b/src/static/textures/block/tnt_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..53f78d706be13723d917a81fa7adaa1df810e911 Binary files /dev/null and b/src/static/textures/block/tnt_bottom.png differ diff --git a/src/static/textures/block/tnt_side.png b/src/static/textures/block/tnt_side.png new file mode 100644 index 0000000000000000000000000000000000000000..74d66c70dc5b1646ed834a3e778b3c7b1fead37d Binary files /dev/null and b/src/static/textures/block/tnt_side.png differ diff --git a/src/static/textures/block/tnt_top.png b/src/static/textures/block/tnt_top.png new file mode 100644 index 0000000000000000000000000000000000000000..078dc312067df90a09604e025565c3dc0a223bbe Binary files /dev/null and b/src/static/textures/block/tnt_top.png differ diff --git a/src/static/textures/block/torch.png b/src/static/textures/block/torch.png new file mode 100644 index 0000000000000000000000000000000000000000..7d2ec9b1ae392e6289d9e43167f47cae547f2797 Binary files /dev/null and b/src/static/textures/block/torch.png differ diff --git a/src/static/textures/block/tripwire_hook.png b/src/static/textures/block/tripwire_hook.png new file mode 100644 index 0000000000000000000000000000000000000000..1eda9ef66ba534f8c606e6f3c6ede927eacea2c1 Binary files /dev/null and b/src/static/textures/block/tripwire_hook.png differ diff --git a/src/static/textures/block/vine.png b/src/static/textures/block/vine.png new file mode 100644 index 0000000000000000000000000000000000000000..3d4f836f1af4c29767623a3f5a43a1906d54f86b Binary files /dev/null and b/src/static/textures/block/vine.png differ diff --git a/src/static/textures/block/water.png b/src/static/textures/block/water.png new file mode 100644 index 0000000000000000000000000000000000000000..8eb28349a83b75e48e3fe0e37958e3a318a3c024 Binary files /dev/null and b/src/static/textures/block/water.png differ diff --git a/src/static/textures/block/wet_sponge.png b/src/static/textures/block/wet_sponge.png new file mode 100644 index 0000000000000000000000000000000000000000..13b95c3b38a95907834c951a50021c41e31aa3db Binary files /dev/null and b/src/static/textures/block/wet_sponge.png differ diff --git a/src/static/textures/block/wheat_stage0.png b/src/static/textures/block/wheat_stage0.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ce8263a63dd046061527436422a911d6674f0c Binary files /dev/null and b/src/static/textures/block/wheat_stage0.png differ diff --git a/src/static/textures/block/wheat_stage1.png b/src/static/textures/block/wheat_stage1.png new file mode 100644 index 0000000000000000000000000000000000000000..a9a4517cb74265d88759936b3ac1fce36880bf4e Binary files /dev/null and b/src/static/textures/block/wheat_stage1.png differ diff --git a/src/static/textures/block/wheat_stage2.png b/src/static/textures/block/wheat_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..dec081ffb0520329d74fd345328bd4fc3272df54 Binary files /dev/null and b/src/static/textures/block/wheat_stage2.png differ diff --git a/src/static/textures/block/wheat_stage3.png b/src/static/textures/block/wheat_stage3.png new file mode 100644 index 0000000000000000000000000000000000000000..8b2c0ca9afa7c99521bb7daa75c1bb1fffd74e23 Binary files /dev/null and b/src/static/textures/block/wheat_stage3.png differ diff --git a/src/static/textures/block/wheat_stage4.png b/src/static/textures/block/wheat_stage4.png new file mode 100644 index 0000000000000000000000000000000000000000..55158823a7fe7e23fb0de5fed2e653b63fb7109e Binary files /dev/null and b/src/static/textures/block/wheat_stage4.png differ diff --git a/src/static/textures/block/wheat_stage5.png b/src/static/textures/block/wheat_stage5.png new file mode 100644 index 0000000000000000000000000000000000000000..cbdea26c318d0839915179aad3406da3bbaa441a Binary files /dev/null and b/src/static/textures/block/wheat_stage5.png differ diff --git a/src/static/textures/block/wheat_stage6.png b/src/static/textures/block/wheat_stage6.png new file mode 100644 index 0000000000000000000000000000000000000000..6ccae7620a5399fe40613a03f6bb9db2bd87859c Binary files /dev/null and b/src/static/textures/block/wheat_stage6.png differ diff --git a/src/static/textures/block/wheat_stage7.png b/src/static/textures/block/wheat_stage7.png new file mode 100644 index 0000000000000000000000000000000000000000..5da710a2b5f6ca51a4a11ff83aa44efe60f2267e Binary files /dev/null and b/src/static/textures/block/wheat_stage7.png differ diff --git a/src/static/textures/block/white_tulip.png b/src/static/textures/block/white_tulip.png new file mode 100644 index 0000000000000000000000000000000000000000..cf7ef07716300a3d6394f3f9f3103deea1f21be0 Binary files /dev/null and b/src/static/textures/block/white_tulip.png differ diff --git a/src/static/textures/entity/alex.png b/src/static/textures/entity/alex.png new file mode 100644 index 0000000000000000000000000000000000000000..ffd8e0719a1a4fac1f58895ed3a30130d3aa4b46 Binary files /dev/null and b/src/static/textures/entity/alex.png differ diff --git a/src/static/textures/entity/armorstand/wood.png b/src/static/textures/entity/armorstand/wood.png new file mode 100644 index 0000000000000000000000000000000000000000..e03750a466901b30c8d7f6c7b4f1f825e111d02e Binary files /dev/null and b/src/static/textures/entity/armorstand/wood.png differ diff --git a/src/static/textures/entity/arrow.png b/src/static/textures/entity/arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..0d58b2cc48fce89b3146541d0662c661a3d4fda8 Binary files /dev/null and b/src/static/textures/entity/arrow.png differ diff --git a/src/static/textures/entity/banner/base.png b/src/static/textures/entity/banner/base.png new file mode 100644 index 0000000000000000000000000000000000000000..a590eabcbf03f653da26d02ce9d096d24a536cb3 Binary files /dev/null and b/src/static/textures/entity/banner/base.png differ diff --git a/src/static/textures/entity/banner/border.png b/src/static/textures/entity/banner/border.png new file mode 100644 index 0000000000000000000000000000000000000000..3e5fb43277bf0f1e7cb2b2a57c26b96be8f892cd Binary files /dev/null and b/src/static/textures/entity/banner/border.png differ diff --git a/src/static/textures/entity/banner/bricks.png b/src/static/textures/entity/banner/bricks.png new file mode 100644 index 0000000000000000000000000000000000000000..a0d49a7cfff60fe8b1415f004c5b2d0cbf06fdb8 Binary files /dev/null and b/src/static/textures/entity/banner/bricks.png differ diff --git a/src/static/textures/entity/banner/circle.png b/src/static/textures/entity/banner/circle.png new file mode 100644 index 0000000000000000000000000000000000000000..5e1e20cd5b204b0f5d07766ed5e9635060e42407 Binary files /dev/null and b/src/static/textures/entity/banner/circle.png differ diff --git a/src/static/textures/entity/banner/creeper.png b/src/static/textures/entity/banner/creeper.png new file mode 100644 index 0000000000000000000000000000000000000000..2949472b3b1d5a65ee2b9406b855326b7b4b9c3a Binary files /dev/null and b/src/static/textures/entity/banner/creeper.png differ diff --git a/src/static/textures/entity/banner/cross.png b/src/static/textures/entity/banner/cross.png new file mode 100644 index 0000000000000000000000000000000000000000..6a6c8c67446c37f5342d40154c8b70973d56737b Binary files /dev/null and b/src/static/textures/entity/banner/cross.png differ diff --git a/src/static/textures/entity/banner/curly_border.png b/src/static/textures/entity/banner/curly_border.png new file mode 100644 index 0000000000000000000000000000000000000000..d94a79a6dcfc45df0f52123aa289ba2b4041bcb4 Binary files /dev/null and b/src/static/textures/entity/banner/curly_border.png differ diff --git a/src/static/textures/entity/banner/diagonal_left.png b/src/static/textures/entity/banner/diagonal_left.png new file mode 100644 index 0000000000000000000000000000000000000000..f3712198073c9bcd8f37168e8562b892ff8c6c27 Binary files /dev/null and b/src/static/textures/entity/banner/diagonal_left.png differ diff --git a/src/static/textures/entity/banner/diagonal_right.png b/src/static/textures/entity/banner/diagonal_right.png new file mode 100644 index 0000000000000000000000000000000000000000..3f2b34b31a893b396e11aa4b8a1b20c1025af2a7 Binary files /dev/null and b/src/static/textures/entity/banner/diagonal_right.png differ diff --git a/src/static/textures/entity/banner/diagonal_up_left.png b/src/static/textures/entity/banner/diagonal_up_left.png new file mode 100644 index 0000000000000000000000000000000000000000..c1bfa32a7c2fc04482d92c59789bf2147809f569 Binary files /dev/null and b/src/static/textures/entity/banner/diagonal_up_left.png differ diff --git a/src/static/textures/entity/banner/diagonal_up_right.png b/src/static/textures/entity/banner/diagonal_up_right.png new file mode 100644 index 0000000000000000000000000000000000000000..0e99514d80997951bb817a6cb6eddffa4e831394 Binary files /dev/null and b/src/static/textures/entity/banner/diagonal_up_right.png differ diff --git a/src/static/textures/entity/banner/flower.png b/src/static/textures/entity/banner/flower.png new file mode 100644 index 0000000000000000000000000000000000000000..6efa798c4b456ec11eb1ab43d7e53274bdbb74f4 Binary files /dev/null and b/src/static/textures/entity/banner/flower.png differ diff --git a/src/static/textures/entity/banner/gradient.png b/src/static/textures/entity/banner/gradient.png new file mode 100644 index 0000000000000000000000000000000000000000..8bc09cf7486c948cc014260b9daf4915798a2b8d Binary files /dev/null and b/src/static/textures/entity/banner/gradient.png differ diff --git a/src/static/textures/entity/banner/gradient_up.png b/src/static/textures/entity/banner/gradient_up.png new file mode 100644 index 0000000000000000000000000000000000000000..59591815aefd6ae2a8af60633249ff3475942121 Binary files /dev/null and b/src/static/textures/entity/banner/gradient_up.png differ diff --git a/src/static/textures/entity/banner/half_horizontal.png b/src/static/textures/entity/banner/half_horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..0ab546894ec3c4738062916bc1ff4d61badb2db5 Binary files /dev/null and b/src/static/textures/entity/banner/half_horizontal.png differ diff --git a/src/static/textures/entity/banner/half_horizontal_bottom.png b/src/static/textures/entity/banner/half_horizontal_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..c91c8cd46ad7eb2f2935ea6542a98e0ad0546f41 Binary files /dev/null and b/src/static/textures/entity/banner/half_horizontal_bottom.png differ diff --git a/src/static/textures/entity/banner/half_vertical.png b/src/static/textures/entity/banner/half_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..0f36e216a6972ee606027f21fa2eae632bc7a121 Binary files /dev/null and b/src/static/textures/entity/banner/half_vertical.png differ diff --git a/src/static/textures/entity/banner/half_vertical_right.png b/src/static/textures/entity/banner/half_vertical_right.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a9eb159c3b4bb0bb33ba5dad322cb5d9c75e93 Binary files /dev/null and b/src/static/textures/entity/banner/half_vertical_right.png differ diff --git a/src/static/textures/entity/banner/mojang.png b/src/static/textures/entity/banner/mojang.png new file mode 100644 index 0000000000000000000000000000000000000000..1f993a770b6fc52d7202f3dda7b474ba46b0625b Binary files /dev/null and b/src/static/textures/entity/banner/mojang.png differ diff --git a/src/static/textures/entity/banner/rhombus.png b/src/static/textures/entity/banner/rhombus.png new file mode 100644 index 0000000000000000000000000000000000000000..4657c81e6a74243cbbc0b3e577dfd0d515491794 Binary files /dev/null and b/src/static/textures/entity/banner/rhombus.png differ diff --git a/src/static/textures/entity/banner/skull.png b/src/static/textures/entity/banner/skull.png new file mode 100644 index 0000000000000000000000000000000000000000..77135d4226b439c71f7daa01f567a8b72c04cb9a Binary files /dev/null and b/src/static/textures/entity/banner/skull.png differ diff --git a/src/static/textures/entity/banner/small_stripes.png b/src/static/textures/entity/banner/small_stripes.png new file mode 100644 index 0000000000000000000000000000000000000000..0d2fe6b6e987803ff01f4f74ed155aa830289d0b Binary files /dev/null and b/src/static/textures/entity/banner/small_stripes.png differ diff --git a/src/static/textures/entity/banner/square_bottom_left.png b/src/static/textures/entity/banner/square_bottom_left.png new file mode 100644 index 0000000000000000000000000000000000000000..0f68ec37ed5d906db44be87022a624bb7044e664 Binary files /dev/null and b/src/static/textures/entity/banner/square_bottom_left.png differ diff --git a/src/static/textures/entity/banner/square_bottom_right.png b/src/static/textures/entity/banner/square_bottom_right.png new file mode 100644 index 0000000000000000000000000000000000000000..799ba3c7af06f422bceef458cd43d1b9145454bf Binary files /dev/null and b/src/static/textures/entity/banner/square_bottom_right.png differ diff --git a/src/static/textures/entity/banner/square_top_left.png b/src/static/textures/entity/banner/square_top_left.png new file mode 100644 index 0000000000000000000000000000000000000000..02a40e41547b832f276c2f5c9c38f27f19df48f2 Binary files /dev/null and b/src/static/textures/entity/banner/square_top_left.png differ diff --git a/src/static/textures/entity/banner/square_top_right.png b/src/static/textures/entity/banner/square_top_right.png new file mode 100644 index 0000000000000000000000000000000000000000..43f67b89913df8338d92d1db4357ea0f54c952cc Binary files /dev/null and b/src/static/textures/entity/banner/square_top_right.png differ diff --git a/src/static/textures/entity/banner/straight_cross.png b/src/static/textures/entity/banner/straight_cross.png new file mode 100644 index 0000000000000000000000000000000000000000..8d5a8c6cd4df1f0e55a22df79319be68edc168c7 Binary files /dev/null and b/src/static/textures/entity/banner/straight_cross.png differ diff --git a/src/static/textures/entity/banner/stripe_bottom.png b/src/static/textures/entity/banner/stripe_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..b6aafa5c22a3adf36631a47b245fc69e116c4623 Binary files /dev/null and b/src/static/textures/entity/banner/stripe_bottom.png differ diff --git a/src/static/textures/entity/banner/stripe_center.png b/src/static/textures/entity/banner/stripe_center.png new file mode 100644 index 0000000000000000000000000000000000000000..5383cae488ffc2b7f85c91c333070a9a175a6499 Binary files /dev/null and b/src/static/textures/entity/banner/stripe_center.png differ diff --git a/src/static/textures/entity/banner/stripe_downleft.png b/src/static/textures/entity/banner/stripe_downleft.png new file mode 100644 index 0000000000000000000000000000000000000000..ff79d2a0b46de8a77205c0ae9fab03e05a087ffa Binary files /dev/null and b/src/static/textures/entity/banner/stripe_downleft.png differ diff --git a/src/static/textures/entity/banner/stripe_downright.png b/src/static/textures/entity/banner/stripe_downright.png new file mode 100644 index 0000000000000000000000000000000000000000..79bbbd06316cc0e1f99d99541f02b7138b32c62a Binary files /dev/null and b/src/static/textures/entity/banner/stripe_downright.png differ diff --git a/src/static/textures/entity/banner/stripe_left.png b/src/static/textures/entity/banner/stripe_left.png new file mode 100644 index 0000000000000000000000000000000000000000..45dabd3a67b45f98c5bcd63d325a559e98624440 Binary files /dev/null and b/src/static/textures/entity/banner/stripe_left.png differ diff --git a/src/static/textures/entity/banner/stripe_middle.png b/src/static/textures/entity/banner/stripe_middle.png new file mode 100644 index 0000000000000000000000000000000000000000..e98e6a8b82478e20d0c2f5a0cacd2b98b01bf824 Binary files /dev/null and b/src/static/textures/entity/banner/stripe_middle.png differ diff --git a/src/static/textures/entity/banner/stripe_right.png b/src/static/textures/entity/banner/stripe_right.png new file mode 100644 index 0000000000000000000000000000000000000000..1dc458a6e21d38761da78d13892b7f6bca41ad7b Binary files /dev/null and b/src/static/textures/entity/banner/stripe_right.png differ diff --git a/src/static/textures/entity/banner/stripe_top.png b/src/static/textures/entity/banner/stripe_top.png new file mode 100644 index 0000000000000000000000000000000000000000..4c260396a5b8cb62d9e6f2ef98eb18079ecf1d01 Binary files /dev/null and b/src/static/textures/entity/banner/stripe_top.png differ diff --git a/src/static/textures/entity/banner/triangle_bottom.png b/src/static/textures/entity/banner/triangle_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..03cd25446480b8dacf73b4c788d4ee901b2d77cd Binary files /dev/null and b/src/static/textures/entity/banner/triangle_bottom.png differ diff --git a/src/static/textures/entity/banner/triangle_top.png b/src/static/textures/entity/banner/triangle_top.png new file mode 100644 index 0000000000000000000000000000000000000000..852336cbc8d66003a8bf34c2ca9b59764ba29903 Binary files /dev/null and b/src/static/textures/entity/banner/triangle_top.png differ diff --git a/src/static/textures/entity/banner/triangles_bottom.png b/src/static/textures/entity/banner/triangles_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..75631252ec4e1ffd2a052965dedcf912643536d8 Binary files /dev/null and b/src/static/textures/entity/banner/triangles_bottom.png differ diff --git a/src/static/textures/entity/banner/triangles_top.png b/src/static/textures/entity/banner/triangles_top.png new file mode 100644 index 0000000000000000000000000000000000000000..25158e93ca85f3980801ccf697eaf0e096d7b678 Binary files /dev/null and b/src/static/textures/entity/banner/triangles_top.png differ diff --git a/src/static/textures/entity/banner_base.png b/src/static/textures/entity/banner_base.png new file mode 100644 index 0000000000000000000000000000000000000000..5ef802b4d4d26ab9cfa5826ec60f54b6ee830c44 Binary files /dev/null and b/src/static/textures/entity/banner_base.png differ diff --git a/src/static/textures/entity/bat.png b/src/static/textures/entity/bat.png new file mode 100644 index 0000000000000000000000000000000000000000..3f71bc4797b2f080715853357470eaf0ef2518ff Binary files /dev/null and b/src/static/textures/entity/bat.png differ diff --git a/src/static/textures/entity/beacon_beam.png b/src/static/textures/entity/beacon_beam.png new file mode 100644 index 0000000000000000000000000000000000000000..a2da8c6f4be3796cf393de7394444125b8e16783 Binary files /dev/null and b/src/static/textures/entity/beacon_beam.png differ diff --git a/src/static/textures/entity/bear/polarbear.png b/src/static/textures/entity/bear/polarbear.png new file mode 100644 index 0000000000000000000000000000000000000000..59de9a1c1be2ce7c5fcba8378c061ee3c8108aac Binary files /dev/null and b/src/static/textures/entity/bear/polarbear.png differ diff --git a/src/static/textures/entity/bed/black.png b/src/static/textures/entity/bed/black.png new file mode 100644 index 0000000000000000000000000000000000000000..c35406749702e9f083410b77d306c1a2565a8307 Binary files /dev/null and b/src/static/textures/entity/bed/black.png differ diff --git a/src/static/textures/entity/bed/blue.png b/src/static/textures/entity/bed/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..c958553377418886901d8f093d61235eeecc7b6f Binary files /dev/null and b/src/static/textures/entity/bed/blue.png differ diff --git a/src/static/textures/entity/bed/brown.png b/src/static/textures/entity/bed/brown.png new file mode 100644 index 0000000000000000000000000000000000000000..8e4376171721c1c1d4a0099b020632fff8fc077c Binary files /dev/null and b/src/static/textures/entity/bed/brown.png differ diff --git a/src/static/textures/entity/bed/cyan.png b/src/static/textures/entity/bed/cyan.png new file mode 100644 index 0000000000000000000000000000000000000000..f06c0224ba370e68b1e8425e54527ae5104e6a60 Binary files /dev/null and b/src/static/textures/entity/bed/cyan.png differ diff --git a/src/static/textures/entity/bed/gray.png b/src/static/textures/entity/bed/gray.png new file mode 100644 index 0000000000000000000000000000000000000000..5e78b0028e4b0394e3146d57ebee94323a6425a6 Binary files /dev/null and b/src/static/textures/entity/bed/gray.png differ diff --git a/src/static/textures/entity/bed/green.png b/src/static/textures/entity/bed/green.png new file mode 100644 index 0000000000000000000000000000000000000000..46ca48db7fa5b4ae5ea6e8b6e6eeca3a799f3698 Binary files /dev/null and b/src/static/textures/entity/bed/green.png differ diff --git a/src/static/textures/entity/bed/light_blue.png b/src/static/textures/entity/bed/light_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..9ce3438628b86fce761770ee5352ce84b7fe4b65 Binary files /dev/null and b/src/static/textures/entity/bed/light_blue.png differ diff --git a/src/static/textures/entity/bed/light_gray.png b/src/static/textures/entity/bed/light_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..d9750242544f4dd9710d697e5da86d4d1a36fc50 Binary files /dev/null and b/src/static/textures/entity/bed/light_gray.png differ diff --git a/src/static/textures/entity/bed/lime.png b/src/static/textures/entity/bed/lime.png new file mode 100644 index 0000000000000000000000000000000000000000..df400273132d8485fe39c74018f076f27f8b8f50 Binary files /dev/null and b/src/static/textures/entity/bed/lime.png differ diff --git a/src/static/textures/entity/bed/magenta.png b/src/static/textures/entity/bed/magenta.png new file mode 100644 index 0000000000000000000000000000000000000000..5695d9b20f485ff9663507767611ccfe7618e0db Binary files /dev/null and b/src/static/textures/entity/bed/magenta.png differ diff --git a/src/static/textures/entity/bed/orange.png b/src/static/textures/entity/bed/orange.png new file mode 100644 index 0000000000000000000000000000000000000000..f202506b17bbe7baf1e3a8f1c26339d35e3bb1c1 Binary files /dev/null and b/src/static/textures/entity/bed/orange.png differ diff --git a/src/static/textures/entity/bed/pink.png b/src/static/textures/entity/bed/pink.png new file mode 100644 index 0000000000000000000000000000000000000000..79053b4cdc147e18aaa44d1ed9b1bed0a23aa5fc Binary files /dev/null and b/src/static/textures/entity/bed/pink.png differ diff --git a/src/static/textures/entity/bed/purple.png b/src/static/textures/entity/bed/purple.png new file mode 100644 index 0000000000000000000000000000000000000000..dd73a8d2d7e669df3d4ea0e414e7104ee3bcbe1e Binary files /dev/null and b/src/static/textures/entity/bed/purple.png differ diff --git a/src/static/textures/entity/bed/red.png b/src/static/textures/entity/bed/red.png new file mode 100644 index 0000000000000000000000000000000000000000..1fcc696c5c0cc41819bcc7bbf86db5d5c0ae7378 Binary files /dev/null and b/src/static/textures/entity/bed/red.png differ diff --git a/src/static/textures/entity/bed/white.png b/src/static/textures/entity/bed/white.png new file mode 100644 index 0000000000000000000000000000000000000000..c9100293c336fcd9322f73b8a9ac2965a0ea901c Binary files /dev/null and b/src/static/textures/entity/bed/white.png differ diff --git a/src/static/textures/entity/bed/yellow.png b/src/static/textures/entity/bed/yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..f694c9b0d1580403139b68e7cf3104a42c98382d Binary files /dev/null and b/src/static/textures/entity/bed/yellow.png differ diff --git a/src/static/textures/entity/blaze.png b/src/static/textures/entity/blaze.png new file mode 100644 index 0000000000000000000000000000000000000000..afcc89f69f7e82bda5afc14d701cfe368e09fa0a Binary files /dev/null and b/src/static/textures/entity/blaze.png differ diff --git a/src/static/textures/entity/boat/acacia.png b/src/static/textures/entity/boat/acacia.png new file mode 100644 index 0000000000000000000000000000000000000000..c2d4a9f8c9319785589cabf7d4f19830b4543b49 Binary files /dev/null and b/src/static/textures/entity/boat/acacia.png differ diff --git a/src/static/textures/entity/boat/birch.png b/src/static/textures/entity/boat/birch.png new file mode 100644 index 0000000000000000000000000000000000000000..80ece7f4539d47a04fc7e4db8fc516188e84a72d Binary files /dev/null and b/src/static/textures/entity/boat/birch.png differ diff --git a/src/static/textures/entity/boat/dark_oak.png b/src/static/textures/entity/boat/dark_oak.png new file mode 100644 index 0000000000000000000000000000000000000000..93af354a5c29500e096c6e1c32d90d029b3543ce Binary files /dev/null and b/src/static/textures/entity/boat/dark_oak.png differ diff --git a/src/static/textures/entity/boat/jungle.png b/src/static/textures/entity/boat/jungle.png new file mode 100644 index 0000000000000000000000000000000000000000..868f2c64137cd1e3ff15ba466728c68bca4d21b0 Binary files /dev/null and b/src/static/textures/entity/boat/jungle.png differ diff --git a/src/static/textures/entity/boat/oak.png b/src/static/textures/entity/boat/oak.png new file mode 100644 index 0000000000000000000000000000000000000000..ef01f7c1e98e1578aaf9d5fc0e475cb455273e9e Binary files /dev/null and b/src/static/textures/entity/boat/oak.png differ diff --git a/src/static/textures/entity/boat/spruce.png b/src/static/textures/entity/boat/spruce.png new file mode 100644 index 0000000000000000000000000000000000000000..3c604d737c90795806e08b15e51e5f78d267e918 Binary files /dev/null and b/src/static/textures/entity/boat/spruce.png differ diff --git a/src/static/textures/entity/cat/black.png b/src/static/textures/entity/cat/black.png new file mode 100644 index 0000000000000000000000000000000000000000..2c9334abb1ac9fd3c39109e2471724bfff7fdd2f Binary files /dev/null and b/src/static/textures/entity/cat/black.png differ diff --git a/src/static/textures/entity/cat/ocelot.png b/src/static/textures/entity/cat/ocelot.png new file mode 100644 index 0000000000000000000000000000000000000000..5f24e606b631f653e3816739c6ceb7f015096344 Binary files /dev/null and b/src/static/textures/entity/cat/ocelot.png differ diff --git a/src/static/textures/entity/cat/red.png b/src/static/textures/entity/cat/red.png new file mode 100644 index 0000000000000000000000000000000000000000..68edb25e90aa211a6e2cc6a4048b35c5f31234bb Binary files /dev/null and b/src/static/textures/entity/cat/red.png differ diff --git a/src/static/textures/entity/cat/siamese.png b/src/static/textures/entity/cat/siamese.png new file mode 100644 index 0000000000000000000000000000000000000000..8131120c08fb1925397387f2cf5efde6cf0e0cc5 Binary files /dev/null and b/src/static/textures/entity/cat/siamese.png differ diff --git a/src/static/textures/entity/chest/christmas.png b/src/static/textures/entity/chest/christmas.png new file mode 100644 index 0000000000000000000000000000000000000000..8a0fa73ff271e39de135aca5a6c43d427d94a7a0 Binary files /dev/null and b/src/static/textures/entity/chest/christmas.png differ diff --git a/src/static/textures/entity/chest/christmas_double.png b/src/static/textures/entity/chest/christmas_double.png new file mode 100644 index 0000000000000000000000000000000000000000..fe14d144c4059a63c94dbc53a60f4ccfc63265a0 Binary files /dev/null and b/src/static/textures/entity/chest/christmas_double.png differ diff --git a/src/static/textures/entity/chest/ender.png b/src/static/textures/entity/chest/ender.png new file mode 100644 index 0000000000000000000000000000000000000000..642fe4cbdd07d0cb2e6e3ce48967934634d7a820 Binary files /dev/null and b/src/static/textures/entity/chest/ender.png differ diff --git a/src/static/textures/entity/chest/normal.png b/src/static/textures/entity/chest/normal.png new file mode 100644 index 0000000000000000000000000000000000000000..cbf73176145bd87b8e87971ec188979cec8d9ccc Binary files /dev/null and b/src/static/textures/entity/chest/normal.png differ diff --git a/src/static/textures/entity/chest/normal_double.png b/src/static/textures/entity/chest/normal_double.png new file mode 100644 index 0000000000000000000000000000000000000000..cd9be7d3af99ee94e5528cd549031a2bf693e4fa Binary files /dev/null and b/src/static/textures/entity/chest/normal_double.png differ diff --git a/src/static/textures/entity/chest/trapped.png b/src/static/textures/entity/chest/trapped.png new file mode 100644 index 0000000000000000000000000000000000000000..eb00a5be5dc578b0678e2c2748d118054d0cb267 Binary files /dev/null and b/src/static/textures/entity/chest/trapped.png differ diff --git a/src/static/textures/entity/chest/trapped_double.png b/src/static/textures/entity/chest/trapped_double.png new file mode 100644 index 0000000000000000000000000000000000000000..8ab8e63a36a2093566028e971e17aad1c127df6f Binary files /dev/null and b/src/static/textures/entity/chest/trapped_double.png differ diff --git a/src/static/textures/entity/chicken.png b/src/static/textures/entity/chicken.png new file mode 100644 index 0000000000000000000000000000000000000000..474d417d5c720b6f9756d49312fadab8b8bcb137 Binary files /dev/null and b/src/static/textures/entity/chicken.png differ diff --git a/src/static/textures/entity/cow/cow.png b/src/static/textures/entity/cow/cow.png new file mode 100644 index 0000000000000000000000000000000000000000..28af09b411843e16dbc4810f1c267bdc0e1625d9 Binary files /dev/null and b/src/static/textures/entity/cow/cow.png differ diff --git a/src/static/textures/entity/cow/mooshroom.png b/src/static/textures/entity/cow/mooshroom.png new file mode 100644 index 0000000000000000000000000000000000000000..d9af0878be6a4f62dee103097ed8acc4decebe9a Binary files /dev/null and b/src/static/textures/entity/cow/mooshroom.png differ diff --git a/src/static/textures/entity/creeper/creeper.png b/src/static/textures/entity/creeper/creeper.png new file mode 100644 index 0000000000000000000000000000000000000000..671f979fb21d78a1e0aa6a0f2deb6f190478d03e Binary files /dev/null and b/src/static/textures/entity/creeper/creeper.png differ diff --git a/src/static/textures/entity/creeper/creeper_armor.png b/src/static/textures/entity/creeper/creeper_armor.png new file mode 100644 index 0000000000000000000000000000000000000000..cc905d4daaf71e51ffd2b8d1d88ca8746f31c5c2 Binary files /dev/null and b/src/static/textures/entity/creeper/creeper_armor.png differ diff --git a/src/static/textures/entity/elytra.png b/src/static/textures/entity/elytra.png new file mode 100644 index 0000000000000000000000000000000000000000..f3389ab787806cd8d8a28bfb8c8817cd8b657b81 Binary files /dev/null and b/src/static/textures/entity/elytra.png differ diff --git a/src/static/textures/entity/enchanting_table_book.png b/src/static/textures/entity/enchanting_table_book.png new file mode 100644 index 0000000000000000000000000000000000000000..7a4c21648a2b29a5bd5b8e13d01e006aa920d1f5 Binary files /dev/null and b/src/static/textures/entity/enchanting_table_book.png differ diff --git a/src/static/textures/entity/end_gateway_beam.png b/src/static/textures/entity/end_gateway_beam.png new file mode 100644 index 0000000000000000000000000000000000000000..e5071ee77addf4b07b723aa31987cfcad5fdccea Binary files /dev/null and b/src/static/textures/entity/end_gateway_beam.png differ diff --git a/src/static/textures/entity/end_portal.png b/src/static/textures/entity/end_portal.png new file mode 100644 index 0000000000000000000000000000000000000000..173731a1fd75aeef5e1398ea43693fa4cf258a7e Binary files /dev/null and b/src/static/textures/entity/end_portal.png differ diff --git a/src/static/textures/entity/endercrystal/endercrystal.png b/src/static/textures/entity/endercrystal/endercrystal.png new file mode 100644 index 0000000000000000000000000000000000000000..fc7cf0d04a8dedb79bc3d27ad63a4b08f5e16775 Binary files /dev/null and b/src/static/textures/entity/endercrystal/endercrystal.png differ diff --git a/src/static/textures/entity/endercrystal/endercrystal_beam.png b/src/static/textures/entity/endercrystal/endercrystal_beam.png new file mode 100644 index 0000000000000000000000000000000000000000..1c2e187cd9b0282a5ed587a379716c8dbebb96e7 Binary files /dev/null and b/src/static/textures/entity/endercrystal/endercrystal_beam.png differ diff --git a/src/static/textures/entity/enderdragon/dragon.png b/src/static/textures/entity/enderdragon/dragon.png new file mode 100644 index 0000000000000000000000000000000000000000..05c7d7e11dd401b176bf795d41028cf4975929ca Binary files /dev/null and b/src/static/textures/entity/enderdragon/dragon.png differ diff --git a/src/static/textures/entity/enderdragon/dragon_exploding.png b/src/static/textures/entity/enderdragon/dragon_exploding.png new file mode 100644 index 0000000000000000000000000000000000000000..a47a3732ae91086833c1d06a8edf9f74811a6625 Binary files /dev/null and b/src/static/textures/entity/enderdragon/dragon_exploding.png differ diff --git a/src/static/textures/entity/enderdragon/dragon_eyes.png b/src/static/textures/entity/enderdragon/dragon_eyes.png new file mode 100644 index 0000000000000000000000000000000000000000..146d604e0b8fb604d277e6b6bb298a36f3122995 Binary files /dev/null and b/src/static/textures/entity/enderdragon/dragon_eyes.png differ diff --git a/src/static/textures/entity/enderdragon/dragon_fireball.png b/src/static/textures/entity/enderdragon/dragon_fireball.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3fe5530f95216418280be354c357cd06663eb4 Binary files /dev/null and b/src/static/textures/entity/enderdragon/dragon_fireball.png differ diff --git a/src/static/textures/entity/enderman/enderman.png b/src/static/textures/entity/enderman/enderman.png new file mode 100644 index 0000000000000000000000000000000000000000..0413f8c5885faf2f6826dcd1ad3c646aa29821d3 Binary files /dev/null and b/src/static/textures/entity/enderman/enderman.png differ diff --git a/src/static/textures/entity/enderman/enderman_eyes.png b/src/static/textures/entity/enderman/enderman_eyes.png new file mode 100644 index 0000000000000000000000000000000000000000..ade580efd10bfafef8f0c4f64a254e9361ab48f3 Binary files /dev/null and b/src/static/textures/entity/enderman/enderman_eyes.png differ diff --git a/src/static/textures/entity/endermite.png b/src/static/textures/entity/endermite.png new file mode 100644 index 0000000000000000000000000000000000000000..066bde7482406b59159182b41db8f10ef79c242c Binary files /dev/null and b/src/static/textures/entity/endermite.png differ diff --git a/src/static/textures/entity/experience_orb.png b/src/static/textures/entity/experience_orb.png new file mode 100644 index 0000000000000000000000000000000000000000..0a56f0f61d26a6a524a0e7696b25f3a32fe9717f Binary files /dev/null and b/src/static/textures/entity/experience_orb.png differ diff --git a/src/static/textures/entity/explosion.png b/src/static/textures/entity/explosion.png new file mode 100644 index 0000000000000000000000000000000000000000..f51ab53cb8f047fdb5ad2cb91433f0e3f9fe9659 Binary files /dev/null and b/src/static/textures/entity/explosion.png differ diff --git a/src/static/textures/entity/ghast/ghast.png b/src/static/textures/entity/ghast/ghast.png new file mode 100644 index 0000000000000000000000000000000000000000..ca2823e9d459a779f014203946e6e10923862a2a Binary files /dev/null and b/src/static/textures/entity/ghast/ghast.png differ diff --git a/src/static/textures/entity/ghast/ghast_shooting.png b/src/static/textures/entity/ghast/ghast_shooting.png new file mode 100644 index 0000000000000000000000000000000000000000..2e6badbd81eb7ddf525e1711cb8b50dfe24e8a7a Binary files /dev/null and b/src/static/textures/entity/ghast/ghast_shooting.png differ diff --git a/src/static/textures/entity/guardian.png b/src/static/textures/entity/guardian.png new file mode 100644 index 0000000000000000000000000000000000000000..9945242bb8494ade260ffe78d1a0eb2268dbfc5f Binary files /dev/null and b/src/static/textures/entity/guardian.png differ diff --git a/src/static/textures/entity/guardian_beam.png b/src/static/textures/entity/guardian_beam.png new file mode 100644 index 0000000000000000000000000000000000000000..73a23109d058a73841d1ec20c14c9dbab9372608 Binary files /dev/null and b/src/static/textures/entity/guardian_beam.png differ diff --git a/src/static/textures/entity/guardian_elder.png b/src/static/textures/entity/guardian_elder.png new file mode 100644 index 0000000000000000000000000000000000000000..79e0f2c10de600676412b6fa0046d3c0c3f0d6b7 Binary files /dev/null and b/src/static/textures/entity/guardian_elder.png differ diff --git a/src/static/textures/entity/horse/armor/horse_armor_diamond.png b/src/static/textures/entity/horse/armor/horse_armor_diamond.png new file mode 100644 index 0000000000000000000000000000000000000000..e9e299039e1faf7eb0dccb8a952d4c4faf791462 Binary files /dev/null and b/src/static/textures/entity/horse/armor/horse_armor_diamond.png differ diff --git a/src/static/textures/entity/horse/armor/horse_armor_gold.png b/src/static/textures/entity/horse/armor/horse_armor_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..094ecb4a59ab58ad9d03c52251ffecddd7937cdc Binary files /dev/null and b/src/static/textures/entity/horse/armor/horse_armor_gold.png differ diff --git a/src/static/textures/entity/horse/armor/horse_armor_iron.png b/src/static/textures/entity/horse/armor/horse_armor_iron.png new file mode 100644 index 0000000000000000000000000000000000000000..3925a0578b3bf5a98b15077e5e60114ed612d792 Binary files /dev/null and b/src/static/textures/entity/horse/armor/horse_armor_iron.png differ diff --git a/src/static/textures/entity/horse/armor/horsearmor.zip b/src/static/textures/entity/horse/armor/horsearmor.zip new file mode 100644 index 0000000000000000000000000000000000000000..fc88289c8cb2b2a6de53e05ded03f07eaa796e1e Binary files /dev/null and b/src/static/textures/entity/horse/armor/horsearmor.zip differ diff --git a/src/static/textures/entity/horse/donkey.png b/src/static/textures/entity/horse/donkey.png new file mode 100644 index 0000000000000000000000000000000000000000..3dc9f53b2d29516feb010b5ece92f094b4cfe6f2 Binary files /dev/null and b/src/static/textures/entity/horse/donkey.png differ diff --git a/src/static/textures/entity/horse/horse_black.png b/src/static/textures/entity/horse/horse_black.png new file mode 100644 index 0000000000000000000000000000000000000000..3b002fce32feecca647a16d16fc4f9bfd0e4e0ee Binary files /dev/null and b/src/static/textures/entity/horse/horse_black.png differ diff --git a/src/static/textures/entity/horse/horse_brown.png b/src/static/textures/entity/horse/horse_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..3ecb7807e26862b74176d9f1271bc9c6b8edcb30 Binary files /dev/null and b/src/static/textures/entity/horse/horse_brown.png differ diff --git a/src/static/textures/entity/horse/horse_chestnut.png b/src/static/textures/entity/horse/horse_chestnut.png new file mode 100644 index 0000000000000000000000000000000000000000..9d3ff5cfb7faa883c3c356003e455802a140ad90 Binary files /dev/null and b/src/static/textures/entity/horse/horse_chestnut.png differ diff --git a/src/static/textures/entity/horse/horse_creamy.png b/src/static/textures/entity/horse/horse_creamy.png new file mode 100644 index 0000000000000000000000000000000000000000..a3f05d70e1904b783a84de85f74ee83eca69595e Binary files /dev/null and b/src/static/textures/entity/horse/horse_creamy.png differ diff --git a/src/static/textures/entity/horse/horse_darkbrown.png b/src/static/textures/entity/horse/horse_darkbrown.png new file mode 100644 index 0000000000000000000000000000000000000000..5c9e2f6dc905630b53d435839622d198bfc34ec8 Binary files /dev/null and b/src/static/textures/entity/horse/horse_darkbrown.png differ diff --git a/src/static/textures/entity/horse/horse_gray.png b/src/static/textures/entity/horse/horse_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..747d418dac10e1c9ab4e94e21759136ec432f72b Binary files /dev/null and b/src/static/textures/entity/horse/horse_gray.png differ diff --git a/src/static/textures/entity/horse/horse_markings_blackdots.png b/src/static/textures/entity/horse/horse_markings_blackdots.png new file mode 100644 index 0000000000000000000000000000000000000000..90bbd826276074dd3280db3aac492e0e51ea4236 Binary files /dev/null and b/src/static/textures/entity/horse/horse_markings_blackdots.png differ diff --git a/src/static/textures/entity/horse/horse_markings_white.png b/src/static/textures/entity/horse/horse_markings_white.png new file mode 100644 index 0000000000000000000000000000000000000000..4799ff6a9f02dc3c263712366020745e6fcea31a Binary files /dev/null and b/src/static/textures/entity/horse/horse_markings_white.png differ diff --git a/src/static/textures/entity/horse/horse_markings_whitedots.png b/src/static/textures/entity/horse/horse_markings_whitedots.png new file mode 100644 index 0000000000000000000000000000000000000000..42a8fd0cead8406f97b3aa1323996607a47f38f1 Binary files /dev/null and b/src/static/textures/entity/horse/horse_markings_whitedots.png differ diff --git a/src/static/textures/entity/horse/horse_markings_whitefield.png b/src/static/textures/entity/horse/horse_markings_whitefield.png new file mode 100644 index 0000000000000000000000000000000000000000..f7432314be3befdc80e3972c19c303bbebbbca72 Binary files /dev/null and b/src/static/textures/entity/horse/horse_markings_whitefield.png differ diff --git a/src/static/textures/entity/horse/horse_skeleton.png b/src/static/textures/entity/horse/horse_skeleton.png new file mode 100644 index 0000000000000000000000000000000000000000..1442ed76b61722dd941fa571380df5aaf103f645 Binary files /dev/null and b/src/static/textures/entity/horse/horse_skeleton.png differ diff --git a/src/static/textures/entity/horse/horse_white.png b/src/static/textures/entity/horse/horse_white.png new file mode 100644 index 0000000000000000000000000000000000000000..63abedc3f65ae7368c5da76a5a6793852fb07622 Binary files /dev/null and b/src/static/textures/entity/horse/horse_white.png differ diff --git a/src/static/textures/entity/horse/horse_zombie.png b/src/static/textures/entity/horse/horse_zombie.png new file mode 100644 index 0000000000000000000000000000000000000000..1aaaa8d3f4c87fcc913602f5ff7a243bda7a5a0e Binary files /dev/null and b/src/static/textures/entity/horse/horse_zombie.png differ diff --git a/src/static/textures/entity/horse/mule.png b/src/static/textures/entity/horse/mule.png new file mode 100644 index 0000000000000000000000000000000000000000..897cc726b6fe10bbceaf2bf0a9d53b2b3b204371 Binary files /dev/null and b/src/static/textures/entity/horse/mule.png differ diff --git a/src/static/textures/entity/illager/evoker.png b/src/static/textures/entity/illager/evoker.png new file mode 100644 index 0000000000000000000000000000000000000000..480dc616fcdac2dc4ca149e77609faeeb49b108a Binary files /dev/null and b/src/static/textures/entity/illager/evoker.png differ diff --git a/src/static/textures/entity/illager/evoker_fangs.png b/src/static/textures/entity/illager/evoker_fangs.png new file mode 100644 index 0000000000000000000000000000000000000000..98db535a5a5ad387034030464a7a8e9a51febe68 Binary files /dev/null and b/src/static/textures/entity/illager/evoker_fangs.png differ diff --git a/src/static/textures/entity/illager/illusioner.png b/src/static/textures/entity/illager/illusioner.png new file mode 100644 index 0000000000000000000000000000000000000000..72f5ee8e713ff8aee4c3abde642fedf5827e3fc2 Binary files /dev/null and b/src/static/textures/entity/illager/illusioner.png differ diff --git a/src/static/textures/entity/illager/vex.png b/src/static/textures/entity/illager/vex.png new file mode 100644 index 0000000000000000000000000000000000000000..dd538e7ddc7b77c17f93d15c3f6e776bd8b68425 Binary files /dev/null and b/src/static/textures/entity/illager/vex.png differ diff --git a/src/static/textures/entity/illager/vex_charging.png b/src/static/textures/entity/illager/vex_charging.png new file mode 100644 index 0000000000000000000000000000000000000000..971114e7d199eb5829943cc8113d314420b7ce14 Binary files /dev/null and b/src/static/textures/entity/illager/vex_charging.png differ diff --git a/src/static/textures/entity/illager/vindicator.png b/src/static/textures/entity/illager/vindicator.png new file mode 100644 index 0000000000000000000000000000000000000000..9903ac56aaa89498d343412446305d26052a9687 Binary files /dev/null and b/src/static/textures/entity/illager/vindicator.png differ diff --git a/src/static/textures/entity/iron_golem.png b/src/static/textures/entity/iron_golem.png new file mode 100644 index 0000000000000000000000000000000000000000..bceb861ece8805c240211218e0239825553941b8 Binary files /dev/null and b/src/static/textures/entity/iron_golem.png differ diff --git a/src/static/textures/entity/lead_knot.png b/src/static/textures/entity/lead_knot.png new file mode 100644 index 0000000000000000000000000000000000000000..d6783071be8693109b9a84eec638b6c33244e4fb Binary files /dev/null and b/src/static/textures/entity/lead_knot.png differ diff --git a/src/static/textures/entity/llama/brown.png b/src/static/textures/entity/llama/brown.png new file mode 100644 index 0000000000000000000000000000000000000000..1099137660164d3b18a11304a758adbdd6a4a758 Binary files /dev/null and b/src/static/textures/entity/llama/brown.png differ diff --git a/src/static/textures/entity/llama/creamy.png b/src/static/textures/entity/llama/creamy.png new file mode 100644 index 0000000000000000000000000000000000000000..5a4b6877ef84ba7560fcbe4ad605c474563e3a82 Binary files /dev/null and b/src/static/textures/entity/llama/creamy.png differ diff --git a/src/static/textures/entity/llama/decor/black.png b/src/static/textures/entity/llama/decor/black.png new file mode 100644 index 0000000000000000000000000000000000000000..92387637188b970feac121015f704d2041a7358a Binary files /dev/null and b/src/static/textures/entity/llama/decor/black.png differ diff --git a/src/static/textures/entity/llama/decor/blue.png b/src/static/textures/entity/llama/decor/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..bf7762e190f791b7afe19b3dcbf8be35372e4d00 Binary files /dev/null and b/src/static/textures/entity/llama/decor/blue.png differ diff --git a/src/static/textures/entity/llama/decor/brown.png b/src/static/textures/entity/llama/decor/brown.png new file mode 100644 index 0000000000000000000000000000000000000000..03a80e1256c3298467efacd33c9677990e0e5190 Binary files /dev/null and b/src/static/textures/entity/llama/decor/brown.png differ diff --git a/src/static/textures/entity/llama/decor/cyan.png b/src/static/textures/entity/llama/decor/cyan.png new file mode 100644 index 0000000000000000000000000000000000000000..f149b9cdc906a9585f0bb825f7c4a86a7fd7b339 Binary files /dev/null and b/src/static/textures/entity/llama/decor/cyan.png differ diff --git a/src/static/textures/entity/llama/decor/gray.png b/src/static/textures/entity/llama/decor/gray.png new file mode 100644 index 0000000000000000000000000000000000000000..a2f1b4f0157401679b80483d4d7feab1b8015f90 Binary files /dev/null and b/src/static/textures/entity/llama/decor/gray.png differ diff --git a/src/static/textures/entity/llama/decor/green.png b/src/static/textures/entity/llama/decor/green.png new file mode 100644 index 0000000000000000000000000000000000000000..732d7ec1c3c83a1c3c9749f87ded831138930b4e Binary files /dev/null and b/src/static/textures/entity/llama/decor/green.png differ diff --git a/src/static/textures/entity/llama/decor/light_blue.png b/src/static/textures/entity/llama/decor/light_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..500a404f377fda981efb6f6d1cd8d95c20ed8b2f Binary files /dev/null and b/src/static/textures/entity/llama/decor/light_blue.png differ diff --git a/src/static/textures/entity/llama/decor/light_gray.png b/src/static/textures/entity/llama/decor/light_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..01cda39515096da215be764fbe31095b3301b8db Binary files /dev/null and b/src/static/textures/entity/llama/decor/light_gray.png differ diff --git a/src/static/textures/entity/llama/decor/lime.png b/src/static/textures/entity/llama/decor/lime.png new file mode 100644 index 0000000000000000000000000000000000000000..238eff412191e9ca5c4fc8952734094fef0846fd Binary files /dev/null and b/src/static/textures/entity/llama/decor/lime.png differ diff --git a/src/static/textures/entity/llama/decor/magenta.png b/src/static/textures/entity/llama/decor/magenta.png new file mode 100644 index 0000000000000000000000000000000000000000..0ff23355960dcf272274c79145bb3bfd305959b6 Binary files /dev/null and b/src/static/textures/entity/llama/decor/magenta.png differ diff --git a/src/static/textures/entity/llama/decor/orange.png b/src/static/textures/entity/llama/decor/orange.png new file mode 100644 index 0000000000000000000000000000000000000000..5b24951a62952081be4492cfcb914642b3a01c52 Binary files /dev/null and b/src/static/textures/entity/llama/decor/orange.png differ diff --git a/src/static/textures/entity/llama/decor/pink.png b/src/static/textures/entity/llama/decor/pink.png new file mode 100644 index 0000000000000000000000000000000000000000..897ba65db9015fd168c59b1eaaa5ee9c2b9b68c0 Binary files /dev/null and b/src/static/textures/entity/llama/decor/pink.png differ diff --git a/src/static/textures/entity/llama/decor/purple.png b/src/static/textures/entity/llama/decor/purple.png new file mode 100644 index 0000000000000000000000000000000000000000..308adbecb735103bc4620af9a4d49817150f9bbe Binary files /dev/null and b/src/static/textures/entity/llama/decor/purple.png differ diff --git a/src/static/textures/entity/llama/decor/red.png b/src/static/textures/entity/llama/decor/red.png new file mode 100644 index 0000000000000000000000000000000000000000..1b83dc37b06b948eeb6951f87cdb117102fbffd4 Binary files /dev/null and b/src/static/textures/entity/llama/decor/red.png differ diff --git a/src/static/textures/entity/llama/decor/white.png b/src/static/textures/entity/llama/decor/white.png new file mode 100644 index 0000000000000000000000000000000000000000..c8cf176122095ede5941e327837bad06f049eb77 Binary files /dev/null and b/src/static/textures/entity/llama/decor/white.png differ diff --git a/src/static/textures/entity/llama/decor/yellow.png b/src/static/textures/entity/llama/decor/yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..64144cf525ce6ccfbdc2c27375b0486952cb2c7a Binary files /dev/null and b/src/static/textures/entity/llama/decor/yellow.png differ diff --git a/src/static/textures/entity/llama/gray.png b/src/static/textures/entity/llama/gray.png new file mode 100644 index 0000000000000000000000000000000000000000..3e170d117e0d4a23ed2a42746f4a99a28a0d082c Binary files /dev/null and b/src/static/textures/entity/llama/gray.png differ diff --git a/src/static/textures/entity/llama/spit.png b/src/static/textures/entity/llama/spit.png new file mode 100644 index 0000000000000000000000000000000000000000..fdcc4b1219109b8a4b1cefabc08699895668d2c4 Binary files /dev/null and b/src/static/textures/entity/llama/spit.png differ diff --git a/src/static/textures/entity/llama/white.png b/src/static/textures/entity/llama/white.png new file mode 100644 index 0000000000000000000000000000000000000000..d84fe1575e7492f4a1c77f425df1647d825d47b1 Binary files /dev/null and b/src/static/textures/entity/llama/white.png differ diff --git a/src/static/textures/entity/minecart.png b/src/static/textures/entity/minecart.png new file mode 100644 index 0000000000000000000000000000000000000000..5ca94c005f98b8f1a1b1a703dad8120ae2a7d572 Binary files /dev/null and b/src/static/textures/entity/minecart.png differ diff --git a/src/static/textures/entity/parrot/parrot_blue.png b/src/static/textures/entity/parrot/parrot_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..ae93edf489877b83f112199a28638eecdf15626f Binary files /dev/null and b/src/static/textures/entity/parrot/parrot_blue.png differ diff --git a/src/static/textures/entity/parrot/parrot_green.png b/src/static/textures/entity/parrot/parrot_green.png new file mode 100644 index 0000000000000000000000000000000000000000..efa83d916f3a46a39884b5fb37ab02244776ad84 Binary files /dev/null and b/src/static/textures/entity/parrot/parrot_green.png differ diff --git a/src/static/textures/entity/parrot/parrot_grey.png b/src/static/textures/entity/parrot/parrot_grey.png new file mode 100644 index 0000000000000000000000000000000000000000..8de45ef596e50006b786e7b17c21dc229aaeffce Binary files /dev/null and b/src/static/textures/entity/parrot/parrot_grey.png differ diff --git a/src/static/textures/entity/parrot/parrot_red_blue.png b/src/static/textures/entity/parrot/parrot_red_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..3287808651cc14ddc190f7aef52d889c6c24855a Binary files /dev/null and b/src/static/textures/entity/parrot/parrot_red_blue.png differ diff --git a/src/static/textures/entity/parrot/parrot_yellow_blue.png b/src/static/textures/entity/parrot/parrot_yellow_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..91e54255047a79ee210609d0e18cf65926be59d6 Binary files /dev/null and b/src/static/textures/entity/parrot/parrot_yellow_blue.png differ diff --git a/src/static/textures/entity/pig/pig.png b/src/static/textures/entity/pig/pig.png new file mode 100644 index 0000000000000000000000000000000000000000..940f4fa763dc3efe751e9bd433c47905edfae8b2 Binary files /dev/null and b/src/static/textures/entity/pig/pig.png differ diff --git a/src/static/textures/entity/pig/pig_saddle.png b/src/static/textures/entity/pig/pig_saddle.png new file mode 100644 index 0000000000000000000000000000000000000000..6bedbb2b92dc69fec859c00523dde832cbc01ade Binary files /dev/null and b/src/static/textures/entity/pig/pig_saddle.png differ diff --git a/src/static/textures/entity/projectiles/arrow.png b/src/static/textures/entity/projectiles/arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..b1214231fe42ee29805dd6d6e0dd3a8101f8558f Binary files /dev/null and b/src/static/textures/entity/projectiles/arrow.png differ diff --git a/src/static/textures/entity/projectiles/spectral_arrow.png b/src/static/textures/entity/projectiles/spectral_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..22a9d00b099092df486639b9e21e7cf1f138c1a7 Binary files /dev/null and b/src/static/textures/entity/projectiles/spectral_arrow.png differ diff --git a/src/static/textures/entity/projectiles/tipped_arrow.png b/src/static/textures/entity/projectiles/tipped_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..b1214231fe42ee29805dd6d6e0dd3a8101f8558f Binary files /dev/null and b/src/static/textures/entity/projectiles/tipped_arrow.png differ diff --git a/src/static/textures/entity/rabbit/black.png b/src/static/textures/entity/rabbit/black.png new file mode 100644 index 0000000000000000000000000000000000000000..afb0fbc406504a8d0dbd989136fc0f08e1d6ce8d Binary files /dev/null and b/src/static/textures/entity/rabbit/black.png differ diff --git a/src/static/textures/entity/rabbit/brown.png b/src/static/textures/entity/rabbit/brown.png new file mode 100644 index 0000000000000000000000000000000000000000..b8dc8ccc76c0c29ff0abe9c73c741d5261da8a3b Binary files /dev/null and b/src/static/textures/entity/rabbit/brown.png differ diff --git a/src/static/textures/entity/rabbit/caerbannog.png b/src/static/textures/entity/rabbit/caerbannog.png new file mode 100644 index 0000000000000000000000000000000000000000..409a4fc3d29caa8d043cb28de7165bd31a970a37 Binary files /dev/null and b/src/static/textures/entity/rabbit/caerbannog.png differ diff --git a/src/static/textures/entity/rabbit/gold.png b/src/static/textures/entity/rabbit/gold.png new file mode 100644 index 0000000000000000000000000000000000000000..6f649f851bd47a163f1fcd271f827cd61e0a3f32 Binary files /dev/null and b/src/static/textures/entity/rabbit/gold.png differ diff --git a/src/static/textures/entity/rabbit/salt.png b/src/static/textures/entity/rabbit/salt.png new file mode 100644 index 0000000000000000000000000000000000000000..5afe309ed38666af40c35d68c5a60f32f2478f24 Binary files /dev/null and b/src/static/textures/entity/rabbit/salt.png differ diff --git a/src/static/textures/entity/rabbit/toast.png b/src/static/textures/entity/rabbit/toast.png new file mode 100644 index 0000000000000000000000000000000000000000..56c666785efcf5ea1d1af4bb069328888a9e2244 Binary files /dev/null and b/src/static/textures/entity/rabbit/toast.png differ diff --git a/src/static/textures/entity/rabbit/white.png b/src/static/textures/entity/rabbit/white.png new file mode 100644 index 0000000000000000000000000000000000000000..a0ea1a156f97b4ccc5a2917e3e477829c1636c6e Binary files /dev/null and b/src/static/textures/entity/rabbit/white.png differ diff --git a/src/static/textures/entity/rabbit/white_splotched.png b/src/static/textures/entity/rabbit/white_splotched.png new file mode 100644 index 0000000000000000000000000000000000000000..3cd3cdfe2dcb14e4e0f114b20877158f2e9f2ce0 Binary files /dev/null and b/src/static/textures/entity/rabbit/white_splotched.png differ diff --git a/src/static/textures/entity/sheep/sheep.png b/src/static/textures/entity/sheep/sheep.png new file mode 100644 index 0000000000000000000000000000000000000000..6a4c1191b2d47b34c2ef66bf59a3203d66f078a5 Binary files /dev/null and b/src/static/textures/entity/sheep/sheep.png differ diff --git a/src/static/textures/entity/sheep/sheep_fur.png b/src/static/textures/entity/sheep/sheep_fur.png new file mode 100644 index 0000000000000000000000000000000000000000..4d58751eebb7a501410afecc6c0e61947b392d06 Binary files /dev/null and b/src/static/textures/entity/sheep/sheep_fur.png differ diff --git a/src/static/textures/entity/shield/base.png b/src/static/textures/entity/shield/base.png new file mode 100644 index 0000000000000000000000000000000000000000..3297e7f3673747a436243e895d4c93918e63ffbf Binary files /dev/null and b/src/static/textures/entity/shield/base.png differ diff --git a/src/static/textures/entity/shield/border.png b/src/static/textures/entity/shield/border.png new file mode 100644 index 0000000000000000000000000000000000000000..82e13d9832d9f58040ffd23dcd0eb107a977e378 Binary files /dev/null and b/src/static/textures/entity/shield/border.png differ diff --git a/src/static/textures/entity/shield/bricks.png b/src/static/textures/entity/shield/bricks.png new file mode 100644 index 0000000000000000000000000000000000000000..da9d147f81df3d3de1a1119ba104f48e49ee5081 Binary files /dev/null and b/src/static/textures/entity/shield/bricks.png differ diff --git a/src/static/textures/entity/shield/circle.png b/src/static/textures/entity/shield/circle.png new file mode 100644 index 0000000000000000000000000000000000000000..86506deb8e00b27d343fa786fb26a2e9a7b8efcc Binary files /dev/null and b/src/static/textures/entity/shield/circle.png differ diff --git a/src/static/textures/entity/shield/creeper.png b/src/static/textures/entity/shield/creeper.png new file mode 100644 index 0000000000000000000000000000000000000000..b98b3d0a0810db7daeec4f28f0b2c9917a9aff5e Binary files /dev/null and b/src/static/textures/entity/shield/creeper.png differ diff --git a/src/static/textures/entity/shield/cross.png b/src/static/textures/entity/shield/cross.png new file mode 100644 index 0000000000000000000000000000000000000000..241aca14bf65e8a62768e128c30571f58276a267 Binary files /dev/null and b/src/static/textures/entity/shield/cross.png differ diff --git a/src/static/textures/entity/shield/curly_border.png b/src/static/textures/entity/shield/curly_border.png new file mode 100644 index 0000000000000000000000000000000000000000..76c520778a7b5fb8378c541e16262fb663b6bea6 Binary files /dev/null and b/src/static/textures/entity/shield/curly_border.png differ diff --git a/src/static/textures/entity/shield/diagonal_left.png b/src/static/textures/entity/shield/diagonal_left.png new file mode 100644 index 0000000000000000000000000000000000000000..06a187064377c6aef506579e4d9c5d8a3b1aaeec Binary files /dev/null and b/src/static/textures/entity/shield/diagonal_left.png differ diff --git a/src/static/textures/entity/shield/diagonal_right.png b/src/static/textures/entity/shield/diagonal_right.png new file mode 100644 index 0000000000000000000000000000000000000000..2eb15cee33a572bf33bee3d01f6c7326607aa8e4 Binary files /dev/null and b/src/static/textures/entity/shield/diagonal_right.png differ diff --git a/src/static/textures/entity/shield/diagonal_up_left.png b/src/static/textures/entity/shield/diagonal_up_left.png new file mode 100644 index 0000000000000000000000000000000000000000..1d475c449f1e8387d8f5e5edf4a7b90bd1d49162 Binary files /dev/null and b/src/static/textures/entity/shield/diagonal_up_left.png differ diff --git a/src/static/textures/entity/shield/diagonal_up_right.png b/src/static/textures/entity/shield/diagonal_up_right.png new file mode 100644 index 0000000000000000000000000000000000000000..e863fe8c2ca90ae0e0bc696e3c1ca23b1b748039 Binary files /dev/null and b/src/static/textures/entity/shield/diagonal_up_right.png differ diff --git a/src/static/textures/entity/shield/flower.png b/src/static/textures/entity/shield/flower.png new file mode 100644 index 0000000000000000000000000000000000000000..a20c753ac7a2f33b04ac8998004b250a28824bb5 Binary files /dev/null and b/src/static/textures/entity/shield/flower.png differ diff --git a/src/static/textures/entity/shield/gradient.png b/src/static/textures/entity/shield/gradient.png new file mode 100644 index 0000000000000000000000000000000000000000..d1abad8b2707346861b648202f9f245fb7216acb Binary files /dev/null and b/src/static/textures/entity/shield/gradient.png differ diff --git a/src/static/textures/entity/shield/gradient_up.png b/src/static/textures/entity/shield/gradient_up.png new file mode 100644 index 0000000000000000000000000000000000000000..7921b3b2d117f5804441d2757f3ea4bf9fa7764d Binary files /dev/null and b/src/static/textures/entity/shield/gradient_up.png differ diff --git a/src/static/textures/entity/shield/half_horizontal.png b/src/static/textures/entity/shield/half_horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..b6680525de934c124c9b5ba1b1cb2fae56035174 Binary files /dev/null and b/src/static/textures/entity/shield/half_horizontal.png differ diff --git a/src/static/textures/entity/shield/half_horizontal_bottom.png b/src/static/textures/entity/shield/half_horizontal_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd2e96eb45b86d8b683431daf3e4455f2ff3037 Binary files /dev/null and b/src/static/textures/entity/shield/half_horizontal_bottom.png differ diff --git a/src/static/textures/entity/shield/half_vertical.png b/src/static/textures/entity/shield/half_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..cafda3141852ce2e15e0afe08f72dea7209b030d Binary files /dev/null and b/src/static/textures/entity/shield/half_vertical.png differ diff --git a/src/static/textures/entity/shield/half_vertical_right.png b/src/static/textures/entity/shield/half_vertical_right.png new file mode 100644 index 0000000000000000000000000000000000000000..2600259fe247308fb0ee7449bd73cf6eff8778de Binary files /dev/null and b/src/static/textures/entity/shield/half_vertical_right.png differ diff --git a/src/static/textures/entity/shield/mojang.png b/src/static/textures/entity/shield/mojang.png new file mode 100644 index 0000000000000000000000000000000000000000..0343c52ca458ccd4decfe7fdf180a2ec70943844 Binary files /dev/null and b/src/static/textures/entity/shield/mojang.png differ diff --git a/src/static/textures/entity/shield/rhombus.png b/src/static/textures/entity/shield/rhombus.png new file mode 100644 index 0000000000000000000000000000000000000000..73826cea54a5e7db7e4f5024e0b44ee78c9b390a Binary files /dev/null and b/src/static/textures/entity/shield/rhombus.png differ diff --git a/src/static/textures/entity/shield/skull.png b/src/static/textures/entity/shield/skull.png new file mode 100644 index 0000000000000000000000000000000000000000..7e35b2bbd213bc988cd347e8c0c58ff4900b1f80 Binary files /dev/null and b/src/static/textures/entity/shield/skull.png differ diff --git a/src/static/textures/entity/shield/small_stripes.png b/src/static/textures/entity/shield/small_stripes.png new file mode 100644 index 0000000000000000000000000000000000000000..0463217561ca0089cc55444a4073deb69bbbfbc8 Binary files /dev/null and b/src/static/textures/entity/shield/small_stripes.png differ diff --git a/src/static/textures/entity/shield/square_bottom_left.png b/src/static/textures/entity/shield/square_bottom_left.png new file mode 100644 index 0000000000000000000000000000000000000000..b88380a8944c77198bb19cb6e450401274366c69 Binary files /dev/null and b/src/static/textures/entity/shield/square_bottom_left.png differ diff --git a/src/static/textures/entity/shield/square_bottom_right.png b/src/static/textures/entity/shield/square_bottom_right.png new file mode 100644 index 0000000000000000000000000000000000000000..a9bcd06176de62576641d1df7ec7b24de24b1d39 Binary files /dev/null and b/src/static/textures/entity/shield/square_bottom_right.png differ diff --git a/src/static/textures/entity/shield/square_top_left.png b/src/static/textures/entity/shield/square_top_left.png new file mode 100644 index 0000000000000000000000000000000000000000..a47d54b5fa7badbc79f66e6239866ca1f7342b75 Binary files /dev/null and b/src/static/textures/entity/shield/square_top_left.png differ diff --git a/src/static/textures/entity/shield/square_top_right.png b/src/static/textures/entity/shield/square_top_right.png new file mode 100644 index 0000000000000000000000000000000000000000..2592b93849dca1557a1a8284f47fea6af66ea513 Binary files /dev/null and b/src/static/textures/entity/shield/square_top_right.png differ diff --git a/src/static/textures/entity/shield/straight_cross.png b/src/static/textures/entity/shield/straight_cross.png new file mode 100644 index 0000000000000000000000000000000000000000..c613b973d18f2a3bf2538f21e472a1817c2cec91 Binary files /dev/null and b/src/static/textures/entity/shield/straight_cross.png differ diff --git a/src/static/textures/entity/shield/stripe_bottom.png b/src/static/textures/entity/shield/stripe_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..b13d3020030bbb9fb77f06c7e3ba2e55bd72ddc6 Binary files /dev/null and b/src/static/textures/entity/shield/stripe_bottom.png differ diff --git a/src/static/textures/entity/shield/stripe_center.png b/src/static/textures/entity/shield/stripe_center.png new file mode 100644 index 0000000000000000000000000000000000000000..35372717070a2a85dd46f566a8db96f8b925232c Binary files /dev/null and b/src/static/textures/entity/shield/stripe_center.png differ diff --git a/src/static/textures/entity/shield/stripe_downleft.png b/src/static/textures/entity/shield/stripe_downleft.png new file mode 100644 index 0000000000000000000000000000000000000000..178755a14bf2483e3b7b506319d3d8c667178fac Binary files /dev/null and b/src/static/textures/entity/shield/stripe_downleft.png differ diff --git a/src/static/textures/entity/shield/stripe_downright.png b/src/static/textures/entity/shield/stripe_downright.png new file mode 100644 index 0000000000000000000000000000000000000000..cb042d15b706d1431b11e77c2ed30fa03d337066 Binary files /dev/null and b/src/static/textures/entity/shield/stripe_downright.png differ diff --git a/src/static/textures/entity/shield/stripe_left.png b/src/static/textures/entity/shield/stripe_left.png new file mode 100644 index 0000000000000000000000000000000000000000..0bf94a61a96e8e095acbc91c0965cdea253a5152 Binary files /dev/null and b/src/static/textures/entity/shield/stripe_left.png differ diff --git a/src/static/textures/entity/shield/stripe_middle.png b/src/static/textures/entity/shield/stripe_middle.png new file mode 100644 index 0000000000000000000000000000000000000000..33c8d187dd2bc9aecff8e94f2ba0ba44a90c1040 Binary files /dev/null and b/src/static/textures/entity/shield/stripe_middle.png differ diff --git a/src/static/textures/entity/shield/stripe_right.png b/src/static/textures/entity/shield/stripe_right.png new file mode 100644 index 0000000000000000000000000000000000000000..697da64edc28cb773fd5ce47877d73b21b21cfd3 Binary files /dev/null and b/src/static/textures/entity/shield/stripe_right.png differ diff --git a/src/static/textures/entity/shield/stripe_top.png b/src/static/textures/entity/shield/stripe_top.png new file mode 100644 index 0000000000000000000000000000000000000000..eca1076ada2632a99008ab05c36716c298eede89 Binary files /dev/null and b/src/static/textures/entity/shield/stripe_top.png differ diff --git a/src/static/textures/entity/shield/triangle_bottom.png b/src/static/textures/entity/shield/triangle_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..03c37d32cd0dc150b208e580e07c83d4b0b99d2c Binary files /dev/null and b/src/static/textures/entity/shield/triangle_bottom.png differ diff --git a/src/static/textures/entity/shield/triangle_top.png b/src/static/textures/entity/shield/triangle_top.png new file mode 100644 index 0000000000000000000000000000000000000000..26412bf8aef2593df9914b23e1f088c11e2f1785 Binary files /dev/null and b/src/static/textures/entity/shield/triangle_top.png differ diff --git a/src/static/textures/entity/shield/triangles_bottom.png b/src/static/textures/entity/shield/triangles_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..8a18dbd759b2329489fbeeaae207cf4f330e70db Binary files /dev/null and b/src/static/textures/entity/shield/triangles_bottom.png differ diff --git a/src/static/textures/entity/shield/triangles_top.png b/src/static/textures/entity/shield/triangles_top.png new file mode 100644 index 0000000000000000000000000000000000000000..2e07c37cd08506289e6fedc517171c292ffa51e4 Binary files /dev/null and b/src/static/textures/entity/shield/triangles_top.png differ diff --git a/src/static/textures/entity/shield_base.png b/src/static/textures/entity/shield_base.png new file mode 100644 index 0000000000000000000000000000000000000000..8015a92bf8d8811c0a8e4a2a152f2419afb07c2e Binary files /dev/null and b/src/static/textures/entity/shield_base.png differ diff --git a/src/static/textures/entity/shield_base_nopattern.png b/src/static/textures/entity/shield_base_nopattern.png new file mode 100644 index 0000000000000000000000000000000000000000..7011454d1c9791bae6cbeaf0bd51f1ec76e27bca Binary files /dev/null and b/src/static/textures/entity/shield_base_nopattern.png differ diff --git a/src/static/textures/entity/shulker/shulker.png b/src/static/textures/entity/shulker/shulker.png new file mode 100644 index 0000000000000000000000000000000000000000..d21605ab706597004cac3c2c0ea31397ded1e2a3 Binary files /dev/null and b/src/static/textures/entity/shulker/shulker.png differ diff --git a/src/static/textures/entity/shulker/shulker_black.png b/src/static/textures/entity/shulker/shulker_black.png new file mode 100644 index 0000000000000000000000000000000000000000..2800401d80793eac670324b4fd538b4ac7b4d0ef Binary files /dev/null and b/src/static/textures/entity/shulker/shulker_black.png differ diff --git a/src/static/textures/entity/shulker/shulker_blue.png b/src/static/textures/entity/shulker/shulker_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..1c4244fd273e8a6bcc68642e0934e68167d47456 Binary files /dev/null and b/src/static/textures/entity/shulker/shulker_blue.png differ diff --git a/src/static/textures/entity/shulker/shulker_brown.png b/src/static/textures/entity/shulker/shulker_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..9237440b2717e1608b0a63463522c3ded85b914f Binary files /dev/null and b/src/static/textures/entity/shulker/shulker_brown.png differ diff --git a/src/static/textures/entity/shulker/shulker_cyan.png b/src/static/textures/entity/shulker/shulker_cyan.png new file mode 100644 index 0000000000000000000000000000000000000000..13b82557ebcb7b19238a0b85718f7a37b7dde92f Binary files /dev/null and b/src/static/textures/entity/shulker/shulker_cyan.png differ diff --git a/src/static/textures/entity/shulker/shulker_gray.png b/src/static/textures/entity/shulker/shulker_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..f365c6aff0497580d9a7fdf3162fe8dc1a65639b Binary files /dev/null and b/src/static/textures/entity/shulker/shulker_gray.png differ diff --git a/src/static/textures/entity/shulker/shulker_green.png b/src/static/textures/entity/shulker/shulker_green.png new file mode 100644 index 0000000000000000000000000000000000000000..b09b655d98cb7a596aa84a8a921a434da7ed3970 Binary files /dev/null and b/src/static/textures/entity/shulker/shulker_green.png differ diff --git a/src/static/textures/entity/shulker/shulker_light_blue.png b/src/static/textures/entity/shulker/shulker_light_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..6646995c8ec19590a9f5aba60f42ac70bb1fad03 Binary files /dev/null and b/src/static/textures/entity/shulker/shulker_light_blue.png differ diff --git a/src/static/textures/entity/shulker/shulker_light_gray.png b/src/static/textures/entity/shulker/shulker_light_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..d709f7aea0fd18002ada9f108bb1311a61093a88 Binary files /dev/null and b/src/static/textures/entity/shulker/shulker_light_gray.png differ diff --git a/src/static/textures/entity/shulker/shulker_lime.png b/src/static/textures/entity/shulker/shulker_lime.png new file mode 100644 index 0000000000000000000000000000000000000000..e02f983d19b954321f6ed3b3739c5ac945fbd438 Binary files /dev/null and b/src/static/textures/entity/shulker/shulker_lime.png differ diff --git a/src/static/textures/entity/shulker/shulker_magenta.png b/src/static/textures/entity/shulker/shulker_magenta.png new file mode 100644 index 0000000000000000000000000000000000000000..a713f81a1a0b96874969acfccf150f2dcfb6a202 Binary files /dev/null and b/src/static/textures/entity/shulker/shulker_magenta.png differ diff --git a/src/static/textures/entity/shulker/shulker_orange.png b/src/static/textures/entity/shulker/shulker_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..1ebf14827e15c5716716828516a9ad6e72319868 Binary files /dev/null and b/src/static/textures/entity/shulker/shulker_orange.png differ diff --git a/src/static/textures/entity/shulker/shulker_pink.png b/src/static/textures/entity/shulker/shulker_pink.png new file mode 100644 index 0000000000000000000000000000000000000000..1cac5170c18ba876bcb35ba7131778fbd309a9a5 Binary files /dev/null and b/src/static/textures/entity/shulker/shulker_pink.png differ diff --git a/src/static/textures/entity/shulker/shulker_red.png b/src/static/textures/entity/shulker/shulker_red.png new file mode 100644 index 0000000000000000000000000000000000000000..c80c499fdc3528263c591e0c9f7aacd55424d453 Binary files /dev/null and b/src/static/textures/entity/shulker/shulker_red.png differ diff --git a/src/static/textures/entity/shulker/shulker_white.png b/src/static/textures/entity/shulker/shulker_white.png new file mode 100644 index 0000000000000000000000000000000000000000..6b21cac8cae282a858092e3e613bb90c6a46c49d Binary files /dev/null and b/src/static/textures/entity/shulker/shulker_white.png differ diff --git a/src/static/textures/entity/shulker/shulker_yellow.png b/src/static/textures/entity/shulker/shulker_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..5b5436d2695982323876a23b513a7b7a58d48547 Binary files /dev/null and b/src/static/textures/entity/shulker/shulker_yellow.png differ diff --git a/src/static/textures/entity/shulker/spark.png b/src/static/textures/entity/shulker/spark.png new file mode 100644 index 0000000000000000000000000000000000000000..69315a9e245d2c89575ee8d1712f34f1a8ebd105 Binary files /dev/null and b/src/static/textures/entity/shulker/spark.png differ diff --git a/src/static/textures/entity/sign.png b/src/static/textures/entity/sign.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f23685847bf73d98a5fa3b07cc67b87c8bd525 Binary files /dev/null and b/src/static/textures/entity/sign.png differ diff --git a/src/static/textures/entity/silverfish.png b/src/static/textures/entity/silverfish.png new file mode 100644 index 0000000000000000000000000000000000000000..54dd997ddefbdcd45b118402ca2e1887fe93636b Binary files /dev/null and b/src/static/textures/entity/silverfish.png differ diff --git a/src/static/textures/entity/skeleton/skeleton.png b/src/static/textures/entity/skeleton/skeleton.png new file mode 100644 index 0000000000000000000000000000000000000000..dc8af339a737fb6c26af023b5cc5134a05b8f5dd Binary files /dev/null and b/src/static/textures/entity/skeleton/skeleton.png differ diff --git a/src/static/textures/entity/skeleton/stray.png b/src/static/textures/entity/skeleton/stray.png new file mode 100644 index 0000000000000000000000000000000000000000..430ffc29874a3e5e82c81f46f9618bf8429be1b4 Binary files /dev/null and b/src/static/textures/entity/skeleton/stray.png differ diff --git a/src/static/textures/entity/skeleton/stray_overlay.png b/src/static/textures/entity/skeleton/stray_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..c1e6ac8eb37f3efabdb12176bd028b33b1bef84c Binary files /dev/null and b/src/static/textures/entity/skeleton/stray_overlay.png differ diff --git a/src/static/textures/entity/skeleton/wither_skeleton.png b/src/static/textures/entity/skeleton/wither_skeleton.png new file mode 100644 index 0000000000000000000000000000000000000000..f7b0c16e71ba2bbefd29bcdefee8224cdccec916 Binary files /dev/null and b/src/static/textures/entity/skeleton/wither_skeleton.png differ diff --git a/src/static/textures/entity/slime/magmacube.png b/src/static/textures/entity/slime/magmacube.png new file mode 100644 index 0000000000000000000000000000000000000000..50abb9ea00319dde0b975cf3af22f00b295496da Binary files /dev/null and b/src/static/textures/entity/slime/magmacube.png differ diff --git a/src/static/textures/entity/slime/slime.png b/src/static/textures/entity/slime/slime.png new file mode 100644 index 0000000000000000000000000000000000000000..0b316be278fd9c3138b739e07e908ca942487599 Binary files /dev/null and b/src/static/textures/entity/slime/slime.png differ diff --git a/src/static/textures/entity/snow_golem.png b/src/static/textures/entity/snow_golem.png new file mode 100644 index 0000000000000000000000000000000000000000..53c52978030b3b757c75007ac083775268d94c66 Binary files /dev/null and b/src/static/textures/entity/snow_golem.png differ diff --git a/src/static/textures/entity/spider/cave_spider.png b/src/static/textures/entity/spider/cave_spider.png new file mode 100644 index 0000000000000000000000000000000000000000..4f4a47a506b6988e5aa407a3fcd0727cfba6535a Binary files /dev/null and b/src/static/textures/entity/spider/cave_spider.png differ diff --git a/src/static/textures/entity/spider/spider.png b/src/static/textures/entity/spider/spider.png new file mode 100644 index 0000000000000000000000000000000000000000..895bac24a511d9db874b1fcf8193a463c8b3dc6d Binary files /dev/null and b/src/static/textures/entity/spider/spider.png differ diff --git a/src/static/textures/entity/spider_eyes.png b/src/static/textures/entity/spider_eyes.png new file mode 100644 index 0000000000000000000000000000000000000000..f49b78ff8e5bd3e9842f944ad3da4ddd29c85dcd Binary files /dev/null and b/src/static/textures/entity/spider_eyes.png differ diff --git a/src/static/textures/entity/squid.png b/src/static/textures/entity/squid.png new file mode 100644 index 0000000000000000000000000000000000000000..db97d6daab64979b7aad2d721d721eb7b969d777 Binary files /dev/null and b/src/static/textures/entity/squid.png differ diff --git a/src/static/textures/entity/steve.png b/src/static/textures/entity/steve.png new file mode 100644 index 0000000000000000000000000000000000000000..90d4fa236b5512e124a1aaaa2a2a357cca907e99 Binary files /dev/null and b/src/static/textures/entity/steve.png differ diff --git a/src/static/textures/entity/sweep.png b/src/static/textures/entity/sweep.png new file mode 100644 index 0000000000000000000000000000000000000000..8b2eebf8e23f01b882a9116c42c7b98d31cdf8d6 Binary files /dev/null and b/src/static/textures/entity/sweep.png differ diff --git a/src/static/textures/entity/witch.png b/src/static/textures/entity/witch.png new file mode 100644 index 0000000000000000000000000000000000000000..d253cf0a0f4513aa4e4553d15cefa4e0ffd83876 Binary files /dev/null and b/src/static/textures/entity/witch.png differ diff --git a/src/static/textures/entity/wither/wither.png b/src/static/textures/entity/wither/wither.png new file mode 100644 index 0000000000000000000000000000000000000000..2c9782b57def739e747468be4d844e343036e969 Binary files /dev/null and b/src/static/textures/entity/wither/wither.png differ diff --git a/src/static/textures/entity/wither/wither_armor.png b/src/static/textures/entity/wither/wither_armor.png new file mode 100644 index 0000000000000000000000000000000000000000..61e6da8795fd319f229c615e6edb7309ebc973d4 Binary files /dev/null and b/src/static/textures/entity/wither/wither_armor.png differ diff --git a/src/static/textures/entity/wither/wither_invulnerable.png b/src/static/textures/entity/wither/wither_invulnerable.png new file mode 100644 index 0000000000000000000000000000000000000000..f69e543f879c3f39e83b99b5427f3b0b24d65950 Binary files /dev/null and b/src/static/textures/entity/wither/wither_invulnerable.png differ diff --git a/src/static/textures/entity/wolf/wolf.png b/src/static/textures/entity/wolf/wolf.png new file mode 100644 index 0000000000000000000000000000000000000000..85c73d319d201e98b138d31181190486a89c4b63 Binary files /dev/null and b/src/static/textures/entity/wolf/wolf.png differ diff --git a/src/static/textures/entity/wolf/wolf_angry.png b/src/static/textures/entity/wolf/wolf_angry.png new file mode 100644 index 0000000000000000000000000000000000000000..72581a04c92acf2bea9162d31e510042268b4d27 Binary files /dev/null and b/src/static/textures/entity/wolf/wolf_angry.png differ diff --git a/src/static/textures/entity/wolf/wolf_collar.png b/src/static/textures/entity/wolf/wolf_collar.png new file mode 100644 index 0000000000000000000000000000000000000000..052cab72a6c69689c28f6fcbdedad5ab822e592a Binary files /dev/null and b/src/static/textures/entity/wolf/wolf_collar.png differ diff --git a/src/static/textures/entity/wolf/wolf_tame.png b/src/static/textures/entity/wolf/wolf_tame.png new file mode 100644 index 0000000000000000000000000000000000000000..6c71b067b2f5ad883440d2e3848ba5d706fbc9e8 Binary files /dev/null and b/src/static/textures/entity/wolf/wolf_tame.png differ diff --git a/src/static/textures/entity/zombie/husk.png b/src/static/textures/entity/zombie/husk.png new file mode 100644 index 0000000000000000000000000000000000000000..4b22b38cdf7681410c3d3138dd5bc2a03a3f1750 Binary files /dev/null and b/src/static/textures/entity/zombie/husk.png differ diff --git a/src/static/textures/entity/zombie/zombie.png b/src/static/textures/entity/zombie/zombie.png new file mode 100644 index 0000000000000000000000000000000000000000..5ad846e1c74f9b6aa77d972d13f43aa945175eed Binary files /dev/null and b/src/static/textures/entity/zombie/zombie.png differ diff --git a/src/static/textures/entity/zombie_pigman.png b/src/static/textures/entity/zombie_pigman.png new file mode 100644 index 0000000000000000000000000000000000000000..2d2615a6ee75e051d87d34336c6362ca164f816e Binary files /dev/null and b/src/static/textures/entity/zombie_pigman.png differ diff --git a/src/static/textures/gui/container/inventory.png b/src/static/textures/gui/container/inventory.png new file mode 100644 index 0000000000000000000000000000000000000000..ff5e9313c50f70c25ad1ab446220978af8542a1f Binary files /dev/null and b/src/static/textures/gui/container/inventory.png differ diff --git a/src/static/textures/item/acacia_boat.png b/src/static/textures/item/acacia_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..f9bf658fbc11c4cd48b7b771f6a254bce4985544 Binary files /dev/null and b/src/static/textures/item/acacia_boat.png differ diff --git a/src/static/textures/item/acacia_door.png b/src/static/textures/item/acacia_door.png new file mode 100644 index 0000000000000000000000000000000000000000..201f93a7548a0251a21c3692b58b6fbe5eee77bd Binary files /dev/null and b/src/static/textures/item/acacia_door.png differ diff --git a/src/static/textures/item/apple.png b/src/static/textures/item/apple.png new file mode 100644 index 0000000000000000000000000000000000000000..3ee2b885717563fb943f521c0cf834b72ecdb183 Binary files /dev/null and b/src/static/textures/item/apple.png differ diff --git a/src/static/textures/item/armor_stand.png b/src/static/textures/item/armor_stand.png new file mode 100644 index 0000000000000000000000000000000000000000..c65badebe5d657aa540f1684f812662430e431d2 Binary files /dev/null and b/src/static/textures/item/armor_stand.png differ diff --git a/src/static/textures/item/arrow.png b/src/static/textures/item/arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..4f748a002f863bc423486817b6cd5f85c5dc5f5d Binary files /dev/null and b/src/static/textures/item/arrow.png differ diff --git a/src/static/textures/item/baked_potato.png b/src/static/textures/item/baked_potato.png new file mode 100644 index 0000000000000000000000000000000000000000..c8d3cbabb6f4673ba01a8c32e596c0ed3b139cbb Binary files /dev/null and b/src/static/textures/item/baked_potato.png differ diff --git a/src/static/textures/item/banner_overlay.png b/src/static/textures/item/banner_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..999d01587d4373c56612cc1c11508b0f7f9e8557 Binary files /dev/null and b/src/static/textures/item/banner_overlay.png differ diff --git a/src/static/textures/item/barrier.png b/src/static/textures/item/barrier.png new file mode 100644 index 0000000000000000000000000000000000000000..2e68169edfd910f64a73e0980d6d50becfdffa04 Binary files /dev/null and b/src/static/textures/item/barrier.png differ diff --git a/src/static/textures/item/beef.png b/src/static/textures/item/beef.png new file mode 100644 index 0000000000000000000000000000000000000000..6334716abdd6c6c70ce057c74c7802cfe8a1a930 Binary files /dev/null and b/src/static/textures/item/beef.png differ diff --git a/src/static/textures/item/beetroot.png b/src/static/textures/item/beetroot.png new file mode 100644 index 0000000000000000000000000000000000000000..48ccf011e5af9fca7f093d80d49134ba57731f4c Binary files /dev/null and b/src/static/textures/item/beetroot.png differ diff --git a/src/static/textures/item/beetroot_seeds.png b/src/static/textures/item/beetroot_seeds.png new file mode 100644 index 0000000000000000000000000000000000000000..f7529ad72dbcc4f26ced8f1b503328bc6fb7ab49 Binary files /dev/null and b/src/static/textures/item/beetroot_seeds.png differ diff --git a/src/static/textures/item/beetroot_soup.png b/src/static/textures/item/beetroot_soup.png new file mode 100644 index 0000000000000000000000000000000000000000..e26fe6e7a92b5f9e2969cac7125ca89852b25d5b Binary files /dev/null and b/src/static/textures/item/beetroot_soup.png differ diff --git a/src/static/textures/item/birch_boat.png b/src/static/textures/item/birch_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..2c1ba55d9ad978e3c8a3b81a00ffd49b7a2da9aa Binary files /dev/null and b/src/static/textures/item/birch_boat.png differ diff --git a/src/static/textures/item/birch_door.png b/src/static/textures/item/birch_door.png new file mode 100644 index 0000000000000000000000000000000000000000..d279ef1bc83580215e6e1f51145561699ebb2f6c Binary files /dev/null and b/src/static/textures/item/birch_door.png differ diff --git a/src/static/textures/item/blaze_powder.png b/src/static/textures/item/blaze_powder.png new file mode 100644 index 0000000000000000000000000000000000000000..89c57d6ea68cb9dd66be63d214393cb2802fcdba Binary files /dev/null and b/src/static/textures/item/blaze_powder.png differ diff --git a/src/static/textures/item/blaze_rod.png b/src/static/textures/item/blaze_rod.png new file mode 100644 index 0000000000000000000000000000000000000000..7050e10f07c550363f63329df08c38780c63ce25 Binary files /dev/null and b/src/static/textures/item/blaze_rod.png differ diff --git a/src/static/textures/item/bone.png b/src/static/textures/item/bone.png new file mode 100644 index 0000000000000000000000000000000000000000..7bb81afac10c5d5648e289f038ab79c8c41d4930 Binary files /dev/null and b/src/static/textures/item/bone.png differ diff --git a/src/static/textures/item/bone_meal.png b/src/static/textures/item/bone_meal.png new file mode 100644 index 0000000000000000000000000000000000000000..74dc137a506720aae69e64f3a9666ed3789c578a Binary files /dev/null and b/src/static/textures/item/bone_meal.png differ diff --git a/src/static/textures/item/book.png b/src/static/textures/item/book.png new file mode 100644 index 0000000000000000000000000000000000000000..68abee6602ed2261459c45d15d1986dda6f6648e Binary files /dev/null and b/src/static/textures/item/book.png differ diff --git a/src/static/textures/item/bow.png b/src/static/textures/item/bow.png new file mode 100644 index 0000000000000000000000000000000000000000..d709b9c8d77979eed3e65943595d59baa0e890d3 Binary files /dev/null and b/src/static/textures/item/bow.png differ diff --git a/src/static/textures/item/bow_pulling_0.png b/src/static/textures/item/bow_pulling_0.png new file mode 100644 index 0000000000000000000000000000000000000000..2022aabd80587668d4370770d60824a577ed100d Binary files /dev/null and b/src/static/textures/item/bow_pulling_0.png differ diff --git a/src/static/textures/item/bow_pulling_1.png b/src/static/textures/item/bow_pulling_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a13207956f3d3a909f53324f1a8c654bb501852d Binary files /dev/null and b/src/static/textures/item/bow_pulling_1.png differ diff --git a/src/static/textures/item/bow_pulling_2.png b/src/static/textures/item/bow_pulling_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d459e685693388ff1ea0ab911ab3a25d30687feb Binary files /dev/null and b/src/static/textures/item/bow_pulling_2.png differ diff --git a/src/static/textures/item/bowl.png b/src/static/textures/item/bowl.png new file mode 100644 index 0000000000000000000000000000000000000000..826be5a46631d81f42af277967a4f19c38fe9b34 Binary files /dev/null and b/src/static/textures/item/bowl.png differ diff --git a/src/static/textures/item/bread.png b/src/static/textures/item/bread.png new file mode 100644 index 0000000000000000000000000000000000000000..b3943266ac4efc1633c17483d54f2930bbb59fd6 Binary files /dev/null and b/src/static/textures/item/bread.png differ diff --git a/src/static/textures/item/brewing_stand.png b/src/static/textures/item/brewing_stand.png new file mode 100644 index 0000000000000000000000000000000000000000..66e9d8dae47a6376d78c7744be3fe346ea7cd4c9 Binary files /dev/null and b/src/static/textures/item/brewing_stand.png differ diff --git a/src/static/textures/item/brick.png b/src/static/textures/item/brick.png new file mode 100644 index 0000000000000000000000000000000000000000..1fb55776cd0244e61e0cc7f9e124f1d66f482215 Binary files /dev/null and b/src/static/textures/item/brick.png differ diff --git a/src/static/textures/item/broken_elytra.png b/src/static/textures/item/broken_elytra.png new file mode 100644 index 0000000000000000000000000000000000000000..dd92e7f759491063fb9b7f11f888d4dc9e61968b Binary files /dev/null and b/src/static/textures/item/broken_elytra.png differ diff --git a/src/static/textures/item/bucket.png b/src/static/textures/item/bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..735a4afb22247b199992b8fb989a66b72bb06293 Binary files /dev/null and b/src/static/textures/item/bucket.png differ diff --git a/src/static/textures/item/cactus_green.png b/src/static/textures/item/cactus_green.png new file mode 100644 index 0000000000000000000000000000000000000000..7a24b8edab259256df523db88e3c1622f23ece69 Binary files /dev/null and b/src/static/textures/item/cactus_green.png differ diff --git a/src/static/textures/item/cake.png b/src/static/textures/item/cake.png new file mode 100644 index 0000000000000000000000000000000000000000..5c2b675869ddc5a82de99239d4bf860178a19aba Binary files /dev/null and b/src/static/textures/item/cake.png differ diff --git a/src/static/textures/item/carrot.png b/src/static/textures/item/carrot.png new file mode 100644 index 0000000000000000000000000000000000000000..620ce48b570d9d13d1b76cf32c463832e40050ce Binary files /dev/null and b/src/static/textures/item/carrot.png differ diff --git a/src/static/textures/item/carrot_on_a_stick.png b/src/static/textures/item/carrot_on_a_stick.png new file mode 100644 index 0000000000000000000000000000000000000000..51b5191903b12717d378cfeec00cb2f342427ec0 Binary files /dev/null and b/src/static/textures/item/carrot_on_a_stick.png differ diff --git a/src/static/textures/item/cauldron.png b/src/static/textures/item/cauldron.png new file mode 100644 index 0000000000000000000000000000000000000000..8aabc21c0536f6006231c3dcb443561b660dbd1c Binary files /dev/null and b/src/static/textures/item/cauldron.png differ diff --git a/src/static/textures/item/chainmail_boots.png b/src/static/textures/item/chainmail_boots.png new file mode 100644 index 0000000000000000000000000000000000000000..6857585f084ca4ed5305829782479f0251d577a4 Binary files /dev/null and b/src/static/textures/item/chainmail_boots.png differ diff --git a/src/static/textures/item/chainmail_chestplate.png b/src/static/textures/item/chainmail_chestplate.png new file mode 100644 index 0000000000000000000000000000000000000000..8d32264de54209527e19fba726de3223d5eac3ec Binary files /dev/null and b/src/static/textures/item/chainmail_chestplate.png differ diff --git a/src/static/textures/item/chainmail_helmet.png b/src/static/textures/item/chainmail_helmet.png new file mode 100644 index 0000000000000000000000000000000000000000..0865f14bde1026579c25a5dfc26672015f954ff1 Binary files /dev/null and b/src/static/textures/item/chainmail_helmet.png differ diff --git a/src/static/textures/item/chainmail_leggings.png b/src/static/textures/item/chainmail_leggings.png new file mode 100644 index 0000000000000000000000000000000000000000..4198cc5f9248214197e230c64631bffc2a2a05f5 Binary files /dev/null and b/src/static/textures/item/chainmail_leggings.png differ diff --git a/src/static/textures/item/charcoal.png b/src/static/textures/item/charcoal.png new file mode 100644 index 0000000000000000000000000000000000000000..9f7ee32d169f9e90cdac95a0379e43733d4a9e15 Binary files /dev/null and b/src/static/textures/item/charcoal.png differ diff --git a/src/static/textures/item/chest_minecart.png b/src/static/textures/item/chest_minecart.png new file mode 100644 index 0000000000000000000000000000000000000000..7a9e5d45d06c4dceefa37d62783389df5ca5f7d2 Binary files /dev/null and b/src/static/textures/item/chest_minecart.png differ diff --git a/src/static/textures/item/chicken.png b/src/static/textures/item/chicken.png new file mode 100644 index 0000000000000000000000000000000000000000..34dc33acef7e5db7a66f0e37cfc0cf555ed2f2e5 Binary files /dev/null and b/src/static/textures/item/chicken.png differ diff --git a/src/static/textures/item/chorus_fruit.png b/src/static/textures/item/chorus_fruit.png new file mode 100644 index 0000000000000000000000000000000000000000..676e2cea0c0ba2ce1bf5ea10b9c863318f2072eb Binary files /dev/null and b/src/static/textures/item/chorus_fruit.png differ diff --git a/src/static/textures/item/clay_ball.png b/src/static/textures/item/clay_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..786b1a371928da2143265bdf979cf3282053edbc Binary files /dev/null and b/src/static/textures/item/clay_ball.png differ diff --git a/src/static/textures/item/coal.png b/src/static/textures/item/coal.png new file mode 100644 index 0000000000000000000000000000000000000000..513e9c69e538718d92f85ba794b72def36907b61 Binary files /dev/null and b/src/static/textures/item/coal.png differ diff --git a/src/static/textures/item/cocoa_beans.png b/src/static/textures/item/cocoa_beans.png new file mode 100644 index 0000000000000000000000000000000000000000..90b51d63bd67068fd401219de059dbd1547d6a6d Binary files /dev/null and b/src/static/textures/item/cocoa_beans.png differ diff --git a/src/static/textures/item/cod_bucket.png b/src/static/textures/item/cod_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..70128e5876fdcb339af066a842cf6dfe9a24f0b0 Binary files /dev/null and b/src/static/textures/item/cod_bucket.png differ diff --git a/src/static/textures/item/command_block_minecart.png b/src/static/textures/item/command_block_minecart.png new file mode 100644 index 0000000000000000000000000000000000000000..efe6feb2e739ec3144708ad989bfa948bce8bc8a Binary files /dev/null and b/src/static/textures/item/command_block_minecart.png differ diff --git a/src/static/textures/item/comparator.png b/src/static/textures/item/comparator.png new file mode 100644 index 0000000000000000000000000000000000000000..ee5a38e10eb761dc12484e66a0ffa64c4f6fc52e Binary files /dev/null and b/src/static/textures/item/comparator.png differ diff --git a/src/static/textures/item/cooked_beef.png b/src/static/textures/item/cooked_beef.png new file mode 100644 index 0000000000000000000000000000000000000000..5f2d657db5362688fd7568d42283964d94d00aab Binary files /dev/null and b/src/static/textures/item/cooked_beef.png differ diff --git a/src/static/textures/item/cooked_chicken.png b/src/static/textures/item/cooked_chicken.png new file mode 100644 index 0000000000000000000000000000000000000000..db7bbeed8475a04edb3a9688fb05cf1999a69ed0 Binary files /dev/null and b/src/static/textures/item/cooked_chicken.png differ diff --git a/src/static/textures/item/cooked_mutton.png b/src/static/textures/item/cooked_mutton.png new file mode 100644 index 0000000000000000000000000000000000000000..26bf7dd69a23b5d499b1fb61f6668ae1b9776955 Binary files /dev/null and b/src/static/textures/item/cooked_mutton.png differ diff --git a/src/static/textures/item/cooked_porkchop.png b/src/static/textures/item/cooked_porkchop.png new file mode 100644 index 0000000000000000000000000000000000000000..0988066f6596daeb102d9fcddd2d6b922a7e5b72 Binary files /dev/null and b/src/static/textures/item/cooked_porkchop.png differ diff --git a/src/static/textures/item/cooked_rabbit.png b/src/static/textures/item/cooked_rabbit.png new file mode 100644 index 0000000000000000000000000000000000000000..20438043bc0eba99b6b69c669f5930c5b0cc9a4d Binary files /dev/null and b/src/static/textures/item/cooked_rabbit.png differ diff --git a/src/static/textures/item/cooked_salmon.png b/src/static/textures/item/cooked_salmon.png new file mode 100644 index 0000000000000000000000000000000000000000..69c7b4d27fde1bb57872c34205a55b05466e3e89 Binary files /dev/null and b/src/static/textures/item/cooked_salmon.png differ diff --git a/src/static/textures/item/cookie.png b/src/static/textures/item/cookie.png new file mode 100644 index 0000000000000000000000000000000000000000..9eb5e8cf329c1f593c70a4afebf1a758984ca17c Binary files /dev/null and b/src/static/textures/item/cookie.png differ diff --git a/src/static/textures/item/cyan_dye.png b/src/static/textures/item/cyan_dye.png new file mode 100644 index 0000000000000000000000000000000000000000..eafaee3b4d7b9634817870076954a278a611f64a Binary files /dev/null and b/src/static/textures/item/cyan_dye.png differ diff --git a/src/static/textures/item/dandelion_yellow.png b/src/static/textures/item/dandelion_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..1cea9ee26fbf611fe22aa469122cd436e1252442 Binary files /dev/null and b/src/static/textures/item/dandelion_yellow.png differ diff --git a/src/static/textures/item/dark_oak_boat.png b/src/static/textures/item/dark_oak_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..1a1f451952d603d291b95f48e33400f5ee48a317 Binary files /dev/null and b/src/static/textures/item/dark_oak_boat.png differ diff --git a/src/static/textures/item/dark_oak_door.png b/src/static/textures/item/dark_oak_door.png new file mode 100644 index 0000000000000000000000000000000000000000..4d2474dd3f3f6bd11ed529677ce3776ad3b1ef05 Binary files /dev/null and b/src/static/textures/item/dark_oak_door.png differ diff --git a/src/static/textures/item/diamond.png b/src/static/textures/item/diamond.png new file mode 100644 index 0000000000000000000000000000000000000000..8ce901e9cc1a877bf0c998abc54d6fa74b21cd34 Binary files /dev/null and b/src/static/textures/item/diamond.png differ diff --git a/src/static/textures/item/diamond_axe.png b/src/static/textures/item/diamond_axe.png new file mode 100644 index 0000000000000000000000000000000000000000..5213ea7b3820421b705a151f363af8eb34aad853 Binary files /dev/null and b/src/static/textures/item/diamond_axe.png differ diff --git a/src/static/textures/item/diamond_boots.png b/src/static/textures/item/diamond_boots.png new file mode 100644 index 0000000000000000000000000000000000000000..bdc3b0a617520b7fcf7ff97c24099963608869d8 Binary files /dev/null and b/src/static/textures/item/diamond_boots.png differ diff --git a/src/static/textures/item/diamond_chestplate.png b/src/static/textures/item/diamond_chestplate.png new file mode 100644 index 0000000000000000000000000000000000000000..88d21bf92816ad95ffb8b26a8401e6693e9e9528 Binary files /dev/null and b/src/static/textures/item/diamond_chestplate.png differ diff --git a/src/static/textures/item/diamond_helmet.png b/src/static/textures/item/diamond_helmet.png new file mode 100644 index 0000000000000000000000000000000000000000..aa0375a7a38c8121e797fdd8598c37eb21b5d256 Binary files /dev/null and b/src/static/textures/item/diamond_helmet.png differ diff --git a/src/static/textures/item/diamond_hoe.png b/src/static/textures/item/diamond_hoe.png new file mode 100644 index 0000000000000000000000000000000000000000..8fe701452916dd8c9d6510906323e8f4c16d5e26 Binary files /dev/null and b/src/static/textures/item/diamond_hoe.png differ diff --git a/src/static/textures/item/diamond_horse_armor.png b/src/static/textures/item/diamond_horse_armor.png new file mode 100644 index 0000000000000000000000000000000000000000..e40c1ec1e81bee685b7e96b6580f918914672977 Binary files /dev/null and b/src/static/textures/item/diamond_horse_armor.png differ diff --git a/src/static/textures/item/diamond_leggings.png b/src/static/textures/item/diamond_leggings.png new file mode 100644 index 0000000000000000000000000000000000000000..035be4155e26fd2048449465bf0a8a44f54288e0 Binary files /dev/null and b/src/static/textures/item/diamond_leggings.png differ diff --git a/src/static/textures/item/diamond_pickaxe.png b/src/static/textures/item/diamond_pickaxe.png new file mode 100644 index 0000000000000000000000000000000000000000..3b456d1b9f9b29a6abb92cbb8402ca09cb901bde Binary files /dev/null and b/src/static/textures/item/diamond_pickaxe.png differ diff --git a/src/static/textures/item/diamond_shovel.png b/src/static/textures/item/diamond_shovel.png new file mode 100644 index 0000000000000000000000000000000000000000..3e798c6d65b2909854e4d38806ce04f8b9e4fec1 Binary files /dev/null and b/src/static/textures/item/diamond_shovel.png differ diff --git a/src/static/textures/item/diamond_sword.png b/src/static/textures/item/diamond_sword.png new file mode 100644 index 0000000000000000000000000000000000000000..49e0e6058b7a0f5ebd6d47ded3832ec07eeaa9d7 Binary files /dev/null and b/src/static/textures/item/diamond_sword.png differ diff --git a/src/static/textures/item/dragon_breath.png b/src/static/textures/item/dragon_breath.png new file mode 100644 index 0000000000000000000000000000000000000000..1ea773bc7434a60a8094d5c90727567509a0c5ac Binary files /dev/null and b/src/static/textures/item/dragon_breath.png differ diff --git a/src/static/textures/item/egg.png b/src/static/textures/item/egg.png new file mode 100644 index 0000000000000000000000000000000000000000..2c56b906d069cfbf84a4fdccb45f3aa4c494d29b Binary files /dev/null and b/src/static/textures/item/egg.png differ diff --git a/src/static/textures/item/elytra.png b/src/static/textures/item/elytra.png new file mode 100644 index 0000000000000000000000000000000000000000..79c0bab04455ddc94ad66c80253de6910008beab Binary files /dev/null and b/src/static/textures/item/elytra.png differ diff --git a/src/static/textures/item/emerald.png b/src/static/textures/item/emerald.png new file mode 100644 index 0000000000000000000000000000000000000000..9e19051cc581772c2c36291c248f0d4892b3410b Binary files /dev/null and b/src/static/textures/item/emerald.png differ diff --git a/src/static/textures/item/empty_armor_slot_boots.png b/src/static/textures/item/empty_armor_slot_boots.png new file mode 100644 index 0000000000000000000000000000000000000000..fd7e05faf9c9058a66a90fb262cbe6cc546d765f Binary files /dev/null and b/src/static/textures/item/empty_armor_slot_boots.png differ diff --git a/src/static/textures/item/empty_armor_slot_chestplate.png b/src/static/textures/item/empty_armor_slot_chestplate.png new file mode 100644 index 0000000000000000000000000000000000000000..6e632b9daca85ced819c24cd97953f84aa98ca3f Binary files /dev/null and b/src/static/textures/item/empty_armor_slot_chestplate.png differ diff --git a/src/static/textures/item/empty_armor_slot_helmet.png b/src/static/textures/item/empty_armor_slot_helmet.png new file mode 100644 index 0000000000000000000000000000000000000000..3a455f3f5916bb29af5fcd79473d55b6d1952023 Binary files /dev/null and b/src/static/textures/item/empty_armor_slot_helmet.png differ diff --git a/src/static/textures/item/empty_armor_slot_leggings.png b/src/static/textures/item/empty_armor_slot_leggings.png new file mode 100644 index 0000000000000000000000000000000000000000..28b2c494acbc3bbb8ae23b4632be9b436a7839bf Binary files /dev/null and b/src/static/textures/item/empty_armor_slot_leggings.png differ diff --git a/src/static/textures/item/empty_armor_slot_shield.png b/src/static/textures/item/empty_armor_slot_shield.png new file mode 100644 index 0000000000000000000000000000000000000000..fa12e4333843a3075d3ec7f612114f2f4612939d Binary files /dev/null and b/src/static/textures/item/empty_armor_slot_shield.png differ diff --git a/src/static/textures/item/enchanted_book.png b/src/static/textures/item/enchanted_book.png new file mode 100644 index 0000000000000000000000000000000000000000..a67e1b81642a881ef2c041fa85eae806e1b7bd0d Binary files /dev/null and b/src/static/textures/item/enchanted_book.png differ diff --git a/src/static/textures/item/end_crystal.png b/src/static/textures/item/end_crystal.png new file mode 100644 index 0000000000000000000000000000000000000000..b1d0d1403ebde7d67d6ffb00080ee7a62da14342 Binary files /dev/null and b/src/static/textures/item/end_crystal.png differ diff --git a/src/static/textures/item/ender_eye.png b/src/static/textures/item/ender_eye.png new file mode 100644 index 0000000000000000000000000000000000000000..ef379aca9c827035a6572d963de63a42b12f66e4 Binary files /dev/null and b/src/static/textures/item/ender_eye.png differ diff --git a/src/static/textures/item/ender_pearl.png b/src/static/textures/item/ender_pearl.png new file mode 100644 index 0000000000000000000000000000000000000000..8282898800d5542913161cfa717a17ee7f3e9b1a Binary files /dev/null and b/src/static/textures/item/ender_pearl.png differ diff --git a/src/static/textures/item/experience_bottle.png b/src/static/textures/item/experience_bottle.png new file mode 100644 index 0000000000000000000000000000000000000000..eb27866de557b91ae23670bd55be45f1ac707b06 Binary files /dev/null and b/src/static/textures/item/experience_bottle.png differ diff --git a/src/static/textures/item/feather.png b/src/static/textures/item/feather.png new file mode 100644 index 0000000000000000000000000000000000000000..074373ff1b640c9c2dde2296a114fc213c60fa41 Binary files /dev/null and b/src/static/textures/item/feather.png differ diff --git a/src/static/textures/item/fermented_spider_eye.png b/src/static/textures/item/fermented_spider_eye.png new file mode 100644 index 0000000000000000000000000000000000000000..c79c2f2fd32bf957d1a4a7e121fe0178be4a204b Binary files /dev/null and b/src/static/textures/item/fermented_spider_eye.png differ diff --git a/src/static/textures/item/filled_map.png b/src/static/textures/item/filled_map.png new file mode 100644 index 0000000000000000000000000000000000000000..45019a54f2bc9009ae2f1cc3519b2e0650693a4f Binary files /dev/null and b/src/static/textures/item/filled_map.png differ diff --git a/src/static/textures/item/filled_map_markings.png b/src/static/textures/item/filled_map_markings.png new file mode 100644 index 0000000000000000000000000000000000000000..7eaa311edc66bfc1b9131fcfe81bba742c78a650 Binary files /dev/null and b/src/static/textures/item/filled_map_markings.png differ diff --git a/src/static/textures/item/fire_charge.png b/src/static/textures/item/fire_charge.png new file mode 100644 index 0000000000000000000000000000000000000000..1816e87bbcaf89d80de382e0d6239af2375f00f5 Binary files /dev/null and b/src/static/textures/item/fire_charge.png differ diff --git a/src/static/textures/item/firework_rocket.png b/src/static/textures/item/firework_rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..1d60c42116c067d2b03414c03a01062f96c4b9ea Binary files /dev/null and b/src/static/textures/item/firework_rocket.png differ diff --git a/src/static/textures/item/firework_star.png b/src/static/textures/item/firework_star.png new file mode 100644 index 0000000000000000000000000000000000000000..a2e67af107d9214689eccd2b0c95334cdab24a9d Binary files /dev/null and b/src/static/textures/item/firework_star.png differ diff --git a/src/static/textures/item/firework_star_overlay.png b/src/static/textures/item/firework_star_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..d8b91a92c236463ca9c798bd92d149c577a42c35 Binary files /dev/null and b/src/static/textures/item/firework_star_overlay.png differ diff --git a/src/static/textures/item/fishing_rod.png b/src/static/textures/item/fishing_rod.png new file mode 100644 index 0000000000000000000000000000000000000000..a6926b5138a5e1cb2241c9b65cbc4ad3ea9d2b50 Binary files /dev/null and b/src/static/textures/item/fishing_rod.png differ diff --git a/src/static/textures/item/fishing_rod_cast.png b/src/static/textures/item/fishing_rod_cast.png new file mode 100644 index 0000000000000000000000000000000000000000..250a1cf1370cc00c69dd217fc5b0d3efd87019a5 Binary files /dev/null and b/src/static/textures/item/fishing_rod_cast.png differ diff --git a/src/static/textures/item/flint.png b/src/static/textures/item/flint.png new file mode 100644 index 0000000000000000000000000000000000000000..fa332a8620ae86e09ea9e4c0f2f315e785dccf49 Binary files /dev/null and b/src/static/textures/item/flint.png differ diff --git a/src/static/textures/item/flint_and_steel.png b/src/static/textures/item/flint_and_steel.png new file mode 100644 index 0000000000000000000000000000000000000000..ed1197af36907bdda0ad9c6f450a682b8fcc327a Binary files /dev/null and b/src/static/textures/item/flint_and_steel.png differ diff --git a/src/static/textures/item/flower_pot.png b/src/static/textures/item/flower_pot.png new file mode 100644 index 0000000000000000000000000000000000000000..9a101cf108798eea213738f61684dcc4ff61b85e Binary files /dev/null and b/src/static/textures/item/flower_pot.png differ diff --git a/src/static/textures/item/furnace_minecart.png b/src/static/textures/item/furnace_minecart.png new file mode 100644 index 0000000000000000000000000000000000000000..f17efac2d04bf22acae0ae5a6887ff900b5f8879 Binary files /dev/null and b/src/static/textures/item/furnace_minecart.png differ diff --git a/src/static/textures/item/ghast_tear.png b/src/static/textures/item/ghast_tear.png new file mode 100644 index 0000000000000000000000000000000000000000..8fa46e8f932070fed084b2e1789aa34922ab6e92 Binary files /dev/null and b/src/static/textures/item/ghast_tear.png differ diff --git a/src/static/textures/item/glass_bottle.png b/src/static/textures/item/glass_bottle.png new file mode 100644 index 0000000000000000000000000000000000000000..b86b4b7f27ee23ac212890441e7c67631489446f Binary files /dev/null and b/src/static/textures/item/glass_bottle.png differ diff --git a/src/static/textures/item/glistering_melon_slice.png b/src/static/textures/item/glistering_melon_slice.png new file mode 100644 index 0000000000000000000000000000000000000000..e8923d1636dd4c142058bb618ac638a7c6ea3447 Binary files /dev/null and b/src/static/textures/item/glistering_melon_slice.png differ diff --git a/src/static/textures/item/glowstone_dust.png b/src/static/textures/item/glowstone_dust.png new file mode 100644 index 0000000000000000000000000000000000000000..24181098ad8dc82e9dadd2caeb7925aa3eb677bb Binary files /dev/null and b/src/static/textures/item/glowstone_dust.png differ diff --git a/src/static/textures/item/gold_ingot.png b/src/static/textures/item/gold_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..d3684df745a96229c416f7c3dc28d8b464937d23 Binary files /dev/null and b/src/static/textures/item/gold_ingot.png differ diff --git a/src/static/textures/item/gold_nugget.png b/src/static/textures/item/gold_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b4b87e15f70a1241133a296c7a5e22fd4627f6 Binary files /dev/null and b/src/static/textures/item/gold_nugget.png differ diff --git a/src/static/textures/item/golden_apple.png b/src/static/textures/item/golden_apple.png new file mode 100644 index 0000000000000000000000000000000000000000..43b787ea834cb8681a10917f5ccd11a1ff103628 Binary files /dev/null and b/src/static/textures/item/golden_apple.png differ diff --git a/src/static/textures/item/golden_axe.png b/src/static/textures/item/golden_axe.png new file mode 100644 index 0000000000000000000000000000000000000000..e0b268df9ec4adeb3b5ce560f12392a703502f93 Binary files /dev/null and b/src/static/textures/item/golden_axe.png differ diff --git a/src/static/textures/item/golden_boots.png b/src/static/textures/item/golden_boots.png new file mode 100644 index 0000000000000000000000000000000000000000..519ee0241e29d1d52b16ecadd24b083348822b52 Binary files /dev/null and b/src/static/textures/item/golden_boots.png differ diff --git a/src/static/textures/item/golden_carrot.png b/src/static/textures/item/golden_carrot.png new file mode 100644 index 0000000000000000000000000000000000000000..ab5c788d117f67fc5c44eaff09ca7df4a3dbed26 Binary files /dev/null and b/src/static/textures/item/golden_carrot.png differ diff --git a/src/static/textures/item/golden_chestplate.png b/src/static/textures/item/golden_chestplate.png new file mode 100644 index 0000000000000000000000000000000000000000..bc8b0697db91482124f7752b9daca3235fdd9d78 Binary files /dev/null and b/src/static/textures/item/golden_chestplate.png differ diff --git a/src/static/textures/item/golden_helmet.png b/src/static/textures/item/golden_helmet.png new file mode 100644 index 0000000000000000000000000000000000000000..5bcc109cc11f420944d8cf1cba1558a16ac17025 Binary files /dev/null and b/src/static/textures/item/golden_helmet.png differ diff --git a/src/static/textures/item/golden_hoe.png b/src/static/textures/item/golden_hoe.png new file mode 100644 index 0000000000000000000000000000000000000000..e3d1e70d0548e457849877780d93e7c1195d9e37 Binary files /dev/null and b/src/static/textures/item/golden_hoe.png differ diff --git a/src/static/textures/item/golden_horse_armor.png b/src/static/textures/item/golden_horse_armor.png new file mode 100644 index 0000000000000000000000000000000000000000..87efd238d19c1f28707a9931270575887989e407 Binary files /dev/null and b/src/static/textures/item/golden_horse_armor.png differ diff --git a/src/static/textures/item/golden_leggings.png b/src/static/textures/item/golden_leggings.png new file mode 100644 index 0000000000000000000000000000000000000000..b514f0bdc664b2cca551fede2acc96e9dcffe4ca Binary files /dev/null and b/src/static/textures/item/golden_leggings.png differ diff --git a/src/static/textures/item/golden_pickaxe.png b/src/static/textures/item/golden_pickaxe.png new file mode 100644 index 0000000000000000000000000000000000000000..29f450c3f885543ed533bd05aff2497c9e2aca59 Binary files /dev/null and b/src/static/textures/item/golden_pickaxe.png differ diff --git a/src/static/textures/item/golden_shovel.png b/src/static/textures/item/golden_shovel.png new file mode 100644 index 0000000000000000000000000000000000000000..4a38193d302b762dd5a182c4a3c8ec991b0d09d8 Binary files /dev/null and b/src/static/textures/item/golden_shovel.png differ diff --git a/src/static/textures/item/golden_sword.png b/src/static/textures/item/golden_sword.png new file mode 100644 index 0000000000000000000000000000000000000000..1d827cfd2fcf6f664eb35f37965bbc9240570f9b Binary files /dev/null and b/src/static/textures/item/golden_sword.png differ diff --git a/src/static/textures/item/gray_dye.png b/src/static/textures/item/gray_dye.png new file mode 100644 index 0000000000000000000000000000000000000000..2a9c2d8bbc39cfea76c92f21b430078c999eb67c Binary files /dev/null and b/src/static/textures/item/gray_dye.png differ diff --git a/src/static/textures/item/gunpowder.png b/src/static/textures/item/gunpowder.png new file mode 100644 index 0000000000000000000000000000000000000000..18e88ece063ac605072cf81510fbfd8bbb9e0425 Binary files /dev/null and b/src/static/textures/item/gunpowder.png differ diff --git a/src/static/textures/item/hopper.png b/src/static/textures/item/hopper.png new file mode 100644 index 0000000000000000000000000000000000000000..8d1731a6a91926d482277b157f016a92c58fc99b Binary files /dev/null and b/src/static/textures/item/hopper.png differ diff --git a/src/static/textures/item/hopper_minecart.png b/src/static/textures/item/hopper_minecart.png new file mode 100644 index 0000000000000000000000000000000000000000..08aea54da1162815ada332a9cd4d94903ffe2db5 Binary files /dev/null and b/src/static/textures/item/hopper_minecart.png differ diff --git a/src/static/textures/item/ink_sac.png b/src/static/textures/item/ink_sac.png new file mode 100644 index 0000000000000000000000000000000000000000..dcabb0ab7b12ce7a7958e2576730df4d28ac8275 Binary files /dev/null and b/src/static/textures/item/ink_sac.png differ diff --git a/src/static/textures/item/iron_axe.png b/src/static/textures/item/iron_axe.png new file mode 100644 index 0000000000000000000000000000000000000000..43e742c28f79eff61144a25b07d9207da6f17d83 Binary files /dev/null and b/src/static/textures/item/iron_axe.png differ diff --git a/src/static/textures/item/iron_boots.png b/src/static/textures/item/iron_boots.png new file mode 100644 index 0000000000000000000000000000000000000000..e96092450e6c490afc45cc5fbbdbf156c4f0ae4c Binary files /dev/null and b/src/static/textures/item/iron_boots.png differ diff --git a/src/static/textures/item/iron_chestplate.png b/src/static/textures/item/iron_chestplate.png new file mode 100644 index 0000000000000000000000000000000000000000..bab56132b9b0b0f83aadc5f7038b72baf72c85eb Binary files /dev/null and b/src/static/textures/item/iron_chestplate.png differ diff --git a/src/static/textures/item/iron_door.png b/src/static/textures/item/iron_door.png new file mode 100644 index 0000000000000000000000000000000000000000..c878badbdd36c02d9fb89af435df2a2ce78a9ff6 Binary files /dev/null and b/src/static/textures/item/iron_door.png differ diff --git a/src/static/textures/item/iron_helmet.png b/src/static/textures/item/iron_helmet.png new file mode 100644 index 0000000000000000000000000000000000000000..085dd585e5ac00a01a6f5674f99ea112b59bffbb Binary files /dev/null and b/src/static/textures/item/iron_helmet.png differ diff --git a/src/static/textures/item/iron_hoe.png b/src/static/textures/item/iron_hoe.png new file mode 100644 index 0000000000000000000000000000000000000000..d5a78604e66b7a615585c97e08e12f32494dd19d Binary files /dev/null and b/src/static/textures/item/iron_hoe.png differ diff --git a/src/static/textures/item/iron_horse_armor.png b/src/static/textures/item/iron_horse_armor.png new file mode 100644 index 0000000000000000000000000000000000000000..c5650f0e7f1c535aa7221382bb62dce3762cf392 Binary files /dev/null and b/src/static/textures/item/iron_horse_armor.png differ diff --git a/src/static/textures/item/iron_ingot.png b/src/static/textures/item/iron_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..c332bd2ca95f685c0ff89b29c836303efa885e5d Binary files /dev/null and b/src/static/textures/item/iron_ingot.png differ diff --git a/src/static/textures/item/iron_leggings.png b/src/static/textures/item/iron_leggings.png new file mode 100644 index 0000000000000000000000000000000000000000..5ea16729f49f101fa629d19c90132b169c594685 Binary files /dev/null and b/src/static/textures/item/iron_leggings.png differ diff --git a/src/static/textures/item/iron_nugget.png b/src/static/textures/item/iron_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..13515d36c9754538943a7a6fed7a3a1660c93ca5 Binary files /dev/null and b/src/static/textures/item/iron_nugget.png differ diff --git a/src/static/textures/item/iron_pickaxe.png b/src/static/textures/item/iron_pickaxe.png new file mode 100644 index 0000000000000000000000000000000000000000..ac75a0101b5b852a0ab5b2216c5637c6c675434b Binary files /dev/null and b/src/static/textures/item/iron_pickaxe.png differ diff --git a/src/static/textures/item/iron_shovel.png b/src/static/textures/item/iron_shovel.png new file mode 100644 index 0000000000000000000000000000000000000000..fb726a027d567881737ad0f9f1958e315d3b9742 Binary files /dev/null and b/src/static/textures/item/iron_shovel.png differ diff --git a/src/static/textures/item/iron_sword.png b/src/static/textures/item/iron_sword.png new file mode 100644 index 0000000000000000000000000000000000000000..eec41ee90c47e00d6c5dd9038868bf94a82df2f3 Binary files /dev/null and b/src/static/textures/item/iron_sword.png differ diff --git a/src/static/textures/item/item_frame.png b/src/static/textures/item/item_frame.png new file mode 100644 index 0000000000000000000000000000000000000000..6a3c312e2997186f1cb3668880d16fd0bb0ce0a5 Binary files /dev/null and b/src/static/textures/item/item_frame.png differ diff --git a/src/static/textures/item/jungle_boat.png b/src/static/textures/item/jungle_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..f71b966eddf10c616723f45fce1ae90e902f6b05 Binary files /dev/null and b/src/static/textures/item/jungle_boat.png differ diff --git a/src/static/textures/item/jungle_door.png b/src/static/textures/item/jungle_door.png new file mode 100644 index 0000000000000000000000000000000000000000..422401fbdbde55d9b2f7b8882a47a3ad4208643d Binary files /dev/null and b/src/static/textures/item/jungle_door.png differ diff --git a/src/static/textures/item/knowledge_book.png b/src/static/textures/item/knowledge_book.png new file mode 100644 index 0000000000000000000000000000000000000000..68a7a1aa3de5e9832a9bc2c77592ba0c5bbdeb11 Binary files /dev/null and b/src/static/textures/item/knowledge_book.png differ diff --git a/src/static/textures/item/lapis_lazuli.png b/src/static/textures/item/lapis_lazuli.png new file mode 100644 index 0000000000000000000000000000000000000000..646813fa0dd4f171dafd164b9d60f328f4d3341d Binary files /dev/null and b/src/static/textures/item/lapis_lazuli.png differ diff --git a/src/static/textures/item/lava_bucket.png b/src/static/textures/item/lava_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..1f7b926317f5d5ce38727d1792528cfb3b780a87 Binary files /dev/null and b/src/static/textures/item/lava_bucket.png differ diff --git a/src/static/textures/item/lead.png b/src/static/textures/item/lead.png new file mode 100644 index 0000000000000000000000000000000000000000..be1cb62ae6a1a228c6f03d99c09a4865c9d1c8cc Binary files /dev/null and b/src/static/textures/item/lead.png differ diff --git a/src/static/textures/item/leather.png b/src/static/textures/item/leather.png new file mode 100644 index 0000000000000000000000000000000000000000..a0dee336fb1696cbd4c7b84d15d1ce955636f942 Binary files /dev/null and b/src/static/textures/item/leather.png differ diff --git a/src/static/textures/item/leather_boots.png b/src/static/textures/item/leather_boots.png new file mode 100644 index 0000000000000000000000000000000000000000..0dad1ba09de520233d8fed438e79a9089ede8cd3 Binary files /dev/null and b/src/static/textures/item/leather_boots.png differ diff --git a/src/static/textures/item/leather_boots_overlay.png b/src/static/textures/item/leather_boots_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..37506525aba73bb19b226c1077e29337466659fa Binary files /dev/null and b/src/static/textures/item/leather_boots_overlay.png differ diff --git a/src/static/textures/item/leather_chestplate.png b/src/static/textures/item/leather_chestplate.png new file mode 100644 index 0000000000000000000000000000000000000000..5aa01e38baa5800ed6939e443570debfd62b37f9 Binary files /dev/null and b/src/static/textures/item/leather_chestplate.png differ diff --git a/src/static/textures/item/leather_chestplate_overlay.png b/src/static/textures/item/leather_chestplate_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..2f6464bf7aeb78fb56185792b74d2c793aeea6e4 Binary files /dev/null and b/src/static/textures/item/leather_chestplate_overlay.png differ diff --git a/src/static/textures/item/leather_helmet.png b/src/static/textures/item/leather_helmet.png new file mode 100644 index 0000000000000000000000000000000000000000..9504867d89f40539a49a3f533a0c88f8397e537f Binary files /dev/null and b/src/static/textures/item/leather_helmet.png differ diff --git a/src/static/textures/item/leather_helmet_overlay.png b/src/static/textures/item/leather_helmet_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..670653ce560d396ba0e8828799f346873e56cba2 Binary files /dev/null and b/src/static/textures/item/leather_helmet_overlay.png differ diff --git a/src/static/textures/item/leather_leggings.png b/src/static/textures/item/leather_leggings.png new file mode 100644 index 0000000000000000000000000000000000000000..a1530c0967b511e6bbaccf6d80dadcf9638bed5e Binary files /dev/null and b/src/static/textures/item/leather_leggings.png differ diff --git a/src/static/textures/item/leather_leggings_overlay.png b/src/static/textures/item/leather_leggings_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..bdbf632fa811cec7bf9e2658bc0baadf6b3df538 Binary files /dev/null and b/src/static/textures/item/leather_leggings_overlay.png differ diff --git a/src/static/textures/item/light_blue_dye.png b/src/static/textures/item/light_blue_dye.png new file mode 100644 index 0000000000000000000000000000000000000000..e614b893840a67e2761863d25f231bb2ae66f290 Binary files /dev/null and b/src/static/textures/item/light_blue_dye.png differ diff --git a/src/static/textures/item/light_gray_dye.png b/src/static/textures/item/light_gray_dye.png new file mode 100644 index 0000000000000000000000000000000000000000..bbb5acc4d8e940cdb5ca6670f6dc73cff9b822ed Binary files /dev/null and b/src/static/textures/item/light_gray_dye.png differ diff --git a/src/static/textures/item/lime_dye.png b/src/static/textures/item/lime_dye.png new file mode 100644 index 0000000000000000000000000000000000000000..f9ce8f0b9505b0fbcdbe75ec23488696e3ba905e Binary files /dev/null and b/src/static/textures/item/lime_dye.png differ diff --git a/src/static/textures/item/lingering_potion.png b/src/static/textures/item/lingering_potion.png new file mode 100644 index 0000000000000000000000000000000000000000..a05ec6e6f91fe2986db5e876cbd3c61e3f76114c Binary files /dev/null and b/src/static/textures/item/lingering_potion.png differ diff --git a/src/static/textures/item/magenta_dye.png b/src/static/textures/item/magenta_dye.png new file mode 100644 index 0000000000000000000000000000000000000000..8b8412a28dcaf1614f384df9422222ba6d5375c9 Binary files /dev/null and b/src/static/textures/item/magenta_dye.png differ diff --git a/src/static/textures/item/magma_cream.png b/src/static/textures/item/magma_cream.png new file mode 100644 index 0000000000000000000000000000000000000000..398d66c66048836b73c6c94b256cfb0376195c97 Binary files /dev/null and b/src/static/textures/item/magma_cream.png differ diff --git a/src/static/textures/item/map.png b/src/static/textures/item/map.png new file mode 100644 index 0000000000000000000000000000000000000000..45019a54f2bc9009ae2f1cc3519b2e0650693a4f Binary files /dev/null and b/src/static/textures/item/map.png differ diff --git a/src/static/textures/item/melon_seeds.png b/src/static/textures/item/melon_seeds.png new file mode 100644 index 0000000000000000000000000000000000000000..ef84499c25a5a16ed8212300e9d00492e5522f51 Binary files /dev/null and b/src/static/textures/item/melon_seeds.png differ diff --git a/src/static/textures/item/melon_slice.png b/src/static/textures/item/melon_slice.png new file mode 100644 index 0000000000000000000000000000000000000000..0ebdca88d915984d5ff28af5fe1330fdb62d3d43 Binary files /dev/null and b/src/static/textures/item/melon_slice.png differ diff --git a/src/static/textures/item/milk_bucket.png b/src/static/textures/item/milk_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..c1b15c1fe310188ab465b51c71925f9f3126040c Binary files /dev/null and b/src/static/textures/item/milk_bucket.png differ diff --git a/src/static/textures/item/minecart.png b/src/static/textures/item/minecart.png new file mode 100644 index 0000000000000000000000000000000000000000..7e09e5456d7b24fdff3e79e14ca80914ae58bb53 Binary files /dev/null and b/src/static/textures/item/minecart.png differ diff --git a/src/static/textures/item/mushroom_stew.png b/src/static/textures/item/mushroom_stew.png new file mode 100644 index 0000000000000000000000000000000000000000..d38b0e0b2e30d58b9b9ba59a0a5938d448360d5c Binary files /dev/null and b/src/static/textures/item/mushroom_stew.png differ diff --git a/src/static/textures/item/music_disc_11.png b/src/static/textures/item/music_disc_11.png new file mode 100644 index 0000000000000000000000000000000000000000..5d333b6af8717d8a78e39867ca8995b268fa78f2 Binary files /dev/null and b/src/static/textures/item/music_disc_11.png differ diff --git a/src/static/textures/item/music_disc_13.png b/src/static/textures/item/music_disc_13.png new file mode 100644 index 0000000000000000000000000000000000000000..8cd91b943414a3d9e5815b74c754199cb9f1f600 Binary files /dev/null and b/src/static/textures/item/music_disc_13.png differ diff --git a/src/static/textures/item/music_disc_blocks.png b/src/static/textures/item/music_disc_blocks.png new file mode 100644 index 0000000000000000000000000000000000000000..3732d6c97a212ec4dd6005105d4ad7b3f4ba89b9 Binary files /dev/null and b/src/static/textures/item/music_disc_blocks.png differ diff --git a/src/static/textures/item/music_disc_cat.png b/src/static/textures/item/music_disc_cat.png new file mode 100644 index 0000000000000000000000000000000000000000..b3527efb985fdd73bff7c840ecdfb0e9fef11951 Binary files /dev/null and b/src/static/textures/item/music_disc_cat.png differ diff --git a/src/static/textures/item/music_disc_chirp.png b/src/static/textures/item/music_disc_chirp.png new file mode 100644 index 0000000000000000000000000000000000000000..63068e1a6595daa186643161e0742d053ee1b5f9 Binary files /dev/null and b/src/static/textures/item/music_disc_chirp.png differ diff --git a/src/static/textures/item/music_disc_far.png b/src/static/textures/item/music_disc_far.png new file mode 100644 index 0000000000000000000000000000000000000000..443ded2347a8beafe7c829d1653fffc5b5e15bc3 Binary files /dev/null and b/src/static/textures/item/music_disc_far.png differ diff --git a/src/static/textures/item/music_disc_mall.png b/src/static/textures/item/music_disc_mall.png new file mode 100644 index 0000000000000000000000000000000000000000..a2bf0d61d11df4932d29a1ff10c48bf47312cde1 Binary files /dev/null and b/src/static/textures/item/music_disc_mall.png differ diff --git a/src/static/textures/item/music_disc_mellohi.png b/src/static/textures/item/music_disc_mellohi.png new file mode 100644 index 0000000000000000000000000000000000000000..466f5af43b0a6271b8c30596ac3502e738408f04 Binary files /dev/null and b/src/static/textures/item/music_disc_mellohi.png differ diff --git a/src/static/textures/item/music_disc_stal.png b/src/static/textures/item/music_disc_stal.png new file mode 100644 index 0000000000000000000000000000000000000000..731dad6310ad51b9264ca5ca587dabfb2f4e6d4b Binary files /dev/null and b/src/static/textures/item/music_disc_stal.png differ diff --git a/src/static/textures/item/music_disc_strad.png b/src/static/textures/item/music_disc_strad.png new file mode 100644 index 0000000000000000000000000000000000000000..c7e42ccd09067e9f219b05de9f4217f6ba2d241c Binary files /dev/null and b/src/static/textures/item/music_disc_strad.png differ diff --git a/src/static/textures/item/music_disc_wait.png b/src/static/textures/item/music_disc_wait.png new file mode 100644 index 0000000000000000000000000000000000000000..5306b514f10fb5061dc92ea79e61cef1200999c6 Binary files /dev/null and b/src/static/textures/item/music_disc_wait.png differ diff --git a/src/static/textures/item/music_disc_ward.png b/src/static/textures/item/music_disc_ward.png new file mode 100644 index 0000000000000000000000000000000000000000..6d053fe9979bf8144ec26b6fd89ca3fd7ce461e3 Binary files /dev/null and b/src/static/textures/item/music_disc_ward.png differ diff --git a/src/static/textures/item/mutton.png b/src/static/textures/item/mutton.png new file mode 100644 index 0000000000000000000000000000000000000000..dd6fa0f45f231a115384e6dfdcf32575969bf058 Binary files /dev/null and b/src/static/textures/item/mutton.png differ diff --git a/src/static/textures/item/name_tag.png b/src/static/textures/item/name_tag.png new file mode 100644 index 0000000000000000000000000000000000000000..6a47e0242a29eda373b58137d2739d28899163b2 Binary files /dev/null and b/src/static/textures/item/name_tag.png differ diff --git a/src/static/textures/item/nether_brick.png b/src/static/textures/item/nether_brick.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ef83f66ea44e2deaa8c827ca56e540f992a1e2 Binary files /dev/null and b/src/static/textures/item/nether_brick.png differ diff --git a/src/static/textures/item/nether_star.png b/src/static/textures/item/nether_star.png new file mode 100644 index 0000000000000000000000000000000000000000..bdacaee1bb6608f3132125ecfe143ef7df7df6f6 Binary files /dev/null and b/src/static/textures/item/nether_star.png differ diff --git a/src/static/textures/item/nether_wart.png b/src/static/textures/item/nether_wart.png new file mode 100644 index 0000000000000000000000000000000000000000..09da1e33f1f4082fbe49d263e58e5749ffc25d94 Binary files /dev/null and b/src/static/textures/item/nether_wart.png differ diff --git a/src/static/textures/item/oak_boat.png b/src/static/textures/item/oak_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..9e9e518e635d12fc9bb404e4ab3afac6de52949b Binary files /dev/null and b/src/static/textures/item/oak_boat.png differ diff --git a/src/static/textures/item/oak_door.png b/src/static/textures/item/oak_door.png new file mode 100644 index 0000000000000000000000000000000000000000..6501fa45df52a07e8df737b009c8d5d81b559680 Binary files /dev/null and b/src/static/textures/item/oak_door.png differ diff --git a/src/static/textures/item/orange_dye.png b/src/static/textures/item/orange_dye.png new file mode 100644 index 0000000000000000000000000000000000000000..fcec14a4cb46c8673051dcd470368fef76bc6dd4 Binary files /dev/null and b/src/static/textures/item/orange_dye.png differ diff --git a/src/static/textures/item/painting.png b/src/static/textures/item/painting.png new file mode 100644 index 0000000000000000000000000000000000000000..c20db4ff5cd6cd53bbf60bc36e377a667096e358 Binary files /dev/null and b/src/static/textures/item/painting.png differ diff --git a/src/static/textures/item/paper.png b/src/static/textures/item/paper.png new file mode 100644 index 0000000000000000000000000000000000000000..b30fb261d6de5c56ef0f4662943bacfbb3fceeec Binary files /dev/null and b/src/static/textures/item/paper.png differ diff --git a/src/static/textures/item/pink_dye.png b/src/static/textures/item/pink_dye.png new file mode 100644 index 0000000000000000000000000000000000000000..aaeb77aa8116a49658bcca4a2f646eb0e016934c Binary files /dev/null and b/src/static/textures/item/pink_dye.png differ diff --git a/src/static/textures/item/poisonous_potato.png b/src/static/textures/item/poisonous_potato.png new file mode 100644 index 0000000000000000000000000000000000000000..ea03238b9f257f1b823f9b235759a1bf017aaa10 Binary files /dev/null and b/src/static/textures/item/poisonous_potato.png differ diff --git a/src/static/textures/item/popped_chorus_fruit.png b/src/static/textures/item/popped_chorus_fruit.png new file mode 100644 index 0000000000000000000000000000000000000000..c83d418e7f1ab7a25745bd2634a02ee2c5c1142c Binary files /dev/null and b/src/static/textures/item/popped_chorus_fruit.png differ diff --git a/src/static/textures/item/porkchop.png b/src/static/textures/item/porkchop.png new file mode 100644 index 0000000000000000000000000000000000000000..4490271e6c173051b0827b5c66fd2a02a080051a Binary files /dev/null and b/src/static/textures/item/porkchop.png differ diff --git a/src/static/textures/item/potato.png b/src/static/textures/item/potato.png new file mode 100644 index 0000000000000000000000000000000000000000..c071e69b7fc849bdb24db5dc31b1bec7875a3a86 Binary files /dev/null and b/src/static/textures/item/potato.png differ diff --git a/src/static/textures/item/potion.png b/src/static/textures/item/potion.png new file mode 100644 index 0000000000000000000000000000000000000000..b86b4b7f27ee23ac212890441e7c67631489446f Binary files /dev/null and b/src/static/textures/item/potion.png differ diff --git a/src/static/textures/item/potion_overlay.png b/src/static/textures/item/potion_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..852260d71a6c2f400d49c0fff0e35172df6328f8 Binary files /dev/null and b/src/static/textures/item/potion_overlay.png differ diff --git a/src/static/textures/item/prismarine_crystals.png b/src/static/textures/item/prismarine_crystals.png new file mode 100644 index 0000000000000000000000000000000000000000..aba9497082c661f6ef81eea38a5e70f339d9de2e Binary files /dev/null and b/src/static/textures/item/prismarine_crystals.png differ diff --git a/src/static/textures/item/prismarine_shard.png b/src/static/textures/item/prismarine_shard.png new file mode 100644 index 0000000000000000000000000000000000000000..3cd7db7ceddd06d58f0e02a993bc7d1346c2d7ea Binary files /dev/null and b/src/static/textures/item/prismarine_shard.png differ diff --git a/src/static/textures/item/pufferfish_bucket.png b/src/static/textures/item/pufferfish_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..7039f3f2b05a23d9da07de287a0ed870243356cb Binary files /dev/null and b/src/static/textures/item/pufferfish_bucket.png differ diff --git a/src/static/textures/item/pumpkin_pie.png b/src/static/textures/item/pumpkin_pie.png new file mode 100644 index 0000000000000000000000000000000000000000..310177cbed9bd73917f8e5b681295cdd5e7e2d81 Binary files /dev/null and b/src/static/textures/item/pumpkin_pie.png differ diff --git a/src/static/textures/item/pumpkin_seeds.png b/src/static/textures/item/pumpkin_seeds.png new file mode 100644 index 0000000000000000000000000000000000000000..8d8f076142b90a93cb8f2d0011963abe95ace4c6 Binary files /dev/null and b/src/static/textures/item/pumpkin_seeds.png differ diff --git a/src/static/textures/item/purple_dye.png b/src/static/textures/item/purple_dye.png new file mode 100644 index 0000000000000000000000000000000000000000..e1618e22b27192966404a4862bb767b659a28eea Binary files /dev/null and b/src/static/textures/item/purple_dye.png differ diff --git a/src/static/textures/item/quartz.png b/src/static/textures/item/quartz.png new file mode 100644 index 0000000000000000000000000000000000000000..a4c6e2ff38bbe6afe8c64a6a0cb0898bb3e1b0af Binary files /dev/null and b/src/static/textures/item/quartz.png differ diff --git a/src/static/textures/item/rabbit.png b/src/static/textures/item/rabbit.png new file mode 100644 index 0000000000000000000000000000000000000000..058505fa1379531f5dccf0e5141463791eb206b4 Binary files /dev/null and b/src/static/textures/item/rabbit.png differ diff --git a/src/static/textures/item/rabbit_foot.png b/src/static/textures/item/rabbit_foot.png new file mode 100644 index 0000000000000000000000000000000000000000..0b06899450149055c5d65e1933fcd033405bc127 Binary files /dev/null and b/src/static/textures/item/rabbit_foot.png differ diff --git a/src/static/textures/item/rabbit_hide.png b/src/static/textures/item/rabbit_hide.png new file mode 100644 index 0000000000000000000000000000000000000000..a49f0b10480cd9afca91642db68c8f6026d671ef Binary files /dev/null and b/src/static/textures/item/rabbit_hide.png differ diff --git a/src/static/textures/item/rabbit_stew.png b/src/static/textures/item/rabbit_stew.png new file mode 100644 index 0000000000000000000000000000000000000000..ed1d33c839c34136cf7bb9e1abca5b1fa05373f3 Binary files /dev/null and b/src/static/textures/item/rabbit_stew.png differ diff --git a/src/static/textures/item/redstone.png b/src/static/textures/item/redstone.png new file mode 100644 index 0000000000000000000000000000000000000000..ddf9b54b78a3f79db4294a5f2216fcfa57dd9ebd Binary files /dev/null and b/src/static/textures/item/redstone.png differ diff --git a/src/static/textures/item/repeater.png b/src/static/textures/item/repeater.png new file mode 100644 index 0000000000000000000000000000000000000000..a8d406828b334ad0a756c742a8cb9a308013d865 Binary files /dev/null and b/src/static/textures/item/repeater.png differ diff --git a/src/static/textures/item/rose_red.png b/src/static/textures/item/rose_red.png new file mode 100644 index 0000000000000000000000000000000000000000..03a371c9a82a869ba03197e6ac89d741a5cffd9d Binary files /dev/null and b/src/static/textures/item/rose_red.png differ diff --git a/src/static/textures/item/rotten_flesh.png b/src/static/textures/item/rotten_flesh.png new file mode 100644 index 0000000000000000000000000000000000000000..a5f1dfb8ee3cf9ad41012fa2fa680d78a6521b3e Binary files /dev/null and b/src/static/textures/item/rotten_flesh.png differ diff --git a/src/static/textures/item/ruby.png b/src/static/textures/item/ruby.png new file mode 100644 index 0000000000000000000000000000000000000000..4f288d959b7e8b8e3cd9e4cc567b00d4588f3279 Binary files /dev/null and b/src/static/textures/item/ruby.png differ diff --git a/src/static/textures/item/saddle.png b/src/static/textures/item/saddle.png new file mode 100644 index 0000000000000000000000000000000000000000..3b1ed0bb94a6519e38669bb67e3599a942a18440 Binary files /dev/null and b/src/static/textures/item/saddle.png differ diff --git a/src/static/textures/item/salmon.png b/src/static/textures/item/salmon.png new file mode 100644 index 0000000000000000000000000000000000000000..97e2ed010d06a88626ba4f6dd1a51424cf0013a3 Binary files /dev/null and b/src/static/textures/item/salmon.png differ diff --git a/src/static/textures/item/salmon_bucket.png b/src/static/textures/item/salmon_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..0194d19b3eb80c933eaa76285646d6ddde9cfe4c Binary files /dev/null and b/src/static/textures/item/salmon_bucket.png differ diff --git a/src/static/textures/item/shears.png b/src/static/textures/item/shears.png new file mode 100644 index 0000000000000000000000000000000000000000..ac05b41f23ebc2576cc69ce489a516e19e7dbd9a Binary files /dev/null and b/src/static/textures/item/shears.png differ diff --git a/src/static/textures/item/shulker_shell.png b/src/static/textures/item/shulker_shell.png new file mode 100644 index 0000000000000000000000000000000000000000..0bae3cfb64c0430882a48390d4a13ad12a1c35b1 Binary files /dev/null and b/src/static/textures/item/shulker_shell.png differ diff --git a/src/static/textures/item/sign.png b/src/static/textures/item/sign.png new file mode 100644 index 0000000000000000000000000000000000000000..06fb7501eaef7d75b9825cc0ae3720b60dd85e7a Binary files /dev/null and b/src/static/textures/item/sign.png differ diff --git a/src/static/textures/item/slime_ball.png b/src/static/textures/item/slime_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..7192a111a239398069cc737614a0b34a67c2fa81 Binary files /dev/null and b/src/static/textures/item/slime_ball.png differ diff --git a/src/static/textures/item/snowball.png b/src/static/textures/item/snowball.png new file mode 100644 index 0000000000000000000000000000000000000000..3a4f767647ecb222314c1c6f90a792ebecd61049 Binary files /dev/null and b/src/static/textures/item/snowball.png differ diff --git a/src/static/textures/item/spawn_egg.png b/src/static/textures/item/spawn_egg.png new file mode 100644 index 0000000000000000000000000000000000000000..f4c7dee1d40e3cb53fd09e6def877c9261274447 Binary files /dev/null and b/src/static/textures/item/spawn_egg.png differ diff --git a/src/static/textures/item/spawn_egg_overlay.png b/src/static/textures/item/spawn_egg_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..83ec78f172c9aa50293d688829e1760f44e83a2d Binary files /dev/null and b/src/static/textures/item/spawn_egg_overlay.png differ diff --git a/src/static/textures/item/spectral_arrow.png b/src/static/textures/item/spectral_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..5c2c24a398b300148a9872c55481ca7fb1d4df79 Binary files /dev/null and b/src/static/textures/item/spectral_arrow.png differ diff --git a/src/static/textures/item/spider_eye.png b/src/static/textures/item/spider_eye.png new file mode 100644 index 0000000000000000000000000000000000000000..4c0b784cdfc4ee49fa041a429aabecb9545f51f5 Binary files /dev/null and b/src/static/textures/item/spider_eye.png differ diff --git a/src/static/textures/item/splash_potion.png b/src/static/textures/item/splash_potion.png new file mode 100644 index 0000000000000000000000000000000000000000..0d3fa39de70e5b19b29d0618c4eec5f11f36e736 Binary files /dev/null and b/src/static/textures/item/splash_potion.png differ diff --git a/src/static/textures/item/spruce_boat.png b/src/static/textures/item/spruce_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..d764262a5c3a520c2aba4ee6fe558501e930fbea Binary files /dev/null and b/src/static/textures/item/spruce_boat.png differ diff --git a/src/static/textures/item/spruce_door.png b/src/static/textures/item/spruce_door.png new file mode 100644 index 0000000000000000000000000000000000000000..8d915f359cedd6dfd049703f76417e2e9bbee489 Binary files /dev/null and b/src/static/textures/item/spruce_door.png differ diff --git a/src/static/textures/item/stick.png b/src/static/textures/item/stick.png new file mode 100644 index 0000000000000000000000000000000000000000..a6971ed3381a2271901550ff7778b5830f1b5510 Binary files /dev/null and b/src/static/textures/item/stick.png differ diff --git a/src/static/textures/item/stone_axe.png b/src/static/textures/item/stone_axe.png new file mode 100644 index 0000000000000000000000000000000000000000..2b726136ccabc7801c4efc5b1879da1f959aee3f Binary files /dev/null and b/src/static/textures/item/stone_axe.png differ diff --git a/src/static/textures/item/stone_hoe.png b/src/static/textures/item/stone_hoe.png new file mode 100644 index 0000000000000000000000000000000000000000..0038410779096ed4e478b676844a33cca6691785 Binary files /dev/null and b/src/static/textures/item/stone_hoe.png differ diff --git a/src/static/textures/item/stone_pickaxe.png b/src/static/textures/item/stone_pickaxe.png new file mode 100644 index 0000000000000000000000000000000000000000..71c261ac42693209c30601a6bb20ffe47998acb7 Binary files /dev/null and b/src/static/textures/item/stone_pickaxe.png differ diff --git a/src/static/textures/item/stone_shovel.png b/src/static/textures/item/stone_shovel.png new file mode 100644 index 0000000000000000000000000000000000000000..d9b1faa19b39e3ac5161ca6f61ba21e8c2f119d3 Binary files /dev/null and b/src/static/textures/item/stone_shovel.png differ diff --git a/src/static/textures/item/stone_sword.png b/src/static/textures/item/stone_sword.png new file mode 100644 index 0000000000000000000000000000000000000000..68f8aa2386f1268a17bc5101a22c765bcc697622 Binary files /dev/null and b/src/static/textures/item/stone_sword.png differ diff --git a/src/static/textures/item/string.png b/src/static/textures/item/string.png new file mode 100644 index 0000000000000000000000000000000000000000..c4234313541053a852a2a43b6cfe6ea2bc1b2580 Binary files /dev/null and b/src/static/textures/item/string.png differ diff --git a/src/static/textures/item/structure_void.png b/src/static/textures/item/structure_void.png new file mode 100644 index 0000000000000000000000000000000000000000..4b150003e8c50b61dc7aae6f7112cdb6894f69d8 Binary files /dev/null and b/src/static/textures/item/structure_void.png differ diff --git a/src/static/textures/item/sugar.png b/src/static/textures/item/sugar.png new file mode 100644 index 0000000000000000000000000000000000000000..ab9f1478a59529a0984e76542fda79d116a4c7fa Binary files /dev/null and b/src/static/textures/item/sugar.png differ diff --git a/src/static/textures/item/sugar_cane.png b/src/static/textures/item/sugar_cane.png new file mode 100644 index 0000000000000000000000000000000000000000..610f464b5d335da0aef60f2f99091dbb6ee02d93 Binary files /dev/null and b/src/static/textures/item/sugar_cane.png differ diff --git a/src/static/textures/item/tipped_arrow_base.png b/src/static/textures/item/tipped_arrow_base.png new file mode 100644 index 0000000000000000000000000000000000000000..a1b298cab7574451907f76a446bc677015387500 Binary files /dev/null and b/src/static/textures/item/tipped_arrow_base.png differ diff --git a/src/static/textures/item/tipped_arrow_head.png b/src/static/textures/item/tipped_arrow_head.png new file mode 100644 index 0000000000000000000000000000000000000000..7000bfc24d9c3c27ce8324515fedd8e259a04548 Binary files /dev/null and b/src/static/textures/item/tipped_arrow_head.png differ diff --git a/src/static/textures/item/tnt_minecart.png b/src/static/textures/item/tnt_minecart.png new file mode 100644 index 0000000000000000000000000000000000000000..cc81b8d184a05af10890f02b6043544c03372d84 Binary files /dev/null and b/src/static/textures/item/tnt_minecart.png differ diff --git a/src/static/textures/item/totem_of_undying.png b/src/static/textures/item/totem_of_undying.png new file mode 100644 index 0000000000000000000000000000000000000000..51599c507c7df717f1f435678aea7b50a971e3bc Binary files /dev/null and b/src/static/textures/item/totem_of_undying.png differ diff --git a/src/static/textures/item/tropical_fish.png b/src/static/textures/item/tropical_fish.png new file mode 100644 index 0000000000000000000000000000000000000000..0790f278b76c9fd570a9e7a204fc9feb9d7a3169 Binary files /dev/null and b/src/static/textures/item/tropical_fish.png differ diff --git a/src/static/textures/item/tropical_fish_bucket.png b/src/static/textures/item/tropical_fish_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..cd98596ded5cabd2656c510d1d57a9d0abace5ff Binary files /dev/null and b/src/static/textures/item/tropical_fish_bucket.png differ diff --git a/src/static/textures/item/water_bucket.png b/src/static/textures/item/water_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..52bf7853f24ec07c182f364d40f575e3f957c924 Binary files /dev/null and b/src/static/textures/item/water_bucket.png differ diff --git a/src/static/textures/item/wheat.png b/src/static/textures/item/wheat.png new file mode 100644 index 0000000000000000000000000000000000000000..62bbd6c741e7418cddb983c1fc389b41fc7e980b Binary files /dev/null and b/src/static/textures/item/wheat.png differ diff --git a/src/static/textures/item/wheat_seeds.png b/src/static/textures/item/wheat_seeds.png new file mode 100644 index 0000000000000000000000000000000000000000..83d23a6ecc5e2ddd3225eb72fda3a686a7c18295 Binary files /dev/null and b/src/static/textures/item/wheat_seeds.png differ diff --git a/src/static/textures/item/wooden_axe.png b/src/static/textures/item/wooden_axe.png new file mode 100644 index 0000000000000000000000000000000000000000..bec1381d490204395845725bee61275d97fe5a5f Binary files /dev/null and b/src/static/textures/item/wooden_axe.png differ diff --git a/src/static/textures/item/wooden_hoe.png b/src/static/textures/item/wooden_hoe.png new file mode 100644 index 0000000000000000000000000000000000000000..a3b4bd0d1ac65806106975bae689a049a09f6e57 Binary files /dev/null and b/src/static/textures/item/wooden_hoe.png differ diff --git a/src/static/textures/item/wooden_pickaxe.png b/src/static/textures/item/wooden_pickaxe.png new file mode 100644 index 0000000000000000000000000000000000000000..75830c02130a15cc89cea7abcf6b301185384bf2 Binary files /dev/null and b/src/static/textures/item/wooden_pickaxe.png differ diff --git a/src/static/textures/item/wooden_shovel.png b/src/static/textures/item/wooden_shovel.png new file mode 100644 index 0000000000000000000000000000000000000000..9481942b8c35b01e2c354f4f80bebe1cd974fcb2 Binary files /dev/null and b/src/static/textures/item/wooden_shovel.png differ diff --git a/src/static/textures/item/wooden_sword.png b/src/static/textures/item/wooden_sword.png new file mode 100644 index 0000000000000000000000000000000000000000..9c53ef408268d68be38eb0f298b7ff1427ebf3d9 Binary files /dev/null and b/src/static/textures/item/wooden_sword.png differ diff --git a/src/static/textures/item/writable_book.png b/src/static/textures/item/writable_book.png new file mode 100644 index 0000000000000000000000000000000000000000..33af2fb07754e3f06972729412ba195922621a07 Binary files /dev/null and b/src/static/textures/item/writable_book.png differ diff --git a/src/static/textures/item/written_book.png b/src/static/textures/item/written_book.png new file mode 100644 index 0000000000000000000000000000000000000000..371a790f7346e89ac7e472bedae5e64ff22d04de Binary files /dev/null and b/src/static/textures/item/written_book.png differ diff --git a/src/static/textures/models/armor/chainmail_layer_1.png b/src/static/textures/models/armor/chainmail_layer_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c28e0a3b98625b55e06ad9fb1d98a4ce21698c53 Binary files /dev/null and b/src/static/textures/models/armor/chainmail_layer_1.png differ diff --git a/src/static/textures/models/armor/chainmail_layer_2.png b/src/static/textures/models/armor/chainmail_layer_2.png new file mode 100644 index 0000000000000000000000000000000000000000..60bf1d7700bb4bedcc235aa773835ab055a0116b Binary files /dev/null and b/src/static/textures/models/armor/chainmail_layer_2.png differ diff --git a/src/static/textures/models/armor/diamond_layer_1.png b/src/static/textures/models/armor/diamond_layer_1.png new file mode 100644 index 0000000000000000000000000000000000000000..44e2fc531f239493fa011d15aa9387dff405fcf2 Binary files /dev/null and b/src/static/textures/models/armor/diamond_layer_1.png differ diff --git a/src/static/textures/models/armor/diamond_layer_2.png b/src/static/textures/models/armor/diamond_layer_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2de240e2acbd50fc60cbc6cb9607574e1d4740b1 Binary files /dev/null and b/src/static/textures/models/armor/diamond_layer_2.png differ diff --git a/src/static/textures/models/armor/gold_layer_1.png b/src/static/textures/models/armor/gold_layer_1.png new file mode 100644 index 0000000000000000000000000000000000000000..567d9023e173ec2f9ca25c735998a25af48aa2fe Binary files /dev/null and b/src/static/textures/models/armor/gold_layer_1.png differ diff --git a/src/static/textures/models/armor/gold_layer_2.png b/src/static/textures/models/armor/gold_layer_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c179399b02e0c7a8343eb5accbeb85a11350ddcd Binary files /dev/null and b/src/static/textures/models/armor/gold_layer_2.png differ diff --git a/src/static/textures/models/armor/iron_layer_1.png b/src/static/textures/models/armor/iron_layer_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1da5d26375e34794596d375b92f050ee0a4a8cb9 Binary files /dev/null and b/src/static/textures/models/armor/iron_layer_1.png differ diff --git a/src/static/textures/models/armor/iron_layer_2.png b/src/static/textures/models/armor/iron_layer_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3170869e4dece4fb5f22a4f757eca4f1c3d3d790 Binary files /dev/null and b/src/static/textures/models/armor/iron_layer_2.png differ diff --git a/src/static/textures/models/armor/leather_layer_1.png b/src/static/textures/models/armor/leather_layer_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cf4aada13a4b457daa9b31d3d3a735073addeb70 Binary files /dev/null and b/src/static/textures/models/armor/leather_layer_1.png differ diff --git a/src/static/textures/models/armor/leather_layer_1_overlay.png b/src/static/textures/models/armor/leather_layer_1_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..98dd02afe43a357c704d896bc46bfd2846ed5818 Binary files /dev/null and b/src/static/textures/models/armor/leather_layer_1_overlay.png differ diff --git a/src/static/textures/models/armor/leather_layer_2.png b/src/static/textures/models/armor/leather_layer_2.png new file mode 100644 index 0000000000000000000000000000000000000000..abd64e6b2afc513de9bb4794d53f15f5860b47e4 Binary files /dev/null and b/src/static/textures/models/armor/leather_layer_2.png differ diff --git a/src/static/textures/models/armor/leather_layer_2_overlay.png b/src/static/textures/models/armor/leather_layer_2_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..4faea6d65b021018577bab2b0b24edb8cc59df91 Binary files /dev/null and b/src/static/textures/models/armor/leather_layer_2_overlay.png differ diff --git a/src/style.css b/src/style.css new file mode 100644 index 0000000000000000000000000000000000000000..b4d59de43feeeedc44cecd69296cb2251c8a98bf --- /dev/null +++ b/src/style.css @@ -0,0 +1,308 @@ +body { + font-family: Minecraft, Avenir, Helvetica, Arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + margin: 0; + overflow: hidden; +} +* { + touch-action: none; +} + +@font-face { + font-family: Minecraft; + src: url(/src/static/mc-font.otf); + font-display: swap; +} + +.start { + background-image: url(/src/static/menu.jpeg); + background-repeat: no-repeat; + background-size: 100% 100%; +} + +.start #exit { + display: none; +} + +.menu { + z-index: 1; + position: fixed; + left: 0%; + top: 0%; + + display: flex; + flex-direction: column; + align-items: center; + + width: 100vw; + height: 75vh; + padding-top: 25vh; + + text-align: center; + user-select: none; + background-color: hsla(0, 0%, 11%, 0.7); +} + +.button { + width: 300px; + margin-bottom: 15px; + padding: 10px; + display: inline-block; + + font-family: Minecraft, Avenir, Helvetica, Arial, sans-serif; + font-size: 1.2rem; + color: white; + background-color: #727272; + cursor: pointer; + + border-left: 2px solid #a4a4a4; + border-top: 2px solid #a4a4a4; + border-bottom: 2px solid #545655; + border-right: 2px solid #545655; + box-shadow: 0 0 0 2px black; +} + +.button:hover { + background-color: #218306; + border-left: 2px solid #17cd07; + border-top: 2px solid #17cd07; + border-bottom: 2px solid #004e00; + border-right: 2px solid #004e00; + box-shadow: 0 0 0 2px white; +} + +.footer { + position: fixed; + color: white; + left: 50%; + top: 100%; + opacity: 75%; + transform: translate(-50%, -100%); + font-family: sans-serif; +} + +.fps { + position: fixed; + color: white; + left: 0%; + top: 0%; + padding: 5px; + margin: 1px; + border: 2px solid rgb(141, 139, 139); + background-color: hsla(0, 0%, 11%, 0.5); +} + +.bag { + position: fixed; + left: 50%; + top: 100%; + transform: translate(-50%, -100%); + width: fit-content; + background-color: hsla(0, 0%, 11%, 0.5); + height: 62px; +} + +.item { + display: inline-block; + width: 56px; + height: 56px; + margin: 1px; + border: 2px solid rgb(141, 139, 139); +} + +.selected { + border: 2px solid rgb(236, 234, 234); + outline: 1px solid rgb(236, 234, 234); +} + +.icon { + display: block; + margin: auto; + transform: translate(0, 20%); + width: 40px; + height: 40px; +} + +.cross-hair { + position: fixed; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + + user-select: none; + font-size: 3rem; + color: white; +} + +.hidden { + display: none; +} + +.features { + z-index: 2; + position: fixed; + left: 50%; + top: 20%; + transform: translate(-50%, 0%); + + width: 300px; + color: white; + background-color: #727272; + border-left: 2px solid #a4a4a4; + border-top: 2px solid #a4a4a4; + border-bottom: 2px solid #545655; + border-right: 2px solid #545655; + box-shadow: 0 0 0 2px black; + + padding: 0px 30px 0px 30px; + + text-align: center; + user-select: none; + text-align: left; + line-height: 1.8rem; +} + +.save-modal, +.load-modal { + z-index: 3; + position: fixed; + left: 50%; + transform: translate(-50%, 0%); + + margin-top: calc(25vh + 62px); + padding: 12px 0; + width: 300px; + + color: white; + background-color: #218306; + border-left: 2px solid #17cd07; + border-top: 2px solid #17cd07; + border-bottom: 2px solid #004e00; + border-right: 2px solid #004e00; + box-shadow: 0 0 0 2px white; + + opacity: 0%; + + transition: opacity 0.35s ease-in-out; + + text-align: center; + user-select: none; +} + +.load-modal { + background-color: #727272; + border-left: 2px solid #a4a4a4; + border-top: 2px solid #a4a4a4; + border-bottom: 2px solid #545655; + border-right: 2px solid #545655; + box-shadow: 0 0 0 2px black; +} + +.show { + transition: opacity 0.5s ease-in-out; + opacity: 100%; +} + +.github svg { + z-index: 3; + fill: #727272; + position: fixed; + left: 100%; + top: -1%; + transform: translate(-99%, 0%) rotate(-90deg) scale(1, -1); +} + +.settings { + z-index: 2; + position: fixed; + left: 50%; + top: 20%; + transform: translate(-50%, 0%); + + width: 300px; + height: 370px; + color: white; + background-color: #727272; + border-left: 2px solid #a4a4a4; + border-top: 2px solid #a4a4a4; + border-bottom: 2px solid #545655; + border-right: 2px solid #545655; + box-shadow: 0 0 0 2px black; + + padding: 0px 30px 0px 30px; + + text-align: center; + user-select: none; + text-align: left; + line-height: 1.8rem; +} + +#distance-input, +#fov-input { + appearance: none; + width: 100%; + height: 16px; + background-color: #dddddd; + box-shadow: 0 0 0 2px black; +} +#music-input { + appearance: none; + width: 14%; + height: 16px; + background-color: #dddddd; + box-shadow: 0 0 0 2px black; +} + +#distance-input::-webkit-slider-thumb:hover, +#fov-input::-webkit-slider-thumb:hover, +#music-input::-webkit-slider-thumb:hover { + background-color: #218306; + border-left: 2px solid #17cd07; + border-top: 2px solid #17cd07; + border-bottom: 2px solid #004e00; + border-right: 2px solid #004e00; + box-shadow: 0 0 0 2px white; +} + +#distance-input::-webkit-slider-thumb, +#fov-input::-webkit-slider-thumb, +#music-input::-webkit-slider-thumb { + appearance: none; + width: 20px; + height: 30px; + + background-color: #727272; + border-left: 2px solid #a4a4a4; + border-top: 2px solid #a4a4a4; + border-bottom: 2px solid #545655; + border-right: 2px solid #545655; + box-shadow: 0 0 0 2px black; + + cursor: pointer; +} + +#distance-input::-moz-range-thumb, +#fov-input::-moz-range-thumb, +#music-input::-moz-range-thumb { + appearance: none; + width: 20px; + height: 30px; + + background-color: #727272; + border-left: 2px solid #a4a4a4; + border-top: 2px solid #a4a4a4; + border-bottom: 2px solid #545655; + border-right: 2px solid #545655; + box-shadow: 0 0 0 2px black; + + cursor: pointer; +} + +* { + -webkit-touch-callout: none; + -moz-touch-callout: none; + -ms-touch-callout: none; + -webkit-user-select: none; + user-select: none; +} diff --git a/src/terrain/highlight/index.ts b/src/terrain/highlight/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..d15351208723c3eaed40dd3759a0ba7acc1c313c --- /dev/null +++ b/src/terrain/highlight/index.ts @@ -0,0 +1,173 @@ +import * as THREE from 'three' +import Terrain from '..' + +/** + * Highlight block on crosshair + */ +export default class BlockHighlight { + constructor( + scene: THREE.Scene, + camera: THREE.PerspectiveCamera, + terrain: Terrain + ) { + this.camera = camera + this.scene = scene + this.terrain = terrain + this.raycaster = new THREE.Raycaster() + this.raycaster.far = 8 + } + + scene: THREE.Scene + camera: THREE.PerspectiveCamera + terrain: Terrain + raycaster: THREE.Raycaster + block: THREE.Intersection | null = null + + // highlight block mesh + geometry = new THREE.BoxGeometry(1.01, 1.01, 1.01) + material = new THREE.MeshStandardMaterial({ + transparent: true, + opacity: 0.25 + // depthWrite: false + }) + mesh = new THREE.Mesh(new THREE.BoxGeometry(), this.material) + + // block simulation + index = 0 + instanceMesh = new THREE.InstancedMesh( + new THREE.BoxGeometry(), + new THREE.MeshBasicMaterial(), + 1000 + ) + + update() { + // remove last highlight and reset block simulation + this.scene.remove(this.mesh) + this.index = 0 + this.instanceMesh.instanceMatrix = new THREE.InstancedBufferAttribute( + new Float32Array(1000 * 16), + 16 + ) + + const position = this.camera.position + const matrix = new THREE.Matrix4() + const idMap = new Map() + const noise = this.terrain.noise + + let xPos = Math.round(position.x) + let zPos = Math.round(position.z) + + for (let i = -8; i < 8; i++) { + for (let j = -8; j < 8; j++) { + // check terrain + let x = xPos + i + let z = zPos + j + let y = + Math.floor( + noise.get(x / noise.gap, z / noise.gap, noise.seed) * noise.amp + ) + 30 + + idMap.set(`${x}_${y}_${z}`, this.index) + matrix.setPosition(x, y, z) + this.instanceMesh.setMatrixAt(this.index++, matrix) + + let stoneOffset = + noise.get(x / noise.stoneGap, z / noise.stoneGap, noise.stoneSeed) * + noise.stoneAmp + + let treeOffset = + noise.get(x / noise.treeGap, z / noise.treeGap, noise.treeSeed) * + noise.treeAmp + + // check tree + if ( + treeOffset > noise.treeThreshold && + y - 30 >= -3 && + stoneOffset < noise.stoneThreshold + ) { + for (let t = 1; t <= noise.treeHeight; t++) { + idMap.set(`${x}_${y + t}_${z}`, this.index) + matrix.setPosition(x, y + t, z) + this.instanceMesh.setMatrixAt(this.index++, matrix) + } + + // leaf + // for (let i = -3; i < 3; i++) { + // for (let j = -3; j < 3; j++) { + // for (let k = -3; k < 3; k++) { + // if (i === 0 && k === 0) { + // continue + // } + // let leafOffset = + // noise.get( + // (x + i + j) / noise.leafGap, + // (z + k) / noise.leafGap, + // noise.leafSeed + // ) * noise.leafAmp + + // if (leafOffset > noise.leafThreshold) { + // idMap.set( + // `${x + i}_${y + noise.treeHeight + j}_${z + k}`, + // this.index + // ) + // matrix.setPosition(x + i, y + noise.treeHeight + j, z + k) + // this.instanceMesh.setMatrixAt(this.index++, matrix) + // } + // } + // } + // } + } + } + } + + // check custom blocks + for (const block of this.terrain.customBlocks) { + if (block.placed) { + matrix.setPosition(block.x, block.y, block.z) + this.instanceMesh.setMatrixAt(this.index++, matrix) + } else { + if (idMap.has(`${block.x}_${block.y}_${block.z}`)) { + let id = idMap.get(`${block.x}_${block.y}_${block.z}`) + this.instanceMesh.setMatrixAt( + id!, + new THREE.Matrix4().set( + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ) + ) + } + } + } + + // highlight new block + this.raycaster.setFromCamera({ x: 0, y: 0 }, this.camera) + this.block = this.raycaster.intersectObject(this.instanceMesh)[0] + if ( + this.block && + this.block.object instanceof THREE.InstancedMesh && + typeof this.block.instanceId === 'number' + ) { + this.mesh = new THREE.Mesh(this.geometry, this.material) + let matrix = new THREE.Matrix4() + this.block.object.getMatrixAt(this.block.instanceId, matrix) + const position = new THREE.Vector3().setFromMatrixPosition(matrix) + + this.mesh.position.set(position.x, position.y, position.z) + this.scene.add(this.mesh) + } + } +} diff --git a/src/terrain/index.ts b/src/terrain/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..f88162c2f8eb8f715d6fa89f3f9b80bcc7225afb --- /dev/null +++ b/src/terrain/index.ts @@ -0,0 +1,299 @@ +import * as THREE from 'three' +import Materials, { MaterialType } from './mesh/materials' +import Block from './mesh/block' +import Highlight from './highlight' +import Noise from './noise' + +import Generate from './worker/generate?worker' + +export enum BlockType { + grass = 0, + sand = 1, + tree = 2, + leaf = 3, + dirt = 4, + stone = 5, + coal = 6, + wood = 7, + diamond = 8, + quartz = 9, + glass = 10, + bedrock = 11 +} +export default class Terrain { + constructor(scene: THREE.Scene, camera: THREE.PerspectiveCamera) { + this.scene = scene + this.camera = camera + this.maxCount = + (this.distance * this.chunkSize * 2 + this.chunkSize) ** 2 + 500 + this.highlight = new Highlight(scene, camera, this) + this.scene.add(this.cloud) + + // generate worker callback handler + this.generateWorker.onmessage = ( + msg: MessageEvent<{ + idMap: Map + arrays: ArrayLike[] + blocksCount: number[] + }> + ) => { + this.resetBlocks() + this.idMap = msg.data.idMap + this.blocksCount = msg.data.blocksCount + + for (let i = 0; i < msg.data.arrays.length; i++) { + this.blocks[i].instanceMatrix = new THREE.InstancedBufferAttribute( + (this.blocks[i].instanceMatrix.array = msg.data.arrays[i]), + 16 + ) + } + + for (const block of this.blocks) { + block.instanceMatrix.needsUpdate = true + } + } + } + // core properties + scene: THREE.Scene + camera: THREE.PerspectiveCamera + distance = 3 + chunkSize = 24 + + // terrain properties + maxCount: number + chunk = new THREE.Vector2(0, 0) + previousChunk = new THREE.Vector2(0, 0) + noise = new Noise() + + // materials + materials = new Materials() + materialType = [ + MaterialType.grass, + MaterialType.sand, + MaterialType.tree, + MaterialType.leaf, + MaterialType.dirt, + MaterialType.stone, + MaterialType.coal, + MaterialType.wood, + MaterialType.diamond, + MaterialType.quartz, + MaterialType.glass, + MaterialType.bedrock + ] + + // other properties + blocks: THREE.InstancedMesh[] = [] + blocksCount: number[] = [] + blocksFactor = [1, 0.2, 0.1, 0.7, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + + customBlocks: Block[] = [] + highlight: Highlight + + idMap = new Map() + generateWorker = new Generate() + + // cloud + cloud = new THREE.InstancedMesh( + new THREE.BoxGeometry(20, 5, 14), + new THREE.MeshStandardMaterial({ + transparent: true, + color: 0xffffff, + opacity: 0.4 + }), + 1000 + ) + cloudCount = 0 + cloudGap = 5 + + getCount = (type: BlockType) => { + return this.blocksCount[type] + } + + setCount = (type: BlockType) => { + this.blocksCount[type] = this.blocksCount[type] + 1 + } + + initBlocks = () => { + // reset + for (const block of this.blocks) { + this.scene.remove(block) + } + this.blocks = [] + + // create instance meshes + const geometry = new THREE.BoxGeometry() + + for (let i = 0; i < this.materialType.length; i++) { + let block = new THREE.InstancedMesh( + geometry, + this.materials.get(this.materialType[i]), + this.maxCount * this.blocksFactor[i] + ) + block.name = BlockType[i] + this.blocks.push(block) + this.scene.add(block) + } + + this.blocksCount = new Array(this.materialType.length).fill(0) + } + + resetBlocks = () => { + // reest count and instance matrix + for (let i = 0; i < this.blocks.length; i++) { + this.blocks[i].instanceMatrix = new THREE.InstancedBufferAttribute( + new Float32Array(this.maxCount * this.blocksFactor[i] * 16), + 16 + ) + } + } + + generate = () => { + this.blocksCount = new Array(this.blocks.length).fill(0) + // post work to generate worker + this.generateWorker.postMessage({ + distance: this.distance, + chunk: this.chunk, + noiseSeed: this.noise.seed, + treeSeed: this.noise.treeSeed, + stoneSeed: this.noise.stoneSeed, + coalSeed: this.noise.coalSeed, + idMap: new Map(), + blocksFactor: this.blocksFactor, + blocksCount: this.blocksCount, + customBlocks: this.customBlocks, + chunkSize: this.chunkSize + }) + + // cloud + + if (this.cloudGap++ > 5) { + this.cloudGap = 0 + this.cloud.instanceMatrix = new THREE.InstancedBufferAttribute( + new Float32Array(1000 * 16), + 16 + ) + this.cloudCount = 0 + for ( + let x = + -this.chunkSize * this.distance * 3 + this.chunkSize * this.chunk.x; + x < + this.chunkSize * this.distance * 3 + + this.chunkSize + + this.chunkSize * this.chunk.x; + x += 20 + ) { + for ( + let z = + -this.chunkSize * this.distance * 3 + this.chunkSize * this.chunk.y; + z < + this.chunkSize * this.distance * 3 + + this.chunkSize + + this.chunkSize * this.chunk.y; + z += 20 + ) { + const matrix = new THREE.Matrix4() + matrix.setPosition(x, 80 + (Math.random() - 0.5) * 30, z) + + if (Math.random() > 0.8) { + this.cloud.setMatrixAt(this.cloudCount++, matrix) + } + } + } + this.cloud.instanceMatrix.needsUpdate = true + } + } + + // generate adjacent blocks after removing a block (vertical infinity world) + generateAdjacentBlocks = (position: THREE.Vector3) => { + const { x, y, z } = position + const noise = this.noise + const yOffset = Math.floor( + noise.get(x / noise.gap, z / noise.gap, noise.seed) * noise.amp + ) + + if (y > 30 + yOffset) { + return + } + + const stoneOffset = + noise.get(x / noise.stoneGap, z / noise.stoneGap, noise.stoneSeed) * + noise.stoneAmp + + let type: BlockType + + if (stoneOffset > noise.stoneThreshold || y < 23) { + type = BlockType.stone + } else { + if (yOffset < -3) { + type = BlockType.sand + } else { + type = BlockType.dirt + } + } + + this.buildBlock(new THREE.Vector3(x, y - 1, z), type) + this.buildBlock(new THREE.Vector3(x, y + 1, z), type) + this.buildBlock(new THREE.Vector3(x - 1, y, z), type) + this.buildBlock(new THREE.Vector3(x + 1, y, z), type) + this.buildBlock(new THREE.Vector3(x, y, z - 1), type) + this.buildBlock(new THREE.Vector3(x, y, z + 1), type) + + this.blocks[type].instanceMatrix.needsUpdate = true + } + + buildBlock = (position: THREE.Vector3, type: BlockType) => { + const noise = this.noise + // check if it's natural terrain + const yOffset = Math.floor( + noise.get(position.x / noise.gap, position.z / noise.gap, noise.seed) * + noise.amp + ) + if (position.y >= 30 + yOffset || position.y < 0) { + return + } + + position.y === 0 && (type = BlockType.bedrock) + + // check custom blocks + for (const block of this.customBlocks) { + if ( + block.x === position.x && + block.y === position.y && + block.z === position.z + ) { + return + } + } + + // build block + this.customBlocks.push( + new Block(position.x, position.y, position.z, type, true) + ) + + const matrix = new THREE.Matrix4() + matrix.setPosition(position) + this.blocks[type].setMatrixAt(this.getCount(type), matrix) + this.blocks[type].instanceMatrix.needsUpdate = true + this.setCount(type) + } + + update = () => { + this.chunk.set( + Math.floor(this.camera.position.x / this.chunkSize), + Math.floor(this.camera.position.z / this.chunkSize) + ) + + //generate terrain when getting into new chunk + if ( + this.chunk.x !== this.previousChunk.x || + this.chunk.y !== this.previousChunk.y + ) { + this.generate() + } + + this.previousChunk.copy(this.chunk) + + this.highlight.update() + } +} diff --git a/src/terrain/mesh/block.ts b/src/terrain/mesh/block.ts new file mode 100644 index 0000000000000000000000000000000000000000..c01c0b035fa47859627a6d4bc8ac15440a2129bd --- /dev/null +++ b/src/terrain/mesh/block.ts @@ -0,0 +1,26 @@ +import { BlockType } from '../index' + +/** + * Custom block + */ +export default class Block { + object: any + constructor( + x: number, + y: number, + z: number, + type: BlockType, + placed: boolean + ) { + this.x = x + this.y = y + this.z = z + this.type = type + this.placed = placed + } + x: number + y: number + z: number + type: BlockType + placed: boolean +} diff --git a/src/terrain/mesh/materials.ts b/src/terrain/mesh/materials.ts new file mode 100644 index 0000000000000000000000000000000000000000..45b930d7edcc648d9bcf6614c35e2e297c9ae52a --- /dev/null +++ b/src/terrain/mesh/materials.ts @@ -0,0 +1,121 @@ +import * as THREE from 'three' +import stone from '../../static/textures/block/stone.png' +import coal_ore from '../../static/textures/block/coal_ore.png' +import iron_ore from '../../static/textures/block/iron_ore.png' +import grass_side from '../../static/textures/block/grass_block_side.png' +import grass_top_green from '../../static/textures/block/grass_top_green.png' +import dirt from '../../static/textures/block/dirt.png' +import oak_log from '../../static/textures/block/oak_log.png' +import oak_log_top from '../../static/textures/block/oak_log_top.png' +import oak_leaves from '../../static/textures/block/oak_leaves.png' +import sand from '../../static/textures/block/sand.png' +// import water from '../../static/textures/block/water.png' +import oak_wood from '../../static/textures/block/oak_planks.png' +import diamond from '../../static/textures/block/diamond_block.png' +import quartz from '../../static/textures/block/quartz_block_side.png' +import glass from '../../static/textures/block/glass.png' +import bedrock from '../../static/textures/block/bedrock.png' + +export enum MaterialType { + grass = 'grass', + dirt = 'dirt', + tree = 'tree', + leaf = 'leaf', + sand = 'sand', + // water = 'water', + stone = 'stone', + coal = 'coal', + wood = 'wood', + diamond = 'diamond', + quartz = 'quartz', + glass = 'glass', + bedrock = 'bedrock' +} +let loader = new THREE.TextureLoader() + +// load texture +const grassTopMaterial = loader.load(grass_top_green) +const grassMaterial = loader.load(grass_side) +const treeMaterial = loader.load(oak_log) +const treeTopMaterial = loader.load(oak_log_top) +const dirtMaterial = loader.load(dirt) +const stoneMaterial = loader.load(stone) +const coalMaterial = loader.load(coal_ore) +const ironMaterial = loader.load(iron_ore) +const leafMaterial = loader.load(oak_leaves) +const sandMaterial = loader.load(sand) +// const waterMaterial = loader.load(water) +const woodMaterial = loader.load(oak_wood) +const diamondMaterial = loader.load(diamond) +const quartzMaterial = loader.load(quartz) +const glassMaterial = loader.load(glass) +const bedrockMaterial = loader.load(bedrock) + +// pixelate texture +grassTopMaterial.magFilter = THREE.NearestFilter +grassMaterial.magFilter = THREE.NearestFilter +treeMaterial.magFilter = THREE.NearestFilter +treeTopMaterial.magFilter = THREE.NearestFilter +dirtMaterial.magFilter = THREE.NearestFilter +stoneMaterial.magFilter = THREE.NearestFilter +coalMaterial.magFilter = THREE.NearestFilter +ironMaterial.magFilter = THREE.NearestFilter +leafMaterial.magFilter = THREE.NearestFilter +sandMaterial.magFilter = THREE.NearestFilter +// waterMaterial.magFilter = THREE.NearestFilter +woodMaterial.magFilter = THREE.NearestFilter +diamondMaterial.magFilter = THREE.NearestFilter +quartzMaterial.magFilter = THREE.NearestFilter +glassMaterial.magFilter = THREE.NearestFilter +bedrockMaterial.magFilter = THREE.NearestFilter + +export default class Materials { + materials = { + grass: [ + new THREE.MeshStandardMaterial({ map: grassMaterial }), + new THREE.MeshStandardMaterial({ map: grassMaterial }), + new THREE.MeshStandardMaterial({ + map: grassTopMaterial + }), + new THREE.MeshStandardMaterial({ map: dirtMaterial }), + new THREE.MeshStandardMaterial({ map: grassMaterial }), + new THREE.MeshStandardMaterial({ map: grassMaterial }) + ], + dirt: new THREE.MeshStandardMaterial({ map: dirtMaterial }), + sand: new THREE.MeshStandardMaterial({ map: sandMaterial }), + tree: [ + new THREE.MeshStandardMaterial({ map: treeMaterial }), + new THREE.MeshStandardMaterial({ map: treeMaterial }), + new THREE.MeshStandardMaterial({ map: treeTopMaterial }), + new THREE.MeshStandardMaterial({ map: treeTopMaterial }), + new THREE.MeshStandardMaterial({ map: treeMaterial }), + new THREE.MeshStandardMaterial({ map: treeMaterial }) + ], + leaf: new THREE.MeshStandardMaterial({ + map: leafMaterial, + color: new THREE.Color(0, 1, 0), + transparent: true + }), + // water: new THREE.MeshStandardMaterial({ + // map: waterMaterial, + // transparent: true, + // opacity: 0.7 + // }), + stone: new THREE.MeshStandardMaterial({ map: stoneMaterial }), + coal: new THREE.MeshStandardMaterial({ map: coalMaterial }), + wood: new THREE.MeshStandardMaterial({ map: woodMaterial }), + diamond: new THREE.MeshStandardMaterial({ map: diamondMaterial }), + quartz: new THREE.MeshStandardMaterial({ map: quartzMaterial }), + glass: new THREE.MeshStandardMaterial({ + map: glassMaterial, + transparent: true + }), + bedrock: new THREE.MeshStandardMaterial({ map: bedrockMaterial }) + } + + get = ( + type: MaterialType + ): THREE.MeshStandardMaterial | THREE.MeshStandardMaterial[] => { + return this.materials[type] + } +} diff --git a/src/terrain/noise/index.ts b/src/terrain/noise/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..5bd8e82891902fec4a162d12dfc8d53d517473c8 --- /dev/null +++ b/src/terrain/noise/index.ts @@ -0,0 +1,34 @@ +import { ImprovedNoise } from 'three/examples/jsm/math/ImprovedNoise' +// import { SimplexNoise } from 'three/examples/jsm/math/SimplexNoise' + +export default class Noise { + noise = new ImprovedNoise() + seed = Math.random() + gap = 22 + amp = 8 + + stoneSeed = this.seed * 0.4 + stoneGap = 12 + stoneAmp = 8 + stoneThreshold = 3.5 + + coalSeed = this.seed * 0.5 + coalGap = 3 + coalAmp = 8 + coalThreshold = 3 + + treeSeed = this.seed * 0.7 + treeGap = 2 + treeAmp = 6 + treeHeight = 10 + treeThreshold = 4 + + leafSeed = this.seed * 0.8 + leafGap = 2 + leafAmp = 5 + leafThreshold = -0.03 + + get = (x: number, y: number, z: number) => { + return this.noise.noise(x, y, z) + } +} diff --git a/src/terrain/worker/generate.ts b/src/terrain/worker/generate.ts new file mode 100644 index 0000000000000000000000000000000000000000..af18ca76f41d99e2336068ad980a1e0004f0bf03 --- /dev/null +++ b/src/terrain/worker/generate.ts @@ -0,0 +1,243 @@ +import * as THREE from 'three' +import Block from '../mesh/block' +import Noise from '../noise' + +enum BlockType { + grass = 0, + sand = 1, + tree = 2, + leaf = 3, + dirt = 4, + stone = 5, + coal = 6, + wood = 7, + diamond = 8, + quartz = 9, + glass = 10, + bedrock = 11 +} + +const matrix = new THREE.Matrix4() +const noise = new Noise() +const blocks: THREE.InstancedMesh[] = [] + +const geometry = new THREE.BoxGeometry() + +let isFirstRun = true + +onmessage = ( + msg: MessageEvent<{ + distance: number + chunk: THREE.Vector2 + noiseSeed: number + treeSeed: number + stoneSeed: number + coalSeed: number + idMap: Map + blocksFactor: number[] + blocksCount: number[] + customBlocks: Block[] + chunkSize: number + }> +) => { + // let p1 = performance.now() + const { + distance, + chunk, + noiseSeed, + idMap, + blocksFactor, + treeSeed, + stoneSeed, + coalSeed, + customBlocks, + blocksCount, + chunkSize + } = msg.data + + const maxCount = (distance * chunkSize * 2 + chunkSize) ** 2 + 500 + + if (isFirstRun) { + for (let i = 0; i < blocksCount.length; i++) { + let block = new THREE.InstancedMesh( + geometry, + new THREE.MeshBasicMaterial(), + maxCount * blocksFactor[i] + ) + blocks.push(block) + } + + isFirstRun = false + } + + noise.seed = noiseSeed + noise.treeSeed = treeSeed + noise.stoneSeed = stoneSeed + noise.coalSeed = coalSeed + + for (let i = 0; i < blocks.length; i++) { + blocks[i].instanceMatrix = new THREE.InstancedBufferAttribute( + new Float32Array(maxCount * blocksFactor[i] * 16), + 16 + ) + } + + for ( + let x = -chunkSize * distance + chunkSize * chunk.x; + x < chunkSize * distance + chunkSize + chunkSize * chunk.x; + x++ + ) { + for ( + let z = -chunkSize * distance + chunkSize * chunk.y; + z < chunkSize * distance + chunkSize + chunkSize * chunk.y; + z++ + ) { + const y = 30 + const yOffset = Math.floor( + noise.get(x / noise.gap, z / noise.gap, noise.seed) * noise.amp + ) + + matrix.setPosition(x, y + yOffset, z) + + const stoneOffset = + noise.get(x / noise.stoneGap, z / noise.stoneGap, noise.stoneSeed) * + noise.stoneAmp + + const coalOffset = + noise.get(x / noise.coalGap, z / noise.coalGap, noise.coalSeed) * + noise.coalAmp + + if (stoneOffset > noise.stoneThreshold) { + if (coalOffset > noise.coalThreshold) { + // coal + idMap.set(`${x}_${y + yOffset}_${z}`, blocksCount[BlockType.coal]) + blocks[BlockType.coal].setMatrixAt( + blocksCount[BlockType.coal]++, + matrix + ) + } else { + // stone + idMap.set(`${x}_${y + yOffset}_${z}`, blocksCount[BlockType.stone]) + blocks[BlockType.stone].setMatrixAt( + blocksCount[BlockType.stone]++, + matrix + ) + } + } else { + if (yOffset < -3) { + // sand + idMap.set(`${x}_${y + yOffset}_${z}`, blocksCount[BlockType.sand]) + blocks[BlockType.sand].setMatrixAt( + blocksCount[BlockType.sand]++, + matrix + ) + } else { + // grass + idMap.set(`${x}_${y + yOffset}_${z}`, blocksCount[BlockType.grass]) + blocks[BlockType.grass].setMatrixAt( + blocksCount[BlockType.grass]++, + matrix + ) + } + } + + // tree + const treeOffset = + noise.get(x / noise.treeGap, z / noise.treeGap, noise.treeSeed) * + noise.treeAmp + + if ( + treeOffset > noise.treeThreshold && + yOffset >= -3 && + stoneOffset < noise.stoneThreshold + ) { + for (let i = 1; i <= noise.treeHeight; i++) { + idMap.set(`${x}_${y + yOffset + i}_${z}`, blocksCount[BlockType.tree]) + + matrix.setPosition(x, y + yOffset + i, z) + + blocks[BlockType.tree].setMatrixAt( + blocksCount[BlockType.tree]++, + matrix + ) + } + + // leaf + for (let i = -3; i < 3; i++) { + for (let j = -3; j < 3; j++) { + for (let k = -3; k < 3; k++) { + if (i === 0 && k === 0) { + continue + } + const leafOffset = + noise.get( + (x + i + j) / noise.leafGap, + (z + k) / noise.leafGap, + noise.leafSeed + ) * noise.leafAmp + if (leafOffset > noise.leafThreshold) { + idMap.set( + `${x + i}_${y + yOffset + noise.treeHeight + j}_${z + k}`, + blocksCount[BlockType.leaf] + ) + matrix.setPosition( + x + i, + y + yOffset + noise.treeHeight + j, + z + k + ) + blocks[BlockType.leaf].setMatrixAt( + blocksCount[BlockType.leaf]++, + matrix + ) + } + } + } + } + } + } + } + + for (const block of customBlocks) { + if ( + block.x > -chunkSize * distance + chunkSize * chunk.x && + block.x < chunkSize * distance + chunkSize + chunkSize * chunk.x && + block.z > -chunkSize * distance + chunkSize * chunk.y && + block.z < chunkSize * distance + chunkSize + chunkSize * chunk.y + ) { + if (block.placed) { + // placed blocks + matrix.setPosition(block.x, block.y, block.z) + blocks[block.type].setMatrixAt(blocksCount[block.type]++, matrix) + } else { + // removed blocks + const id = idMap.get(`${block.x}_${block.y}_${block.z}`) + + blocks[block.type].setMatrixAt( + id!, + new THREE.Matrix4().set( + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ) + ) + } + } + } + + const arrays = blocks.map(block => block.instanceMatrix.array) + postMessage({ idMap, arrays, blocksCount }) + // console.log(performance.now() - p1) +} diff --git a/src/ui/bag/index.ts b/src/ui/bag/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..1f83e91fe372ad198dcda8f563d5662e57903d3d --- /dev/null +++ b/src/ui/bag/index.ts @@ -0,0 +1,77 @@ +import grass from '../../static/block-icon/grass.png' +import stone from '../../static/block-icon/stone.png' +import tree from '../../static/block-icon/tree.png' +import wood from '../../static/block-icon/wood.png' +import diamond from '../../static/block-icon/diamond.png' +import quartz from '../../static/block-icon/quartz.png' +import glass from '../../static/block-icon/glass.png' +import { isMobile } from '../../utils' + +export default class Bag { + constructor() { + if (isMobile) return + + this.bag.className = 'bag' + this.items[0].classList.add('selected') + + for (let i = 0; i < this.items.length; i++) { + this.bag.appendChild(this.items[i]) + } + document.body.appendChild(this.bag) + + document.body.addEventListener('keydown', (e: KeyboardEvent) => { + if (isNaN(parseInt(e.key)) || e.key === '0') { + return + } + + for (let i = 0; i < this.items.length; i++) { + this.items[i].classList.remove('selected') + } + + this.current = parseInt(e.key) - 1 + this.items[this.current].classList.add('selected') + }) + + document.body.addEventListener('wheel', (e: WheelEvent) => { + if (!this.wheelGap) { + this.wheelGap = true + setTimeout(() => { + this.wheelGap = false + }, 100) + if (e.deltaY > 0) { + this.current++ + this.current > 9 && (this.current = 0) + } else if (e.deltaY < 0) { + this.current-- + this.current < 0 && (this.current = 9) + } + for (let i = 0; i < this.items.length; i++) { + this.items[i].classList.remove('selected') + } + this.items[this.current].classList.add('selected') + } + }) + } + wheelGap = false + current = 0 + icon = [grass, stone, tree, wood, diamond, quartz, glass] + iconIndex = 0 + y = 0 + + bag = document.createElement('div') + + items = new Array(10).fill(null).map(() => { + let item = document.createElement('div') + item.className = 'item' + + let img = document.createElement('img') + if (this.icon[this.iconIndex]) { + img.className = 'icon' + img.alt = 'block' + img.src = this.icon[this.iconIndex++] + item.appendChild(img) + } + + return item + }) +} diff --git a/src/ui/fps/index.ts b/src/ui/fps/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..aa02f90d5eaf723e4fc5d69429a9c6d183993b38 --- /dev/null +++ b/src/ui/fps/index.ts @@ -0,0 +1,30 @@ +/** + * Display current FPS + */ +export default class FPS { + constructor() { + this.fps.className = 'fps' + this.fps.innerHTML = `FPS: 60` + + document.body.appendChild(this.fps) + } + + p1 = performance.now() + p2 = performance.now() + gap = performance.now() + fps = document.createElement('div') + count = 0 + + update = () => { + this.p1 = performance.now() + this.count++ + + if (performance.now() - this.gap > 1000) { + this.fps.innerHTML = `FPS: ${this.count}` + this.gap = performance.now() + this.count = 0 + } + + this.p2 = this.p1 + } +} diff --git a/src/ui/index.ts b/src/ui/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..21a3283c14e7d6115f9a7ee409fa32ba33bde624 --- /dev/null +++ b/src/ui/index.ts @@ -0,0 +1,287 @@ +import FPS from './fps' +import Bag from './bag' +import Terrain from '../terrain' +import Block from '../terrain/mesh/block' +import Control from '../control' +import { Mode } from '../player' +import Joystick from './joystick' +import { isMobile } from '../utils' +import * as THREE from 'three' + +export default class UI { + constructor(terrain: Terrain, control: Control) { + this.fps = new FPS() + this.bag = new Bag() + this.joystick = new Joystick(control) + + this.crossHair.className = 'cross-hair' + this.crossHair.innerHTML = '+' + document.body.appendChild(this.crossHair) + + // play + this.play?.addEventListener('click', () => { + if (this.play?.innerHTML === 'Play') { + this.onPlay() + + // reset game + terrain.noise.seed = Math.random() + terrain.noise.stoneSeed = Math.random() + terrain.noise.treeSeed = Math.random() + terrain.noise.coalSeed = Math.random() + terrain.noise.leafSeed = Math.random() + terrain.customBlocks = [] + terrain.initBlocks() + terrain.generate() + terrain.camera.position.y = 40 + control.player.setMode(Mode.walking) + } + !isMobile && control.control.lock() + }) + + // save load + this.save?.addEventListener('click', () => { + if (this.save?.innerHTML === 'Save and Exit') { + // save game + window.localStorage.setItem( + 'block', + JSON.stringify(terrain.customBlocks) + ) + window.localStorage.setItem('seed', JSON.stringify(terrain.noise.seed)) + + window.localStorage.setItem( + 'position', + JSON.stringify({ + x: terrain.camera.position.x, + y: terrain.camera.position.y, + z: terrain.camera.position.z + }) + ) + + // ui update + this.onExit() + this.onSave() + } else { + // load game + terrain.noise.seed = + Number(window.localStorage.getItem('seed')) ?? Math.random() + + const customBlocks = + (JSON.parse( + window.localStorage.getItem('block') || 'null' + ) as Block[]) ?? [] + + terrain.customBlocks = customBlocks + terrain.initBlocks() + terrain.generate() + + const position = + (JSON.parse(window.localStorage.getItem('position') || 'null') as { + x: number + y: number + z: number + }) ?? null + + position && (terrain.camera.position.x = position.x) + position && (terrain.camera.position.y = position.y) + position && (terrain.camera.position.z = position.z) + + // ui update + this.onPlay() + this.onLoad() + !isMobile && control.control.lock() + } + }) + + // guide + this.feature?.addEventListener('click', () => { + this.features?.classList.remove('hidden') + }) + this.back?.addEventListener('click', () => { + this.features?.classList.add('hidden') + }) + + // setting + this.setting?.addEventListener('click', () => { + this.settings?.classList.remove('hidden') + }) + this.settingBack?.addEventListener('click', () => { + this.settings?.classList.add('hidden') + }) + + // render distance + this.distanceInput?.addEventListener('input', (e: Event) => { + if (this.distance && e.target instanceof HTMLInputElement) { + this.distance.innerHTML = `Render Distance: ${e.target.value}` + } + }) + + // fov + this.fovInput?.addEventListener('input', (e: Event) => { + if (this.fov && e.target instanceof HTMLInputElement) { + this.fov.innerHTML = `Field of View: ${e.target.value}` + control.camera.fov = parseInt(e.target.value) + control.camera.updateProjectionMatrix() + } + }) + + // music + this.musicInput?.addEventListener('input', (e: Event) => { + if (this.fov && e.target instanceof HTMLInputElement) { + const disabled = e.target.value === '0' + control.audio.disabled = disabled + this.music!.innerHTML = `Music: ${disabled ? 'Off' : 'On'}` + } + }) + + // apply settings + this.settingBack?.addEventListener('click', () => { + if (this.distanceInput instanceof HTMLInputElement) { + terrain.distance = parseInt(this.distanceInput.value) + terrain.maxCount = + (terrain.distance * terrain.chunkSize * 2 + terrain.chunkSize) ** 2 + + 500 + + terrain.initBlocks() + terrain.generate() + terrain.scene.fog = new THREE.Fog( + 0x87ceeb, + 1, + terrain.distance * 24 + 24 + ) + } + }) + + // menu and fullscreen + document.body.addEventListener('keydown', (e: KeyboardEvent) => { + // menu + if (e.key === 'e' && document.pointerLockElement) { + !isMobile && control.control.unlock() + } + + // fullscreen + if (e.key === 'f') { + if (document.fullscreenElement) { + document.exitFullscreen() + } else { + document.body.requestFullscreen() + } + } + }) + + // exit + this.exit?.addEventListener('click', () => { + this.onExit() + }) + + // play / pause handler + document.addEventListener('pointerlockchange', () => { + if (document.pointerLockElement) { + this.onPlay() + } else { + this.onPause() + } + }) + + // disable context menu + document.addEventListener('contextmenu', e => { + e.preventDefault() + }) + + // fallback lock handler + document.querySelector('canvas')?.addEventListener('click', (e: Event) => { + e.preventDefault() + !isMobile && control.control.lock() + }) + } + + fps: FPS + bag: Bag + joystick: Joystick + + menu = document.querySelector('.menu') + crossHair = document.createElement('div') + + // buttons + play = document.querySelector('#play') + control = document.querySelector('#control') + setting = document.querySelector('#setting') + feature = document.querySelector('#feature') + back = document.querySelector('#back') + exit = document.querySelector('#exit') + save = document.querySelector('#save') + + // modals + saveModal = document.querySelector('.save-modal') + loadModal = document.querySelector('.load-modal') + settings = document.querySelector('.settings') + features = document.querySelector('.features') + github = document.querySelector('.github') + + // settings + distance = document.querySelector('#distance') + distanceInput = document.querySelector('#distance-input') + + fov = document.querySelector('#fov') + fovInput = document.querySelector('#fov-input') + + music = document.querySelector('#music') + musicInput = document.querySelector('#music-input') + + settingBack = document.querySelector('#setting-back') + + onPlay = () => { + isMobile && this.joystick.init() + this.menu?.classList.add('hidden') + this.menu?.classList.remove('start') + this.play && (this.play.innerHTML = 'Resume') + this.crossHair.classList.remove('hidden') + this.github && this.github.classList.add('hidden') + this.feature?.classList.add('hidden') + } + + onPause = () => { + this.menu?.classList.remove('hidden') + this.crossHair.classList.add('hidden') + this.save && (this.save.innerHTML = 'Save and Exit') + this.github && this.github.classList.remove('hidden') + } + + onExit = () => { + this.menu?.classList.add('start') + this.play && (this.play.innerHTML = 'Play') + this.save && (this.save.innerHTML = 'Load Game') + this.feature?.classList.remove('hidden') + } + + onSave = () => { + this.saveModal?.classList.remove('hidden') + setTimeout(() => { + this.saveModal?.classList.add('show') + }) + setTimeout(() => { + this.saveModal?.classList.remove('show') + }, 1000) + + setTimeout(() => { + this.saveModal?.classList.add('hidden') + }, 1350) + } + + onLoad = () => { + this.loadModal?.classList.remove('hidden') + setTimeout(() => { + this.loadModal?.classList.add('show') + }) + setTimeout(() => { + this.loadModal?.classList.remove('show') + }, 1000) + + setTimeout(() => { + this.loadModal?.classList.add('hidden') + }, 1350) + } + + update = () => { + this.fps.update() + } +} diff --git a/src/ui/joystick/index.ts b/src/ui/joystick/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..dc3475d576f48570fac29e4119c4fb136f8da413 --- /dev/null +++ b/src/ui/joystick/index.ts @@ -0,0 +1,140 @@ +import * as THREE from 'three' +import Control from '../../control' +import { Mode } from '../../player' +import { htmlToDom } from '../../utils' +import UI from './joystick.html?raw' + +enum ActionKey { + FRONT = 'front', + LEFT = 'left', + RIGHT = 'right', + BACK = 'back', + MODE = 'mode', + JUMP = 'jump', + UP = 'up', + DOWN = 'down' +} + +export default class Joystick { + constructor(control: Control) { + this.control = control + this.euler = new THREE.Euler(0, 0, 0, 'YXZ') + } + + control: Control + pageX = 0 + pageY = 0 + clickX = 0 + clickY = 0 + euler: THREE.Euler + clickTimeout?: ReturnType + clickInterval?: ReturnType + hold = false + + // emit keyboard event + private emitKeyboardEvent = (key: string) => { + return { + key + } as KeyboardEvent + } + + // emit click event + private emitClickEvent = (button: number) => { + return { + button, + preventDefault: () => { } + } as MouseEvent + } + + // init joystick button + private initButton = ({ + actionKey, + key + }: { + actionKey: ActionKey + key: string + }) => { + const button = document.querySelector( + `#action-${actionKey}` + ) as HTMLButtonElement + button.addEventListener('pointermove', e => { + e.stopPropagation() + }) + button.addEventListener('pointerdown', e => { + this.control.setMovementHandler(this.emitKeyboardEvent(key)) + e.stopPropagation() + }) + button.addEventListener('pointerup', e => { + this.control.resetMovementHandler(this.emitKeyboardEvent(key)) + e.stopPropagation() + }) + // extra config for mode switch button + if (actionKey === ActionKey.MODE && key === 'q') { + this.initButton({ actionKey: ActionKey.MODE, key: ' ' }) + button.addEventListener('pointerdown', () => { + if (this.control.player.mode === Mode.flying) { + document.querySelector('#action-down')?.classList.remove('hidden') + } else { + document.querySelector('#action-down')?.classList.add('hidden') + } + }) + } + } + + init = () => { + htmlToDom(UI) + + this.initButton({ actionKey: ActionKey.FRONT, key: 'w' }) + this.initButton({ actionKey: ActionKey.LEFT, key: 'a' }) + this.initButton({ actionKey: ActionKey.RIGHT, key: 'd' }) + this.initButton({ actionKey: ActionKey.BACK, key: 's' }) + this.initButton({ actionKey: ActionKey.MODE, key: 'q' }) + this.initButton({ actionKey: ActionKey.UP, key: ' ' }) + this.initButton({ actionKey: ActionKey.DOWN, key: 'Shift' }) + + // camera control + document.addEventListener('pointermove', e => { + if (this.pageX !== 0 || this.pageY !== 0) { + this.euler.setFromQuaternion(this.control.camera.quaternion) + this.euler.y -= 0.01 * (e.pageX - this.pageX) + this.euler.x -= 0.01 * (e.pageY - this.pageY) + this.euler.x = Math.max( + -Math.PI / 2, + Math.min(Math.PI / 2, this.euler.x) + ) + this.control.camera.quaternion.setFromEuler(this.euler) + } + this.pageX = e.pageX + this.pageY = e.pageY + this.clickTimeout && clearTimeout(this.clickTimeout) + }) + + // click control + document.addEventListener('pointerdown', e => { + this.clickX = e.pageX + this.clickY = e.pageY + + this.clickTimeout = setTimeout(() => { + if (e.pageX === this.clickX && e.pageY === this.clickY) { + this.control.mousedownHandler(this.emitClickEvent(0)) + this.clickInterval = setInterval(() => { + this.control.mousedownHandler(this.emitClickEvent(0)) + }, 333) + this.hold = true + } + }, 500) + }) + + document.addEventListener('pointerup', e => { + this.clickTimeout && clearTimeout(this.clickTimeout) + this.clickInterval && clearInterval(this.clickInterval) + + if (!this.hold && e.pageX === this.clickX && e.pageY === this.clickY) { + this.control.mousedownHandler(this.emitClickEvent(2)) + } + this.hold = false + this.pageX = 0 + this.pageY = 0 + }) + } +} diff --git a/src/ui/joystick/joystick.html b/src/ui/joystick/joystick.html new file mode 100644 index 0000000000000000000000000000000000000000..1f81423c445f3e6ff786c1ab8651ee282cc9705b --- /dev/null +++ b/src/ui/joystick/joystick.html @@ -0,0 +1,61 @@ +
+ + + + + + + +
+ + diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..ca4d28871677c752ce626cf1d824456da7650465 --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,9 @@ +export const htmlToDom = (html: string) => { + const templateDom = document.createElement('template') + templateDom.innerHTML = html + window.document.body.appendChild(templateDom.content) +} + +export const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test( + navigator.userAgent +) diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..11f02fe2a0061d6e6e1f271b21da95423b448b32 --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tsconfig.json b/tsconfig.json index 32f76b79c6f36e9bed32de3435d3dee31bcae30d..8cdbb2ac97c4b1eca886cadef397d68f309ddebf 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,66 +1,18 @@ { - "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - /* Basic Options */ - // "incremental": true, /* Enable incremental compilation */ - "target": "ESNEXT", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */ - "module": "ESNext", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - // "lib": [], /* Specify library files to be included in the compilation. */ - // "allowJs": true, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */ - // "declaration": true, /* Generates corresponding '.d.ts' file. */ - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - // "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - // "outDir": "./", /* Redirect output structure to the directory. */ - // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an 'override' modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Require undeclared properties from index signatures to use element accesses. */ - /* Module Resolution Options */ - "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - "typeRoots": [ - "./node_modules/@types", - ], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - /* Advanced Options */ - "skipLibCheck": true, /* Skip type checking of declaration files. */ - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ - }, - "exclude": [ - "node_modules", - ".build" - ] -} \ No newline at end of file + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ESNext", "DOM"], + "moduleResolution": "Node", + "strict": true, + "sourceMap": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "noEmit": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true + }, + "include": ["./src"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000000000000000000000000000000000000..ece4235e4be44158d87bd281382f1a049d3b1feb --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,7 @@ +export default { + build: { + chunkSizeWarningLimit: 2000, + assetsInlineLimit: 0, + sourcemap: true + } +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000000000000000000000000000000000000..238c4f74517e10d386539c7c9d9f83009eb9baf9 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,229 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@types/three@^0.137.0": + version "0.137.0" + resolved "https://registry.yarnpkg.com/@types/three/-/three-0.137.0.tgz#6047e0658262b4de7c464a40288f9071ddd9a6d5" + integrity sha512-Xc5EAlfYmgrCLI/VlSVqiRJAtzhWF0Rw2jSq48nqJy+Hcb5sfDOXyfZn1+RNcHyi9l8CeCAXCZygO8IyeOJVEA== + +esbuild-android-arm64@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.21.tgz#8842d0c3b7c81fbe2dc46ddb416ffd6eb822184b" + integrity sha512-Bqgld1TY0wZv8TqiQmVxQFgYzz8ZmyzT7clXBDZFkOOdRybzsnj8AZuK1pwcLVA7Ya6XncHgJqIao7NFd3s0RQ== + +esbuild-darwin-64@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.21.tgz#ec7df02ad88ecf7f8fc23a3ed7917e07dea0c9c9" + integrity sha512-j+Eg+e13djzyYINVvAbOo2/zvZ2DivuJJTaBrJnJHSD7kUNuGHRkHoSfFjbI80KHkn091w350wdmXDNSgRjfYQ== + +esbuild-darwin-arm64@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.21.tgz#0c2a977edec1ef54097ee56a911518c820d4e5e4" + integrity sha512-nDNTKWDPI0RuoPj5BhcSB2z5EmZJJAyRtZLIjyXSqSpAyoB8eyAKXl4lB8U2P78Fnh4Lh1le/fmpewXE04JhBQ== + +esbuild-freebsd-64@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.21.tgz#f5b5fc1d031286c3a0949d1bda7db774b7d0404e" + integrity sha512-zIurkCHXhxELiDZtLGiexi8t8onQc2LtuE+S7457H/pP0g0MLRKMrsn/IN4LDkNe6lvBjuoZZi2OfelOHn831g== + +esbuild-freebsd-arm64@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.21.tgz#a05cab908013e4992b31a675850b8c44eb468c0c" + integrity sha512-wdxMmkJfbwcN+q85MpeUEamVZ40FNsBa9mPq8tAszDn8TRT2HoJvVRADPIIBa9SWWwlDChIMjkDKAnS3KS/sPA== + +esbuild-linux-32@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.21.tgz#638d244cc58b951f447addb4bade628d126ef84b" + integrity sha512-fmxvyzOPPh2xiEHojpCeIQP6pXcoKsWbz3ryDDIKLOsk4xp3GbpHIEAWP0xTeuhEbendmvBDVKbAVv3PnODXLg== + +esbuild-linux-64@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.21.tgz#8eb634abee928be7e35b985fafbfef2f2e31397f" + integrity sha512-edZyNOv1ql+kpmlzdqzzDjRQYls+tSyi4QFi+PdBhATJFUqHsnNELWA9vMSzAaInPOEaVUTA5Ml28XFChcy4DA== + +esbuild-linux-arm64@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.21.tgz#e05599ea6253b58394157da162d856f3ead62f9e" + integrity sha512-t5qxRkq4zdQC0zXpzSB2bTtfLgOvR0C6BXYaRE/6/k8/4SrkZcTZBeNu+xGvwCU4b5dU9ST9pwIWkK6T1grS8g== + +esbuild-linux-arm@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.21.tgz#1ae1078231cf689d3ba894a32d3723c0be9b91fd" + integrity sha512-aSU5pUueK6afqmLQsbU+QcFBT62L+4G9hHMJDHWfxgid6hzhSmfRH9U/f+ymvxsSTr/HFRU4y7ox8ZyhlVl98w== + +esbuild-linux-mips64le@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.21.tgz#f05be62d126764e99b37edcac5bb49b78c7a8890" + integrity sha512-jLZLQGCNlUsmIHtGqNvBs3zN+7a4D9ckf0JZ+jQTwHdZJ1SgV9mAjbB980OFo66LoY+WeM7t3WEnq3FjI1zw4A== + +esbuild-linux-ppc64le@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.21.tgz#592c98d82dad7982268ef8deed858c4566f07ab1" + integrity sha512-4TWxpK391en2UBUw6GSrukToTDu6lL9vkm3Ll40HrI08WG3qcnJu7bl8e1+GzelDsiw1QmfAY/nNvJ6iaHRpCQ== + +esbuild-linux-riscv64@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.21.tgz#0db7bd6f10d8f9afea973a7d6bf87b449b864b7b" + integrity sha512-fElngqOaOfTsF+u+oetDLHsPG74vB2ZaGZUqmGefAJn3a5z9Z2pNa4WpVbbKgHpaAAy5tWM1m1sbGohj6Ki6+Q== + +esbuild-linux-s390x@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.21.tgz#254a9354d34c9d1b41a3e21d2ec9269cbbb2c5df" + integrity sha512-brleZ6R5fYv0qQ7ZBwenQmP6i9TdvJCB092c/3D3pTLQHBGHJb5zWgKxOeS7bdHzmLy6a6W7GbFk6QKpjyD6QA== + +esbuild-netbsd-64@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.21.tgz#4cb783d060b02bf3b897a9a12cce2b3b547726f8" + integrity sha512-nCEgsLCQ8RoFWVV8pVI+kX66ICwbPP/M9vEa0NJGIEB/Vs5sVGMqkf67oln90XNSkbc0bPBDuo4G6FxlF7PN8g== + +esbuild-openbsd-64@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.21.tgz#f886b93feefddbe573528fa4b421c9c6e2bc969b" + integrity sha512-h9zLMyVD0T73MDTVYIb/qUTokwI6EJH9O6wESuTNq6+XpMSr6C5aYZ4fvFKdNELW+Xsod+yDS2hV2JTUAbFrLA== + +esbuild-sunos-64@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.21.tgz#3829e4d57d4cb6950837fe90b0b67cdfb37cf13a" + integrity sha512-Kl+7Cot32qd9oqpLdB1tEGXEkjBlijrIxMJ0+vlDFaqsODutif25on0IZlFxEBtL2Gosd4p5WCV1U7UskNQfXA== + +esbuild-windows-32@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.21.tgz#b858a22d1a82e53cdc59310cd56294133f7a95e7" + integrity sha512-V7vnTq67xPBUCk/9UtlolmQ798Ecjdr1ZoI1vcSgw7M82aSSt0eZdP6bh5KAFZU8pxDcx3qoHyWQfHYr11f22A== + +esbuild-windows-64@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.21.tgz#7bb5a027d5720cf9caf18a4bedd11327208f1f12" + integrity sha512-kDgHjKOHwjfJDCyRGELzVxiP/RBJBTA+wyspf78MTTJQkyPuxH2vChReNdWc+dU2S4gIZFHMdP1Qrl/k22ZmaA== + +esbuild-windows-arm64@0.14.21: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.21.tgz#25df54521ad602c826b262ea2e7cc1fe80f5c2f5" + integrity sha512-8Sbo0zpzgwWrwjQYLmHF78f7E2xg5Ve63bjB2ng3V2aManilnnTGaliq2snYg+NOX60+hEvJHRdVnuIAHW0lVw== + +esbuild@^0.14.14: + version "0.14.21" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.21.tgz#b3e05f900f1c4394f596d60d63d9816468f0f671" + integrity sha512-7WEoNMBJdLN993dr9h0CpFHPRc3yFZD+EAVY9lg6syJJ12gc5fHq8d75QRExuhnMkT2DaRiIKFThRvDWP+fO+A== + optionalDependencies: + esbuild-android-arm64 "0.14.21" + esbuild-darwin-64 "0.14.21" + esbuild-darwin-arm64 "0.14.21" + esbuild-freebsd-64 "0.14.21" + esbuild-freebsd-arm64 "0.14.21" + esbuild-linux-32 "0.14.21" + esbuild-linux-64 "0.14.21" + esbuild-linux-arm "0.14.21" + esbuild-linux-arm64 "0.14.21" + esbuild-linux-mips64le "0.14.21" + esbuild-linux-ppc64le "0.14.21" + esbuild-linux-riscv64 "0.14.21" + esbuild-linux-s390x "0.14.21" + esbuild-netbsd-64 "0.14.21" + esbuild-openbsd-64 "0.14.21" + esbuild-sunos-64 "0.14.21" + esbuild-windows-32 "0.14.21" + esbuild-windows-64 "0.14.21" + esbuild-windows-arm64 "0.14.21" + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +guess@^1.0.2: + version "1.0.2" + resolved "http://mirrors.csdn.net.cn/repository/csdn-npm-mirrors/guess/-/guess-1.0.2.tgz#1297e6be4b51855c958bbf8f2a6e23e2234ce44b" + integrity sha512-giSVed+pcC74rOB6QutqV44aAY2cZcuwJLpfLbNQdbb6+l+QWktBawYrSYxZozZq4pvFo+RrJuXMA4kblgcH8A== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +is-core-module@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" + integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== + dependencies: + has "^1.0.3" + +nanoid@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" + integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +postcss@^8.4.5: + version "8.4.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.6.tgz#c5ff3c3c457a23864f32cb45ac9b741498a09ae1" + integrity sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA== + dependencies: + nanoid "^3.2.0" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +resolve@^1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +rollup@^2.59.0: + version "2.67.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.67.1.tgz#4402665706fa00f321d446ce45f880e02cf54f01" + integrity sha512-1Sbcs4OuW+aD+hhqpIRl+RqooIpF6uQcfzU/QSI7vGkwADY6cM4iLsBGRM2CGLXDTDN5y/yShohFmnKegSPWzg== + optionalDependencies: + fsevents "~2.3.2" + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +three@^0.137.0: + version "0.137.5" + resolved "https://registry.yarnpkg.com/three/-/three-0.137.5.tgz#a1e34bedd0412f2d8797112973dfadac78022ce6" + integrity sha512-rTyr+HDFxjnN8+N/guZjDgfVxgHptZQpf6xfL/Mo7a5JYIFwK6tAq3bzxYYB4Ae0RosDZlDuP+X5aXDXz+XnHQ== + +typescript@^4.5.5: + version "4.5.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" + integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== + +vite@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/vite/-/vite-2.8.0.tgz#0646ab9eee805fb24b667889644ac04bc516d0d3" + integrity sha512-ed5rjyeysttuPJX/aKSA0gTB/8ZKLM5xF6FtEuKy1B9DiQbDNFMVMQxnb9JesgBPUMMIJxC8w5KZ/KNWLKFXoA== + dependencies: + esbuild "^0.14.14" + postcss "^8.4.5" + resolve "^1.22.0" + rollup "^2.59.0" + optionalDependencies: + fsevents "~2.3.2"