diff --git a/app/client/services/buffer.js b/app/client/services/buffer.js
index a77d4ce..a3cd2f2 100644
--- a/app/client/services/buffer.js
+++ b/app/client/services/buffer.js
@@ -2,15 +2,43 @@
* Buffer Service
*/
-module.exports = function() {
+module.exports = function(socket) {
+ socket.on('buffer:info', function(string) {
+ $('#buffer').append('> ' + string + '
\n');
+ $('#buffer').scrollTop($('#buffer').prop('scrollHeight'));
+ });
+
+ socket.on('buffer:success', function(string) {
+ $('#buffer').append('> ' + string + '
\n');
+ $('#buffer').scrollTop($('#buffer').prop('scrollHeight'));
+ });
+
+ socket.on('buffer:error', function(string) {
+ $('#buffer').append('> ' + error + '
')
+ $('#buffer').scrollTop($('#buffer').prop('scrollHeight'));
+ });
+
+ socket.on('bot:message', function(string) {
+ $('#buffer').append(string + '
');
+ $('#buffer').scrollTop($('#buffer').prop('scrollHeight'));
+ });
+
+ socket.on('reconnect', function() {
+ $('#buffer').append('> Connected to chat server established
')
+ $('#buffer').scrollTop($('#buffer').prop('scrollHeight'));
+ });
+
+ socket.on('disconnect', function() {
+ $('#buffer').append('> Connection to chat server has been lost. Reconnecting...
')
+ $('#buffer').scrollTop($('#buffer').prop('scrollHeight'));
+ });
+
+ // service exposes this
return {
append: function(string) {
$('#buffer').append(string + '
\n');
- },
- error: function(error) {
- $('#buffer').append('' + error.errorMessage + '
')
+ $('#buffer').scrollTop($('#buffer').prop('scrollHeight'));
}
}
-
};
diff --git a/app/server/bot/events/index.js b/app/server/bot/events/index.js
new file mode 100644
index 0000000..0150d74
--- /dev/null
+++ b/app/server/bot/events/index.js
@@ -0,0 +1,56 @@
+module.exports = function(socket) {
+
+ var bot = socket.mcbot;
+
+ // login event
+ bot.on('login', function() {
+ socket.emit('buffer:success', 'Successfully logged in as ' + bot.username + ' with entity id ' + bot.entity.id);
+ socket.emit('bot:login')
+ });
+
+ // spawn event
+ bot.on('spawn', function() {
+ var pos = bot.entity.position;
+ socket.emit('buffer:info', 'Spawned at X:' + pos.x + ', Y:' + pos.y + ', Z:' + pos.z);
+ });
+
+ // message event
+ bot.on('message', function(message) {
+
+ // empty buffer
+ var buffer = '';
+
+ if (message.extra) {
+
+ // for each piece of text
+ message.extra.forEach(function(data) {
+ var text = data.text; // get the text
+ if (text) { // if text is available
+ text = text.replace(/§k/ig, ''); // remove crazy format
+ text = text.replace(/§l/ig, ''); // remove bold format
+ buffer += text; // add the text to the buffer
+ }
+ });
+
+ } else if (message.text) {
+ buffer += message.text;
+ } else {
+ return;
+ }
+
+ if (buffer.length === 0) {
+ return;
+ }
+
+ // format the buffer with the correct coloring
+ buffer = buffer.replace(/§([0-9abcdef])([^§]*)/ig, function replace(regex, color, msg) {
+ return ''+msg+'';
+ });
+
+ // send line back to the client
+ socket.emit('bot:message', buffer);
+ console.log(buffer);
+
+ });
+
+};
\ No newline at end of file
diff --git a/app/server/bot/index.js b/app/server/bot/index.js
new file mode 100644
index 0000000..a0f60a6
--- /dev/null
+++ b/app/server/bot/index.js
@@ -0,0 +1,5 @@
+module.exports = function(socket) {
+
+ require('./events')(socket);
+
+};
diff --git a/app/server/bot.js b/app/server/bot_working.js
similarity index 100%
rename from app/server/bot.js
rename to app/server/bot_working.js
diff --git a/app/server/index.js b/app/server/index.js
index 7996e1c..6597547 100755
--- a/app/server/index.js
+++ b/app/server/index.js
@@ -34,5 +34,5 @@ app.use('/', express.static(path.join(__dirname, '../../public')));
// initialize http and socket servers
server.listen(3000, function() {
- console.log('> Server running on port 3000')
+ console.log('\033c> Server running on port 3000\n');
});
diff --git a/app/server/sockets/events/connection.js b/app/server/sockets/events/connection.js
new file mode 100644
index 0000000..7d6fff0
--- /dev/null
+++ b/app/server/sockets/events/connection.js
@@ -0,0 +1,33 @@
+var mineflayer = require('mineflayer');
+
+module.exports = function(socket) {
+
+ socket.on('server:connect', function(data, response) {
+
+ if (socket.mcbot) {
+ socket.mcbot.end();
+ }
+
+ // create mineflayer bot
+ socket.mcbot = mineflayer.createBot({
+ host: data.hostname,
+ port: data.port,
+ username: data.username,
+ password: data.password
+ });
+
+ // prepare for errors
+ socket.mcbot.on('error', function(error) {
+ socket.emit('buffer:error', error);
+ });
+
+ // bind bot events
+ require('../../bot')(socket);
+
+ // debug
+ console.log('login > ' + data.hostname + ':' + data.port + ' - ' + ' Username: ' + data.username);
+ socket.emit('buffer:info', 'Connecting to server ' + data.hostname + ':' + data.port);
+
+ });
+
+};
diff --git a/app/server/sockets/events/disconnection.js b/app/server/sockets/events/disconnection.js
new file mode 100644
index 0000000..93107a0
--- /dev/null
+++ b/app/server/sockets/events/disconnection.js
@@ -0,0 +1,9 @@
+module.exports = function(socket) {
+
+ socket.on('disconnect', function() {
+ if (socket.mcbot) {
+ socket.mcbot.end();
+ }
+ });
+
+};
\ No newline at end of file
diff --git a/app/server/sockets/index.js b/app/server/sockets/index.js
index 50bf010..ed2c823 100755
--- a/app/server/sockets/index.js
+++ b/app/server/sockets/index.js
@@ -5,22 +5,9 @@ module.exports = function(io) {
io.on('connection', function(socket) {
- socket.on('server:connect', function(data, response) {
- socket.mcbot = mineflayer.createBot({
- host: data.hostname,
- port: data.port,
- username: data.username,
- password: data.password
- });
- socket.mcbot.on('error', function(error) {
- console.log(error);
- socket.emit('bot:error', error);
- });
- });
-
- socket.on('disconnect', function() {
- socket.mcbot = null;
- });
+ // bind all events to the socket
+ require('./events/connection')(socket);
+ require('./events/disconnection')(socket);
});
diff --git a/public/css/style.css b/public/css/style.css
index 7960f22..e09192f 100755
--- a/public/css/style.css
+++ b/public/css/style.css
@@ -1,3 +1,10 @@
+body, html {
+ width: 100%;
+ height: 100%;
+ margin: 0;
+ overflow: hidden;
+}
+
body {
padding-top: 80px;
}
@@ -10,6 +17,8 @@ body {
right: 0;
color: #D6D6D6;
padding: 0 20px;
+ overflow: scroll;
+ padding-bottom: 10px;
}
#chat {
position: absolute;
diff --git a/public/templates/windows/nav.html b/public/templates/windows/nav.html
index 287eeb3..2891387 100644
--- a/public/templates/windows/nav.html
+++ b/public/templates/windows/nav.html
@@ -1,7 +1,7 @@