Skip to content

Commit b173e5b

Browse files
committed
Fix itemsDump
1 parent 02bdbbf commit b173e5b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+206
-157
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ src/client/static/assets/blocks/blocksDef.json
44
src/client/static/assets/blocks/blocksAtlas-full.png
55
src/client/static/assets/blocks/blocksMapping-full.json
66
src/client/static/assets/blocks/blocksMapping.json
7-
src/client/static/assets/items
7+
src/client/static/assets/items

index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,6 @@ if(process.argv[2]==="dev"){
55
require("./src/server/server.coffee")("production");
66
}else if(process.argv[2]==="preb"){
77
require("./src/server/prebuild.coffee");
8+
}else if(process.argv[2]==="items"){
9+
require("./src/server/itemDump.coffee");
810
}

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@
66
"dev": "npm run prebuild && node index.js dev",
77
"build": "cd src/client && webpack --config webpack.prod.coffee",
88
"prebuild": "node index.js preb",
9-
"clean": "rimraf src/client/dist/*"
9+
"clean": "rimraf src/client/dist/*",
10+
"items": "node index.js items"
1011
},
1112
"dependencies": {
1213
"@tweenjs/tween.js": "^18.6.4",
1314
"ansi-to-html": "^0.6.14",
15+
"axios": "^0.21.1",
1416
"canvas": "^2.6.1",
1517
"dat.gui": "^0.7.7",
1618
"express": "^4.17.1",

src/server/atlasCreator.coffee

Lines changed: 81 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -2,86 +2,99 @@ path=require "path"
22
fs=require "fs"
33
Canvas=require "canvas"
44

5-
module.exports=(pref,size,xpath,buildPath,totalImages,atlasSize,mini,miniAtlasSize)->
6-
createCanvas=Canvas.createCanvas
7-
loadImage=Canvas.loadImage
8-
Image=Canvas.Image
5+
class AtlasCreator
6+
constructor:(options)->
7+
@pref=options.pref
8+
@size=options.size
9+
@xpath=options.xpath
10+
@buildPath=options.buildPath
11+
@totalImages=options.totalImages
12+
@atlasSize=options.atlasSize
13+
@mini=options.mini
14+
@miniAtlasSize=options.miniAtlasSize
915

10-
toxelX=1
11-
toxelY=1
12-
miniX=1
13-
miniY=1
14-
loadedImages=0
15-
16-
if not fs.existsSync buildPath
17-
fs.mkdirSync buildPath
18-
19-
20-
canvas=createCanvas atlasSize*size,atlasSize*size
21-
ctx=canvas.getContext '2d'
22-
23-
images={}
24-
textureMapping={}
25-
miniMapping={}
26-
27-
firstLoad=->
28-
fs.readdir xpath, (err, files)->
16+
@canvas=Canvas.createCanvas @atlasSize*@size,@atlasSize*@size
17+
@ctx=@canvas.getContext '2d'
18+
@toxelX=1
19+
@toxelY=1
20+
@miniX=1
21+
@miniY=1
22+
@loadedImages=0
23+
@images={}
24+
@textureMapping={}
25+
@miniMapping={}
26+
@emptyDir()
27+
@firstLoad()
28+
return
29+
emptyDir:()->
30+
if not fs.existsSync @buildPath
31+
fs.mkdirSync @buildPath
32+
return
33+
firstLoad:()->
34+
_this=@
35+
fs.readdir @xpath, (err, files)->
2936
files.forEach (file)->
30-
filePath="#{xpath}/#{file}"
37+
filePath="#{_this.xpath}/#{file}"
3138
if path.extname(file) is ".png"
32-
addImageToLoad filePath,file
39+
# console.log filePath
40+
_this.addImageToLoad filePath,file
3341
return
3442
return
3543
return
36-
addImageToLoad=(filePath,name)->
37-
img=new Image
44+
addImageToLoad:(filePath,name)->
45+
_this=@
46+
img=new Canvas.Image
3847
img.onload=->
39-
images[name]=img
40-
loadedImages++
41-
if loadedImages is totalImages
42-
forEachToxel()
48+
_this.images[name]=img
49+
_this.loadedImages++
50+
if _this.loadedImages is _this.totalImages
51+
_this.forEachToxel()
4352
img.src=filePath
44-
forEachToxel=->
45-
Object.keys(images).forEach (name)->
46-
img=images[name]
47-
addToxelToAtlas img,name
48-
updateAtlas()
49-
addToxelToAtlas=(img,name)->
50-
w=img.width/size
51-
h=img.height/size
53+
return
54+
forEachToxel:()->
55+
_this=@
56+
Object.keys(@images).forEach (name)->
57+
img=_this.images[name]
58+
_this.addToxelToAtlas img,name
59+
return
60+
@updateAtlas()
61+
addToxelToAtlas:(img,name)->
62+
w=img.width/@size
63+
h=img.height/@size
5264
if w>1 or h>1
5365
for i in [0..w-1]
5466
for j in [0..h-1]
55-
ctx.drawImage img,i*size,j*size,size,size,(toxelX-1)*size, (toxelY-1)*size, size,size
56-
textureMapping[name.substr(0,name.length-4)+"@#{i}@#{j}"]={x:toxelX,y:toxelY}
57-
moveToxel()
67+
@ctx.drawImage img,i*@size,j*@size,@size,@size,(@toxelX-1)*@size,(@toxelY-1)*@size, @size,@size
68+
@textureMapping["#{name.substr(0,name.length-4)}@#{i}@#{j}"]={x:@toxelX,y:@toxelY}
69+
@moveToxel()
5870
else
59-
ctx.drawImage img, (toxelX-1)*size, (toxelY-1)*size, size,size
60-
textureMapping[name.substr(0,name.length-4)]={x:toxelX,y:toxelY}
61-
moveToxel()
62-
if mini
63-
miniMapping[name.substr(0,name.length-4)]={x:miniX,y:miniY}
64-
if miniX is miniAtlasSize
65-
miniX=1
66-
miniY+=1
71+
@ctx.drawImage img,(@toxelX-1)*@size,(@toxelY-1)*@size,@size,@size
72+
@textureMapping[name.substr(0,name.length-4)]={x:@toxelX,y:@toxelY}
73+
@moveToxel()
74+
if @mini
75+
@miniMapping[name.substr(0,name.length-4)]={x:@miniX,y:@miniY}
76+
if @miniX is @miniAtlasSize
77+
@miniX=1
78+
@miniY+=1
6779
else
68-
miniX+=1
69-
moveToxel=->
70-
if toxelX is atlasSize
71-
toxelX=1
72-
toxelY+=1
80+
@miniX+=1
81+
return
82+
moveToxel:()->
83+
if @toxelX is @atlasSize
84+
@toxelX=1
85+
@toxelY+=1
7386
else
74-
toxelX+=1
75-
updateAtlas=(path)->
76-
fs.writeFileSync "#{buildPath}/#{pref}Atlas-full.png", canvas.toBuffer('image/png')
77-
console.log "\x1b[33mSAVING: #{buildPath}/#{pref}Atlas-full.png"
78-
79-
fs.writeFileSync "#{buildPath}/#{pref}Mapping-full.json",JSON.stringify(textureMapping,null,2)
80-
console.log "\x1b[33mSAVING: #{buildPath}/#{pref}Mapping-full.json"
81-
if mini
82-
fs.writeFileSync "#{buildPath}/#{pref}Mapping.json",JSON.stringify(miniMapping,null,2)
83-
console.log "\x1b[33mSAVING: #{buildPath}/#{pref}Mapping.json"
87+
@toxelX+=1
88+
return
89+
updateAtlas:(path)->
90+
fs.writeFileSync "#{@buildPath}/#{@pref}Atlas-full.png", @canvas.toBuffer('image/png')
91+
console.log "\x1b[33mFull atlas: #{@buildPath}/#{@pref}Atlas-full.png"
92+
fs.writeFileSync "#{@buildPath}/#{@pref}Mapping-full.json",JSON.stringify(@textureMapping,null,2)
93+
console.log "\x1b[33mFull atlas mapping: #{@buildPath}/#{@pref}Mapping-full.json"
94+
if @mini
95+
fs.writeFileSync "#{@buildPath}/#{@pref}Mapping.json",JSON.stringify(@miniMapping,null,2)
96+
console.log "\x1b[33mMini atlas mapping: #{@buildPath}/#{@pref}Mapping.json"
97+
console.log "\x1b[32mSuccessfully generated #{@canvas.width}x#{@canvas.height} Texture Atlas!\n\x1b[0m"
98+
return
8499

85-
console.log "\x1b[32mSuccessfully created #{canvas.width}x#{canvas.height} Texture Atlas!\n\x1b[0m"
86-
firstLoad()
87-
return
100+
module.exports=AtlasCreator

src/server/blocksAtlas.coffee

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/server/blocksDef.coffee

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/server/itemDump.coffee

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
2+
axios = require 'axios'
3+
JSSoup = require('jssoup').default
4+
fs = require 'fs'
5+
6+
if not fs.existsSync "#{__dirname}/items/"
7+
fs.mkdirSync "#{__dirname}/items/"
8+
9+
removeBg=()->
10+
replaceColor = require 'replace-color'
11+
fs=require "fs"
12+
13+
removeBg=(filePath)->
14+
replaceColor {
15+
image: filePath
16+
colors: {
17+
type: 'rgb'
18+
targetColor: [139, 139, 139]
19+
replaceColor: [0,0,0,0]
20+
}
21+
}, (err, jimpObject)->
22+
if err
23+
return console.log err
24+
jimpObject.write filePath, (err) ->
25+
if err
26+
return console.log err
27+
28+
dir_path="#{__dirname}/items/"
29+
fs.readdir dir_path, (err, files)->
30+
files.forEach (file)->
31+
filePath="#{__dirname}/items/"+file
32+
removeBg filePath
33+
return
34+
return
35+
axios({
36+
method: 'GET'
37+
url: "https://www.digminecraft.com/lists/item_id_list_pc.php"
38+
encoding: "utf-8"
39+
}).then (r)->
40+
soup=new JSSoup r.data
41+
map={}
42+
last=null
43+
ile=0
44+
zal=0
45+
req=(type,url)->
46+
file=fs.createWriteStream "#{__dirname}/items/#{type}.png"
47+
axios({
48+
method:"GET"
49+
url
50+
responseType:"stream"
51+
}).then (r)->
52+
console.log "\x1b[32m#{type} \x1b[33m#{url}\x1b[0m"
53+
r.data.pipe file
54+
zal+=1
55+
if ile is zal
56+
console.log "\x1b[32mRemoving gray backgrounds...\x1b[0m"
57+
removeBg()
58+
return
59+
.catch (e)->
60+
console.log "Reconnecting..."
61+
req type,url
62+
return
63+
for i in soup.findAll("td")
64+
if (i.text isnt " ") and (i.text.includes "minecraft:")
65+
ile+=1
66+
title=i.text.split("(")[0]
67+
war=0
68+
for j in [0..i.text.length-1]
69+
if i.text[j] is "("
70+
war=j
71+
req((i.text.substr war+11).split(")")[0],"https://www.digminecraft.com#{last}")
72+
else if i.find("img") isnt undefined
73+
last=i.find("img").attrs["data-src"]
74+
return
75+

src/server/items.coffee

Lines changed: 0 additions & 67 deletions
This file was deleted.

src/server/items/beef.png

825 Bytes
78 Bytes

0 commit comments

Comments
 (0)