Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
b217fd6
Golbo
Crepestrom Apr 12, 2026
fe88d23
oops not a branch
Crepestrom Apr 12, 2026
bba651a
Merge branch 'PixelGuys:master' into master
Crepestrom Apr 12, 2026
0907c9b
Merge branch 'PixelGuys:master' into master
Crepestrom Apr 18, 2026
cd6cb17
Merge branch 'PixelGuys:master' into master
Crepestrom Apr 19, 2026
6661fea
Merge remote-tracking branch 'upstream/master'
Crepestrom Apr 22, 2026
7f5bf66
Merge remote-tracking branch 'upstream/master'
Crepestrom Apr 28, 2026
565e3c2
Merge remote-tracking branch 'upstream/master'
Crepestrom May 2, 2026
1d4f3ee
Merge remote-tracking branch 'upstream/master'
Crepestrom May 7, 2026
bb44a4c
Merge remote-tracking branch 'upstream/master'
Crepestrom May 8, 2026
ce89c93
Merge remote-tracking branch 'upstream/master'
Crepestrom May 9, 2026
3dee6fb
Merge remote-tracking branch 'upstream/master'
Crepestrom Jun 5, 2026
c0c9b4e
Merge remote-tracking branch 'upstream/master'
Crepestrom Jun 6, 2026
85cb92d
Merge remote-tracking branch 'upstream/master'
Crepestrom Jun 13, 2026
0a87c7a
Merge remote-tracking branch 'upstream/master'
Crepestrom Jun 27, 2026
7e037b5
Merge remote-tracking branch 'upstream/master'
Crepestrom Jun 28, 2026
1a12312
Merge remote-tracking branch 'upstream/master'
Crepestrom Jul 7, 2026
97155bf
Merge remote-tracking branch 'upstream/master'
Crepestrom Jul 10, 2026
bf8f638
Merge remote-tracking branch 'upstream/master'
Crepestrom Jul 16, 2026
a52aad2
almost complete
Crepestrom Jul 19, 2026
34667ae
Revert "almost complete"
Crepestrom Jul 19, 2026
dcfb4e3
Merge remote-tracking branch 'upstream/master'
Crepestrom Jul 22, 2026
83ca9dc
Merge remote-tracking branch 'upstream/master'
Crepestrom Aug 1, 2026
db4be3c
Merge remote-tracking branch 'upstream/master'
Crepestrom Aug 22, 2026
e7ec715
Merge remote-tracking branch 'upstream/master'
Crepestrom Sep 5, 2026
c28f6b2
Merge remote-tracking branch 'upstream/master'
Crepestrom Sep 19, 2026
a563df0
Merge remote-tracking branch 'upstream/master'
Crepestrom Sep 20, 2026
75bd7ce
Merge remote-tracking branch 'upstream/master'
Crepestrom Sep 28, 2026
1444196
Merge remote-tracking branch 'upstream/master'
Crepestrom Oct 4, 2026
f6b5eed
removed unnessicacy function
Crepestrom Oct 7, 2026
d29fe32
Revert "removed unnessicacy function"
Crepestrom Oct 7, 2026
6c2de9c
finish
Crepestrom Jul 16, 2026
5270b3d
i dont understand why this is leaking
Crepestrom Jul 16, 2026
af0e156
formatting
Crepestrom Jul 16, 2026
62114ed
Update transmutation_workbench.zig.zon
Crepestrom Jul 16, 2026
fead979
its not yelling about a leak anymore
Crepestrom Jul 16, 2026
ec20e1d
Update open_crafting_window.zig
Crepestrom Jul 18, 2026
6c22f1a
Update inventory_crafting.zig
Crepestrom Jul 22, 2026
350d9f6
fixed getting stuck with crafting table recipie bug
Crepestrom Jul 22, 2026
a0f73d6
Update inventory_crafting.zig
Crepestrom Jul 22, 2026
a9618e9
still kinda broken
Crepestrom Aug 27, 2026
7d24074
moved to next pr
Crepestrom Sep 9, 2026
447a92b
moved to other pr
Crepestrom Sep 9, 2026
7df53f4
also moved
Crepestrom Sep 9, 2026
b0132cd
gonna be honest i dunno why i added this
Crepestrom Oct 13, 2026
7ea7891
this is for a different pr
Crepestrom Oct 13, 2026
343606a
again not for this
Crepestrom Oct 13, 2026
5c380e2
for different
Crepestrom Oct 13, 2026
7a52a94
Merge remote-tracking branch 'upstream/master' into crafting-tags
Crepestrom Oct 14, 2026
9c56113
Update src/items.zig
Crepestrom Oct 21, 2026
4403827
Update src/items.zig
Crepestrom Oct 21, 2026
ad277bf
Update src/items/recipes.zig
Crepestrom Oct 21, 2026
bf7843e
Update src/items/recipes.zig
Crepestrom Oct 21, 2026
bf46fef
Update src/items/recipes.zig
Crepestrom Oct 21, 2026
1b89fbf
Update src/items/recipes.zig
Crepestrom Oct 21, 2026
c9cd34f
changed the binary reader and writer
Crepestrom Oct 21, 2026
ee6a565
Merge branch 'crafting-table' of https://github.com/Crepestrom/Cubyz …
Crepestrom Oct 21, 2026
318ec63
im gonna do this because i dont want players to be able to register r…
Crepestrom Oct 21, 2026
e8f6fec
ooops need to return a error type
Crepestrom Oct 21, 2026
f324620
that wasnt needed
Crepestrom Oct 21, 2026
fb93f6d
should have written that int
Crepestrom Oct 21, 2026
186b0fb
Merge remote-tracking branch 'upstream/master' into crafting-tags
Crepestrom Oct 22, 2026
0dcb42d
added limit
Crepestrom Oct 22, 2026
cc4eb5a
removed debugging print
Crepestrom Oct 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 18 additions & 1 deletion src/items.zig
Original file line number Diff line number Diff line change
Expand Up @@ -1321,16 +1321,21 @@ pub const Recipe = struct { // MARK: Recipe
sourceAmounts: []u16,
resultItem: BaseItemIndex,
resultAmount: u16,
craftingTags: []const Tag,

fn getValidRecipe(self: Recipe) error{Invalid}!*Recipe {
outer: for (main.items.getRecipes()) |*recipe| {
if (recipe.resultItem != self.resultItem) continue;
if (recipe.resultAmount != self.resultAmount) continue;
if (recipe.sourceItems.len != self.sourceItems.len) continue;
if (recipe.craftingTags.len != self.craftingTags.len) continue;
for (recipe.sourceItems, recipe.sourceAmounts, self.sourceItems, self.sourceAmounts) |recipeItem, recipeAmount, selfItem, selfAmount| {
if (recipeItem != selfItem) continue :outer;
if (recipeAmount != selfAmount) continue :outer;
}
for (recipe.craftingTags, self.craftingTags) |recipeCraftingTag, selfCraftingTag| {
if (recipeCraftingTag != selfCraftingTag) continue :outer;
}
return recipe;
}
return error.Invalid;
Expand All @@ -1344,6 +1349,10 @@ pub const Recipe = struct { // MARK: Recipe
writer.writeEnum(BaseItemIndex, item);
writer.writeVarInt(u16, amount);
}
writer.writeVarInt(usize, self.craftingTags.len);
for (self.craftingTags) |tag| {
writer.writeSliceWithSize(tag.getName());
}
}

pub fn fromBytes(reader: *BinaryReader) !*Recipe {
Expand All @@ -1361,7 +1370,15 @@ pub const Recipe = struct { // MARK: Recipe
sourceAmounts.append(main.stackAllocator, try reader.readVarInt(u16));
}

return getValidRecipe(.{.sourceItems = sourceItems.items, .sourceAmounts = sourceAmounts.items, .resultItem = resultItem, .resultAmount = resultAmount});
const tagCount = try reader.readVarInt(usize);
var craftingTagTypes: main.List(Tag) = .initCapacity(main.stackAllocator, @min(256, tagCount));
defer craftingTagTypes.deinit(main.stackAllocator);

while (craftingTagTypes.items.len < tagCount) {
craftingTagTypes.append(main.stackAllocator, Tag.get(try reader.readSliceWithSize()) orelse return error.invalidTag);
}

return getValidRecipe(.{.sourceItems = sourceItems.items, .sourceAmounts = sourceAmounts.items, .resultItem = resultItem, .resultAmount = resultAmount, .craftingTags = craftingTagTypes.items});
}
};

Expand Down
11 changes: 8 additions & 3 deletions src/items/recipes.zig
Original file line number Diff line number Diff line change
Expand Up @@ -190,14 +190,15 @@ fn generateItemCombos(allocator: NeverFailingAllocator, recipe: []const ZonEleme
return newInputCombos;
}

pub fn addRecipe(itemCombo: []const ItemWithAmount, list: *main.ListManaged(Recipe)) void {
pub fn addRecipe(itemCombo: []const ItemWithAmount, list: *main.ListManaged(Recipe), craftingTags: []const Tag) void {
const inputs = itemCombo[0 .. itemCombo.len - 1];
const output = itemCombo[itemCombo.len - 1];
const recipe = Recipe{
.sourceItems = main.worldArena.alloc(BaseItemIndex, inputs.len),
.sourceAmounts = main.worldArena.alloc(u16, inputs.len),
.resultItem = output.item,
.resultAmount = output.amount,
.craftingTags = main.worldArena.dupe(Tag, craftingTags),
};
for (inputs, 0..) |input, i| {
recipe.sourceItems[i] = input.item;
Expand All @@ -218,11 +219,15 @@ pub fn parseRecipe(zon: ZonElement, list: *main.ListManaged(Recipe)) !void {
return error.InvalidReversibleRecipe;
}

const defaultCraftingTags: []const Tag = &.{.handCraftable};
const foundCraftingTags = Tag.loadTagsFromZon(arena, zon.getChild("craftingTags"));
const craftingTags = if (foundCraftingTags.len != 0) foundCraftingTags else defaultCraftingTags;

const itemCombos = try generateItemCombos(arena, recipeItems);
for (itemCombos) |itemCombo| {
addRecipe(itemCombo, list);
addRecipe(itemCombo, list, craftingTags);
if (reversible) {
addRecipe(&.{itemCombo[1], itemCombo[0]}, list);
addRecipe(&.{itemCombo[1], itemCombo[0]}, list, craftingTags);
}
}
}
Expand Down
1 change: 1 addition & 0 deletions src/tag.zig
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ pub const Tag = enum(u32) {
fluidPlaceable = 3,
chiselable = 4,
playerModel = 5,
handCraftable = 6,
_,

pub fn initTags() void {
Expand Down
Loading