From 3a1292b46f0b79df3d1db952a35c4753c318cba5 Mon Sep 17 00:00:00 2001 From: LabyStudio Date: Fri, 15 Apr 2022 06:15:20 +0200 Subject: [PATCH] implement wood block (cherry picked from commit 034f39401cc20d00b1a88178144c24bcb83cc3f5) --- .../minecraft/client/inventory/Inventory.js | 9 +++++---- .../client/world/block/BlockRegistry.js | 18 ++++++++++-------- .../world/block/{ => type}/BlockDirt.js | 2 +- .../world/block/{ => type}/BlockGrass.js | 4 ++-- .../world/block/{ => type}/BlockLeave.js | 2 +- .../client/world/block/{ => type}/BlockLog.js | 2 +- .../world/block/{ => type}/BlockSand.js | 2 +- .../world/block/{ => type}/BlockStone.js | 2 +- .../world/block/{ => type}/BlockTorch.js | 8 ++++---- .../world/block/{ => type}/BlockWater.js | 2 +- .../client/world/block/type/BlockWood.js | 9 +++++++++ src/resources/terrain/terrain.png | Bin 6764 -> 7566 bytes 12 files changed, 36 insertions(+), 24 deletions(-) rename src/js/net/minecraft/client/world/block/{ => type}/BlockDirt.js (84%) rename src/js/net/minecraft/client/world/block/{ => type}/BlockGrass.js (83%) rename src/js/net/minecraft/client/world/block/{ => type}/BlockLeave.js (87%) rename src/js/net/minecraft/client/world/block/{ => type}/BlockLog.js (89%) rename src/js/net/minecraft/client/world/block/{ => type}/BlockSand.js (84%) rename src/js/net/minecraft/client/world/block/{ => type}/BlockStone.js (79%) rename src/js/net/minecraft/client/world/block/{ => type}/BlockTorch.js (91%) rename src/js/net/minecraft/client/world/block/{ => type}/BlockWater.js (95%) create mode 100644 src/js/net/minecraft/client/world/block/type/BlockWood.js diff --git a/src/js/net/minecraft/client/inventory/Inventory.js b/src/js/net/minecraft/client/inventory/Inventory.js index 01ddc24..9bf9b5d 100644 --- a/src/js/net/minecraft/client/inventory/Inventory.js +++ b/src/js/net/minecraft/client/inventory/Inventory.js @@ -8,10 +8,11 @@ export default class Inventory { this.items[0] = 1; this.items[1] = 2; this.items[2] = 3; - this.items[3] = 17; - this.items[4] = 18; - this.items[5] = 12; - this.items[6] = 50; + this.items[3] = 5; + this.items[4] = 17; + this.items[5] = 18; + this.items[6] = 12; + this.items[7] = 50; } setItemInSelectedSlot(typeId) { diff --git a/src/js/net/minecraft/client/world/block/BlockRegistry.js b/src/js/net/minecraft/client/world/block/BlockRegistry.js index c19297c..6cd4089 100644 --- a/src/js/net/minecraft/client/world/block/BlockRegistry.js +++ b/src/js/net/minecraft/client/world/block/BlockRegistry.js @@ -1,13 +1,14 @@ -import BlockLog from "./BlockLog.js"; -import BlockStone from "./BlockStone.js"; -import BlockGrass from "./BlockGrass.js"; -import BlockDirt from "./BlockDirt.js"; -import BlockLeave from "./BlockLeave.js"; -import BlockWater from "./BlockWater.js"; -import BlockSand from "./BlockSand.js"; -import BlockTorch from "./BlockTorch.js"; +import BlockLog from "./type/BlockLog.js"; +import BlockStone from "./type/BlockStone.js"; +import BlockGrass from "./type/BlockGrass.js"; +import BlockDirt from "./type/BlockDirt.js"; +import BlockLeave from "./type/BlockLeave.js"; +import BlockWater from "./type/BlockWater.js"; +import BlockSand from "./type/BlockSand.js"; +import BlockTorch from "./type/BlockTorch.js"; import Sound from "./sound/Sound.js"; import Block from "./Block.js"; +import BlockWood from "./type/BlockWood.js"; export class BlockRegistry { @@ -24,6 +25,7 @@ export class BlockRegistry { Block.STONE = new BlockStone(1, 0); Block.GRASS = new BlockGrass(2, 1); Block.DIRT = new BlockDirt(3, 2); + Block.WOOD = new BlockWood(5, 10); Block.LOG = new BlockLog(17, 4); Block.LEAVE = new BlockLeave(18, 6); Block.WATER = new BlockWater(9, 7); diff --git a/src/js/net/minecraft/client/world/block/BlockDirt.js b/src/js/net/minecraft/client/world/block/type/BlockDirt.js similarity index 84% rename from src/js/net/minecraft/client/world/block/BlockDirt.js rename to src/js/net/minecraft/client/world/block/type/BlockDirt.js index 7c56ae9..ecefd54 100644 --- a/src/js/net/minecraft/client/world/block/BlockDirt.js +++ b/src/js/net/minecraft/client/world/block/type/BlockDirt.js @@ -1,4 +1,4 @@ -import Block from "./Block.js"; +import Block from "../Block.js"; export default class BlockDirt extends Block { diff --git a/src/js/net/minecraft/client/world/block/BlockGrass.js b/src/js/net/minecraft/client/world/block/type/BlockGrass.js similarity index 83% rename from src/js/net/minecraft/client/world/block/BlockGrass.js rename to src/js/net/minecraft/client/world/block/type/BlockGrass.js index cf51c46..7e59dbb 100644 --- a/src/js/net/minecraft/client/world/block/BlockGrass.js +++ b/src/js/net/minecraft/client/world/block/type/BlockGrass.js @@ -1,5 +1,5 @@ -import Block from "./Block.js"; -import EnumBlockFace from "../../../util/EnumBlockFace.js"; +import Block from "../Block.js"; +import EnumBlockFace from "../../../../util/EnumBlockFace.js"; export default class BlockGrass extends Block { diff --git a/src/js/net/minecraft/client/world/block/BlockLeave.js b/src/js/net/minecraft/client/world/block/type/BlockLeave.js similarity index 87% rename from src/js/net/minecraft/client/world/block/BlockLeave.js rename to src/js/net/minecraft/client/world/block/type/BlockLeave.js index 256cd1b..3be1dac 100644 --- a/src/js/net/minecraft/client/world/block/BlockLeave.js +++ b/src/js/net/minecraft/client/world/block/type/BlockLeave.js @@ -1,4 +1,4 @@ -import Block from "./Block.js"; +import Block from "../Block.js"; export default class BlockLeave extends Block { diff --git a/src/js/net/minecraft/client/world/block/BlockLog.js b/src/js/net/minecraft/client/world/block/type/BlockLog.js similarity index 89% rename from src/js/net/minecraft/client/world/block/BlockLog.js rename to src/js/net/minecraft/client/world/block/type/BlockLog.js index eb5b2ec..fcfdfd7 100644 --- a/src/js/net/minecraft/client/world/block/BlockLog.js +++ b/src/js/net/minecraft/client/world/block/type/BlockLog.js @@ -1,4 +1,4 @@ -import Block from "./Block.js"; +import Block from "../Block.js"; export default class BlockLog extends Block { diff --git a/src/js/net/minecraft/client/world/block/BlockSand.js b/src/js/net/minecraft/client/world/block/type/BlockSand.js similarity index 84% rename from src/js/net/minecraft/client/world/block/BlockSand.js rename to src/js/net/minecraft/client/world/block/type/BlockSand.js index 9f045dd..d8636d4 100644 --- a/src/js/net/minecraft/client/world/block/BlockSand.js +++ b/src/js/net/minecraft/client/world/block/type/BlockSand.js @@ -1,4 +1,4 @@ -import Block from "./Block.js"; +import Block from "../Block.js"; export default class BlockSand extends Block { diff --git a/src/js/net/minecraft/client/world/block/BlockStone.js b/src/js/net/minecraft/client/world/block/type/BlockStone.js similarity index 79% rename from src/js/net/minecraft/client/world/block/BlockStone.js rename to src/js/net/minecraft/client/world/block/type/BlockStone.js index 2e3cee5..b36cc04 100644 --- a/src/js/net/minecraft/client/world/block/BlockStone.js +++ b/src/js/net/minecraft/client/world/block/type/BlockStone.js @@ -1,4 +1,4 @@ -import Block from "./Block.js"; +import Block from "../Block.js"; export default class BlockStone extends Block { diff --git a/src/js/net/minecraft/client/world/block/BlockTorch.js b/src/js/net/minecraft/client/world/block/type/BlockTorch.js similarity index 91% rename from src/js/net/minecraft/client/world/block/BlockTorch.js rename to src/js/net/minecraft/client/world/block/type/BlockTorch.js index b1abfca..830e0d2 100644 --- a/src/js/net/minecraft/client/world/block/BlockTorch.js +++ b/src/js/net/minecraft/client/world/block/type/BlockTorch.js @@ -1,7 +1,7 @@ -import BoundingBox from "../../../util/BoundingBox.js"; -import Block from "./Block.js"; -import EnumBlockFace from "../../../util/EnumBlockFace.js"; -import BlockRenderType from "../../../util/BlockRenderType.js"; +import BoundingBox from "../../../../util/BoundingBox.js"; +import Block from "../Block.js"; +import EnumBlockFace from "../../../../util/EnumBlockFace.js"; +import BlockRenderType from "../../../../util/BlockRenderType.js"; export default class BlockTorch extends Block { diff --git a/src/js/net/minecraft/client/world/block/BlockWater.js b/src/js/net/minecraft/client/world/block/type/BlockWater.js similarity index 95% rename from src/js/net/minecraft/client/world/block/BlockWater.js rename to src/js/net/minecraft/client/world/block/type/BlockWater.js index a95ea49..a7f27b9 100644 --- a/src/js/net/minecraft/client/world/block/BlockWater.js +++ b/src/js/net/minecraft/client/world/block/type/BlockWater.js @@ -1,4 +1,4 @@ -import Block from "./Block.js"; +import Block from "../Block.js"; export default class BlockWater extends Block { diff --git a/src/js/net/minecraft/client/world/block/type/BlockWood.js b/src/js/net/minecraft/client/world/block/type/BlockWood.js new file mode 100644 index 0000000..e4a0e2a --- /dev/null +++ b/src/js/net/minecraft/client/world/block/type/BlockWood.js @@ -0,0 +1,9 @@ +import Block from "../Block.js"; + +export default class BlockWood extends Block { + + constructor(id, textureSlotId) { + super(id, textureSlotId); + } + +} \ No newline at end of file diff --git a/src/resources/terrain/terrain.png b/src/resources/terrain/terrain.png index 23f3947d0d3d560475e7959696619f6105ec3372..f2aea4dcd466722bae1da31822de4308f76f2b68 100644 GIT binary patch literal 7566 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