SlideShare a Scribd company logo
Minecraft and Scala:
Creating a DSL to enable Kids
to Create Mods
Paulo “Jcranky” Siqueira
Paulo.siqueira@gmail.com / @jcranky
@JCranky
Who am I ?
Developer
(Scala, Java)
@JCranky
Who am I ?
Gamer
Minecraft
and Other Indie Games
@JCranky
Who am I ?
Musician
Wannabe!
@JCranky
Who I work for
TecSinapse
Car Dealers
Research and Innovation
@JCranky
Anytime!
@JCranky
Setting the Scene
What is Minecraft
What Are Minecraft Mods
What Are Kids
@JCranky
Then...
Easyforger: the DSL
Pending challenges
summary
@JCranky
What is Minecraft
Open World Game
DO ...
… Whatever
@JCranky
What is Minecraft
Single Player
multiplayer
@JCranky
What is Minecraft
Client – Server
Architecture
Written in Java
… go figure
@JCranky
Single Player
Internal Server
Very performatic
(unless recording or on a bad/old machine)
Starting a new Game
Barbecue Machine
@JCranky
Multi player
Client: Player Machine
Server: Anywhere,
Holds the Business Logic
Craftbot Server
Some Multi Player fight
@JCranky
What are Mods
Minecraft:
Minecraft and Scala: Creating a DSL to enable kids to create Minecraft Mods
@JCranky
What are Mods
Community Mods to the rescue!
@JCranky
What are Mods
No Official Api
(Being developed for a While...)
… in theory
@JCranky
What are Mods
Community to Rescue (again)!
Client-Server API Mapping
Minecraft CODE Decompilation
@JCranky
Decompilation
Easy: Its Java!
Quite unpleasant Identifiers
though...
Identifiers ...
@JCranky
Modding Alternatives
Server-Side Modifications
(aka server plugins)
Client Mods
(which also goes on the server...)
@JCranky
Server Plugins
Several Options
(all including said SERVER API Mapping)
Bukkit
Canary
Spigotmc
etc
a mini-Game Server
Chicken Shooter
@JCranky
Good!
Any client can join
Nothing to be Installed
@JCranky
Bad!
Can't add new Stuff
(Blocks, Entities etc)
Just change/Control what's already
there
@JCranky
Client Mods: Forge
Minecraft Forge
Main (only?) option
Already includes the Decompilation
(part of the build setup)
@JCranky
Demo: the difference
A Normal Client
A Minecraft Forge Client
@JCranky
Good!
Can do just about anything
@JCranky
Bad!
For multi Player...
Mods have To be installed in the
server as well
@JCranky
Bad!
The installation can be complex
@JCranky
Bad - instalation
No standards
Jar jugling
PixelMon Craft
Mad pack
@JCranky
Kids!
Devoxx4Kids
TDC4Kids
TDC4Kids - FLoripa
@JCranky
But How?
Pre-configured eclipse
With forge and MCP
@JCranky
But How?
Kids modify something and
Run the game from the IDE
@JCranky
But How?
Sounds simple enough ...
@JCranky
All well...
But lets do better!
@JCranky
Why not...
Scala?
Its the JVM After all!
From chicken-Shooter
@JCranky
Better, but...
Simplify!
Kids
Any beginner, Really
@JCranky
A Dsl !
That's Exactly
what DSLs Are good for!
@JCranky
Quickly: DSL Types
Internal: Written and interpreted in
the laNguage
@JCranky
Quickly: DSL Types
External:
uses parsers and other tools
syntax freedom
@JCranky
Our decision
Go internal!
Its simpler and Scala is amazing for
that!
@JCranky
Our decision
5 minutes
(from scala.concurrent.duration)
@JCranky
Our decision
Auto complete from IDEs is
available out of the box
@JCranky
Enter EasyForger
A DSL for writing
minecraft Mods
(on top of minecraft forge)
@JCranky
Enter EasyForger
Supports simple modifications
(with lots more to come!)
@JCranky
Next, lets see:
What can it do?
How is it done?
@JCranky
Creature Item Drops
demo
@JCranky
New Furnace Recipes
Demo
@JCranky
New Crafting Recipes
Demo
@JCranky
New Crafting Recipes
(shaped)
Demo
@JCranky
Creeper Explosion Radius
Demo
@JCranky
Creature Held Item
Demo
@JCranky
How?
Lots and Lots of Experimentation
Target: what “feels right”?
@JCranky
How?
Write what I want
Implement and make it work
@JCranky
How?
Always: auto complete
Must work
@JCranky
Implementation
Guess what...
Lots of implicits!
@JCranky
Implementation
Small methods
Case classes and use of copy
@JCranky
Implementation
Demo Code:
RichItemStack and Friends
@JCranky
implementation
??? helps a lot
@JCranky
The sin
Hard to avoid some side effects
Minecraft and Scala: Creating a DSL to enable kids to create Minecraft Mods
@JCranky
Where are we?
Not tested in the field yet
=(
@JCranky
Where are We?
Target:
make it really easy!
@JCranky
Where are We?
Tried Last October
Environment not ready
@JCranky
Where are we?
Lots to do and fix
Help is welcome!
@JCranky
Problems and ideas
Setup
Macros
Mod Installation
@JCranky
Problems and ideas
Behavior mods
Auto Complete excess
@JCranky
Setup
Make it easy to setup!
No downloads if possible!
@JCranky
Setup
Minecraft Forge
Gradle Build does a Lot!
(plus lots of dependencies downloaded)
@JCranky
Setup
Ideally:
Single zip download
Usable offline
@JCranky
Macros
Perhaps good for
simpler constructs?
@JCranky
Macros
Don't forget about
Auto complete!
@JCranky
Mod Installation Process
EasyForger
is a mod itself
@JCranky
Mod Installation Process
Separate that
and perhaps solve the setup problem...
@JCranky
Custom Behavior support
Experimental
Not happy with the DSL yet
@JCranky
Custom skeleton behavior
Code: Custom Skeleton
@JCranky
Auto Complete Excess
Predef (etc) stuff is useless
In the auto complete box
(for the dsl)
@JCranky
Auto Complete Excess
Confusing for beginners
Minecraft and Scala: Creating a DSL to enable kids to create Minecraft Mods
@JCranky
In time...
Why only kids?
@JCranky
In time...
Why only beginners?
In time...
@JCranky
summary
Minecraft == fun
@JCranky
Modding minecraft == fun.2
@JCranky
Enabling kids to do it
==
Fun.3
@JCranky
Creating the DSL
==
Fun.4
@JCranky
Links
Easyforger.com
Github.com/jcranky/easyforger
Twitter.com/easyforger
Twitter.com/jcranky
@JCranky
acks
_underscore
For the support
@JCranky
Acks
TecSinapse
For allowing me to come
(even though I just started there ;))
@JCranky
Acks
You!
For listening...
And for future contributions! ;)
@JCranky
Questions ?!
Throw them at me!
If it pleases you...
Paulo “Jcranky” Siqueira
Paulo.siqueira@gmail.com / @jcranky

More Related Content

PDF
Fundamentals of App & Web Design
PPTX
React web development
PDF
Digital X Interactive Profile
PDF
Gyanm general awareness_issue_october_2015
PPSX
Manfaat virgin coconut oil untuk cegah penyakit jantung penyakit lainnya | VC...
ODT
ногоон сайншанд
Fundamentals of App & Web Design
React web development
Digital X Interactive Profile
Gyanm general awareness_issue_october_2015
Manfaat virgin coconut oil untuk cegah penyakit jantung penyakit lainnya | VC...
ногоон сайншанд

Viewers also liked (15)

PDF
Portfolio
PDF
Leishmaniasis
PPT
SEA Fundraising Workshop - Sarah Steward
PPT
30 seconds to mars
PDF
Fotos formatura gi_1
PDF
Tree Advancement Patterns
PDF
Deutsche Wolke Präsentation 100114
PPTX
How to win more sales with less effort
PPTX
How to network with busy people
PPTX
30 Seconds to Mars
DOCX
Index 2 html taller informatica 904
PDF
Yubi Juragan: Program Reseller Dari YukBisnis
PDF
Food poisioning, infection and diseases
PPTX
Fish borne parasitic zoonoses
DOCX
Brandi Chavez Resume New
Portfolio
Leishmaniasis
SEA Fundraising Workshop - Sarah Steward
30 seconds to mars
Fotos formatura gi_1
Tree Advancement Patterns
Deutsche Wolke Präsentation 100114
How to win more sales with less effort
How to network with busy people
30 Seconds to Mars
Index 2 html taller informatica 904
Yubi Juragan: Program Reseller Dari YukBisnis
Food poisioning, infection and diseases
Fish borne parasitic zoonoses
Brandi Chavez Resume New
Ad

Similar to Minecraft and Scala: Creating a DSL to enable kids to create Minecraft Mods (20)

PDF
Learning Python with Minecraft and my Dad - PyOhio 2018
PDF
Erlang: Bult for concurrent, distributed systems
KEY
The Why and How of Scala at Twitter
PPTX
Minecraft in 500 lines of Python with Pyglet
PPTX
Introduction to Minecraft Modding at YaJUG
ODP
erlang at hover.in , Devcamp Blr 09
PDF
Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012
PDF
My Minecraft-Smart-Home: Prototyping the Internet of Uncanny Things
PDF
My Minecraft Smart Home: Prototyping the internet of uncanny things - Sascha ...
KEY
Devignition 2011
PDF
Erlang, the big switch in social games
PDF
Erlang factory SF 2011 "Erlang and the big switch in social games"
PDF
Cloud, Distributed, Embedded: Erlang in the Heterogeneous Computing World
PDF
Minko - Creating cross-platform 3D apps with Minko
PDF
C language in our world 2019
PDF
When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...
PDF
Groovy Domain Specific Languages - SpringOne2GX 2012
PDF
Paris Android LiveCode - Creating cross-platform 3D apps with Minko
PDF
PDF
Castle Game Engine and the joy of making and using a custom game engine
Learning Python with Minecraft and my Dad - PyOhio 2018
Erlang: Bult for concurrent, distributed systems
The Why and How of Scala at Twitter
Minecraft in 500 lines of Python with Pyglet
Introduction to Minecraft Modding at YaJUG
erlang at hover.in , Devcamp Blr 09
Using Eclipse and Lua for the Internet of Things - EclipseDay Googleplex 2012
My Minecraft-Smart-Home: Prototyping the Internet of Uncanny Things
My Minecraft Smart Home: Prototyping the internet of uncanny things - Sascha ...
Devignition 2011
Erlang, the big switch in social games
Erlang factory SF 2011 "Erlang and the big switch in social games"
Cloud, Distributed, Embedded: Erlang in the Heterogeneous Computing World
Minko - Creating cross-platform 3D apps with Minko
C language in our world 2019
When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...
Groovy Domain Specific Languages - SpringOne2GX 2012
Paris Android LiveCode - Creating cross-platform 3D apps with Minko
Castle Game Engine and the joy of making and using a custom game engine
Ad

More from Paulo Siqueira (7)

PDF
Como a Carjump usa Scala para revolucionar o mercado de Compartilhamento de c...
PDF
Desvendando o sistema de tipos do scala
ODP
Minecraft Modding e Scala
ODP
Minecraft Modding: Um Jogo que vira Muitos!
ODP
Atendendo Milhares de Requisições com o Play Framework 2 - v2
ODP
Entendendo o Modelo de Atores
PDF
Akka no Just Java 2012
Como a Carjump usa Scala para revolucionar o mercado de Compartilhamento de c...
Desvendando o sistema de tipos do scala
Minecraft Modding e Scala
Minecraft Modding: Um Jogo que vira Muitos!
Atendendo Milhares de Requisições com o Play Framework 2 - v2
Entendendo o Modelo de Atores
Akka no Just Java 2012

Recently uploaded (20)

PPT
Teaching material agriculture food technology
PDF
Heart disease approach using modified random forest and particle swarm optimi...
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
OMC Textile Division Presentation 2021.pptx
PDF
Machine learning based COVID-19 study performance prediction
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Empathic Computing: Creating Shared Understanding
PPTX
1. Introduction to Computer Programming.pptx
PPTX
Tartificialntelligence_presentation.pptx
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Teaching material agriculture food technology
Heart disease approach using modified random forest and particle swarm optimi...
Per capita expenditure prediction using model stacking based on satellite ima...
Digital-Transformation-Roadmap-for-Companies.pptx
Spectral efficient network and resource selection model in 5G networks
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Accuracy of neural networks in brain wave diagnosis of schizophrenia
Assigned Numbers - 2025 - Bluetooth® Document
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
OMC Textile Division Presentation 2021.pptx
Machine learning based COVID-19 study performance prediction
MIND Revenue Release Quarter 2 2025 Press Release
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Empathic Computing: Creating Shared Understanding
1. Introduction to Computer Programming.pptx
Tartificialntelligence_presentation.pptx
Univ-Connecticut-ChatGPT-Presentaion.pdf
A comparative analysis of optical character recognition models for extracting...
Mobile App Security Testing_ A Comprehensive Guide.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025

Minecraft and Scala: Creating a DSL to enable kids to create Minecraft Mods