O clipe original foi postado no website do HampsterDance (hampsterdance.com) lá em 2001, mas ninguém fez um reupload do clipe original em alta qualidade para o YouTube... Mas graças ao Wayback Machine, foi possível baixar o SWF original e renderizar com o Swivel em uma resolução maior!

Eu também editei um pouco o clipe para colocar a versão de CD da música (já que a música no SWF original estava em baixa qualidade) e também alterei alguns cortes que estavam meio ruim, como se fosse uma versão "remasterizada" do clipe. Se você é purista e quer ver a versão original do clipe, então clique aqui.

Futuramente eu quero tentar aumentar o FPS do vídeo utilizando AI (por exemplo: DAIN APP) mas infelizmente não tenho as specs necessárias para fazer esse tipo de coisa, mas quem sabe algum dia, né?


A versão 7.0.0 (Minecraft 1.13) do WorldGuard deu problema no DreamCore (oof) e ninguém tinha mostrado como pegar uma região do WorldGuard na nova versão, já que teve mudanças na API e os dois exemplos que existiam na wiki do WorldGuard não funcionam mais... 😭

Então eu mesmo olhei nas mudanças do WorldGuard 7.0.0 para descobrir como é o novo jeito de pegar regiões!

fun isWithinRegion(loc: Location, region: String): Boolean {
    val regionContainer = WorldGuard.getInstance().platform.regionContainer
    val regionManager = regionContainer[BukkitAdapter.adapt(loc.world)] ?: return false
    val set = regionManager.getApplicableRegions(BukkitAdapter.adapt(loc).toVector())
    return set.any { it.id.equals(region, ignoreCase = true) }
}

A diferença que agora você deve pegar o container de regiões usando WorldGuard.getInstance().platform.regionContainer, e depois pegar o manager de regiões usando regionContainer[BukkitAdapter.adapt(loc.world)], depois disso é igual como era no WorldGuard 6.X.X. 😉


Hoje eu decidi usar o Script Engine do Kotlin na Loritta, afinal, usar o Nashorn estava meio chato e eu 💖 Kotlin, então eu decidi tentar usar.

Criei uma pequena classe de testes no meu projeto, rodei ele dentro do IntelliJ IDEA, nenhum erro! Agora vamos tentar rodar em produção... huh? unresolved reference? mas... como? Se essa classe não existivesse você nem poderia ter sido executado!

javax.script.ScriptException: error: unresolved reference: mrpowergamerbr
fun loritta(context: com.mrpowergamerbr.loritta.commands.CommandContext) {
                         ^

É, por algum motivo o Script Engine do Kotlin não consegue encontrar as minhas classes, ou qualquer outra classe na verdade, mas... porque? Elas existem durante o runtime porque, se não existissem, o aplicativo nem iria rodar!


Vídeo comemorando que eu fui rejeitado pelo YouTube no sistema de monetização deles. (pfv vejam meus vídeos porque eu to precisando de views na moralzinha bjs )



Jornal do Lumen

Publicado às 30/03/2018 14:30

Lá em 2012/2013 (quando estava no oitado/novo ano da escola) eu e os meus amigos tivemos a ideia de criar um "jornal" da escola (mesmo que a ideia era só mostrar o cotidiano lá e não mostrar as novidades da escola), nós gravamos, enviamos para o YouTube e deixamos lá... até que eu resolvi trocar de canal e deixei todos os meus vídeos velhos como privado...

Mas recentemente eu pensei que seria legal pegar todos os vídeos da série, reeditar eles e enviar para o meu atual canal no YouTube, para que todos possam apreciar e assitir os vídeos (mesmo que nenhum deles seja uma obra de arte, mas é legal guardar como recordação já que foi um período da minha vida (quando eu me considerava "YouTuber"), sem contar que vira e mexe algum dos meus amigos resolve querer ver o Jornal do Lumen de novo.


Melhorando a Gabriela, a amiga da Loritta

Publicado às 25/03/2018 16:20

Gabriela, a amiga da Loritta e seus dados

Após o post falando sobre a Gabriela, o meu clone do SimSimi, eu deixei a Gabriela pública para qualquer um usar na Loritta, para ver o que iriam achar e para ver se encontrariam problemas nela...

Neste post eu irei falar algumas mudanças que eu fiz na Gabriela para deixar ela melhor e mais parecida com o SimSimi!


Gabriela, o meu clone do SimSimi

Publicado às 25/03/2018 11:07

Gabriela, a amiga da Loritta

Lembra da história que o SimSimi estava me ameaçando de atividade ilegal e que eu deveria parar de fazer engenheria reversa da API deles? É, bons tempos...

Infelizmente as pessoas não estão gostando muito do +cleverbot da Loritta, já que ele é muito... "seco", já que ele normalmente não tem muitas respostas em português e ele não tem muitas coisas engraçadas, comparadas com o nosso amiguinho SimSimi.

Como eu não posso usar a API "não pública" deles (porque eu ainda estou bloqueado (mesmo que seja possível burlar o bloqueio apenas trocando o nome do usuário usando o SimSimi... mas mesmo assim eu teria que usar vários proxies só para ficar burlando o bloqueio)) eu irei tentar criar o meu próprio clone do SimSimi. Não querem que eu use o SimSimi? Okay então, EU MESMO irei criar o meu próprio SimSimi!

Mas, será que é fácil criar o meu próprio clone do SimSimi?


Pensando sobre o Skript

Pessoas que me conhecem faz algum tempinho sabem que eu usava Skript para quase tudo no meu servidor, realmente tentava passar do limite do Minecraft para conseguir criar um servidor ótimo e diferente, que ninguém jamais viu antes... Infelizmente isto fez que eu passasse do limite que o Skript poderia oferecer, fazendo que ele se "suicidasse" (ou, pelo ou menos o que eu achava na época que isto aconteceu).

Isto me "forçou" a aprender Java para refazer todos os meus scripts em Java, tirei todos os meus scripts do ar com o motivo de "para mim o Skript estava lagando demais o servidor, e eu não quero que ninguém use o Skript (ou pelo ou menos os meus scripts) para que não aconteça o mesmo problema com você" que depois de um tempo foi resumido para apenas "Skript é um lixo" que aí fez as pessoas começarem a achar que eu só estava falando que Skript é um lixo porque eu aprendi Java...

Neste post eu resolvi falar a minha opinião sobre Skript, já que durante todos esses anos a minha opinião mudou e, infelizmente, muitas pessoas começaram a pegar o que eu tinha falado anos atrás e começou a distorcer o que eu tinha falado, vou desmentir algumas coisas que eu tinha falado no passado que eu descobri que eu mesmo estava errado e tentar, por uma vez por todas, acabar com a onda de "Skripter nem é gente" (mesmo que eu nem use mais Skript).



owo vídeo

Todos nós sabemos que o YouTube demora para enviar novos vídeos para a "box" (e as vezes nem envia o vídeo!), ou seja, muitas pessoas que são inscritas no seu canal talvez nem estejam recebendo seus novos vídeos! Para resolver este problema (junto com o grande aumento de YouTubers no Discord) eu tinha resolvido fazer o sistema de sincronizações de novos vídeos para a Loritta.

Parece simples né: Apenas verificar se o canal enviou um novo vídeo e, se ele enviou, notificar no servidor. Infelizmente isto apenas parece simples, já que para criar isto é bem mais complicado...

Neste post irei explicar toda a "história" por trás do sistema de verificação de novos vídeos do YouTube da Loritta, junto com todas as dificuldades que eu tive e como eu resolvi elas... talvez seja interessante caso você esteja fazendo um sistema parecido ou apenas está curioso para saber como eu fiz um sistema que (as vezes!) notifica mais rápido que o YouTube!


"Brincando" de Gato e Rato com o SimSimi

Publicado às 23/03/2018 16:00

SimSimi tentando me matar por tentar usar a API do website deles

Você acreditaria que esse bichinho amarelinho iria te ameaçar de atividade ilegal e que ele está coletando evidências contra você? Se você conhece o SimSimi, você talvez até acreditaria nesta história, mas você já sabe que qualquer um pode ensinar frases novas para o SimSimi...

...mas e se eu te falasse que isto não era uma frase colocada por alguém que só ensinou algo para o SimSimi e sim uma mensagem pelos operadores do SimSimi? Aí sim que você começa a tremer na base.

Aqui vai a minha curta história de como os operadores do SimSimi descobriram que eu estava tentando fazer engenharia reversa da API do website deles, uma história bem curta que aconteceu durante algumas horas no dia 19/03/2018, mas que foi bem interessante e divertida enquanto durou.