Coder Social home page Coder Social logo

blocklandglass's Introduction

Logo

Overview

Blockland Glass is a service made for Blockland to help expand and cultivate the community. Glass acts as a mod management service / content distribution system. It also also gives users' friends lists, direct messaging and a chatroom to socialize in.

Installing

The latest stable version will always be found on the official website @ https://blocklandglass.com/

Likewise, you can also download it from this repo's "development" branch to receive changes as soon as they are committed. Download the .zip, change the name to 'System_BlocklandGlass' (if you've downloaded it from the repo directly), then transfer it to your Add-Ons folder.

The "development" branch is not guaranteed to be stable, and may load you into a development server and not the public one that every body else will be connected to.

Contributing

If you find any problem(s) in Glass, feel free to submit an issue here.

If you know how to fix it, feel free to make a pull request for the issue.

If you would like to suggest a feature or change, feel free to also submit it as an issue - the appropriate tag will be set when we see it.

Branches

master is the current live branch

fix for patch changes, x.x.1

development for minor version, x.1.x

feature for major version, 1.x.x

Feature should be merged in to development after it has a self-contained new feature. After reaching development, the new feature should be integrated with the rest of the project, tweaking pre-existing features to co-exist and work with the new feature.

Fix should contain non-released fixes to the currently released version. It should be merged in to master first, then master merged to development and feature.

blocklandglass's People

Contributors

dpendic avatar draaked avatar greek2me avatar mctwist avatar nightkr avatar shockfrombl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

blocklandglass's Issues

conform configuration files to existing standards

The de-facto standard for storing config files is to place them in one or more of the following:

  • config/client
  • config/common
  • config/server

BLG currently creates a config/BLG folder. Instead, use the above scheme.

Build System

This is just basically a culmination of my ideas for the build management system I want to create. Unlike the add-on download system, this is uncharted territory; entirely new.

I believe that the system should be fairly similar to Halo's file share system. Dissimilar to the add-on system, builds will be attached to the user; each user will have storage that will list their personal creations. They can add contributors and add a description; default needed bricks can be linked to the add-on system.

There should be two different types of ontent: builds and constructs. Builds will be .bls files, while constructs will be small portions of a build, such as a building. I'd like to use a system similar to the New Duplicator to place and select constructs, maybe we can work with Zeblote.

The entire system (uploading and downloading both) can operate within blockland, since we'd be uploading plain text as opposed to binary. The issue with this is screenshots. We can require the use of the site to "publish" builds, and keep sharing strictly in-game.

If we implement a chat system, I'd like the ability to send one of these builds through chat. Just a special link that'll load up the page.

The system should overwrite the build save/load GUIs. Include the option to view the original, but open the new by default. At one point, Ephialtes said that .bls files compress some crazy amount, 94% or something. If storage is truly minimal, I'd like to offer free storage to all. However, if it's more, for EXTREME users (as in a lot), offer a $1 a month plan and off-load it to AWS? I really can't imagine anyone hitting this limit, but I guess we'll just have to watch consumption.

Permissions

When server-side functionality (such as #10) will start being added there needs to be a decision on how to decide who should have access to what. To me the following options seem viable:

  1. Hard-code everything to require either admin or super-admin, like RTB
  2. Expose a more flexible API (like Server_Permissions), but provide a default implementation that behaves like the above
  3. The above, but actually rewrite and bundle something resembling Server_Permissions

To me option 2 seems the most viable in the short term. It solves the problem quickly, but leaves the door open to migrate to more sophisticated solutions later on, possibly even as a separate add-on.

Temporary: /ignore cmd -> Apply to DMs / Other

Until a full fledged user blocking system is created, consider making the /ignore command applicable for DM messages as well. This will be temporary only since it'll seem odd to the user to have to be connected to the chat room to block somebody.

Also consider:

  • Adding an /ignoreID variant of the /ignore command.
  • Adding a /muteID variant of the /mute command with offline support (perhaps log the muting reason as well, along with who muted the user).
  • Deprecation and complete removal of the /afk (/away) and /kick command (including their removal from the /help list) - /afk won't be needed when we switch the awake system to afk detection, and /kick is useless in practice.
  • MOTD grammatical error "Welcome to the Glass Live!".

Some users are authenticating as other users

Every once in a while, a user joins Glass Chat and realizes that their name isn't who they actually are.
This is a major issue which needs to be looked into, the problem is that it's hard to figure out why it's happening.

It's especially worrying when such a user suffering from this issue can happen to become a user who has moderator privileges (accidental impersonation of a staff user).

Some notes:

  • A user who suffers from this issue seems to always have the issue (pretty much ruining their Glass Chat experience and prompting them to remove Glass), and a user who doesn't ever have this issue never comes up with it.
  • Every time the user suffering from the issue reconnects to Glass Chat, their name will change to someone elses most of the time.
  • Users suffering from this issue report that Glass Live displays their real information correctly - but Glass Chat is the one that always misidentifies them. Players are authing as other people and even accessing their friends lists, see #30 (comment)

I think this has something to do with the server auth/cache side, not with the Glass Client itself.

Issue Example

Glass Server Settings - Text Box Cursor Issue

The text entry cursor for the Glass Server Settings GUI still functions on the tab it's in and doesn't disable itself when switching to another tab such as "Administration".

While "Update" still has to be pressed for server settings changes to take effect, it's still annoying to see random characters on the "Server Name" text box as a result of the text box cursor not disabling.

Updater repo uses incorrect tags

The update repository uses the invalid tag, "restart". This should be "restartRequired".

current output:

{
    "name": "Blockland Glass Generated Repo",
    "add-ons": [

        {
            "name": "System_BlocklandGlass",
            "description": "Blockland Glass has had a very on-off history over the past five years, popping up many times as entirely separate projects- that never really got used.<br><br>Now it's back, and this time it's here to stay. Glass is starting off with a mod manager. Obviously, you're here and you can see it. There's much more planned down the road, but I hope you like it as it is for now.<br><br>__You can find up-to-date development topics on the forums!__",
            "channels": [
                {
                    "name": "stable",
                    "version": "1.0.1",
                    "restart": "1.0.1",
                    "file": "http://api.blocklandglass.com/api/support_updater/download.php?id=11&branch=1",
                    "changelog": "http://api.blocklandglass.com/api/support_updater/changelog.php?id=11&branch=1"
                },
                {
                    "name": "development",
                    "version": "1.0.1-alpha.1",
                    "restart": "1.0.1-alpha.1",
                    "file": "http://api.blocklandglass.com/api/support_updater/download.php?id=11&branch=3",
                    "changelog": "http://api.blocklandglass.com/api/support_updater/changelog.php?id=11&branch=3"
                }
            ]
        }
    ]
}

Brick_LShaped Repo/version.json Mismatch

The latest version of Brick_LShaped's version.json has its version number set at 0, but the repo reports Brick_LShaped is version 5.

This leads to Brick_LShaped reporting that it needs to update every time Support_Updater checks for add-on updates.

Solution: Change Brick_LShaped's version.json version number from 0 to 5.

Investigate how it occurred in the first place, my theory is that the author updated the add-on with the version.json already attached with the version number not set to the actual version number (0 instead of 5).

If the above theory is correct, just make it so updating an add-on forces the replacement of the glass.json/version.json files no matter what.

Maybe find a way to check for add-ons on Glass that don't match their repo version as well so we can amend them.

Minimize Friend Requests

Ability to hide the friend requests tab, perhaps adding a badge to show how many friend requests are pending

DMs not updating when overlay is closed

DMs will not update with their most recent message(s) if the overlay was closed when the message was received.
The only workaround is to update the DM window in some way, either by waiting for another message while the overlay is open or moving the window.

I don't know why it's doing this.

Ability to delete add-ons in MM

Create new dialogue window for individual add-on settings in MM which displays the version number if it's a Glass add-on, of which will also have an option to delete the add-on.

Better Support_Updater interface support

Support_Updater already has support for third-party interfaces (admittedly undocumented). Instead of the hacky method you're using to replace the Support_Updater GUI, just use its built-in interface hooks:

updaterInterfacePushItem(%item) //Called when an item is added to the display.
updaterInterfacePopItem(%item) //Called when an item is removed from the display.
updaterInterfaceSelectItem(%item) //Called when the updater selects an item to display in detail (changelog, etc).
updaterInterfaceOnQueueEmpty() //Called when the queue is empty.
updaterInterfaceDisplay(%refreshing) //Called when updates are ready to be displayed to the user.

Where %item above is an UpdaterAddOnSO object:

==>updater.queue.getObject(0).dump();
Member Fields:
  class = "UpdaterAddOnSO"
Tagged Fields:
  channel = "release"
  guiSwatch = "15393"
  name = "Gamemode_Slayer_Territory"
  repository0 = "13741"
  repositoryCount = "1"
  repositoryIdx13741 = "0"
  updateFile = "mods.greek2me.us/storage/Gamemode_Slayer_Territory/Gamemode_Slayer_Territory.zip"
  updateVersion = "1.0.0+20140525"
  version = "0.5.0"
Methods:
  addRepository() - 
  call() - 
  delete() - obj.delete()
  dump() - obj.dump()
  getClassName() - obj.getClassName()
  getGroup() - obj.getGroup()
  getId() - obj.getId()
  getModID() - 
  getName() - obj.getName()
  getTaggedField() - obj.getTaggedFieldCount(int idx)
  getType() - obj.getType()
  hasRepository() - 
  save() - obj.save(fileName, <selectedOnly>)
  schedule() - object.schedule(time, command, <arg1...argN>);
  scheduleNoQuota() - object.schedule(time, command, <arg1...argN>);
  setName() - obj.setName(newName)
==>
==>
==>
==>
==>
==>
==>updater.queue.getObject(0).repository0.dump();
Member Fields:
  class = "UpdaterRepoSO"
Tagged Fields:
  cacheFile = "config/common/updater/cache/bfe4e745cdf7a5d1b3d86984397100d50bf843c1.txt"
  fallbackCount = "0"
  format = "TML"
  hash = "bfe4e745cdf7a5d1b3d86984397100d50bf843c1"
  isFallback = "0"
  queried = "1"
  tcp = "15357"
  url = "mods.greek2me.us"
Methods:
  _parseJSON() - 
  addFallback() - 
  call() - 
  delete() - obj.delete()
  dump() - obj.dump()
  getClassName() - obj.getClassName()
  getGroup() - obj.getGroup()
  getId() - obj.getId()
  getName() - obj.getName()
  getTaggedField() - obj.getTaggedFieldCount(int idx)
  getType() - obj.getType()
  parseLocal() - 
  queryRemote() - 
  save() - obj.save(fileName, <selectedOnly>)
  schedule() - object.schedule(time, command, <arg1...argN>);
  scheduleNoQuota() - object.schedule(time, command, <arg1...argN>);
  setName() - obj.setName(newName)

Keybind change dialog gets stuck

If you attempt to change your keybind to the same key it was already set to, the window will simply close. After that there is no way to get rid of the "change keybind" dialog.

Required Add-Ons Performance Issues

I've gotten a few reports of users joining with 'required add-ons' enabled leading to lag spikes, need to investigate. Could be heavy disk i/o usage or just general poor optimization.

Automatic away status

I consider that we should change the way awake status is triggered by using the traditional way of detecting whether a user has had any recent activity (keyboard, mouse) in Blockland and setting their awake status respectively instead of having it set by whether the Glass Overlay is open or not.

The current way confuses many first time users, and some even believe that the chatroom displays the entirety of Glass' userbase at one moment - obviously, that's not true.

Dynamic Board Images

Instead of hard-coding add-on board icons, I'd like them to be provided by the site API. This will help with future-proofing and will make site changes possible independent of issuing an add-on update.

Amend SemVer Specification - Add-On Upload

How do I know when to release 1.0.0?

If your software is being used in production, it should probably already be 1.0.0. If you have a stable API on which users have come to depend, you should be 1.0.0. If you’re worrying a lot about backwards compatibility, you should probably already be 1.0.0.

Source: http://semver.org/#how-do-i-know-when-to-release-100

Add-ons that are uploaded should be set at version 1.0.0 initially as it denotes that the add-on is ready for public release, below 1.0.0 implies that the add-on is not ready for public release.

It would be a logistical nightmare to suddenly change many add-ons version numbers which are on 0.0.0 to 1.0.0, so simply set all future add-ons uploaded to be at 1.0.0 instead.

Preferences

Like RTB: There should be some way to specify preferences that the admin can set through a unified API.

DM - Chat Logging

DMs should be logged to users' computers (with ability to disable this feature, of course).

BBCode parsing fails

When I use this BBCode, nothing is parsed and the plain BBCode is displayed:

[center][img]http://greek2me.webs.com/Downloads/Gamemode_Slayer/Images/logoSmall.png[/img][/center]
[color=maroon][b][size=24pt]Slayer[/size][/b][/color]
[size=24pt]Advanced Game Mode System[/size]

[color=maroon][b][size=20pt]Features[/size][/b][/color]
There's tons of features and I don't have space to actually write about all of them. Just be satisfied knowing that this is the most advanced minigame system in Blockland to-date. If you need help with a specific feature, look at the Help tab in the GUI.


[color=maroon][b][size=20pt]Credits[/size][/b][/color]
[b]Support Scripts[/b]
[list][*]Support_SpecialKills - Space Guy / Greek2me
[*]Support_LibStr - Clockturn
[*]Support_Pathing - Port / Greek2me[/list]

[b]Original Testers[/b]
[list][*]Boom/Deathwishez
[*]Brian Smith
[*]KINEX
[*]Gizmo
[*]Racerboy[/list]

[b]Special Thanks[/b]
[list][*]Jetz
[*]Pecon7[/list]

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.