https://github.com/victor-lis/minecraft-enchantments-back-end
Para os devs que quiserem utilizar a API deixei a url abaixo:
https://github.com/victor-lis/minecraft-enchantments-back-end
api node
Last synced: 7 months ago
JSON representation
Para os devs que quiserem utilizar a API deixei a url abaixo:
- Host: GitHub
- URL: https://github.com/victor-lis/minecraft-enchantments-back-end
- Owner: Victor-Lis
- Created: 2023-11-30T02:35:34.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-01-04T19:27:29.000Z (almost 2 years ago)
- Last Synced: 2024-10-12T10:16:59.086Z (about 1 year ago)
- Topics: api, node
- Language: JavaScript
- Homepage: https://minecraft-enchantments-api-by-dev-victor.onrender.com/
- Size: 2.92 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Minecraft-Enchants-Back-End
A ideia desse projeto surgiu enquanto eu jogava Minecraft com meus amigos e parei para pensar sobre a tradução dos encantamentos do jogo, então cheguei na ideia de criar uma API para tal feito. Este é o Back-End do projeto, caso queira ver a aplicação com detalhes no Front-End, aqui está o código do [Front-End](https://github.com/Victor-Lis/Minecraft-Enchantments-Back-End)
# Desafios
Alguns dos meus desafios foram:
- Trabalhar com os caracteres dos encantamentos;
- Criar um código para cada caractere;
- Editar a imagem de cada caractere;
- Traduzir cada caractere para uma letra;
# Aprendizados
Por final aprendi algumas coisas interessantes como:
## Declaração dos objetos de referência
```js
let letters = {
"A": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/A.png",
"B": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/B.png",
"C": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/C.png",
"D": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/D.png",
"E": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/E.png",
"F": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/F.png",
"G": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/G.png",
"H": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/H.png",
"I": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/I.png",
"J": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/J.png",
"K": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/K.png",
"L": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/L.png",
"M": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/M.png",
"N": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/N.png",
"O": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/O.png",
"P": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/P.png",
"Q": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/Q.png",
"R": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/R.png",
"S": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/S.png",
"T": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/T.png",
"U": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/U.png",
"V": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/V.png",
"W": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/W.png",
"X": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/X.png",
"Y": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/Y.png",
"Z": "https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/Z.png",
}
let codeToEnchantCaracter = {
11: "A",
12: "B",
13: "C",
14: "D",
15: "E",
16: "F",
17: "G",
18: "H",
19: "I",
20: "J",
21: "K",
22: "L",
23: "M",
24: "N",
25: "O",
26: "P",
27: "Q",
28: "R",
29: "S",
30: "T",
31: "U",
32: "V",
33: "W",
34: "X",
35: "Y",
36: "Z",
37: " ",
}
```
## Rota para traduzir os Caractéres do Minecraft para Letras
### Como funciona?
Eu atribui um código de 2 digitos para cada caractere, logo é necessario basicamente passar uma sequência de códigos respectivos para cada caractere, retribuindo a tradução, segue um exemplo e a função.
### Exemplo
Nesse caso irei passar o seguinte código: 1924161924193035, respectivo ao encantamento "infinity" ou em português "infinidade".
```js
let data = await fetch(`https://minecraft-enchantments-api-by-dev-victor.onrender.com/code-to-caracter?codes=1924161924193035`)
.then(res => res.json())
if(data.data.length){
console.log(data.data) // INFINITY
}
```
### Rota
```js
app.use('/code-to-caracter', (req, res) => {
let { codes } = req.query
if (!!codes && codes.length > 0 && codes.length % 2 == 0) {
let traduction = "";
let lastCode;
for(let i = 0; i < codes.length; i++){
if(i % 2 == 0){
lastCode = codes[i];
}else{
lastCode+=codes[i];
}
if(lastCode.length == 2){
traduction += codeToEnchantCaracter[lastCode];
lastCode = '';
}
}
res.send(JSON.stringify({data: traduction}))
}else{
res.sendStatus(502)
}
});
```
### Significado de cada código
## Rota para traduzir Letras para os Caractéres do Minecraft
### Como funciona?
Simples, eu atribui as Letras como keys de um objeto e o respectivo caractere na frente, segue um exemplo e a função.
### Exemplo
Nesse caso irei escrever "infinity" o mesmo encantamento de cima.
```js
async function letterToEnchant() {
let data = await fetch(`https://minecraft-enchantments-api-by-dev-victor.onrender.com/letter-to-enchantment?text=INFINITY`)
.then(res => res.json())
.catch(e => console.log(e))
console.log(data) // O resultado será o link das respectivas imagens dos caractéres
}
```
### Rota
```js
app.use('/letter-to-enchantment', (req, res) => {
let { text } = req.query
if (!!text && text.length > 0) {
let newText = []
for (let i = 0; i < text.length; i++) {
if(text[i] != " " && text[i] != "-" && text[i] != "_"){
newText.push(`https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/${text[i].toUpperCase()}.png`)
}else{
newText.push(`https://raw.githubusercontent.com/Victor-Lis/Minecraft-Enchantments/main/src/images/Space.png`)
}
}
res.send(newText)
}else{
res.sendStatus(502)
}
});
```
## Rota para receber um objeto das imagens e de seus códigos
### Como funciona?
Essa é a rota mais simples, sem lógica alguma, ela simplesmente retorna um objeto com as imagens como "Keys" do objeto e os códigos como "Values.
### Exemplo
```js
async function letterToEnchant() {
let data = await fetch(`https://minecraft-enchantments-api-by-dev-victor.onrender.com/images-codes`)
.then(res => res.json())
.catch(e => console.log(e))
if (data) {
console.log(data) // O resultado será o link das respectivas imagens dos caractéres
}
}
```
### Rota
```js
app.use('/images-codes', (req, res) => {
let images = Object.values(letters)
let codes = Object.keys(codeToEnchantCaracter)
const newObject = {};
for (let i = 0; i < images.length; i++) {
newObject[images[i]] = codes[i];
}
res.send(JSON.stringify(newObject))
})
```
## Projeto na prática
### Front-End


### Back-End



## Autores
- [@Victor-Lis](https://github.com/Victor-Lis)