Code of Copper v0.3.4
on Jul 21, 2024[0.3.4] - 2024-07-21
Fixed some bugs
Changed
- Updated the
place_blocks.glm
example program, with new syntax. - Updated the resource pack such that the golem now faces direction of travel (positive X).
Fixed
- Place no longer duplicates blocks when there's only one left.
- Place no longer deletes fresh pickaxes if a pickaxe has been broken before.
- Waxing a golem no longer runs the golem as well.
Code of Copper v0.3.3
on Jun 19, 2024[0.3.3] - 2024-06-19
Update to 1.21
Changed
- The datapack now requires 1.21.
[0.3.1] - 2024-01-29
The big split
Added
- The background of the text above the golem is now coloured based on its oxidisation level
Changed
- The GolemScript language has been split from this datapack
- It is now its own separate pack
- This datapack uses its API to run programs and control the golems
- Empty and same programs now rerun the previous program
- Broken golems now store their oxidisation level, and whether they had been waxed
Removed
- All code that processes the GolemScript language
- This can now all be found in the GolemScript datapack
- Code of Copper is now a runtime for GolemScript, and only contains code for manipulating golems
- The experimental API
- This is now part of the GolemScript API
[Alpha] Code of Copper v0.3.1-alpha-1
on Dec 23, 2023[0.3.0-alpha-1] - 2023-12-24
Added
- Experimental, unstable support for extensions.
- This should only impact datapack developers wishing to add their own functions.
- No other changes made so far.
[0.3.0] - 2023-11-26
Overhauled the entire language.
Added
- Custom Functions
- Function definitions
- Function calls
- return keyword
- Stdlib Functions
- random: to generate random numbers
- time: to get the current gametime
- Var keyword for global variables
- Assignment operators such as += and -=
- Booleans
- Constants
- Resource literal
- << and >> operators
- Objects can be indexed with dot (.) notation
- Other miscellaneous operators
Changed
- Rewrote all documentation
- Now contains every language feature
- Better documented and easier to understand
- Available here
- Many instructions are now built in functions
- You can now use functions such as getblock inside expressions
- $INVENTORY and $POS are now functions: inventory() and pos()
- pos() now returns an object, instead of an array
- inventory() now returns a array of resources, rather than strings
- Variables only exist within the scope that they are created
- Predicates updated to use 1.20 format
- The entire interpreter was re-written from the ground up
- It should now be far more reliable going forwards
- Place now takes a resource rather than a slot number
- Minus operator no longer removes items from objects/arrays
Fixed
- Regex matcher is now correctly passed a string's value
- Backslashes, unless escaping
/
, no longer need to be escaped themselves.
[Beta] Code of Copper v0.3.0-beta-2
on Aug 24, 2023[0.3.0-beta-2] - 2023-05-25
We rewrote the entire interpreter.
Added
- Resource literal
- Added << and >> operators
- Objects can be indexed with dot (.) notation
Changed
- Predicates updated to use 1.20 format
- The entire interpreter was re-written from the ground up
- It should now be far more reliable going forwards
- Place now takes a resource rather than a slot number
- Minus operator no longer removes items from objects/arrays
Fixed
- Custom functions now can be called from expressions.
[0.3.0-beta-1] - 2023-05-25
Fix all the stupid bugs of 0.3.0-alpha-1
Added
- Constants
Fixed
- Prevent running bots with compile errors
- Bot no longer loses error messages when recompiling programs
- Return not exiting functions
- Functions can be called within expressions
- Functions called within functions return values properly
- Random function is now actually random
- Functions can be defined and called with no arguments/parameters
[0.3.0-alpha-1] - 2023-03-23
Functions
Added
- Functions
- Function definitions
- Function calls
- return keyword
- Var keyword for global variables
- Assignment operators such as += and -=
- Booleans
Changed
- Many instructions are now built in functions
- Variables only exist within the scope that they are created
[0.2.3] - 2023-02-03
Lots of unit tests and fixed bugs after the interpreter refactor
Added
- Array indexing with negative numbers, starting from the end of the list
- Unit tests for literal and expression evaluation
- Integration test module for testing instructions
- This can be placed by running
/function bot:spec/place
- This can be placed by running
Fixed
- Regex matcher is now correctly passed a string's value
- Backslashes, within a Regex literal, unless escaping
/
, no longer need to be escaped themselves. - $INVENTORY and $POS variables now parse correctly again
[0.2.2] - 2023-02-27
Pipelines and progression
Added
- Oxidisation Based Progression
- Golems will oxidise over time whilst executing programs
- This can be prevented by waxing a Golem with honeycomb
- Wax, and oxidisation, can be scraped off a Golem with an axe
- When scraping rust off a fully oxidised golem, the player is rewarded with the next example program
- Golems will oxidise over time whilst executing programs
Changed
- Refactor of the interpreter
- Golems now uses a pipeline, saving on lag
- Golems now execute instructions at 10Hz
- Modified loot tables to work with new progression system
Code of Copper v0.2.1
on Feb 23, 2023[0.2.1] - 2022-02-24
Escaping, interaction improvements, position variable, and break instruction.
Added
$POS
variablebreak
instruction\
as escape for strings and regexes- Escaped
"
are replaced by”
as to not break tellraw
- Escaped
Changed
- README has now been greatly improved
- Golem now uses item and text display entities
- Golem model and texture revamp
- New interaction system:
- Right click to run a Golem, or with a book to assign a program.
- Left click to stop a Golem
- Crouching whilst looking at the Golem allows it's inventory to be accessed, or for it to be broken.
Fixed
- Containers not dropping their contents when broken by a golem
- Items not dropping when the golem's inventory is full
[0.2.0] - 2023-02-21
Two new literal types, and cleanup of syntax.
Added
- Object variant of literal
- Alphanumeric pseudo-variant of literal
- Only allows [A-Za-z0-9_]
- First character must match [A-Za-z]
- Regex variant of literal
- String-regex matching using the
match
function
Changed
- Let now takes an alphanumeric literal in the name field, rather than a string.
- Variables no longer need a "$" in front of the name
Fixed
- Fixed blocks not dropping while the golem was running the break command
- Tools can no longer go below zero durability
Code of Copper v0.1.4
on Feb 7, 2023[0.1.4] - 2023-02-07
Refactor of the parser, fixing many compiler bugs.
Code of Copper now requires Moxlib v0.5.5 or later.
Changed
- Major refactor of the parser:
- Variables within arrays no longer need brackets if they use only alphanumeric characters.
- Operators no longer need a space between them and literals.
- Lots of behind-the-scenes improvements which will allow for later enhancements.
- Most instructions will allow expressions as their parameters.
- Golems now don't print quotes when printing plain strings.
Fixed
- Golems no longer fall through non-full blocks.
- Golems now reset their variables when the program reruns.
- Items no longer disappear weirdly when placing from the second slot.
[0.1.3] - 2023-02-02
Various bug fixes, and a new language feature.
Code of Copper now requires Moxlib v0.5.4 or later.
Added
- Literal parameters, eg.
$(array)[0]
. - A dev mode, where you can see what's happening behind the scenes (not fully implemented).
- New example programs to demonstrate parameters and the now useful INVENTORY variable
Changed
- Range for place and getblock commands is now 5.
Fixed
- Arrays no longer close the literal early.
- Golem's display armor stand now has locked slots to prevent interaction.
- Golem can no longer break bedrock and other unbreakable blocks.
- Golem no longer breaks the block underneath the one it's supposed to.
- Golem can no longer float in the air by constantly calling the move command.
- Multiple golems can place blocks in the same tick
Code of Copper v0.1.0
on Jan 29, 2023[0.1.0] - 2023-01-30
Initial release!
Added
- Copper Golems
- GolemScript Language Parser
- GolemScript Language Interpreter
- Skyship, Bunker, Laboratory and Gears structures.