EssentialsX / Essentials

The modern Essentials suite for Spigot and Paper.
https://essentialsx.net
GNU General Public License v3.0
1.96k stars 980 forks source link

Error [Essentials] Command whois failed: #2208

Closed NullCase closed 6 years ago

NullCase commented 6 years ago

Information

Full output of /ess version:

Paper 1.13.1 version 355. EssX, Chat, Spawn 2.15.0.45

Server log (upload logs/latest.log to Gist):

10.10 18:39:46 [Server] ERROR [Essentials] Command whois failed: 10.10 18:39:46 [Server] INFO java.lang.NoSuchFieldError: PLAY_ONE_TICK 10.10 18:39:46 [Server] INFO at com.earth2me.essentials.commands.Commandwhois.run(Commandwhois.java:39) ~[?:?] 10.10 18:39:46 [Server] INFO at com.earth2me.essentials.commands.EssentialsCommand.run(EssentialsCommand.java:162) ~[?:?] 10.10 18:39:46 [Server] INFO at com.earth2me.essentials.commands.EssentialsCommand.run(EssentialsCommand.java:157) ~[?:?] 10.10 18:39:46 [Server] INFO at com.earth2me.essentials.Essentials.onCommandEssentials(Essentials.java:522) ~[?:?] 10.10 18:39:46 [Server] INFO at com.earth2me.essentials.Essentials.onCommand(Essentials.java:435) ~[?:?] 10.10 18:39:46 [Server] INFO at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[patched_1.13.1.jar:git-Paper-355] 10.10 18:39:46 [Server] INFO at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:151) ~[patched_1.13.1.jar:git-Paper-355] 10.10 18:39:46 [Server] INFO at org.bukkit.craftbukkit.v1_13_R2.CraftServer.dispatchCommand(CraftServer.java:729) ~[patched_1.13.1.jar:git-Paper-355] 10.10 18:39:46 [Server] INFO at net.minecraft.server.v1_13_R2.PlayerConnection.handleCommand(PlayerConnection.java:1743) ~[patched_1.13.1.jar:git-Paper-355] 10.10 18:39:46 [Server] INFO at net.minecraft.server.v1_13_R2.PlayerConnection.a(PlayerConnection.java:1547) ~[patched_1.13.1.jar:git-Paper-355] 10.10 18:39:46 [Server] INFO at net.minecraft.server.v1_13_R2.PacketPlayInChat.a(PacketPlayInChat.java:45) ~[patched_1.13.1.jar:git-Paper-355] 10.10 18:39:46 [Server] INFO at net.minecraft.server.v1_13_R2.PacketPlayInChat.a(PacketPlayInChat.java:5) ~[patched_1.13.1.jar:git-Paper-355] 10.10 18:39:46 [Server] INFO at net.minecraft.server.v1_13_R2.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:12) ~[patched_1.13.1.jar:git-Paper-355] 10.10 18:39:46 [Server] INFO at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_181] 10.10 18:39:46 [Server] INFO at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_181] 10.10 18:39:46 [Server] INFO at net.minecraft.server.v1_13_R2.SystemUtils.a(SystemUtils.java:109) ~[patched_1.13.1.jar:git-Paper-355] 10.10 18:39:46 [Server] INFO at net.minecraft.server.v1_13_R2.MinecraftServer.b(MinecraftServer.java:1016) ~[patched_1.13.1.jar:git-Paper-355] 10.10 18:39:46 [Server] INFO at net.minecraft.server.v1_13_R2.DedicatedServer.b(DedicatedServer.java:434) ~[patched_1.13.1.jar:git-Paper-355] 10.10 18:39:46 [Server] INFO at net.minecraft.server.v1_13_R2.MinecraftServer.a(MinecraftServer.java:943) ~[patched_1.13.1.jar:git-Paper-355] 10.10 18:39:46 [Server] INFO at net.minecraft.server.v1_13_R2.MinecraftServer.run(MinecraftServer.java:841) ~[patched_1.13.1.jar:git-Paper-355] 10.10 18:39:46 [Server] INFO at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]

EssentialsX config (upload plugins/Essentials/config.yml to Gist):

############################################################

+------------------------------------------------------+

| Notes |

+------------------------------------------------------+

############################################################

If you want to use special characters in this document, such as accented letters, you MUST save the file as UTF-8, not ANSI.

If you receive an error when Essentials loads, ensure that:

- No tabs are present: YAML only allows spaces

- Indents are correct: YAML hierarchy is based entirely on indentation

- You have "escaped" all apostrophes in your text: If you want to write "don't", for example, write "don''t" instead (note the doubled apostrophe)

- Text with symbols is enclosed in single or double quotation marks

If you have problems join the Essentials help support channel: http://tiny.cc/EssentialsChat

############################################################

+------------------------------------------------------+

| Essentials (Global) |

+------------------------------------------------------+

############################################################

A color code between 0-9 or a-f. Set to 'none' to disable.

ops-name-color: 6

The character(s) to prefix all nicknames, so that you know they are not true usernames.

nickname-prefix: '`'

The maximum length allowed in nicknames. The nickname prefix is included in this.

max-nick-length: 50

Disable this if you have any other plugin, that modifies the displayname of a user.

change-displayname: true

When this option is enabled, the (tab) player list will be updated with the displayname.

The value of change-displayname (above) has to be true.

change-playerlist: true

When EssentialsChat.jar isn't used, force essentials to add the prefix and suffix from permission plugins to displayname.

This setting is ignored if EssentialsChat.jar is used, and defaults to 'true'.

The value of change-displayname (above) has to be true.

Do not edit this setting unless you know what you are doing!

add-prefix-suffix: false

If the teleport destination is unsafe, should players be teleported to the nearest safe location?

If this is set to true, Essentials will attempt to teleport players close to the intended destination.

If this is set to false, attempted teleports to unsafe locations will be cancelled with a warning.

teleport-safety: true

The delay, in seconds, required between /home, /tp, etc.

teleport-cooldown: 0

The delay, in seconds, before a user actually teleports. If the user moves or gets attacked in this timeframe, the teleport never occurs.

teleport-delay: 6000

The delay, in seconds, a player can't be attacked by other players after they have been teleported by a command.

This will also prevent the player attacking other players.

teleport-invulnerability: 4

The delay, in seconds, required between /heal or /feed attempts.

heal-cooldown: 60

What to prevent from /item and /give.

e.g item-spawn-blacklist: 10,11,46

item-spawn-blacklist:

Set this to true if you want permission based item spawn rules.

Note: The blacklist above will be ignored then.

Example permissions (these go in your permissions manager):

- essentials.itemspawn.item-all

- essentials.itemspawn.item-[itemname]

- essentials.itemspawn.item-[itemid]

- essentials.give.item-all

- essentials.give.item-[itemname]

- essentials.give.item-[itemid]

- essentials.unlimited.item-all

- essentials.unlimited.item-[itemname]

- essentials.unlimited.item-[itemid]

- essentials.unlimited.item-bucket # Unlimited liquid placing

#

For more information, visit http://wiki.ess3.net/wiki/Command_Reference/ICheat#Item.2FGive

permission-based-item-spawn: false

Mob limit on the /spawnmob command per execution.

spawnmob-limit: 1

Shall we notify users when using /lightning?

warn-on-smite: true

The motd and rules are now configured in the files motd.txt and rules.txt.

When a command conflicts with another plugin, by default, Essentials will try to force the OTHER plugin to take priority.

Commands in this list, will tell Essentials to 'not give up' the command to other plugins.

In this state, which plugin 'wins' appears to be almost random.

#

If you have two plugin with the same command and you wish to force Essentials to take over, you need an alias.

To force essentials to take 'god' alias 'god' to 'egod'.

See http://wiki.bukkit.org/Commands.yml#aliases for more information.

overridden-commands:

- god

- info

Disabling commands here will prevent Essentials handling the command, this will not affect command conflicts.

You should not have to disable commands used in other plugins, they will automatically get priority.

See http://wiki.bukkit.org/Commands.yml#aliases to map commands to other plugins.

disabled-commands:

- nick

These commands will be shown to players with socialSpy enabled.

You can add commands from other plugins you may want to track or

remove commands that are used for something you dont want to spy on.

Set - '*' in order to listen on all possible commands.

socialspy-commands:

If you do not wish to use a permission system, you can define a list of 'player perms' below.

This list has no effect if you are using a supported permissions system.

If you are using an unsupported permissions system, simply delete this section.

Whitelist the commands and permissions you wish to give players by default (everything else is op only).

These are the permissions without the "essentials." part.

player-commands:

Note: All items MUST be followed by a quantity!

All kit names should be lower case, and will be treated as lower in permissions/costs.

Syntax: - itemID[:DataValue/Durability] Amount [Enchantment:Level].. [itemmeta:value]...

For Item Meta information visit http://wiki.ess3.net/wiki/Item_Meta

'delay' refers to the cooldown between how often you can use each kit, measured in seconds.

Set delay to -1 for a one time kit.

For more information, visit http://wiki.ess3.net/wiki/Kits

kits:

tools:

delay: 10

items:

- 272 1

- 273 1

- 274 1

- 275 1

dtools:

delay: 600

items:

- 278 1 efficiency:1 durability:1 fortune:1 name:&4Gigadrill lore:The_drillthat&npierces|the_heavens

- 277 1 digspeed:3 name:Dwarf lore:Diggy|Diggy|Hole

- 298 1 color:255,255,255 name:Top_Hat lore:Good_day,_Good_day

- 279:780 1

notch:

delay: 6000

items:

- 397:3 1 player:Notch

color:

delay: 6000

items:

- 387 1 title:&4Book&9o&6Colors author:KHobbits lore:Ingame_color_codes book:Colors

firework:

delay: 6000

items:

- 401 1 name:Angry_Creeper color:red fade:green type:creeper power:1

- 401 1 name:StarryNight color:yellow,orange fade:blue type:star effect:trail,twinkle power:1

- 401 2 name:SolarWind color:yellow,orange fade:red shape:large effect:twinkle color:yellow,orange fade:red shape:ball effect:trail color:red,purple fade:pink shape:star effect:trail power:1

Essentials Sign Control

See http://wiki.ess3.net/wiki/Sign_Tutorial for instructions on how to use these.

To enable signs, remove # symbol. To disable all signs, comment/remove each sign.

Essentials colored sign support will be enabled when any sign types are enabled.

Color is not an actual sign, it's for enabling using color codes on signs, when the correct permissions are given.

enabledSigns:

How many times per second can Essentials signs be interacted with per player.

Values should be between 1-20, 20 being virtually no lag protection.

Lower numbers will reduce the possibility of lag, but may annoy players.

sign-use-per-second: 4

Backup runs a batch/bash command while saving is disabled.

backup:

Interval in minutes.

interval: 30

Unless you add a valid backup command or script here, this feature will be useless.

Use 'save-all' to simply force regular world saving without backup.

command: 'rdiff-backup World1 backups/World1'

Set this true to enable permission per warp.

per-warp-permission: false

Sort output of /list command by groups.

You can hide and merge the groups displayed in /list by defining the desired behaviour here.

Detailed instructions and examples can be found on the wiki: http://wiki.ess3.net/wiki/List

list:

To merge groups, list the groups you wish to merge

#Staff: owner admin moderator
Admins: owner admin
# To limit groups, set a max user limit
#builder: 20
# To hide groups, set the group as hidden
#default: hidden
# Uncomment the line below to simply list all players with no grouping
#Players: '*'

More output to the console.

debug: false

Set the locale for all messages.

If you don't set this, the default locale of the server will be used.

For example, to set language to English, set locale to en, to use the file "messages_en.properties".

Don't forget to remove the # in front of the line.

For more information, visit http://wiki.ess3.net/wiki/Locale

locale: messages_en.properties

Turn off god mode when people leave the server.

remove-god-on-disconnect: true

Auto-AFK

After this timeout in seconds, the user will be set as AFK.

This feature requires the player to have essentials.afk.auto node.

Set to -1 for no timeout.

auto-afk: 300

Auto-AFK Kick

After this timeout in seconds, the user will be kicked from the server.

essentials.afk.kickexempt node overrides this feature.

Set to -1 for no timeout.

auto-afk-kick: 3600

Set this to true, if you want to freeze the player, if the player is AFK.

Other players or monsters can't push the player out of AFK mode then.

This will also enable temporary god mode for the AFK player.

The player has to use the command /afk to leave the AFK mode.

freeze-afk-players: false

When the player is AFK, should he be able to pickup items?

Enable this, when you don't want people idling in mob traps.

disable-item-pickup-while-afk: false

This setting controls if a player is marked as active on interaction.

When this setting is false, the player would need to manually un-AFK using the /afk command.

cancel-afk-on-interact: true

Should we automatically remove afk status when a player moves?

Player will be removed from AFK on chat/command regardless of this setting.

Disable this to reduce server lag.

cancel-afk-on-move: true

You can disable the death messages of Minecraft here.

death-messages: true

Should players with permissions be able to join and part silently?

You can control this with essentials.silentjoin and essentials.silentquit permissions if it is enabled.

In addition, people with essentials.silentjoin.vanish will be vanished on join.

allow-silent-join-quit: false

You can set a custom join message here, set to "none" to disable.

You may use color codes, use {USERNAME} the player's name or {PLAYER} for the player's displayname.

custom-join-message: "{PLAYER} has joined The New World!"

You can set a custom quit message here, set to "none" to disable.

You may use color codes, use {USERNAME} the player's name or {PLAYER} for the player's displayname.

custom-quit-message: "none"

Add worlds to this list, if you want to automatically disable god mode there.

no-god-in-worlds:

- world_nether

Set to true to enable per-world permissions for teleporting between worlds with essentials commands.

This applies to /world, /back, /tp[a|o][here|all], but not warps.

Give someone permission to teleport to a world with essentials.worlds.

This does not affect the /home command, there is a separate toggle below for this.

world-teleport-permissions: false

The number of items given if the quantity parameter is left out in /item or /give.

If this number is below 1, the maximum stack size size is given. If over-sized stacks.

are not enabled, any number higher than the maximum stack size results in more than one stack.

default-stack-size: -1

Over-sized stacks are stacks that ignore the normal max stack size.

They can be obtained using /give and /item, if the player has essentials.oversizedstacks permission.

How many items should be in an over-sized stack?

oversized-stacksize: 64

Allow repair of enchanted weapons and armor.

If you set this to false, you can still allow it for certain players using the permission.

essentials.repair.enchanted

repair-enchanted: true

Allow 'unsafe' enchantments in kits and item spawning.

Warning: Mixing and overleveling some enchantments can cause issues with clients, servers and plugins.

unsafe-enchantments: false

Do you want Essentials to keep track of previous location for /back in the teleport listener?

If you set this to true any plugin that uses teleport will have the previous location registered.

register-back-in-listener: false

Delay to wait before people can cause attack damage after logging in.

login-attack-delay: 5

Set the max fly speed, values range from 0.1 to 1.0

max-fly-speed: 1.0

Set the max walk speed, values range from 0.1 to 1.0

max-walk-speed: 0.8

Set the maximum amount of mail that can be sent within a minute.

mails-per-minute: 6

Set the maximum time /tempban can be used for in seconds.

Set to -1 to disable, and essentials.tempban.unlimited can be used to override.

max-tempban-time: 1320

############################################################

+------------------------------------------------------+

| EssentialsHome |

+------------------------------------------------------+

############################################################

Allows people to set their bed at daytime.

update-bed-at-daytime: false

Set to true to enable per-world permissions for using homes to teleport between worlds.

This applies to the /home only.

Give someone permission to teleport to a world with essentials.worlds.

world-home-permissions: false

Allow players to have multiple homes.

Players need essentials.sethome.multiple before they can have more than 1 home.

You can set the default number of multiple homes using the 'default' rank below.

To remove the home limit entirely, give people 'essentials.sethome.multiple.unlimited'.

To grant different home amounts to different people, you need to define a 'home-rank' below.

Create the 'home-rank' below, and give the matching permission: essentials.sethome.multiple.

For more information, visit http://wiki.ess3.net/wiki/Multihome

sethome-multiple:

default: 1

fated: 2

limited: 3

tangled: 4

stateless: 5

liberated: 6

unleemiteed: 7

genuine: 8

virtuous: 9

staff: 10

In this example someone with 'essentials.sethome.multiple' and 'essentials.sethome.multiple.vip' will have 5 homes.

Remember, they MUST have both permission nodes in order to be able to set multiple homes.

Set the timeout, in seconds for players to accept a tpa before the request is cancelled.

Set to 0 for no timeout.

tpa-accept-cancellation: 1

############################################################

+------------------------------------------------------+

| EssentialsEco |

+------------------------------------------------------+

############################################################

For more information, visit http://wiki.ess3.net/wiki/Essentials_Economy

Defines the balance with which new players begin. Defaults to 0.

starting-balance: 0

worth-# defines the value of an item when it is sold to the server via /sell.

These are now defined in worth.yml

Defines the cost to use the given commands PER USE.

Some commands like /repair have sub-costs, check the wiki for more information.

command-costs:

/example costs $1000 PER USE

example: 1000

/kit tools costs $1500 PER USE

kit-tools: 1500

Set this to a currency symbol you want to use.

Remember, if you want to use special characters in this document,

such as accented letters, you MUST save the file as UTF-8, not ANSI.

currency-symbol: '$'

Set the maximum amount of money a player can have.

The amount is always limited to 10 trillion because of the limitations of a java double.

max-money: 10000000000000

Set the minimum amount of money a player can have (must be above the negative of max-money).

Setting this to 0, will disable overdrafts/loans completely. Users need 'essentials.eco.loan' perm to go below 0.

min-money: 0

Enable this to log all interactions with trade/buy/sell signs and sell command.

economy-log-enabled: true

############################################################

+------------------------------------------------------+

| EssentialsHelp |

+------------------------------------------------------+

############################################################

Show other plugins commands in help.

non-ess-in-help: true

Hide plugins which do not give a permission.

You can override a true value here for a single plugin by adding a permission to a user/group.

The individual permission is: essentials.help., anyone with essentials. or '' will see all help regardless.

You can use negative permissions to remove access to just a single plugins help if the following is enabled.

hide-permissionless-help: true

############################################################

+------------------------------------------------------+

| EssentialsChat |

+------------------------------------------------------+

############################################################

This section requires the EssentialsChat.jar to work.

chat:

If EssentialsChat is installed, this will define how far a player's voice travels, in blocks. Set to 0 to make all chat global.

Note that users with the "essentials.chat.spy" permission will hear everything, regardless of this setting.

Users with essentials.chat.shout can override this by prefixing text with an exclamation mark (!)

Users with essentials.chat.question can override this by prefixing text with a question mark (?)

You can add command costs for shout/question by adding chat-shout and chat-question to the command costs section."

radius: 0

Chat formatting can be done in two ways, you can either define a standard format for all chat.

Or you can give a group specific chat format, to give some extra variation.

For more information of chat formatting, check out the wiki: http://wiki.ess3.net/wiki/Chat_Formatting

format: '{DISPLAYNAME}: {MESSAGE}'

format: '&7[{GROUP}]&r {DISPLAYNAME}&7:&r {MESSAGE}'

group-formats:

Default: '{WORLDNAME} {DISPLAYNAME}&7:&r {MESSAGE}'

Admins: '{WORLDNAME} &c[{GROUP}]&r {DISPLAYNAME}&7:&c {MESSAGE}'

If you are using group formats make sure to remove the '#' to allow the setting to be read.

############################################################

+------------------------------------------------------+

| EssentialsProtect |

+------------------------------------------------------+

############################################################

This section requires the EssentialsProtect.jar to work.

protect:

General physics/behavior modifications.

prevent: lava-flow: false water-flow: false water-bucket-flow: false fire-spread: false lava-fire-spread: false flint-fire: false lightning-fire-spread: false portal-creation: false tnt-explosion: false tnt-playerdamage: false tnt-minecart-explosion: false tnt-minecart-playerdamage: false fireball-explosion: false fireball-fire: false fireball-playerdamage: false witherskull-explosion: false witherskull-playerdamage: false wither-spawnexplosion: false wither-blockreplace: false creeper-explosion: false creeper-playerdamage: false creeper-blockdamage: false enderdragon-blockdamage: false enderman-pickup: false villager-death: false

Monsters won't follow players.

# permission essentials.protect.entitytarget.bypass disables this.
entitytarget: false
# Prevent the spawning of creatures.
spawn:
  creeper: false
  skeleton: false
  spider: false
  giant: false
  zombie: false
  slime: false
  ghast: false
  pig_zombie: false
  enderman: false
  cave_spider: false
  silverfish: false
  blaze: false
  magma_cube: false
  ender_dragon: false
  pig: false
  sheep: false
  cow: false
  chicken: false
  squid: false
  wolf: false
  mushroom_cow: false
  snowman: false
  ocelot: false
  iron_golem: false
  villager: false
  wither: false
  bat: false
  witch: false
  horse: false

Maximum height the creeper should explode. -1 allows them to explode everywhere.

Set prevent.creeper-explosion to true, if you want to disable creeper explosions.

creeper: max-height: -1

Disable various default physics and behaviors.

disable:

Should fall damage be disabled?

fall: false

# Users with the essentials.protect.pvp permission will still be able to attack each other if this is set to true.
# They will be unable to attack users without that same permission node.
pvp: false

# Should drowning damage be disabled?
# (Split into two behaviors; generally, you want both set to the same value.)
drown: false
suffocate: false

# Should damage via lava be disabled?  Items that fall into lava will still burn to a crisp. ;)
lavadmg: false

# Should arrow damage be disabled?
projectiles: false

# This will disable damage from touching cacti.
contactdmg: false

# Burn, baby, burn!  Should fire damage be disabled?
firedmg: false

# Should the damage after hit by a lightning be disabled?
lightning: false

# Should Wither damage be disabled?
wither: false

# Disable weather options?
weather:
  storm: false
  thunder: false
  lightning: false

############################################################

+------------------------------------------------------+

| EssentialsAntiBuild |

+------------------------------------------------------+

############################################################

This section requires the EssentialsAntiBuild.jar to work.

Disable various default physics and behaviors

For more information, visit http://wiki.ess3.net/wiki/AntiBuild

# Should people with build: false in permissions be allowed to build?
# Set true to disable building for those people.
# Setting to false means EssentialsAntiBuild will never prevent you from building.
build: true

# Should people with build: false in permissions be allowed to use items?
# Set true to disable using for those people.
# Setting to false means EssentialsAntiBuild will never prevent you from using items.
use: true

# Should we tell people they are not allowed to build?
warn-on-build-disallow: true

For which block types would you like to be alerted?

You can find a list of IDs in plugins/Essentials/items.csv after loading Essentials for the first time.

10 = lava :: 11 = still lava :: 46 = TNT :: 327 = lava bucket

alert: on-placement: 10,11,46,327 on-use: 327 on-break:

blacklist:

# Which blocks should people be prevented from placing?
placement: 10,11,46,327

# Which items should people be prevented from using?
usage: 327

# Which blocks should people be prevented from breaking?
break:

# Which blocks should not be pushed by pistons?
piston:

# Which blocks should not be dispensed by dispensers
dispenser:

############################################################

+------------------------------------------------------+

| Essentials Spawn / New Players |

+------------------------------------------------------+

############################################################

This section requires essentialsspawn.jar to work.

newbies:

Should we announce to the server when someone logs in for the first time?

If so, use this format, replacing {DISPLAYNAME} with the player name.

If not, set to ''

announce-format: ''

announce-format: '&dWelcome {DISPLAYNAME}&d to Liberty Minecraft: The New World!'

When we spawn for the first time, which spawnpoint do we use?

Set to "none" if you want to use the spawn point of the world.

spawnpoint: newbies

Do we want to give users anything on first join? Set to '' to disable

This kit will be given regardless of cost and permissions, and will not trigger the kit delay.

kit: ''

kit: tools

Set this to lowest, if you want Multiverse to handle the respawning.

Set this to high, if you want EssentialsSpawn to handle the respawning.

Set this to highest, if you want to force EssentialsSpawn to handle the respawning.

respawn-listener-priority: high

When users die, should they respawn at their first home or bed, instead of the spawnpoint?

respawn-at-home: true

End of file <-- No seriously, you're done with configuration.

Details

ran whois command. found this error. It seems like something to report.

Xeyame commented 6 years ago

"Upload to Gist"

Are you running the 1.13 version on your 1.13 server? https://ci.ender.zone/view/All/job/EssentialsX-Experimental/

NullCase commented 6 years ago

Well, you'll think i'm an idiot. I didn't upload to Gist. Looks like i've been running the wrong version.