Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
a19d423
Fix half of #3981 not being ported to 1.21
screret Jul 31, 2026
a211f0f
Use vanilla's `replaceRecipes` method instead of adding our own
screret Aug 5, 2026
78a41fc
Move dynamic recipe generation/loading to a handler class[^1] and del…
screret Aug 5, 2026
e510d5a
clean up/optimize ingredient compression code slightly
screret Aug 5, 2026
f6306e0
Move dynamic tag generation/loading from `MixinHelpers` to a handler …
screret Aug 5, 2026
d7d3cab
Somewhat rewrite how TagType works internally
screret Aug 5, 2026
bea12ae
Add back the `chemical_bath_washable/*` tags but make them less speci…
screret Aug 5, 2026
a7622fc
fix stone blocks' tags (e.g. `#c:stones`) not being plural on 1.21, c…
screret Aug 5, 2026
dc436f3
Rename TagPrefix's tag addition methods and add `@Deprecated(forRemov…
screret Aug 5, 2026
422a250
Move tag filter addition from TagType to TagPrefix
screret Aug 5, 2026
5e202d9
Simplify PostRegistryListener
screret Aug 5, 2026
31b6e00
Move dynamic loot table generation from `MixinHelpers` to a handler c…
screret Aug 5, 2026
06b8c56
time everything, everything!
screret Aug 5, 2026
de3b294
Bypass Java Generic Hell™
screret Aug 7, 2026
aa1c3a4
Fix the RegistryOps we have ""not supporting"" items.
screret Aug 7, 2026
ff8f21e
Fix "tag not in data packs" warnings
screret Aug 7, 2026
55170e7
Add waxed copper doors to cleanroom doors tag
screret Aug 7, 2026
24f9d61
Remove log spam from registries without dynamic tags printing "GregTe…
screret Aug 7, 2026
1e884e3
Merge branch '1.21' into sc/clean-up-dynamic-data-injection
screret Aug 15, 2026
d68c782
spotless + datagen
screret Aug 15, 2026
baa6a67
Merge branch '1.21' into sc/clean-up-dynamic-data-injection
screret Aug 29, 2026
c869fc3
Merge branch '1.21' into sc/clean-up-dynamic-data-injection
screret Aug 29, 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
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"values": []
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"values": []
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"values": []
}
5 changes: 5 additions & 0 deletions src/generated/resources/data/c/tags/block/mineable/saw.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"values": [
"#minecraft:ice"
]
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
{
"values": [
"minecraft:iron_door",
"#minecraft:wooden_doors"
"#minecraft:wooden_doors",
"minecraft:waxed_copper_door",
"minecraft:waxed_exposed_copper_door",
"minecraft:waxed_weathered_copper_door",
"minecraft:waxed_oxidized_copper_door"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -68,42 +68,37 @@ public IntProviderFluidIngredient copyWithModifier(IntProviderFluidIngredient co

@Override
public List<Object> compressIngredients(@Unmodifiable Collection<Object> ingredients) {
List<Object> list = new ObjectArrayList<>(ingredients.size());
for (Object item : ingredients) {
if (item instanceof SizedFluidIngredient fluid) {
boolean isEqual = false;
List<Object> list = new ArrayList<>(ingredients.size());
mainLoop:
for (Object entry : ingredients) {
if (entry instanceof SizedFluidIngredient ingredient) {
for (Object obj : list) {
if (obj instanceof SizedFluidIngredient SizedFluidIngredient) {
if (fluid.equals(SizedFluidIngredient)) {
isEqual = true;
break;
if (obj instanceof SizedFluidIngredient other) {
if (ingredient.equals(other)) {
continue mainLoop;
}
} else if (obj instanceof FluidStack fluidStack) {
if (fluid.ingredient().test(fluidStack)) {
isEqual = true;
break;
} else if (obj instanceof FluidStack other) {
if (ingredient.ingredient().test(other)) {
continue mainLoop;
}
}
}
if (isEqual) continue;
list.add(fluid);
} else if (item instanceof FluidStack fluidStack) {
boolean isEqual = false;

list.add(ingredient);
} else if (entry instanceof FluidStack stack) {
for (Object obj : list) {
if (obj instanceof SizedFluidIngredient fluidIngredient) {
if (fluidIngredient.ingredient().test(fluidStack)) {
isEqual = true;
break;
if (obj instanceof SizedFluidIngredient other) {
if (other.ingredient().test(stack)) {
continue mainLoop;
}
} else if (obj instanceof FluidStack stack) {
if (FluidStack.isSameFluidSameComponents(fluidStack, stack)) {
isEqual = true;
break;
} else if (obj instanceof FluidStack other) {
if (FluidStack.isSameFluidSameComponents(stack, other)) {
continue mainLoop;
}
}
}
if (isEqual) continue;
list.add(fluidStack);

list.add(stack);
}
}
return list;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,47 +69,36 @@ public IntProviderIngredient copyWithModifier(IntProviderIngredient content, Con

@Override
public List<Object> compressIngredients(@Unmodifiable Collection<Object> ingredients) {
List<Object> list = new ObjectArrayList<>(ingredients.size());
for (Object item : ingredients) {
if (item instanceof SizedIngredient ingredient) {
boolean isEqual = false;
List<Object> list = new ArrayList<>(ingredients.size());
MAIN_LOOP:
for (Object entry : ingredients) {
if (entry instanceof SizedIngredient ingredient) {
for (Object obj : list) {
if (obj instanceof SizedIngredient ingredient1) {
if (ingredient.ingredient().equals(ingredient1.ingredient())) {
isEqual = true;
break;
continue MAIN_LOOP;
}
} else if (obj instanceof ItemStack stack) {
if (ingredient.ingredient().test(stack)) {
isEqual = true;
break;
continue MAIN_LOOP;
}
}
}
if (isEqual) continue;
// spotless:off
if (ingredient.getContainedCustom() instanceof IntCircuitIngredient) {
list.addFirst(ingredient);
} else {
list.add(ingredient);
}
// spotless:on
} else if (item instanceof ItemStack stack) {
boolean isEqual = false;

list.add(ingredient);
} else if (entry instanceof ItemStack stack) {
for (Object obj : list) {
if (obj instanceof Ingredient ingredient) {
if (ingredient.test(stack)) {
isEqual = true;
break;
if (obj instanceof SizedIngredient ingredient) {
if (ingredient.ingredient().test(stack)) {
continue MAIN_LOOP;
}
} else if (obj instanceof ItemStack stack1) {
if (ItemStack.isSameItemSameComponents(stack, stack1)) {
isEqual = true;
break;
continue MAIN_LOOP;
}
}
}
if (isEqual) continue;

list.add(stack);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import net.minecraft.tags.TagKey;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.level.ItemLike;
import net.minecraft.world.level.block.Block;
Expand Down Expand Up @@ -249,6 +250,16 @@ public static List<ItemLike> getItems(MaterialEntry materialEntry) {
}).stream().map(Supplier::get).collect(Collectors.toList());
}

public static Item getItem(MaterialEntry materialEntry) {
List<ItemLike> items = getItems(materialEntry);
if (items.isEmpty()) return Items.AIR;
return items.get(0).asItem();
}

public static Item getItem(TagPrefix tagPrefix, Material material) {
return getItem(new MaterialEntry(tagPrefix, material));
}

public static ItemStack get(MaterialEntry materialEntry, int size) {
var list = getItems(materialEntry);
if (list.isEmpty()) return ItemStack.EMPTY;
Expand Down
Loading
Loading