Skip to content
Merged

Dev #28

Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jei_version=19.25.0.325
mod_id=synergy
mod_name=Synergy
mod_license=Custom License
mod_version=0.8.4-hotfix1
mod_version=0.8.5
mod_group_id=com.devdyna.synergy
mod_authors=DevDyna
mod_description=A bunch of Magic-Tech and fun made gadgets
Expand Down
2 changes: 0 additions & 2 deletions src/generated/resources/assets/synergy/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -687,8 +687,6 @@
"synergy.jade.modifier.environment.fuel.fail": "§cRequire an heat source below",
"synergy.jade.tip.cycle": "every cycle",
"synergy.jade.tip.daytime": "when daytime",
"synergy.jade.tip.exclude": "Exclude",
"synergy.jade.tip.include": "Include",
"synergy.jade.warn.moderator": "§cModerator not satisfied",
"synergy.jade.watcher_mode.not_player": "Mode Filter: §aNearest living entity not player",
"synergy.jade.watcher_mode.player_only": "Mode Filter: §aNearest player",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_the_recipe": {
"conditions": {
"recipe": "synergy:crushing_tub/beewax"
},
"trigger": "minecraft:recipe_unlocked"
},
"synergy": {
"trigger": "minecraft:inventory_changed"
}
},
"requirements": [
[
"has_the_recipe",
"synergy"
]
],
"rewards": {
"recipes": [
"synergy:crushing_tub/beewax"
]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_the_recipe": {
"conditions": {
"recipe": "synergy:crushing_tub/honey_source"
},
"trigger": "minecraft:recipe_unlocked"
},
"synergy": {
"trigger": "minecraft:inventory_changed"
}
},
"requirements": [
[
"has_the_recipe",
"synergy"
]
],
"rewards": {
"recipes": [
"synergy:crushing_tub/honey_source"
]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"type": "synergy:crushing_tub",
"fluid": {
"amount": 250,
"id": "synergy:honey_source"
},
"input": {
"item": "minecraft:honeycomb"
},
"output": {
"chance": 0.5,
"item": {
"count": 1,
"id": "synergy:beewax"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"type": "synergy:crushing_tub",
"fluid": {
"amount": 125,
"id": "synergy:honey_source"
},
"input": {
"item": "synergy:beewax"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@
"item": "synergy:ironberries"
},
"output": {
"count": 1,
"id": "synergy:tiny_iron_dust"
"chance": 1.0,
"item": {
"count": 1,
"id": "synergy:tiny_iron_dust"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,13 @@
import com.devdyna.synergy.init.types.zRecipeTypes;

import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
import mezz.jei.api.helpers.IGuiHelper;
import mezz.jei.api.recipe.IFocusGroup;
import mezz.jei.api.recipe.RecipeIngredientRole;
import mezz.jei.api.recipe.RecipeType;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.crafting.RecipeHolder;
import net.minecraft.world.level.ItemLike;

Expand Down Expand Up @@ -56,13 +59,30 @@ public void setRecipe(IRecipeLayoutBuilder builder, CrushingTubRecipe recipe, IF

builder.addSlot(RecipeIngredientRole.INPUT, 21, 29).addIngredients(recipe.getInput());

JEIFluidTankHelper.of()
.fluid(recipe.getFluid())
.offset(71, 39)
.scale(2.0f, 1.0f)
.build((x, y) -> builder.addOutputSlot(x, y));
if (recipe.getFluid() != null)
JEIFluidTankHelper.of()
.fluid(recipe.getFluid())
.offset(71, 39)
.scale(2.0f, 1.0f)
.build((x, y) -> builder.addOutputSlot(x, y));

if (recipe.getOutput() != null)
builder.addSlot(RecipeIngredientRole.OUTPUT, 70 + 1, 46 + 1).addItemStack(recipe.getOutput().item());

}

@Override
public void draw(CrushingTubRecipe recipe, IRecipeSlotsView recipeSlotsView, GuiGraphics guiGraphics, double mouseX,
double mouseY) {
super.draw(recipe, recipeSlotsView, guiGraphics, mouseX, mouseY);

if (recipe.getOutput() != null && recipe.getOutput().chance() < 1)
drawCentredStringFixed(guiGraphics, font,
Component.literal(
((int) (recipe.getOutput().chance() * 100)) + "%"),
55, 53,
defaultToolTipColor.getRGB(), false);

builder.addSlot(RecipeIngredientRole.OUTPUT, 70+1, 46+1).addItemStack(recipe.getOutput());
}

}
15 changes: 14 additions & 1 deletion src/main/java/com/devdyna/synergy/datagen/server/DataRecipe.java
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ protected void buildRecipes(RecipeOutput c) {
CrushingTubBuilder.of()
.input(zItems.IRONBERRIES)
.fluid(zFluids.IRONBERRY_JUICE, 250)
.output(zItems.TINY_IRON_DUST)
.output(zItems.TINY_IRON_DUST, 1)
.unlockedBy()
.save(c);

Expand Down Expand Up @@ -2609,6 +2609,19 @@ protected void buildRecipes(RecipeOutput c) {
.unlockedBy()
.save(c);

CrushingTubBuilder.of()
.input(Items.HONEYCOMB)
.fluid(zFluids.HONEY, 250)
.output(zItems.BEEWAX, 0.5f)
.unlockedBy()
.save(c);

CrushingTubBuilder.of()
.input(zItems.BEEWAX)
.fluid(zFluids.HONEY, 125)
.unlockedBy()
.save(c);

ShapedRecipeBuilder.shaped(MISC, zBlocks.ROUTER.get())
.pattern("WRW")
.pattern("RCR")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,8 @@ public ItemStack getNextDroppedItem() {
if (getFluidStorage().fill(recipe.getFluid().copy(), FluidAction.SIMULATE) != 0)
return ItemStack.EMPTY;

return recipe.getOutput().copy();

return level.random.nextFloat() < recipe.getOutput().chance() ? recipe.getOutput().item().copy()
: ItemStack.EMPTY;
}

public void craft(boolean dropWhenCrafted) {
Expand Down Expand Up @@ -164,8 +164,9 @@ public void craft(boolean dropWhenCrafted) {
getFluidStorage().fill(recipe.getFluid().copy(), FluidAction.EXECUTE);
getStorage().extractItem(0, 1, false);

if (dropWhenCrafted)
Block.popResource(level, getBlockPos().above(), recipe.getOutput().copy());
if (level.random.nextFloat() < recipe.getOutput().chance())
if (dropWhenCrafted)
Block.popResource(level, getBlockPos().above(), recipe.getOutput().item().copy());

level.playSound(null, getBlockPos(),
LevelUtil.chance(50, level) ? SoundEvents.SLIME_BLOCK_FALL : SoundEvents.SNIFFER_EGG_CRACK,
Expand All @@ -174,7 +175,6 @@ public void craft(boolean dropWhenCrafted) {
update();
}


@Override
public FluidStorageTank getFluidStorage() {
return getData(zHandlers.FLUID_TANK);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import com.devdyna.synergy.api.recipes.builders.api.BaseRecipeBuilder;
import com.devdyna.synergy.zStatic;
import com.devdyna.synergy.api.codec.ChanceOutputItem;
import com.devdyna.synergy.api.recipes.builders.*;
import com.devdyna.synergy.api.utils.IngredientUtils;
import com.devdyna.synergy.api.utils.x;
Expand All @@ -18,16 +19,17 @@
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.item.crafting.Recipe;
import net.neoforged.neoforge.fluids.FluidStack;
import net.neoforged.neoforge.registries.DeferredHolder;

@SuppressWarnings({ "null" })
public class CrushingTubBuilder extends BaseRecipeBuilder
implements ItemAttach.Output.SimpleOutputItem<CrushingTubBuilder>,
implements
ItemAttach.Input.NoItemCount<CrushingTubBuilder>,
FluidAttach.Any.SimpleFluidAttach<CrushingTubBuilder> {

private Ingredient input;
private FluidStack fluid;
private ItemStack output;
private ChanceOutputItem output;

private CrushingTubBuilder() {
this.criteria = new LinkedHashMap<String, Criterion<?>>();
Expand All @@ -49,7 +51,7 @@ public CrushingTubBuilder unlockedBy(String name, Criterion<?> criterion) {

public Item getResult() {
return this.output != null
? this.output.getItem()
? this.output.item().getItem()
: this.fluid.getFluid().getBucket();
}

Expand All @@ -75,16 +77,27 @@ public CrushingTubBuilder input(Ingredient input) {
return this;
}

@Override
public CrushingTubBuilder output(ItemStack output) {
public CrushingTubBuilder output(ChanceOutputItem output) {
this.output = output;
return this;
}

public CrushingTubBuilder output(ItemStack output, float chance) {
return output(ChanceOutputItem.of(output, chance));
}

public CrushingTubBuilder output(Item output, float chance) {
return output(x.item(output), chance);
}

public CrushingTubBuilder output(DeferredHolder<Item, Item> output, float chance) {
return output(x.item(output), chance);
}

@Override
public ResourceLocation getSuffix(String extra) {
return x.rl(zStatic.Blocks.crushing_tub + "/"
+ (this.output != null ? x.path(this.output.getItem())
+ (this.output != null ? x.path(this.output.item().getItem())
: x.path(this.fluid.getFluid()))
+ extra);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.util.List;

import com.devdyna.synergy.api.codec.ChanceOutputItem;
import com.devdyna.synergy.api.recipes.inputs.MonoItemInput;
import com.devdyna.synergy.api.recipes.types.BaseRecipeType;
import com.devdyna.synergy.api.registers.RecipeRegister;
Expand All @@ -21,16 +22,16 @@ public class CrushingTubRecipe extends BaseRecipeType<MonoItemInput> {

private final Ingredient input;
private final FluidStack fluid;
private final ItemStack output;
private final ChanceOutputItem output;

public CrushingTubRecipe(Ingredient input,
ItemStack output, FluidStack fluid) {
ChanceOutputItem output, FluidStack fluid) {
this.input = input;
this.fluid = fluid;
this.output = output;
}

public static CrushingTubRecipe of(Ingredient input, ItemStack output, FluidStack fluid) {
public static CrushingTubRecipe of(Ingredient input, ChanceOutputItem output, FluidStack fluid) {
return new CrushingTubRecipe(input, output, fluid);
}

Expand All @@ -39,7 +40,7 @@ public boolean matches(MonoItemInput r, Level l) {
}

public ItemStack assemble(MonoItemInput i, HolderLookup.Provider r) {
return this.output.copy();
return this.output.item().copy();
}

public NonNullList<Ingredient> getIngredients() {
Expand All @@ -50,7 +51,7 @@ public Ingredient getInput() {
return input;
}

public ItemStack getOutput() {
public ChanceOutputItem getOutput() {
return output;
}

Expand All @@ -62,7 +63,7 @@ public FluidStack getFluid() {
@Deprecated
public ItemStack getResultItem(HolderLookup.Provider r) {
return this.output != null
? this.output
? this.output.item()
: x.item(this.fluid.getFluid().getBucket()).copy();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,31 @@
import com.mojang.serialization.codecs.RecordCodecBuilder;

import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.codec.ByteBufCodecs;
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.item.crafting.RecipeSerializer;
import net.neoforged.neoforge.fluids.FluidStack;

import com.devdyna.synergy.api.codec.ChanceOutputItem;
import com.devdyna.synergy.api.utils.RecipeUtils;

public class CrushingTubRecipeSerializer implements RecipeSerializer<CrushingTubRecipe> {

public static final MapCodec<CrushingTubRecipe> CODEC = RecordCodecBuilder.mapCodec(inst -> inst.group(
Ingredient.CODEC.fieldOf("input").forGetter(CrushingTubRecipe::getInput),
ItemStack.CODEC.optionalFieldOf("output",ItemStack.EMPTY)
.forGetter(r -> RecipeUtils.optionalCodec(r.getOutput())),
ChanceOutputItem.CODEC.optionalFieldOf("output")
.forGetter(r -> ChanceOutputItem.optional(r.getOutput())),
FluidStack.CODEC.optionalFieldOf("fluid",FluidStack.EMPTY)
.forGetter(r -> RecipeUtils.optionalCodec(r.getFluid())))
.apply(inst, CrushingTubRecipe::new));
.apply(inst, (i,o,f)-> new CrushingTubRecipe(i,o.orElse(null),f)));

public static final StreamCodec<RegistryFriendlyByteBuf, CrushingTubRecipe> STREAM_CODEC = StreamCodec
.composite(
Ingredient.CONTENTS_STREAM_CODEC, CrushingTubRecipe::getInput,
ItemStack.OPTIONAL_STREAM_CODEC, CrushingTubRecipe::getOutput,
ByteBufCodecs.optional(ChanceOutputItem.STREAM_CODEC), r -> ChanceOutputItem.optional(r.getOutput()),
FluidStack.OPTIONAL_STREAM_CODEC,CrushingTubRecipe::getFluid,
CrushingTubRecipe::new);
(i,o,f)-> new CrushingTubRecipe(i,o.orElse(null),f));

@Override
public MapCodec<CrushingTubRecipe> codec() {
Expand Down
Loading
Loading