GithubHelp home page GithubHelp logo

impactdevelopment / clientapi Goto Github PK

View Code? Open in Web Editor NEW
63.0 10.0 11.0 2.7 MB

API designed to make Minecraft "Utility Mods" have Universal Support

License: Apache License 2.0

Java 100.00%
minecraft launchwrapper mixin clientapi mod tweaker

clientapi's People

Contributors

0-x-2-2 avatar babbaj avatar leafhacker avatar nanitanuki avatar w-o-a-h avatar zeromemes 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar

clientapi's Issues

Add JUnit tests in src/test

src/test should include unit tests for each public class of clientapi. These should try to test that the API performs as expected and should be runable without minecraft being open.

This should be as simple as creating a test class for each class to be tested and using the JUnit API to test it performs as expected.

A new source set could be created for running the example client, which if set up correctly will probably fix #15

makeCDK should detect dependency versions

Currently dependencies and most other stuff is hardcoded into the cdk build.gradle. It would be nice if we could copy sections of the main build.gradle into the cdk template at buildtime, or alternatively use a gradle dependency object to get the values we need to inject.

Setting up

How would I go about settings this up? Readme says instructions to be posted and yet there are none in any of the associated repos.
thanks

EntityDeathEvent not fired for EntityPlayerSP (2.1)

At least in single player, EntityDeathEvent isn't fired when EntityPlayerSP dies.

This may be because EntityPlayerSP is not ticked when it is dead, but since I've not looked into this that is pure speculation.

Tested against 2.1

Move @Accessor mixins from interfaces to main mixin classes

In #9 We started implementing @Accessor and @Invoker mixins. Because it (appeared to) use less boilerplate, we added them to the wrapper interfaces (e.g. ICPacketPlayer) which works well, until you need non-accessor members on the interface, e.g. to add new methods.

Instead of using accessor interfaces where we can and wrapper interfaces where we must, we should instead be consistent and move all mixin stuff (including accessors) into the main mixin class, and simply expose them via the interface.

CI and automatic maven deployment

ClientAPI should setup Continuous Integration (e.g. TravisCI, Jenkins, etc) to test commits/PRs and automatically deploy artefacts to a maven repo and GitHub releases.

It probably also makes sense to use a "proper" maven repo that can integrate nicely with CI artefact deployment.

I don't have any suggestions for a maven provider, but I know there are free ones available for OSS that use worldwide CDNs to speed up download.

This will go well with #17 as the CDK zip along with release jars would be automatically uploaded to a GH Release as soon as a commit is tagged.

DefaultWidgetAlignment is inverted

LEFT is -1 and RIGHT is +1, which is inverted. This is demonstrated in Impact's HUD alignment, where right-aligned widgets like mod list and coords are initiated with LEFT alignment

Add code style formatting

Spotless is a cool code formatting util that can be easily integrated into build.gradle and configured for custom code formatting of different file types.

This will be usable as gradle tasks to check and fix formatting. I may also look into adding git hooks so the tasks are run when making a git commit.

Obfuscation mappings exist for classes, but not fields.

If you want to be able to run the client from a notch obfuscated state, you will need to save a mapping for fields as well.

Raw MCP names are used in this example:
https://github.com/ZeroMemes/ClientAPI/tree/master/src/main/java/me/zero/client/load/transformer/defaults/TRenderManager.java#L32

You should probably store fields here:
https://github.com/ZeroMemes/ClientAPI/blob/master/src/main/java/me/zero/client/load/transformer/reference/obfuscation/MCMappings.java

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.