Skip to content

Commit db9aaba

Browse files
committed
Biome info
1 parent d8c5626 commit db9aaba

File tree

13 files changed

+96
-104
lines changed

13 files changed

+96
-104
lines changed

coffee/client/module/World/CellTerrain.coffee

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ class CellTerrain
33
constructor: (options)->
44
@cellSize=options.cellSize
55
@cells={}
6+
@biomes={}
7+
@loadedBlocks={}
68
vec3: (x,y,z)->
79
x=parseInt x
810
y=parseInt y
@@ -41,11 +43,20 @@ class CellTerrain
4143
return 0
4244
voff=@computeVoxelOffset voxelX,voxelY,voxelZ
4345
return cell[voff]
44-
getBuffer:(x,y,z)->
46+
getCell:(cellX,cellY,cellZ)->
4547
return @cells[@vec3(x,y,z)]
46-
setBuffer:(x,y,z,buffer)->
47-
@cells[@vec3(x,y,z)]=buffer
48+
setCell:(cellX,cellY,cellZ,buffer)->
49+
@cells[@vec3(cellX,cellY,cellZ)]=buffer
4850
getBlock:(blockX,blockY,blockZ)->
49-
return new Block.fromStateId @getVoxel(blockX,blockY,blockZ)
50-
51+
if @loadedBlocks[@getVoxel(blockX,blockY,blockZ)] is undefined
52+
@loadedBlocks[@getVoxel(blockX,blockY,blockZ)]=new Block.fromStateId @getVoxel(blockX,blockY,blockZ), @getBlockBiome(blockX,blockY,blockZ)
53+
return @loadedBlocks[@getVoxel(blockX,blockY,blockZ)]
54+
setBiome:(cellX,cellY,cellZ,biome)->
55+
@biomes[@vec3(cellX,cellY,cellZ)]=biome
56+
getBlockBiome:(blockX,blockY,blockZ)->
57+
biome=@getCellForVoxel blockX,blockY,blockZ
58+
if not biome
59+
return null
60+
voff=@computeVoxelOffset blockX,blockY,blockZ
61+
return biome[voff]
5162
export {CellTerrain}

coffee/client/module/World/ChunkWorker.coffee

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,10 @@ class TerrainManager
7474
uv:[uv[0]...,uv[2]...,uv[1]...,uv[1]...,uv[2]...,uv[3]...]
7575
}
7676
genCellGeo: (cellX,cellY,cellZ)->
77+
_this=@
7778
positions=[]
7879
normals=[]
7980
uvs=[]
80-
_this=@
8181
addFace=(type,pos)->
8282
faceVertex=_this.genBlockFace type,_this.cellTerrain.getBlock(pos...),pos
8383
positions.push faceVertex.pos...
@@ -123,19 +123,11 @@ class TerrainManager
123123
addFace "pz",pos
124124
if (@cellTerrain.getBlock(pos[0],pos[1],pos[2]-1).name is "air")
125125
addFace "nz",pos
126-
# else
127-
# geo=@models[@blocks[voxel].model]
128-
# addGeo geo,pos
129126
return {
130127
positions
131128
normals
132129
uvs
133130
}
134-
setVoxel: (voxelX,voxelY,voxelZ,value)->
135-
@cellTerrain.setVoxel voxelX,voxelY,voxelZ,value
136-
return
137-
getVoxel: (voxelX,voxelY,voxelZ)->
138-
return @cellTerrain.getVoxel voxelX,voxelY,voxelZ
139131

140132
addEventListener "message", (e)->
141133
fn = handlers[e.data.type]
@@ -161,7 +153,7 @@ handlers={
161153
}
162154
return
163155
setVoxel:(data)->
164-
terrain.setVoxel data...
156+
terrain.cellTerrain.setVoxel data...
165157
genCellGeo: (data)->
166158
if ((terrain.cellTerrain.vec3 data...) of terrain.cellTerrain.cells) is true
167159
geo=terrain.genCellGeo data...
@@ -170,5 +162,6 @@ handlers={
170162
info:data
171163
}
172164
setCell: (data)->
173-
terrain.cellTerrain.cells["#{data[0]}:#{data[1]}:#{data[2]}"]=data[3]
165+
terrain.cellTerrain.setCell data[0],data[1],data[2],data[3]
166+
terrain.cellTerrain.setBiome data[0],data[1],data[2],data[4]
174167
}

coffee/client/module/World/SectionsWorker.coffee

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,20 @@ class ChunkDecoder
6969
z:0
7070
}
7171
cell=new Uint8Array 16*16*16
72+
biome=new Uint8Array 16*16*16
7273
for x in [0..15]
7374
for y in [0..15]
7475
for z in [0..15]
7576
# ct.setVoxel packet.x+x,num+y,packet.z+z
7677
cell[@cvo(x,y,z)]=palette[data.get(@getBlockIndex({x,y,z}))]
7778
# base.push(palette[data.get(@getBlockIndex({x,y,z}))])
79+
biome[@cvo(x,y,z)]=packet.biomes[(((num+y) >> 2) & 63) << 4 | (((packet.z+z) >> 2) & 3) << 2 | (((packet.x+x) >> 2) & 3)]
7880
result.push {
7981
x:packet.x
8082
y:num
81-
z:packet.z,
82-
data:cell
83+
z:packet.z
84+
cell
85+
biome
8386
}
8487
else
8588
result.push(null)

coffee/client/module/World/World.coffee

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class World
1616
@cellTerrain=new CellTerrain {cellSize:@cellSize}
1717
@ATA=new AnimatedTextureAtlas {al:@al}
1818
@material=@ATA.material
19+
@material2=@ATA.material2
1920
@neighbours=[[-1, 0, 0],[1, 0, 0],[0, -1, 0],[0, 1, 0],[0, 0, -1],[0, 0, 1]]
2021
@chunkWorker=new Worker "/module/World/ChunkWorker.js", {type:'module'}
2122
@chunkWorker.onmessage=(message)->
@@ -39,10 +40,11 @@ class World
3940
result=data.data.result
4041
for i in result
4142
if i isnt null
42-
_this.setCell i.x,i.y,i.z,i.data
43-
setCell: (cellX,cellY,cellZ,buffer)->
44-
@_setCell cellX,cellY,cellZ,buffer
45-
@cellTerrain.cells[@cellTerrain.vec3(cellX,cellY,cellZ)]=buffer
43+
_this.setCell i.x,i.y,i.z,i.cell,i.biome
44+
setCell: (cellX,cellY,cellZ,buffer,biome)->
45+
@_setCell cellX,cellY,cellZ,buffer,biome
46+
@cellTerrain.setCell cellX,cellY,cellZ,buffer
47+
@cellTerrain.setBiome cellX,cellY,cellZ,biome
4648
@cellNeedsUpdate[@cellTerrain.vec3(cellX,cellY,cellZ)]=true
4749
for nei in @neighbours
4850
neiCellId=@cellTerrain.vec3(cellX+nei[0],cellY+nei[1],cellZ+nei[2])
@@ -172,10 +174,10 @@ class World
172174
return {posPlace,posBreak}
173175
else
174176
return false
175-
_setCell: (cellX,cellY,cellZ,buffer)->
177+
_setCell: (cellX,cellY,cellZ,buffer,biome)->
176178
@chunkWorker.postMessage {
177179
type:"setCell"
178-
data:[cellX,cellY,cellZ,buffer]
180+
data:[cellX,cellY,cellZ,buffer,biome]
179181
}
180182
_setVoxel: (voxelX,voxelY,voxelZ,value)->
181183
@chunkWorker.postMessage {
@@ -190,11 +192,11 @@ class World
190192
type:"genCellGeo"
191193
data:[cellX,cellY,cellZ]
192194
}
193-
_computeSections: (sections,x,z)->
195+
_computeSections: (sections,x,z,biomes)->
194196
@sectionsWorker.postMessage {
195197
type:"computeSections"
196198
data:{
197-
sections,x,z
199+
sections,x,z,biomes
198200
}
199201
}
200202
export {World}

coffee/client/module/index.coffee

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ init = ()->
3939
clouds.position.y=170
4040
scene.add clouds
4141

42+
stats = new Stats()
43+
stats.showPanel 0
44+
document.body.appendChild stats.dom
45+
4246
world=new World({
4347
toxelSize:27
4448
cellSize:16
@@ -59,18 +63,14 @@ init = ()->
5963
socket.emit "initClient", {
6064
nick:nick
6165
}
62-
console.log "First Load packet recieved!"
6366
# world.replaceWorld v
6467
$(".initLoading").css "display","none"
65-
stats = new Stats();
66-
stats.showPanel(0);
67-
document.body.appendChild stats.dom
6868
return
6969
socket.on "blockUpdate",(block)->
7070
world.setBlock block[0],block[1]+16,block[2],block[3]
7171
return
72-
socket.on "mapChunk", (sections,x,z)->
73-
world._computeSections sections,x,z
72+
socket.on "mapChunk", (sections,x,z,biomes)->
73+
world._computeSections sections,x,z,biomes
7474
socket.on "hp",(points)->
7575
inv_bar.setHp(points)
7676
socket.on "food",(points)->
@@ -120,24 +120,10 @@ init = ()->
120120
}
121121
)
122122
scene.add cursor
123-
# $(document).mousedown (e)->
124-
# if FPC.gameState is "game"
125-
# rayBlock=world.getRayBlock()
126-
# if rayBlock
127-
# if e.which is 1
128-
# voxelId=0
129-
# pos=rayBlock.posBreak
130-
# else
131-
# voxelId=inv_bar.activeBox
132-
# pos=rayBlock.posPlace
133-
# pos[0]=Math.floor pos[0]
134-
# pos[1]=Math.floor pos[1]
135-
# pos[2]=Math.floor pos[2]
136-
# socket.emit "blockUpdate",[pos...,voxelId]
137-
# return
123+
138124
color = new THREE.Color "#adc8ff"
139-
near = 32
140-
far = 3*16-5
125+
near = 3*16-13
126+
far = 3*16-3
141127
scene.fog = new THREE.Fog color, near, far
142128
gui = new GUI()
143129
params={

coffee/server.coffee

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ module.exports=(config)->
4444
socketInfo[socket.id].bot._client.on "map_chunk",(packet)->
4545
cell=new Chunk()
4646
cell.load packet.chunkData,packet.bitMap,false,true
47-
io.to(socket.id).emit "mapChunk", cell.sections,packet.x,packet.z
47+
io.to(socket.id).emit "mapChunk", cell.sections,packet.x,packet.z,packet.biomes
4848
return
4949

5050
socketInfo[socket.id].bot.on 'chat',(username, message)->

docs/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
```bash
1212

13-
#Instalacja repozytorium
1413
git clone https://github.com/michaljaz/web-minecraft
1514
cd web-minecraft
1615
npm i

src/client/module/World/CellTerrain.js

Lines changed: 23 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/client/module/World/ChunkWorker.js

Lines changed: 4 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/client/module/World/SectionsWorker.js

Lines changed: 6 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)