Giter Site home page Giter Site logo

wmcalliance / bukkitircd Goto Github PK

View Code? Open in Web Editor NEW
5.0 5.0 6.0 1.52 MB

BukkitIRCd was an IRC bridge plugin for Minecraft servers running Bukkit. It creates individual 'bot' users for every player to allow seamless communication.

Home Page: https://wma.im

License: Other

Java 100.00%

bukkitircd's People

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

bukkitircd's Issues

Don't automatically give in-game OPs many flags

Case and point;

WizardCM-mc ([email protected]) has joined #minecraft

  • Minecraft sets mode +q #minecraft WizardCM-mc
  • Minecraft sets mode +a #minecraft WizardCM-mc
  • Minecraft gives channel half-operator status to WizardCM-mc
  • Minecraft gives channel operator status to WizardCM-mc
  • Minecraft gives voice to WizardCM-mc

Kicking a player from IRC doesn't show anything ingame

There are two ways we could go about this;

  1. Display a custom kick message ingame, based on messages,yml
  2. Using the kick-commands option in config.yml, kick the player using that command instead of whatever we're doing now - however, would we then be able to show a custom user name?

I'm leaning towards 2 more, but 1 might be easier and faster as a quick-fix.

Staff channel messages are limited to 299 characters (!pl is a good example)

In minecraft-staff, the response from a command is limited to 299 characters, as shown below.

Should be;

Plugins (68): W4, Privileges, MiniFixes, Memory, CommandViewer, WMABroadcast, RoyalDeath, Vault, Multiverse-Core, uSkyBlock, DevJoined, dynmap, BukkitIRCd, SurvivalGames, SpongeRecipe, Duties, TNTSweeper, ProtocolLib, ConnectFour, MobArena, CleanroomGenerator, Plotty, LagMeter, ZeeSlag, Shortify, WorldEdit, NoCheatPlus, Multiverse-Inventories, CreativeGates, MultiMapsFix, TagAPI, Multiverse-NetherPortals, VanishNoPacket, DeathControl, MCdigr, War, StandardBooks, NCore, Paintball, WorldGuard, TF2, Tetris, SignEdit, ImgMap, MineJong, NBTEdit, UltimateSkyGrid, MonsterMOTD, CommandHelper, AnimalProtect, AntiXRay, The Trashcan, Lockette, NoNewChunk, FirstJoinPlus, ButtonWarp, MobHealth, WorldBorder, Multiverse-Portals, ScriptBlock, Dynmap-WorldGuard, DisguiseCraft, NTheEndAgain, HawkEye, RoyalCommands, ChessCraft, NameTags, LimitedWorldEdit, RoyalChat

Comes through;

Plugins (68): W4, Privileges, MiniFixes, Memory, CommandViewer, WMABroadcast, RoyalDeath, Vault, Multiverse-Core, uSkyBlock, DevJoined, dynmap, BukkitIRCd, SurvivalGames, SpongeRecipe, Duties, TNTSweeper, ProtocolLib, ConnectFour, MobArena, CleanroomGenerator, Plotty, LagMeter, ZeeSlag, Shortify,

Custom debug lines need to be controlled by the debug config option

While troubleshooting recently, I added some debug information to a few lines, like IRCd1999 (found in IRCd.java). At the time I attempted to force them into debugging, but had no luck.

If I understand correctly, the lines should be in this format.

if (debugMode)
BukkitIRCdPlugin.log.info("[BukkitIRCd] ")

But that is through a quick read-over just now. If nobody gets a chance to look at it, I'll play around with it myself this weekend.

Custom colour name highlighting/pinging

Basically, here's the idea;

When someone in IRC mentions an ingame player, the ingame message will do the following (based on configuration);

  • Show the player's name in a custom colour
  • Play a defined sound to the player, for example a note block or experience
  • Show smoke at the player's position

Configurably, this could also display an IRC user's name in a custom colour too, for consistency.

Centralize message formatting

What I mean by this is that instead of doing .replace("{Message}").replace("{"Name}"), etc, for each thing, just do something like formatChat(Input, Name, Message) where formatChat() is

public string formatChat(String input, String name, String message){
String output = input;
output = input.replace("{name}", name);
output = input.replace("{message}", message);
return output;
}

I've been meaning to do this, but I'm waiting for the config-rewrite branch to be completed and merged before I do so, since this directly affects that.

Ident masking

Ability to hide all but the last two bits of the host with a customizable string.

In-game Chat Formatting

I'd like to request the ability to change the in-game chat format of text that comes from IRC. Being able to specify the prefix (instead of the default [IRC] one) and being able to set default colors would be very nice.

Ingame update notifier

Basically, check for a new version on BukkitDev once a day, and if there is, tell every op when they connect.

Implemented IRC Bot

Simply to add more functions to the Minecraft bot or have an Individual Bot.
Include features

  • Away responses
  • Minecraft Recipe and IDs
  • MInecraft server stats (Mojang)
  • Minecraft server ping (Your own)

Alot more that i have yet to come up with :)
Using this library http://www.jibble.org/pircbot.php

Standalone lag issues

Server says you're lagging even when you're clearly not.

  • PONG :LAG436041856
  • PONG :LAG466074764
  • PONG :LAG496118452
  • PONG :LAG526156600

[INFO] [BukkitIRCd] IOException on socket connection: java.net.SocketException: Socket closed
[INFO] [BukkitIRCd] Cleaning up connection from HAXOR![email protected] (client quit)
[INFO] [BukkitIRCd] Lost connection from HAXOR![email protected]

Ingame Outgoing Private Messages: show contents

Normally ingame /msg is shown like this
[Other -> Me] message
[Me -> Other] message

However, in bIRCd, it's shown like this (for outgoing)

/ircmsg
Message sent.
/ircreply
Message sent to PlayerName.

Overhaul nickname detection using metadata or persistent storage

Because this is probably the best way to do issues #20 and #3
as well as a whole lot of other things, I'm going to close that issue, and describe what I mean here, as this goes way beyond issue #20

Currently, nicknames are tied to the Minecraft username of the player, with no way to change them without breaking a lot of things. This is not good.

I suggest assigning and storing the nickname as player metadata, or a form of persistent storage, while adding the param to BukkitPlayer. That way, you have access to the player's IRC nickname, as well as ingame nickname. Many methods get the Player object by using getPlayer() with the nick value in a BukkitPlayer object. The nick value is set to the player's name at start. However, if we have malleable nicknames, we can easily get the BukkitPlayer object with the nickname, and the player name.

This is the best way to cleanly solve issues #20 and #3 , as well as even allowing the possibility of a command that changes ingame nicknames without breaking features.

Automatic configurable launch messages in the main channel

Currently the main bot connects to IRC mid server load. Here are a couple ideas to improve this;

  • When it connects, say a configurable message similar to "The server is still loading, so you cannot connect yet!"
  • When the server is done finished loading (not sure if there's an event for this, but if there isn't there is a specific string we could scan for in the console) display a configurable message like "The server has loaded and you can now play!"

And to keep it consistent, maybe one when the server is given the /stop command too, or if it has crashed (but that may be harder to detect).

In latest build (56) two connections occur in the link so there is a timeout and disconnect

http://netbook.home.wizardcm.com:8080/job/BukkitIRCd/56/

Build 50 & earlier
16:45:19 [INFO] BukkitIRCd 1.1 by Jdbye is enabled!
16:45:19 [INFO] Updated BukkitIRCd successfully.
16:45:19 [INFO] [BukkitIRCd] Listening for server connections on port 7099
16:45:20 [INFO] [BukkitIRCd] Attempting connection to sigint.echelon4.net:7099
16:45:20 [INFO] [BukkitIRCd] Connected to sigint.echelon4.net:7099
Everything is fine from here.

Now:

16:33:11 [INFO] [BukkitIRCd] Enabling BukkitIRCd v1.1
16:33:11 [INFO] [BukkitIRCd] Loaded configuration file. Code BukkitIRCdPlugin363.
16:33:11 [INFO] [BukkitIRCd] Saved initial configuration file. Code BukkitIRCdPlugin365.
16:33:11 [INFO] [BukkitIRCd] Loaded MOTD file. Code BukkitIRCdPlugin516.
16:33:11 [INFO] [BukkitIRCd] Loaded messages file. Code BukkitIRCdPlugin464.
16:33:11 [INFO] [BukkitIRCd] Loaded bans file. Code BukkitIRCdPlugin551.
16:33:11 [INFO] BukkitIRCd 1.1 by Jdbye is enabled!
16:33:11 [INFO] Successfully enabled BukkitIRCd!
16:33:11 [INFO] [BukkitIRCd] Listening for server connections on port 7099
16:33:12 [INFO] [BukkitIRCd] Got server connection from THE_OTHER_SERVER_IP
16:33:12 [SEVERE] [BukkitIRCd] Unexpected exception in Thread-BukkitIRCd-InspIRCd: java.lang.NullPointerException
16:33:12 [SEVERE] [BukkitIRCd] Error code IRCd473.
16:33:12 [SEVERE] java.lang.NullPointerException
16:33:12 [SEVERE] at com.Jdbye.BukkitIRCd.IRCd.run(IRCd.java:392)
16:33:12 [SEVERE] at java.lang.Thread.run(Thread.java:722)
16:33:12 [SEVERE] Failed to listen on port 7099: java.net.BindException: Address already in use
16:33:13 [INFO] [BukkitIRCd] Got server connection from THE_OTHER_SERVER_IP
16:33:13 [WARNING] [BukkitIRCd] Server link failed: java.io.IOException: Lost connection to server before sending handshake!
16:33:13 [INFO] [BukkitIRCd] Waiting 60 seconds before retrying...

Clean up of code for generating initial config/messages

I messed around with this a couple months back, but there's a lot of duplicate & unused code so it'd be great if someone could clean it up. Maybe, similar to the new commands structure, make a folder for it with each .java file being the name of each config?

Custom string search for custom channel broadcasts

Similar to the staff channel message filter, there should be a regex config section which searches for certain messages in console to then broadcast to the main channel.

For example, currently any /say messages will show up; well, what if I also want /broadcast strings to also show? Or something else?

I'm also curious to know if this would also be able to search based on colours within such strings - I'm guessing it would, as I believe that's what the staff filter currently does.

Track permission changes or check periodically

Currently, if a player is promoted ingame, their IRC rank doesn't change (based on permissions they have). To fix this, we could either;

  • check every __ minutes to see if the player's permissions have changed
  • track the permissions plugin for changes, THEN scan the players

Event API

It should be self-explanatory, add custom events to things so other plugins can hook into it.

Formatting codes

Currently, the following colour/formatting codes do not work;

§k Random
§l Bold
§m Strike
§n Underlined
§o Italics
§r Reset

Group /irclist by prefix/rank

It'd clean up the list for larger channels.

Method 1:
Owner WizardCM
Admin Harry, Admin George, Admin Fred
Mod Justin, Mod Mitch
ronald231, steven421

Method 2:
Owner: WizardCM
Admin: Harry, George, Fred
Mod: ronald231, steven421
User: ronald231, steven421

Cache files before reload, so if there are issues in the config/messages, they don't reset

Currently, if you have one issue in either of the files, they'll reset to default, and if you're unlucky to not have it open and ready to re-save.. you can easily lose everything.

Here's my idea; periodically, or on server launch, cache a temporary version - if an updated/modified version of either file on a reload has some YAML issues, display a message ingame, irc and console. In console, include more detail - where the issues can be found, etc, and revert the currently loaded config to the cached copy - but leave the real version unedited so the user can fix the issues and try again.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.