@ -1,6 +1,7 @@
let cfg
let bot
let mcData
// import v from 'vec3'
const v = require ( 'vec3' )
function block ( pos ) {
@ -51,34 +52,47 @@ function item(
}
function entity ( name ) {
const entity = bot . nearestEntity ( ( entity ) => {
const entity = typeof name === "string" ? bot . nearestEntity ( ( entity ) => {
const ename = entity . name || entity . username
return name && ename ? ename == name : true
} )
} ) : entity
console . log ( entity )
if ( ! entity ) {
cfg . quiet || bot . chat ( "no entity" )
return entity
}
let info = [ entity . type , entity . name || entity . username ]
let info = [ entity . type , entity . username || entity . name ]
// TODO various info depending on the type of entity; player, villager, etc
if ( entity . metadata ) info . push ( "len: " + entity . metadata . length )
cfg . quiet || bot . chat ( info . join ( "; " ) )
return entity
}
function command ( message _parts ) {
function command ( message _parts , player ) {
if ( message _parts . length > 0 ) {
cfg . info . recentCommand = message _parts
}
switch ( message _parts . length ) {
case 0 :
// TODO most recent command?
block ( )
if ( cfg . info . recentCommand ) {
command ( cfg . info . recentCommand , player )
} else {
// TODO dispatch on instance of entity, block, etc..
// TODO have the logic inside the function or with a utility function
block ( player . position || player ? . entity . position || null )
}
break ;
case 1 :
switch ( message _parts [ 0 ] ) {
case "i" :
case "item" :
item ( )
break
case "e" :
case "entity" :
entity ( )
break
case "b" :
case "block" :
default :
block ( )
@ -89,9 +103,11 @@ function command(message_parts) {
case 2 :
switch ( message _parts [ 0 ] ) {
case "i" :
case "item" :
item ( message _parts [ 1 ] )
break
case "e" :
case "entity" :
default :
entity ( message _parts [ 1 ] )
@ -101,6 +117,7 @@ function command(message_parts) {
case 4 :
switch ( message _parts [ 0 ] ) {
case "b" :
case "block" :
default :
block ( message _parts . slice ( 1 ) )
@ -110,6 +127,7 @@ function command(message_parts) {
break ;
default :
cfg . quiet || bot . chat ( "info: unknown command" )
break ;
}
}
@ -119,6 +137,7 @@ const load = (config) => {
bot = cfg . bot
cfg . info = {
quiet : cfg . quiet ,
recentCommand : null ,
}
mcData = bot . mcData || ( bot . mcData = require ( 'minecraft-data' ) ( bot . version ) )
}