Giter Club home page Giter Club logo

skybot's People

Contributors

inowen avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

mcmodderman

skybot's Issues

Todo for 9/14/2020

  • Pvp: make sharpness in nametag bright green to see it better.

  • Config: Create a ConfigOption for showing sharpness in nametags when PvpEnhancer is on.

  • Config+MainMod: Make it so that if when starting the game there is no textfile for config, it creates one with default settings.

Central control for event subscription

Only one class should be allowed to subscribe to the Forge Event Bus. The mods give it code to execute. This class has a "general off switch" for everything related to events.

Clean up comments

Remove comments where the code is self-explanatory, remove comments related to debugging

TODO: Create config system.

Things like how far the bots should reach, which item to farm, the radius of the zone in which the pathfinding works... all the options that can be changed around.

  • Make a settings GUI.
  • Database-type functionality that stores these options in .minecraft/config/Skybot/

Replace literals

Eliminate literals if possible, especially if there are helper classes which define them as constants.

AstarAlgorithm implementation with valid starting and end positions

(only after path visualisation works)

Test it by giving it valid starting point and end point, quite close together (maybe in a world that's only a few blocks big), and see it it is able to work out a path.

Afterwards, make a quick implementation to go wherever the player clicks (use my raytracing helper to get this done).

Superdupercool pathfinder

AstarNode {blockpos, cost, combined_cost, parent}

closedSet a TreeSet of AstarNode, ordered by BlockPos (and O(logn) operation to check if node with certain BlockPos is in the set)

openSet a PriorityQueue of AstarNode, ordered by combined_cost (increasing).

Each time a node is extracted from openSet, check if that BlockPos is already in closed. If so, discard (because consistent heuristic and optimality and all). If it's already in closed, continue (jump to main loop start again).

The point is that this method doesn't update costs in the open set. Searching would be done in linear time and that's way too expensive. Instead of checking if a node is already in open and updating the cost, this approach uses a consistent heuristic so that every node in the closed set has an optimal path to it. When the "same" node appears twice in open, the cheaper one will be considered first and added to closed. Checking if a node is closed happens in log time, which is acceptable.

The amount of duplicated nodes in open is fairly small and the pathfinder is incredibly fast.

The only thing I could think of to improve efficiency even more is some kind of BlockPos hash...

Redo keyboard interaction

Delete helper classes such as ForgeKeys and JlwglKeys. Find out the standard Forge way of handling keyboard interaction. Implement that.

Refactor Module name

It should at all times use the name of the class, not a custom string. Identifying a module using an arbitrary string is error prone.

Re-add Category with INTERNAL option

enum. INTERNAL, AUTOMATION, etc. Also change DropdownModListGui so it won't show INTERNAL mods listed. Category will later also be used to make a click-activation gui where modules are arranged by category.

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.