Git Product home page Git Product logo

artist's People

Contributors

skythecodemaster avatar squiddev 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

artist's Issues

init.lua:96: 'for' limit must be a number

This happened randomly while idling.

Cannot replicate

Full stacktrace:

init:96: 'for' limit must be a number
stack traceback:
  peripherals.lua:83: in function <peripherals.lua:62>
  [C]: in function 'xpcall' context.lua:72: in function <context.lua:71>

Automatic furnace refueling only refuels one furnace

When coal is placed in the turtle, it picks a random furnace to get all the coal instead of distributing it throughout all the furnaces evenly.

There should also be a priority to place coal within furnaces that have items ready to be smelted and an appropriate amount of items should be put in for that task (minding the -1 item smelting bug, so 16 items would actually need 3 coal, but 15 items would need 2)

Support adding items to brewing stands

Just to save some time: slots 1-3 are bottles, 4 is ingredient, 5 is blaze powder.

Also, you need to look at item NAMES to see if it's a water bottle or potion, NBT is used for potions.

Turtle tasks

Certain events in the system, such as item counts falling below a certain level, should trigger a turtle to go and gather that particular resource. Several things to note:

  • A further decrement whilst the task is queued/executing in that item's level should not trigger this event again.
  • If this resource is not available then there should be a delay before retrying.
  • Do we want to go the whole shebang of turtle pathfinding/mapping? Not sure how to implement this whole thing without making it difficult to use: turtle automation is never pretty.

One thing we could do is just define these steps as "crafting steps" and order more items if we drop below a set level.

Pocket computer support

Before starting anything regarding creating a extension making possible to a user to use the same interface of the turtle on a pocket computer, I would like to know if there is any specific limitations or other stuff i should know regarding how artist works

Making GUI extensible via extensions

Heya, just thought I'd make an issue to suggest it here. This wouldn't only benefit monitors but also allow users to customise their GUI while being compatible with the main code of Artist

using @ to search for mod names etc.

JEI has some special characters that can be used to refine searches. We may not be able to do all of these.

@ search by mod name
# search by tool tip
$ search by ore dictionary
% search by creative tab
l/ search with a lua pattern

I'm not sure if | works as or in artist but that could be a nice change too.

I do know that the search does look in (some of) these places already (I think I looked for the mod name once), but it would be nice to be specific and whatnot.

Maybe a bit of a ramble because I should be sleeping already, apologies if this is.

Furnace: Slow Extracting & Inserting

Problem/Bug: When having a large number of furnaces connected, artist has complications extracting the output and inserting fuel from/into them.

What should happen: Smooth/fast (or at least not slow) extraction and insertion.

How to replicate: Stack 4 modems ontop of each other. Add 4 furnaces on 3 out of 4 sides of the modems. Repeat 2x. Insert items to be smelted and observe.

I'm quite curious why extracting is as slow as it is. I wonder if it's to prevent server lag, or just artist not being designed to be a smelting program (which I understand). I do hope this bug report was useful however and if any additional information is needed, please ask.

Help concerning extracting items from external script

Hello :)
Sorry for creatign a new issue for this
Thanks to you, my project is almost finished, but I face one more problem, and its has the same main issue than the other request i did for the count.

Lets imagine that in the /src/ folder of .artist.d I have a file called extract_stuff.lua, in this file I have "variables" containing the id of a item (that exist in the storage) and the count of this item requested.

(1) Lets say that I already checked that this item EXIST and its COUNT is equal or lower than how much there is in the storage.

How could I link this extract_stuff.lua script with your extraction system ? So I can "request a extraction" of any item with its count like if a player was using the turtle interface ?.
I hope that with the (1) statement it is "easy" and possible to do it.

Me and my friend working on the project will be very grateful to you if you could do this for us πŸ™
If you have any questions please ask then

Config file keeps resetting

For some reason, artist keeps resetting my config file. It has been quite irritating when wanting to set up drop off chests

Suggestion: Ability to defragment your storage to reduce used slots

By pressing this keybind, Artist will start combining slots into full stacks if possible, leaving only one non full stack in the whole network. This can help when you're not full on storage but your amount of total slots free is 0 to free up some slots

Excuse my bad formatting, sorry

Statistics mode

Effectively add the ability to write to external monitors some statistics about the system. For instance:

  • Inventories on the network, and how full they are.
  • Item counts on the network.

The big question here is how we let users display this. I'm thinking a "monitor name" β‡’ "list of components". So something like:

stats_monitors = {
  left = {
    -- Show a list of inventories, #slots and a percentage/barchart
    { type = "inventories" },
    -- Show the top 10 items
    { type = "items", limit = 10, sort = "count" },
  }
}

Obviously this is really restrictive though. Maybe we should just allow people to write programs which are run on each item_change event and provide some built-in methods for drawing things like that?

[QUESTION] Custom Modules

Hello, I would like to know how I can write and implement customs modules.
I am currently working on a porject and I need to have another turtle give or take items

Adding networking to support multiple turtles.

This would be better in a discussion, but they aren't enabled here.

If I wanted to go about adding networking, would I go along the lines of something like:

-- artist/items/network.lua

--- Provides a module to support multiple turtles on a network.
--
local modem = peripheral.find("modem")
-- This probably isn't the best way to find, or exit if there is no modem.
if not modem then return end
modem.open(1) -- Or whatever channel, doesn't really matter

return function(context)
  local disabled = false -- Do not create an infinite loop :)
  context.mediator:add_thread(function()
    while true do
      local _,_,_._,items = os.pullEvent("modem_message")
      disabled = true
      self.mediator:publish("items.change",items) -- This seems right? I'm not sure.
    end
  end)

  context.mediator:subscribe("items.change",function(items)
    if disabled then return end
    -- Now just broadcast the new items? I have no clue how this particular event works.
    modem.transmit(1,1,items)
  end)
end

This is some very rough code, but it should provide an idea of what I'm thinking needs to happen in order to make this work?

Natural language processing

Sometimes the GUI will be a pain to operate, and you might be away from the base when you want to start crafting things. Natural language processing, combined with networked PDAs, chatboxes, and direct text input, would give a powerful way of communicating with the item server.

Some examples of phrases:

  • craft some repeaters
  • get 5 stacks of cyan stained clay ready
  • put some seeds in the farm chest
  • craft torches when there's less than 32 left

Chest indexing slow with a large number of chests

When attaching a large number of chests, Artist's startup time grows substantially. We should be able to load chests in parallel (as they have their own cost handler) meaning startup will be somewhat constant.

Edit: We already parallelise loading, so should investigate why it takes so long on some systems.

Inventory tracking

There are several improvements which could be made to inventory tracking:

  • Track every slot in the inventory so we know where items are going to go instead of rescanning after each insert.
  • Don't insert into slots which are already full. This requires knowing the max stack size of an item. I could export this into the recipe_dump.json file.
  • Don't stack/group items with different NBT. Maybe we could try to work out if they do, and store which items do and don't.
  • Periodically re-scan chests to ensure they are up to date.
  • Persist inventory cache, and rescan in background instead.

Connection system

  • Attempt to reconnect if connection lost
  • Maybe implement Diffe-Hellman key exchange instead of a basic password.

Crafting system

There are several requirements for the crafting system

  • One should be able to define crafting systems, such as smelting or brewing.
  • It should always try to use existing resources rather than crafting new ones
  • When crafting it should always use the most abundant of the possible resources
  • It should attempt to parallelise crafting across multiple turtles, furnaces, etc... as well as scheduling tasks as early as possible: smelting takes loner than crafting so should be started ASAP.

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.