k3rni / mctechtree Goto Github PK
View Code? Open in Web Editor NEWApply graph theory to Minecraft, resulting in a smarter resource calculator.
Home Page: http://mctechtree.herokuapp.com
Apply graph theory to Minecraft, resulting in a smarter resource calculator.
Home Page: http://mctechtree.herokuapp.com
Case: Powersuits. Different recipes depending on what is the top tech-mod installed. IC2 or UE or TE override Vanilla, and GT overrides IC2. But what if we need to consider both IC2+GT and TE?
Add a priority fields to go with overrides, the lowest (or highest, doesn't matter) priority is chosen in case of conflict.
ME cables witch colors are named:
"ME Cable $(color)"
NOT $(color) ME cable
ME import bus, ME export bus, ME level emitter, ME storage bus and ME dark cable
DONT AHVE COLORS AT ALL!!
Btw you mistake with naming on
- $(color) ME import bus:
ingredients: [iron*2, ME interface, $(color) ME cable, piston]
<<: *colors
Couse this is "ME export bus" not import
Improves DRYness. Instead of
processing:
- machine: circuit assembler
inputs: [advanced circuit board, advanced circuit parts*2]
outputs: [advanced circuit]
- machine: circuit assembler
inputs: [elite circuit board, data storage circuit]
outputs: [data control circuit]
- machine: circuit assembler
inputs: [elite circuit board, lapotron crystal]
outputs: [energy flow circuit]
something like:
defaults:
machine: circuit assembler
processing:
- inputs: [advanced circuit board, advanced circuit parts*2]
outputs: [advanced circuit]
- inputs: [elite circuit board, data storage circuit]
outputs: [data control circuit]
- inputs: [elite circuit board, lapotron crystal]
outputs: [energy flow circuit]
Scoped per file, or even pseudo-locally if repeated sections were allowed (and merged together).
Within one cluster, name conflicts don't exist - they're simply alternative recipes. Across different clusters, however, they need to be flagged. Case: IC2 wrench vs BC wrench, when conflicts are not reported, IC2 electric wrench recipe will erroneously require the BC one.
Everything, except replacing undefined items and listing shape is currently done on count_ingredients.keys
anyway. Replace the flat list with a hash, and update the remaining operations.
On the results screen, add a toggle between topographical (current) sort and a tier-based one.
So far craft templates take only a single parameter. There is however a case for multiple parameters: CC turtles, and also nils for a natural blank substitution. Example and result:
- $(peripheral) $(tool) turtle:
ingredients: [$(peripheral), turtle, $(tool)]
peripheral: [~, crafty/crafting table, wireless/wireless modem]
tool: [~, mining/diamond pick, farming/diamond hoe] # and other tools
- turtle: [turtle] # should probably be excluded
- crafty turtle: [crafting table, turtle]
- wireless turtle: [wireless modem, turtle]
- mining turtle: [turtle, mining pick]
- crafty mining turtle: [crafting table, turtle, diamond pick]
- wireless mining turtle: [wireless modem, turtle, diamond pick]
- farming turtle: [turtle, diamond hoe]
- crafty farming turtle: [crafting table, turtle, diamond hoe]
- wireless farming turtle: [wireless modem, turtle, diamond hoe]
Each permutation is produced, except for an all-blanks one (which can be added as a regular craft anyway).
Either as subdomains or via top path:
Other packs:
A cluster pack defines which clusters are and are not considered (while still loaded at startup), using cluster exclusions, or replacing them somehow.
Some examples:
processing:
- machine: furnace
inputs: [iron dust]
outputs: [iron ingot]
- machine: circuit assembler
inputs: [advanced circuit board, advanced circuit parts*2]
outputs: [advanced circuit]
would be equivalent to:
- iron ingot:
ingredients: [iron dust]
machine: furnace
- advanced circuit:
ingredients: [advanced circuit board, advanced circuit parts*2]
machine: circuit assembler
Even better with templates:
- machine: industrial centrifuge
inputs: [$(food), cell]
outputs: [methane cell]
vars: [food]
food:
- apple*32
- mushroom stew*32
- bread*64
- raw pork*12
- cooked pork*16
- raw beef*12
- cooked beef*16
- raw fish*12
- cooked fish*16
- raw chicken*12
- cooked chicken*16
- melon*64
- pumpkin*16
- rotten flesh*16
- spider eye*32
- carrot*16
- potato*16
- poisonous potato*12
- baked potato*24
- cookie*64
- cake*8
- mushroom block*12
- red mushroom*32
- brown mushroom*32
- nether wart*32
- terra wart*32
With more than one output:
- machine: industrial centrifuge
inputs: [pulverized ferrous metal*3] # nickel dust
ouputs: [tiny pile of gold dust, tiny pile of copper dust, tiny pile of iron dust]
This would presently expand to as many recipes as listed in the outputs, each requiring the same ingredients and producing one of the output items. It would also serve as one format for multi-output recipes (either with leftovers stack or true multi-output)
Tier 0 is primitive items.
Tier 1 is items crafted from only primitive items.
Tier N+1 is items that can be crafted from only items of tier N and below.
Example: Ore is tier 0, dusts and ingots are tier 1 (ingots are crafted from either dusts or ore). All of vanilla MC is T0-T2 (T2 includes doors, pistons, carts, rails etc).
The current resolving system is equivalent to solving down to Tier 0. Next, add an option to chose minimum tier to solve,
Example: nano body armor is T4 tech. When solved to T1, it lists coal dust and energy crystals as ingredients. Solved to T2, it should list energy crystals and carbon fibers.
Manual in Google Docs.
and explain YAML include tricks used in rp2/lightning etc.
For example:
2000 * lava
No need to separate crafts and craft templates. Whenever a craft looks like a template (it has vars or named with substitution keys) - just process it like a template.
Then, as a step further, allow templates in all sections, present and future.
Parse Reactor Planner URLs, and optionally just the code (query part)
Decode the reactor layout and chamber count, convert into standard crafting lookup expression and display the results. The code itself is a rather simple stack of bits, easily recovered by decompiling the applet. Until GT support is added, reject designs with GT components.
For example (Railcraft gears):
cluster: railcraft
crafts:
- gold-plate gear:
ingredients: [stone gear, gold nugget*4]
requires: bc3
- gold-plate gear:
ingredients: [cobble, gold nugget*4]
disabled: bc3
- iron gear:
ingredients: [cobble, iron ingot*4]
disabled: bc3
When both railcraft and bc3 clusters are enabled, the second gold-plate and iron gear recipe should not be considered for crafting. When only railcraft is enabled, the first recipe does not solve, but should not throw an error, and the other recipes should be considered for crafting.
Another example (Railcraft IC2 module and crafting templates):
craft_templates:
- $(energyblock) cart:
ingredients: [$(energyblock), cart]
requires: ic2
energyblock: [batbox, MFE, MFSU]
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.