Related to: #1507closes#1533
I'm pretty sure that the rest of the moving into a comptime mod
interface can be done in a future pr
---------
Co-authored-by: Krzysztof Wiśniewski <argmaster.world@gmail.com>
Adds game design principles for Cubyz that we can follow.
This PR is a work in progress, so please chip in with feedback and
suggestions.
I am also not the best at wording; feel free to make suggestions to how
things are worded to make it easier to understand.
---------
Co-authored-by: IntegratedQuantum <43880493+IntegratedQuantum@users.noreply.github.com>
## Description
This pull request adds `ToolTypeIndex` struct that behaves similarly to
`ModelIndex` and `BaseItemIndex` structs.
## Links
Related to: #1290
Related to: #1060
---------
Co-authored-by: IntegratedQuantum <43880493+IntegratedQuantum@users.noreply.github.com>
- reduces allocator overhead (less items in the free list of each
buffer)
- reduces the chance to run out of fake GPU memory (we can now
effectively store 50% more faces than before)
- reduces the chance to run out of actual GPU memory
- reduces height of lag spikes of buffer resizes (but increases their
frequency)
- makes it more clear in which LOD (LOD1) the main memory bottlenecks
are
- reduces the occlusion culling lag (#1161) after disocclusion of parts
of the screen (roughly halving the impact).
It however does decrease the granularity of timing information, since I
can no longer look at the passes separately, but I think that's a fair
price to pay
- [x] cleanup
In the process I had to improve how the player inventory is handled,
which required adding an interface to externally load an inventory for
the inventory system.
This new interface is also relevant for block inventories, which is why
I would like you to review this @Argmaster
fixes#978
This will allow for Cubyz Dev Kit to install compiler without building
the project itself.
---------
Co-authored-by: IntegratedQuantum <43880493+IntegratedQuantum@users.noreply.github.com>
Fixes#357
Stuff left to do
- [x] Make them more like branches
- [x] ~Make them rotate~ Fixed automatically by making them like
branches
- [x] ~Let them be chiseled like stairs?~ This will be a future pr
- [x] Automatic migration between old and new logs
---------
Co-authored-by: Carrie <carriecapp9@gmail.com>
## Descriptions
This pull request adds inline SBBs feature which allows blueprints to be
used directly (without SBB zon file) as child in other SBB files.
Blueprint used this way must not any child blocks on it's own.
To ensure that the feature works correctly some of the now redundant SBB
zon files were removed.
Current implementation generates SBB at runtime for each of the
blueprints that has 0 child blocks and doesn't have an SBB with same ID.
In the future the implementation could be changed to create SBBs on
demand, to avoid wasting memory on blueprints which are not used or use
SBB with different name, that is not critical tho (really small gains)
and requires #1499
## Links
Resolves: #1403
---------
Co-authored-by: IntegratedQuantum <43880493+IntegratedQuantum@users.noreply.github.com>
- [x] Rotation (already merged)
- [x] basic GUI
- [x] sign models and textures
- [x] sign blocks
- [x] update the text on the client
- [x] Figure out block entity rendering
- [x] Render the text to a texture on update
- [x] Render the texture in the world in the location of the sign
- [x] Use varint instead of u32 for storing the block data lengths,
(now, while we can still change it)
- [x] Sync the text with the server and all clients
- [x] Figure out block entity storage on the server
- [x] Send the entity data of the initial chunk
- [x] Store the text on the server
- [x] Set the chunk as changed whenever a block entity data update
happens, so we actually store it
- [x] Disable or figure out optimized local chunk transmission
- [x] fix memory leak
- [x] Rethink some of the API (do we need onPlace/onBreak, when there is
unload and updateData?)
- [x] Remove the background shadow from text, it produces too much
aliasing
- [x] Figure out if the default should be black or white
- [x] Correctly center the text
- [x] Why are newlines not working?
- [x] Check if a deadlock is possible on deinit --- it would be possible
only if another thread has a reference to it, which should not be the
case when unload is called.
- [x] Set the text margin and sizes reasonably
- [x] Make sure the GUI fits with the sign width
- [x] Create an issue for configurable sign texture size and
configurable default color
fixes#367
---------
Co-authored-by: Carrie <122191047+careeoki@users.noreply.github.com>
Co-authored-by: OneAvargeCoder193 <85588535+OneAvargeCoder193@users.noreply.github.com>
## Description
This pull request merges `sbb` and `blueprint` directory trees into
single directory tree as discussed in #1403 searched twice, once to load
blueprint files, once to load sbb zon files.
## Links
Related to: #1403
Related to: #1408
## Description
This pull request adds a tool palette to allow using stable indexes for
binary storage.
## Links
Related to: #1290
Related to: #1478
Related to: #1473
## Description
This pull request moves all of the `common*` variables into `Assets`
struct.
As a bonus change `Managed` was special cased in
`refAllDeclsRecursiveExceptCImports` to avoid infinite recursion for
`*HashMap*` aliases.
## Links
Resolves: #1205Resolves: #1204
Related to: #1181
## Description
This pull request adds `/replace` command. The main difference from
`/set` with `/mask global` is that mask specified for `/replace` is
inlined, local and positive, i.e. only blocks matching the mask
specified as part of `/replace` command will be affected. `/replace`
ignores global masks.
```
/replace <old> <new>
```
`<old>` - expression following mask syntax (#1284), blocks which match
will be affected
`<new>` - expression following pattern syntax (#1237) used to fill
blocks matched by `<old>`
## Examples
`/replace cubyz:air cubyz:void`
`/replace $leaf|cubyz:air cubyz:stone,cubyz:grass`
## Links
Related to: #1214
Depends on: #1337
Depends on: #1284
---------
Co-authored-by: IntegratedQuantum <43880493+IntegratedQuantum@users.noreply.github.com>
Currently Copper beats iron due to its low swing time.
This makes iron more elastic, giving it the same swing time as copper.
Both a copper-head and an iron-head pickaxe now have a swing time of
0.12s
This makes iron strictly better than copper, reducing it from the best
metal in the game to a step in the progression, it's still required to
mine iron. However the plan is to give it a come-back in the end game
due to its high conductivity.
This pull request adds random tick events for blocks. Tick events can be
added by using the `tickEvent` trait and contain the `name` of the
callback function and the probability ( `chance`).
Resolves: https://github.com/PixelGuys/Cubyz/issues/77
---------
Co-authored-by: IntegratedQuantum <43880493+IntegratedQuantum@users.noreply.github.com>
I also removed the legacy (java) blockEntity references.
fixes#1454
@Argmaster since you wrote the original code in #1224, please review and
check if the new names are fine for you.