Giter VIP home page Giter VIP logo

eirairc's Introduction

EiraIRC

Minecraft Mod. On a Minecraft client it acts like any other IRC client, on the server it turns into a bridge-bot. Configuration is highly customizable and the mod includes a few special features such as name colors, Twitch chat and screenshot upload.

##Useful Links

##API The easiest way to add EiraIRC to your development environment is to do some additions to your build.gradle file. First, register EiraIRC's maven repository by adding the following lines:

repositories {
    maven {
        name = "eiranet"
        url ="http://repo.blay09.net"
    }
}

Then, add a dependency to either just the EiraIRC API (api) or, if you want EiraIRC to be available while testing as well, the deobfuscated version (dev):

dependencies {
    compile 'net.blay09.mods:eirairc:major.minor.build:dev' // replace major.minor.build with version number
    // OR
    // compile 'net.blay09.mods:eirairc:major.minor.build:api' // replace major.minor.build with version number
}

Important: If you do use the dev version like that, make sure that you still only use code within the API packages! Rikka will get mad at you and give you a dose of Schwarz Sechs if you mess with any of EiraIRC's internal classes.

Make sure you enter the correct version number for the Minecraft version you're developing for. The major version is the important part here; it is increased for every Minecraft update. See the jenkins to find out the latest version number.

Done! Run gradle to update your project and you'll be good to go.

The latest EiraIRC API and an unobfuscated version of the mod can also be downloaded from my Jenkins (v2.8 only), if you're not into all that maven stuff.

##Repacking Textures EiraIRC reads its UI textures from a libGDX TextureAtlas. The repository root contains a project file for the libGDX TexturePacker GUI. As of now, only a TextureAtlas of size 256x256 is supported.

eirairc's People

Contributors

blaytheninth avatar rallias avatar roycurtis avatar sandalle avatar soniex2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

eirairc's Issues

Improve Name Aliases

At the moment, the /irc nick command only ever changes the IRC nick of the actual bot on IRC. The goal is to open that up to players (config option "allowNickChanges", default off for now) so they can change the name they're shown as in IRC.

Eventually, this might replace the alias command altogether.
Example syntax:
/irc nick game Blay09
/irc nick irc BlayTheNinth-IG
For OPs:
/irc nick [player] [type] [nick]

To make this less abusable, have it check for names known to the server (whitelist, online players) and deny if needed.

Screenshot Archive Improvements

Bigger preview, "Open Folder" button, maybe find a better solution to the screenshot detection so there's no need to move them in to the managed folder.

The option to delete uploaded file too?

Custom Channel Commands

Allow OPs to bind Minecraft commands to IRC bot commands!

Example:
/irc command !tps /cofh tps

Possibly with arguments:
/irc command !say /say %s

Typing !tps in a channel the bot is in would then make it tell you the current TPS (via COFH).

NickServSettings command format

Still too restrictive, as anope NickServ for example doesn't take the optional username parameter. Turn it into a DisplayFormat-like format string. See if nickserv config can be automatically assigned to their respective servers.

Screenshot Sorting Crash

java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.TimSort.mergeLo(Unknown Source)
at java.util.TimSort.mergeAt(Unknown Source)
at java.util.TimSort.mergeCollapse(Unknown Source)
at java.util.TimSort.sort(Unknown Source)
at java.util.TimSort.sort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at java.util.Collections.sort(Unknown Source)
at net.blay09.mods.eirairc.client.screenshot.ScreenshotManager.load(ScreenshotManager.java:97)
at net.blay09.mods.eirairc.client.screenshot.ScreenshotManager.create(ScreenshotManager.java:46)
at net.blay09.mods.eirairc.client.ClientProxy.setupClient(ClientProxy.java:37)
at net.blay09.mods.eirairc.EiraIRC.init(EiraIRC.java:82)
[...]

Improve GUI Code

Current GUI code is pretty ugly and it's hard to add new objects to the GUI because everything is in different places in code. Make something more generalized.

TabbyChat Compatibility still not working

Didn't consider the fact that my client-side commands won't even work with TabbyChat, as it replaces the chat screen itself (obviously). Try to port it over the Forge's ClientCommandHandler again.

EiraIRC overwrites players' display name

In EiraIRC's event handler, it overwrites the player's display name for ChatEvents:
https://github.com/blay09/EiraIRC/blob/master/src/main/java/net/blay09/mods/eirairc/handler/MCEventHandler.java#L185

In vanilla/Forge it calls new ChatComponentTranslation("chat.type.text", {player.func_145748_c_(), message}) which ends up using the configurable display name of the player.

ServerTools uses the display name to prefix group memberships in chat. When EiraIRC is installed, this gets erased.

Server-side config GUI

The button in the corner of the options screen should switch between server-side and client-side config.

Themes

Similar to the message formats, themes will exist in their own individual config files (so they can easily be swapped out or shared without touching the actual eirairc.cfg) and contain all configuration about colors in chat (and later on the look of the chat window itself). They can be applied on a server or channel-wide basis (like the bot profiles); whereas the channel will always override the server.

More things to consider for this:

  • Custom fonts
  • RGB colors

TabbyChat compatibility (/irc msg)

There is an /irc msg command for private messages already, make it so it can target channels too. That way users can properly setup a custom tab on TabbyChat for an IRC channel.

Nick Linking

Similar to how it works in Twitter, putting an @ in front of a username (IG or IRC) should make it a clickable "link" that will open the chat window prefilled with "@ ". If enabled, it should also fire a "name mentioned" notification to the linked user.

Prefix & Suffix Option for IRC Names

Config option "ircNickPrefix" and "ircNickSuffix", will be added in front / after names in IRC. Global config should be enough.

Example:

ircNickSuffix="-IG"

could result in

[EiraBot] [BlayTheNinth-IG] This new feature is great!

on IRC.

Support SSL Connections

I've got a BNC that listens on an ssl port 9210... I want to use it instead of directly connecting to the server.

InterOp Auth Mode Option

Right now, InterOp requires users to be authed and in the interOpAuthList in the config.
The plan is to make this behaviour an configurable option:

interOpAuthMode
= authList (default and recommended, same as now)
= channelOp (all channel ops of channel with this bot profile can perform commands)
[= query (ask for permission by querying another specified bot)]

Global & Local & Team Chat Options

The ability to disable global chat ("disableGlobalChat"), enable local chat ("enableLocalChat") and specify it's range ("localChatRange") in the server-side config.
These chats will then appear on clients just as IRC channels would and can be switched to. Also, "enableTeamChat", using Minecraft's scoreboard team system.

Turn InterOP into an Addon

Just to keep the code cleaner and test out the system, it should still stay in the same .jar file though.

Automate !auth

Having to type !auth is stupid and was only a workaround anyways.

Instead, the server should asynchronously handle IRC commands. On command, if unauthed, WHOIS user. Wait for response, then handle command normally.

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.