Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Kepler - v21 Emulator [Java, MariaDB, Netty]

Status
Not open for further replies.
Developer
Developer
Joined
Dec 11, 2010
Messages
2,955
Reaction score
2,685
Kepler

What is this?

Kepler is a Habbo Hotel emulator that is designed to fully emulate the v21 version from 2008-ish era. The server is written in Java (JDK 10) and it's using various libraries, which means it's multiplatform, as in supports a wide range of operating systems. Windows, Linux distros, etc. I'm using MariaDB which is a fork of MySQL, so it has the same compatibility but it's more modern.

Libraries Used

- Netty

- HikariCP

- SLF4J

- Log4j

- Apache Commons-Configuration

Features

  • User
    • Login by SSO ticket.
    • Load fuserights.
    • Load credits.
    • Load pixels.
  • Navigator
    • Lists all public rooms .
    • Lists all private rooms.
    • Navigator category management with rank checking for private rooms.
    • Navigator category management with rank checking for public rooms.
    • Show recent private rooms created in the categories even if the room owner wasn't online.
    • Create private rooms using the navigator.
    • Show own rooms.
    • Hide room owner name.
    • Edit room settings.
    • Delete room.
  • Habbo Club
    • Purchase Habbo club
    • Expiry of Habbo club
    • Show days left
  • Messenger
    • Search users on console.
    • Send user a friend request.
    • Accept friend request.
    • Reject friend request.
    • Send friend message .
    • Delete friend.
    • Change messenger motto.
    • Mark messages are read.
    • Show offline messages.
    • Follow friend.
    • Automatic update friends list.
  • Private room
    • Walking.
    • Walk to door.
    • Chat (and message gets worse quality if you're further away from someone in public rooms).
    • Shout.
    • Whisper.
    • Password protect room.
    • Use room doorbell.
  • Public Room
    • All possible public rooms added (some may be missing
    • All public rooms are fully furnished to what official Habbo had.
    • Sitting on furniture in public rooms.
  • Lido and Diving Deck
    • Change clothes working (with curtain closing).
    • Pool lift door closes and opens depending if a user is inside or not.
    • Buying tickets work for self and other players.
    • Diving.
    • Swimming.
    • Queue works (line up on first tile and the user automatically walks when there is a free spot).
  • Item
    • Show own hand (inventory) with items in it.
    • Place room items.
    • Move and rotate room items.
    • Pickup room item.
    • Place wall items.
    • Pickup wall items.
    • Stack items.
    • Apply room decorations.
  • Item Interactions
    • Dice
    • Bottles
    • Teleporters
    • Rollers
    • Scoreboard
    • Lert
    • Camera
  • Catalogue

    • -
    • Show catalogue pages
    • Show catalogue items and deals (aka packages)
    • Purchase items and packages
    • Show catalogue pages.
    • Show catalogue items and deals (aka packages).
    • Purchase items and packages.
    • Purchase items with pixels and credits.
  • Ranked features
    • Add badge automatically if they are a certain rank.
    • Command registration checking.
  • Commands
    • :about
    • :help

Screenshots

-
2YJVIox - Kepler - v21 Emulator [Java, MariaDB, Netty] - RaGEZONE Forums


NJ7ngtJ - Kepler - v21 Emulator [Java, MariaDB, Netty] - RaGEZONE Forums



Source code

The source code is available through GithHub at:

.

My DCR pack:

Code Snippets

NAVIGATE.java (building the navigator public/private rooms and categories)

Code:
public class NAVIGATE implements MessageEvent {

@Override
public void handle(Player player, NettyRequest reader) {
boolean hideFull = reader.readInt() == 1;
int categoryId = reader.readInt();

NavigatorCategory category = NavigatorManager.getInstance().getCategoryById(categoryId);

if (category == null) {
return;
}

if (category.getMinimumRoleAccess() > player.getDetails().getRank()) {
return;
}

List<NavigatorCategory> subCategories = NavigatorManager.getInstance().getCategoriesByParentId(category.getId());
List<Room> rooms = new ArrayList<>();

int categoryCurrentVisitors = category.getCurrentVisitors();
int categoryMaxVisitors = category.getMaxVisitors();

if (category.isPublicSpaces()) {
for (Room room : RoomManager.getInstance().getRooms()) {
if (room.getData().getCategoryId() != category.getId()) {
continue;
}

if (hideFull && room.getData().getVisitorsNow() >= room.getData().getVisitorsMax()) {
continue;
}

rooms.add(room);
}
} else {
for (Room room : RoomManager.getInstance().replaceQueryRooms(NavigatorDao.getRecentRooms(30, category.getId()))) {
if (room.getData().getCategoryId() != category.getId()) {
continue;
}

if (hideFull && room.getData().getVisitorsNow() >= room.getData().getVisitorsMax()) {
continue;
}

rooms.add(room);
}
}

player.send(new NAVIGATE_LIST(player, category, rooms, hideFull, subCategories, categoryCurrentVisitors, categoryMaxVisitors, player.getDetails().getRank()));

}
}

RoomEntityManager.java snippets

Code:
/**
* Setup handler for the entity to leave room.
*
*   [USER=2000183830]para[/USER]m entity the entity to leave
*/
public void leaveRoom(Entity entity, boolean hotelView) {
if (!this.room.getEntities().contains(entity)) {
return;
}

if (entity.getType() == EntityType.PLAYER) {
PoolHandler.disconnect((Player) entity);
}

RoomTile tile = entity.getRoomUser().getTile();

if (tile != null) {
tile.removeEntity(entity);
}

this.room.getEntities().remove(entity);
this.room.getData().setVisitorsNow(this.room.getEntityManager().getPlayers().size());

this.room.send(new LOGOUT(entity.getRoomUser().getInstanceId()));
this.room.tryDispose(false);

entity.getRoomUser().reset();

// From this point onwards we send packets for the user to leave
if (entity.getType() != EntityType.PLAYER) {
return;
}

Player player = (Player) entity;

if (hotelView) {
player.send(new HOTEL_VIEW());
}
}
 

Attachments

You must be registered for see attachments list
Last edited:
Newbie Spellweaver
Joined
Nov 21, 2011
Messages
66
Reaction score
12
Re: Kepler - v13 Emulator [C11, SQLite3, libuv]

SQLite worth? It's slower and mono-user(no concurrency)...

Wathever, good luck with the project! If you want to test Go i can publish a little emu with handshake in Go. (You did one with python, java, now C11, etc...)
 
Developer
Developer
Joined
Dec 11, 2010
Messages
2,955
Reaction score
2,685
Re: Kepler - v13 Emulator [C11, SQLite3, libuv]

SQLite worth? It's slower and mono-user(no concurrency)...

Wathever, good luck with the project! If you want to test Go i can publish a little emu with handshake in Go. (You did one with python, java, now C11, etc...)

SQLite isn't slow, lol, it's much faster than MySQL. It's actually not a disadvantage, this section is just so used to MySQL it treats anything remotely foreign as being inferior, when it's actually just a nice alternative.

The MySQL C API is horrendous anyways. I had encountered so many unique bugs to do with prepared statements in the API that I resorted to SQLite instead. Overall the code for preparing and selecting with SQLite is smaller than MySQL, and I've not any issues with it since I implemented it.

I had some unique bugs where selecting a row based on username and password, the user and pass had to be the same length and more than 3 characters long, or the fact that the API only allowed me to select 6 rows.
 
Last edited:
Newbie Spellweaver
Joined
Jun 21, 2003
Messages
37
Reaction score
1
Re: Kepler - v13 Emulator [C11, SQLite3, libuv]

Good luck with your development.

I have missed the 2006-ish era time because there are no Habbo v13 retro's around anymore.

I'll be glad to test it out on a server once it comes out.
 
◝(⁰▿⁰)◜Smile◝ (⁰▿⁰)◜
Developer
Joined
May 29, 2007
Messages
2,167
Reaction score
898
Re: Kepler - v13 Emulator [C11, SQLite3, libuv]

SQLite worth? It's slower and mono-user(no concurrency)...

Wathever, good luck with the project! If you want to test Go i can publish a little emu with handshake in Go. (You did one with python, java, now C11, etc...)

I think it's worth it if the project isn't going to have a huge user base since it's compact and easy to use.
 
Developer
Developer
Joined
Dec 11, 2010
Messages
2,955
Reaction score
2,685
Re: Kepler - v13 Emulator [C11, SQLite3, libuv]

I think it's worth it if the project isn't going to have a huge user base since it's compact and easy to use.

It doesn't matter if it has a large user base or not if all the queries are executed in the same thread.
 
Developer
Developer
Joined
Dec 11, 2010
Messages
2,955
Reaction score
2,685
Re: Kepler - v13 Emulator [C11, SQLite3, libuv]

Pathfinder has finally been added with a thread pool system, supports multiple users, collision still needs to be further improved to detect public room furniture and other players, but so far it will stop you from walking outside the bounds of the map and stops the player from going up and down steep heights.

Short video for the interested:

s1fyPYx - Kepler - v21 Emulator [Java, MariaDB, Netty] - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Newbie Spellweaver
Joined
Nov 21, 2011
Messages
66
Reaction score
12
Re: Kepler - v13 Emulator [C11, SQLite3, libuv]

Hey Alex! Are tour project un github? It will be interesting! I will check that and start a little project in Go based on your server just for improve muy Go.

Thanks!
 
Newbie Spellweaver
Joined
Jun 21, 2003
Messages
37
Reaction score
1
Re: Kepler - v13 Emulator [C11, SQLite3, libuv]

I really like the development it definately brings back the old roots that I have missed

I'd definatly buy a server to run this on if you are ever planning on releasing it that would be nice

Probably have said this before in a previous reply but I'm just so thrilled to finally see the old roots come back to the place where it belongs to



Good luck my friend
 
Developer
Developer
Joined
Dec 11, 2010
Messages
2,955
Reaction score
2,685
Re: Kepler - v13 Emulator [C11, SQLite3, libuv]

Retail v13 only prevents going *up* steep heights. You can drop from any height. Pretty much so you don't get stuck somewhere high.

I worded the post quickly... :eek:tt1:

Right now the max height the player can go up is 1.5 squares and the max height to go down is 4 squares.

I really like the development it definately brings back the old roots that I have missed

I'd definatly buy a server to run this on if you are ever planning on releasing it that would be nice

Probably have said this before in a previous reply but I'm just so thrilled to finally see the old roots come back to the place where it belongs to

Good luck my friend

The server will be released, otherwise I wouldn't post a development thread about this. :D:

Hey Alex! Are tour project un github? It will be interesting! I will check that and start a little project in Go based on your server just for improve muy Go.

Thanks!

The project is on GitHub, but right now the source is private because there's too much changing for me to consider making it public yet. This is an open-source project however, and it will be open to the public once I feel there's enough features added.
 
Skilled Illusionist
Joined
Dec 27, 2008
Messages
311
Reaction score
205
Re: Kepler - v13 Emulator [C11, SQLite3, libuv]

Hey Quack , you will enable SSO Login for PHP ? , because i'm making a CMS like zabboweb with PHP...

A picutre:
awbaHQm - Kepler - v21 Emulator [Java, MariaDB, Netty] - RaGEZONE Forums

6WaFqOc - Kepler - v21 Emulator [Java, MariaDB, Netty] - RaGEZONE Forums

s19WH5A - Kepler - v21 Emulator [Java, MariaDB, Netty] - RaGEZONE Forums




I almost forgot , can you enable the Habbo Welcome Tutorial with the Maid:


Quackster - Kepler - v21 Emulator [Java, MariaDB, Netty] - RaGEZONE Forums


i Remember she give to new users the Welcome Green Mat... Sorry my english i from brazil...
 

Attachments

You must be registered for see attachments list
Last edited:
Joined
Aug 10, 2011
Messages
7,401
Reaction score
3,299
Re: Kepler - v13 Emulator [C11, SQLite3, libuv]

It doesn't matter if it has a large user base or not if all the queries are executed in the same thread.

No thats bad. You don't want to rely your SQL on just one thread. Then your whole server will be throttled to that single thread.

Also why are you using a C collections library when C++ has stl....
 
Last edited:
Skilled Illusionist
Joined
Dec 27, 2008
Messages
311
Reaction score
205
Re: Kepler - v13 Emulator [C11, SQLite3, libuv]

Hey Quack so , you will enable SSO Login for the emulator ?
 
Custom Title Activated
Loyal Member
Joined
Oct 26, 2012
Messages
2,357
Reaction score
1,086
Re: Kepler - v13 Emulator [C11, SQLite3, libuv]

Hey, cool idea! It's a sad thing shockwave is barely usable (only usable on Windows with Palemoon or older Firefox versions and through a lot of winecrap on Linux maybe). Still it's cool to see something else than C#/Java for a change :)

Keep up the good work. Any idea how complete you'll make it?
 
Developer
Developer
Joined
Dec 11, 2010
Messages
2,955
Reaction score
2,685
Re: Kepler - v13 Emulator [C11, SQLite3, libuv]

Changelog

- Added better collision around solid furniture for public rooms.
- Added sitting and laying support public rooms.
- Added proper "chat" and shout" where if you're a certain distance away, the chat gets distorted, or you won't be able to hear it at all if you're too far away, but chat works for up close. Shout works globally across the room.
- Added guest room categories and private rooms appearing in these rooms.

- Fixed a few bits of bugged furniture for Club Mammoth/Lido I and II/Sunset Cafe
- Fixed heightmap for Club Mammoth (some reason wouldn't let you walk at all, until I found out I was using the wrong heightmap).
- Fixed bugs where the walk timer got initialised twice when going from a public to a private room.

Distorted chat:

Axkq7sx - Kepler - v21 Emulator [Java, MariaDB, Netty] - RaGEZONE Forums


From the chatter's perspective:

A0ZZb9 - Kepler - v21 Emulator [Java, MariaDB, Netty] - RaGEZONE Forums


Guest rooms and categories with population in navigator:

hp8gnjl - Kepler - v21 Emulator [Java, MariaDB, Netty] - RaGEZONE Forums


Hey Quack so , you will enable SSO Login for the emulator ?

Depends if v13 has it implemented. :eek:tt1:

Hey, cool idea! It's a sad thing shockwave is barely usable (only usable on Windows with Palemoon or older Firefox versions and through a lot of winecrap on Linux maybe). Still it's cool to see something else than C#/Java for a change :)

Keep up the good work. Any idea how complete you'll make it?

I'll probably do the basics and we'll see from there, I'm unsure on parts like battleball/camera etc, but I will see what I can do. I see other servers have camera working so I'll definitely be looking into it. The gamehalls should be fun to do though :):
 

Attachments

You must be registered for see attachments list
Skilled Illusionist
Joined
Dec 27, 2008
Messages
311
Reaction score
205
Re: Kepler - v13 Emulator [C11, SQLite3, libuv]

The v13 have it , because i use the waybackmachine and i access Habbo.com.br in 2006 with v13 and i remeber v13 with habbo exchange annoucment with v12 i guess, and i checked in HabboxForum the Habbo Home comes with v13 so the Blue Website with SSO login...



I Hope you can enable SSO Login will be awesome work on a CMS with Habbo Homes working , Habbo Groups , Room Acess by website...



And Buy Habbo Club by website...



Man you can make the Habbo Old tutorial works too , you now with the Maid and the green carpet!
 
Developer
Developer
Joined
Dec 11, 2010
Messages
2,955
Reaction score
2,685
Re: Kepler - v13 Emulator [C11, SQLite3, libuv]

The v13 have it , because i use the waybackmachine and i access Habbo.com.br in 2006 with v13 and i remeber v13 with habbo exchange annoucment with v12 i guess, and i checked in HabboxForum the Habbo Home comes with v13 so the Blue Website with SSO login...



I Hope you can enable SSO Login will be awesome work on a CMS with Habbo Homes working , Habbo Groups , Room Acess by website...



And Buy Habbo Club by website...



Man you can make the Habbo Old tutorial works too , you now with the Maid and the green carpet!

I'll definitely look into it, for sure, but it's not really a priority at the moment. However, that doesn't mean it won't be added. I really liked that 2005-2006 style too, that's when I first started playing Habbo. :):
 
Status
Not open for further replies.
Back
Top