Various fixes and additions #30

Merged
BlakeRain merged 6 commits from BlakeRain/utamacraft:main into main 2023-12-04 17:51:53 +00:00
73 changed files with 168 additions and 67 deletions
Showing only changes of commit 697d727f51 - Show all commits

View File

@ -37,7 +37,6 @@ import java.util.Optional;
public class InsolatorBlockEntity extends BlockEntity implements MenuProvider { public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
public static final int ENERGY_REQUIRED = 32; public static final int ENERGY_REQUIRED = 32;
public static final int MAX_PROGRESS = 500;
private final ItemStackHandler inventory = new ItemStackHandler(3) { private final ItemStackHandler inventory = new ItemStackHandler(3) {
@Override @Override
@ -83,6 +82,7 @@ public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
private final LazyOptional<FluidTank> fluidOptional = LazyOptional.of(() -> fluid); private final LazyOptional<FluidTank> fluidOptional = LazyOptional.of(() -> fluid);
private int progress = 0; private int progress = 0;
private int ticks = 0;
private boolean active = false; private boolean active = false;
public InsolatorBlockEntity(BlockPos pPos, BlockState pBlockState) { public InsolatorBlockEntity(BlockPos pPos, BlockState pBlockState) {
@ -132,6 +132,7 @@ public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
nbt.put("fluid", fluid.writeToNBT(new CompoundTag())); nbt.put("fluid", fluid.writeToNBT(new CompoundTag()));
nbt.put("energy", energy.serializeNBT()); nbt.put("energy", energy.serializeNBT());
nbt.putInt("progress", progress); nbt.putInt("progress", progress);
nbt.putInt("ticks", ticks);
nbt.putBoolean("active", active); nbt.putBoolean("active", active);
super.saveAdditional(nbt); super.saveAdditional(nbt);
} }
@ -143,6 +144,7 @@ public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
fluid.readFromNBT(nbt.getCompound("fluid")); fluid.readFromNBT(nbt.getCompound("fluid"));
energy.deserializeNBT(nbt.get("energy")); energy.deserializeNBT(nbt.get("energy"));
progress = nbt.getInt("progress"); progress = nbt.getInt("progress");
ticks = nbt.getInt("ticks");
active = nbt.getBoolean("active"); active = nbt.getBoolean("active");
} }
@ -164,21 +166,32 @@ public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
return; return;
} }
boolean newActive; boolean newActive = entity.active;
if (entity.canCraft().isPresent() && entity.hasEnoughEnergy()) { Optional<InsolatorRecipe> optionalInsolatorRecipe = entity.getRecipe();
++entity.progress; if (optionalInsolatorRecipe.isEmpty()) {
newActive = true;
entity.energy.extractEnergy(ENERGY_REQUIRED, false);
setChanged(level, pos, state);
if (entity.progress >= MAX_PROGRESS) {
entity.craftItem();
}
} else {
entity.resetProgress();
newActive = false; newActive = false;
setChanged(level, pos, state); } else {
InsolatorRecipe insolatorRecipe = optionalInsolatorRecipe.get();
if (entity.canCraft(insolatorRecipe) && entity.hasEnoughEnergy(insolatorRecipe)) {
if (entity.progress == 0) {
entity.ticks = insolatorRecipe.getTicks();
}
++entity.progress;
newActive = true;
entity.energy.extractEnergy(ENERGY_REQUIRED, false);
setChanged(level, pos, state);
if (entity.progress >= insolatorRecipe.getTicks()) {
entity.craftItem(insolatorRecipe);
}
} else {
entity.resetProgress(insolatorRecipe.getTicks());
newActive = false;
setChanged(level, pos, state);
}
} }
if (newActive != entity.active) { if (newActive != entity.active) {
@ -210,18 +223,14 @@ public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
} }
} }
private void resetProgress() { private void resetProgress(int newTicks) {
this.progress = 0; this.progress = 0;
this.ticks = newTicks;
} }
private void craftItem() { private void craftItem(InsolatorRecipe recipe) {
Optional<InsolatorRecipe> recipe = canCraft();
if (recipe.isEmpty()) {
return;
}
// Drain the amount of fluid specified in our recipe from the fluid tank // Drain the amount of fluid specified in our recipe from the fluid tank
fluid.drain(recipe.get().getFluid().getAmount(), IFluidHandler.FluidAction.EXECUTE); fluid.drain(recipe.getFluid().getAmount(), IFluidHandler.FluidAction.EXECUTE);
// Remove an item from the input slot. // Remove an item from the input slot.
inventory.extractItem(1, 1, false); inventory.extractItem(1, 1, false);
@ -229,47 +238,38 @@ public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
// Insert the recipe output in to the output slot. // Insert the recipe output in to the output slot.
ItemStack output = inventory.getStackInSlot(2); ItemStack output = inventory.getStackInSlot(2);
if (output.isEmpty()) { if (output.isEmpty()) {
inventory.setStackInSlot(2, recipe.get().getResultItem().copy()); inventory.setStackInSlot(2, recipe.getResultItem().copy());
} else { } else {
output.grow(recipe.get().getResultItem().getCount()); output.grow(recipe.getResultItem().getCount());
} }
resetProgress(); resetProgress(recipe.getTicks());
} }
private boolean hasEnoughEnergy() { private boolean hasEnoughEnergy(InsolatorRecipe recipe) {
return energy.getEnergyStored() >= ENERGY_REQUIRED * MAX_PROGRESS; return energy.getEnergyStored() >= ENERGY_REQUIRED * recipe.getTicks();
} }
private Optional<InsolatorRecipe> canCraft() { private boolean canCraft(InsolatorRecipe recipe) {
Optional<InsolatorRecipe> recipe = getRecipe();
if (recipe.isEmpty()) {
return Optional.empty();
}
// Make sure that the correct fluid is in the tank. // Make sure that the correct fluid is in the tank.
if (!fluid.getFluid().equals(recipe.get().getFluid())) { if (!fluid.getFluid().equals(recipe.getFluid())) {
return Optional.empty(); return false;
} }
// Ensure that we have enough fluid // Ensure that we have enough fluid
if (fluid.getFluidAmount() < recipe.get().getFluid().getAmount()) { if (fluid.getFluidAmount() < recipe.getFluid().getAmount()) {
return Optional.empty(); return false;
} }
ItemStack output = inventory.getStackInSlot(2); ItemStack output = inventory.getStackInSlot(2);
// If the output isn't empty, and the item in the output is different to the output of the recipe, we cannot process. // If the output isn't empty, and the item in the output is different to the output of the recipe, we cannot process.
if (!output.isEmpty() && output.getItem() != recipe.get().getResultItem().getItem()) { if (!output.isEmpty() && output.getItem() != recipe.getResultItem().getItem()) {
return Optional.empty(); return false;
} }
// Make sure that the output is not saturated. // Make sure that the output is not saturated.
if (output.getCount() + recipe.get().getResultItem().getCount() > output.getMaxStackSize()) { return output.getCount() + recipe.getResultItem().getCount() <= output.getMaxStackSize();
return Optional.empty();
}
return recipe;
} }
private Optional<InsolatorRecipe> getRecipe() { private Optional<InsolatorRecipe> getRecipe() {
@ -313,4 +313,8 @@ public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
public int getProgress() { public int getProgress() {
return this.progress; return this.progress;
} }
public int getTicks() {
return this.ticks;
}
} }

View File

@ -5,6 +5,7 @@ import dan200.computercraft.api.lua.LuaFunction;
import dan200.computercraft.api.lua.MethodResult; import dan200.computercraft.api.lua.MethodResult;
import net.banutama.utamacraft.block.entity.InsolatorBlockEntity; import net.banutama.utamacraft.block.entity.InsolatorBlockEntity;
import net.banutama.utamacraft.integrations.computercraft.utils.WrapResult; import net.banutama.utamacraft.integrations.computercraft.utils.WrapResult;
import net.banutama.utamacraft.recipe.InsolatorRecipe;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
@ -42,7 +43,7 @@ public class InsolatorPeripheral extends BasePeripheral {
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
result.put("active", insolator.getActive()); result.put("active", insolator.getActive());
result.put("progress", insolator.getProgress()); result.put("progress", insolator.getProgress());
result.put("maxProgress", InsolatorBlockEntity.MAX_PROGRESS); result.put("ticks", insolator.getTicks());
result.put("energy", WrapResult.wrap(insolator.getEnergy())); result.put("energy", WrapResult.wrap(insolator.getEnergy()));
insolator.getInventoryOptional().ifPresent(inventory -> result.put("inventory", WrapResult.wrap(inventory))); insolator.getInventoryOptional().ifPresent(inventory -> result.put("inventory", WrapResult.wrap(inventory)));

View File

@ -20,12 +20,14 @@ public class InsolatorRecipe implements Recipe<SimpleContainer> {
private final ItemStack output; private final ItemStack output;
private final Ingredient input; private final Ingredient input;
private final FluidStack fluid; private final FluidStack fluid;
private final int ticks;
public InsolatorRecipe(ResourceLocation id, ItemStack output, Ingredient input, FluidStack fluid) { public InsolatorRecipe(ResourceLocation id, ItemStack output, Ingredient input, FluidStack fluid, int ticks) {
this.id = id; this.id = id;
this.output = output; this.output = output;
this.input = input; this.input = input;
this.fluid = fluid; this.fluid = fluid;
this.ticks = ticks;
} }
@Override @Override
@ -51,6 +53,10 @@ public class InsolatorRecipe implements Recipe<SimpleContainer> {
return fluid; return fluid;
} }
public int getTicks() {
return ticks;
}
@Override @Override
public @NotNull ItemStack getResultItem() { public @NotNull ItemStack getResultItem() {
return output.copy(); return output.copy();
@ -87,7 +93,8 @@ public class InsolatorRecipe implements Recipe<SimpleContainer> {
ItemStack output = ShapedRecipe.itemStackFromJson(GsonHelper.getAsJsonObject(pSerializedRecipe, "output")); ItemStack output = ShapedRecipe.itemStackFromJson(GsonHelper.getAsJsonObject(pSerializedRecipe, "output"));
Ingredient input = Ingredient.fromJson(pSerializedRecipe.getAsJsonObject("input")); Ingredient input = Ingredient.fromJson(pSerializedRecipe.getAsJsonObject("input"));
FluidStack fluid = FluidStack.CODEC.decode(JsonOps.INSTANCE, pSerializedRecipe.get("fluid")).result().orElseThrow().getFirst(); FluidStack fluid = FluidStack.CODEC.decode(JsonOps.INSTANCE, pSerializedRecipe.get("fluid")).result().orElseThrow().getFirst();
return new InsolatorRecipe(pRecipeId, output, input, fluid); int ticks = pSerializedRecipe.get("ticks").getAsInt();
return new InsolatorRecipe(pRecipeId, output, input, fluid, ticks);
} }
@Override @Override
@ -95,7 +102,8 @@ public class InsolatorRecipe implements Recipe<SimpleContainer> {
ItemStack output = pBuffer.readItem(); ItemStack output = pBuffer.readItem();
Ingredient input = Ingredient.fromNetwork(pBuffer); Ingredient input = Ingredient.fromNetwork(pBuffer);
FluidStack fluid = pBuffer.readFluidStack(); FluidStack fluid = pBuffer.readFluidStack();
return new InsolatorRecipe(pRecipeId, output, input, fluid); int ticks = pBuffer.readInt();
return new InsolatorRecipe(pRecipeId, output, input, fluid, ticks);
} }
@Override @Override
@ -103,6 +111,7 @@ public class InsolatorRecipe implements Recipe<SimpleContainer> {
pBuffer.writeItemStack(pRecipe.output, false); pBuffer.writeItemStack(pRecipe.output, false);
pRecipe.input.toNetwork(pBuffer); pRecipe.input.toNetwork(pBuffer);
pBuffer.writeFluidStack(pRecipe.fluid); pBuffer.writeFluidStack(pRecipe.fluid);
pBuffer.writeInt(pRecipe.ticks);
} }
} }
} }

View File

@ -2,8 +2,10 @@ package net.banutama.utamacraft.screen;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.logging.LogUtils;
import net.banutama.utamacraft.Utamacraft; import net.banutama.utamacraft.Utamacraft;
import net.banutama.utamacraft.block.entity.InsolatorBlockEntity; import net.banutama.utamacraft.block.entity.InsolatorBlockEntity;
import net.banutama.utamacraft.recipe.InsolatorRecipe;
import net.banutama.utamacraft.screen.utils.FluidSprite; import net.banutama.utamacraft.screen.utils.FluidSprite;
import net.banutama.utamacraft.screen.utils.MouseUtils; import net.banutama.utamacraft.screen.utils.MouseUtils;
import net.banutama.utamacraft.screen.utils.TiledSprite; import net.banutama.utamacraft.screen.utils.TiledSprite;
@ -104,8 +106,11 @@ public class InsolatorScreen extends AbstractContainerScreen<InsolatorMenu> {
private void renderProgressArrow(PoseStack stack, int x, int y) { private void renderProgressArrow(PoseStack stack, int x, int y) {
if (menu.getBlockEntity().getActive()) { if (menu.getBlockEntity().getActive()) {
float ratio = (float)menu.getBlockEntity().getProgress() / (float)InsolatorBlockEntity.MAX_PROGRESS; int ticks = menu.getBlockEntity().getTicks();
blit(stack, x + 90, y + 33, 176, 0, 8, (int)(25.0f * ratio)); if (ticks != 0) {
float ratio = (float)menu.getBlockEntity().getProgress() / (float)ticks;
blit(stack, x + 90, y + 33, 176, 0, 8, (int)(25.0f * ratio));
}
} }
} }

View File

@ -3,9 +3,10 @@
"input": { "input": {
"item": "minecraft:acacia_leaves" "item": "minecraft:acacia_leaves"
}, },
"ticks": 1000,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 1000
}, },
"output": { "output": {
"item": "minecraft:acacia_leaves", "item": "minecraft:acacia_leaves",

View File

@ -3,9 +3,10 @@
"input": { "input": {
"item": "minecraft:acacia_sapling" "item": "minecraft:acacia_sapling"
}, },
"ticks": 1000,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 1000
}, },
"output": { "output": {
"item": "minecraft:acacia_sapling", "item": "minecraft:acacia_sapling",

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:allium" "item": "minecraft:allium"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:azalea" "item": "minecraft:azalea"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,9 +3,10 @@
"input": { "input": {
"item": "minecraft:azalea_leaves" "item": "minecraft:azalea_leaves"
}, },
"ticks": 1000,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 1000
}, },
"output": { "output": {
"item": "minecraft:azalea_leaves", "item": "minecraft:azalea_leaves",

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:azure_bluet" "item": "minecraft:azure_bluet"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:bamboo" "item": "minecraft:bamboo"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:beetroot_seeds" "item": "minecraft:beetroot_seeds"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:big_dripleaf" "item": "minecraft:big_dripleaf"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,9 +3,10 @@
"input": { "input": {
"item": "minecraft:birch_leaves" "item": "minecraft:birch_leaves"
}, },
"ticks": 1000,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 1000
}, },
"output": { "output": {
"item": "minecraft:birch_leaves", "item": "minecraft:birch_leaves",

View File

@ -3,9 +3,10 @@
"input": { "input": {
"item": "minecraft:birch_sapling" "item": "minecraft:birch_sapling"
}, },
"ticks": 1000,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 1000
}, },
"output": { "output": {
"item": "minecraft:birch_sapling", "item": "minecraft:birch_sapling",

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:blue_orchid" "item": "minecraft:blue_orchid"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:brown_mushroom" "item": "minecraft:brown_mushroom"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:cactus" "item": "minecraft:cactus"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:chorus_flower" "item": "minecraft:chorus_flower"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:cornflower" "item": "minecraft:cornflower"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:crimson_fungus" "item": "minecraft:crimson_fungus"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:crimson_roots" "item": "minecraft:crimson_roots"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:dandelion" "item": "minecraft:dandelion"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,9 +3,10 @@
"input": { "input": {
"item": "minecraft:dark_oak_leaves" "item": "minecraft:dark_oak_leaves"
}, },
"ticks": 1000,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 1000
}, },
"output": { "output": {
"item": "minecraft:dark_oak_leaves", "item": "minecraft:dark_oak_leaves",

View File

@ -3,9 +3,10 @@
"input": { "input": {
"item": "minecraft:dark_oak_sapling" "item": "minecraft:dark_oak_sapling"
}, },
"ticks": 1000,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 1000
}, },
"output": { "output": {
"item": "minecraft:dark_oak_sapling", "item": "minecraft:dark_oak_sapling",

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:fern" "item": "minecraft:fern"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:flowering_azalea" "item": "minecraft:flowering_azalea"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,9 +3,10 @@
"input": { "input": {
"item": "minecraft:flowering_azalea_leaves" "item": "minecraft:flowering_azalea_leaves"
}, },
"ticks": 1000,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 1000
}, },
"output": { "output": {
"item": "minecraft:flowering_azalea_leaves", "item": "minecraft:flowering_azalea_leaves",

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:glow_lichen" "item": "minecraft:glow_lichen"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:grass" "item": "minecraft:grass"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:hanging_roots" "item": "minecraft:hanging_roots"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,9 +3,10 @@
"input": { "input": {
"item": "minecraft:jungle_leaves" "item": "minecraft:jungle_leaves"
}, },
"ticks": 1000,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 1000
}, },
"output": { "output": {
"item": "minecraft:jungle_leaves", "item": "minecraft:jungle_leaves",

View File

@ -3,9 +3,10 @@
"input": { "input": {
"item": "minecraft:jungle_sapling" "item": "minecraft:jungle_sapling"
}, },
"ticks": 1000,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 1000
}, },
"output": { "output": {
"item": "minecraft:jungle_sapling", "item": "minecraft:jungle_sapling",

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:kelp" "item": "minecraft:kelp"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:large_fern" "item": "minecraft:large_fern"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:lilac" "item": "minecraft:lilac"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:lily_of_the_valley" "item": "minecraft:lily_of_the_valley"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,9 +3,10 @@
"input": { "input": {
"item": "minecraft:mangrove_leaves" "item": "minecraft:mangrove_leaves"
}, },
"ticks": 1000,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 1000
}, },
"output": { "output": {
"item": "minecraft:mangrove_leaves", "item": "minecraft:mangrove_leaves",

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:melon" "item": "minecraft:melon"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:moss_block" "item": "minecraft:moss_block"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:moss_carpet" "item": "minecraft:moss_carpet"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:nether_sprouts" "item": "minecraft:nether_sprouts"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:nether_wart" "item": "minecraft:nether_wart"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,9 +3,10 @@
"input": { "input": {
"item": "minecraft:oak_leaves" "item": "minecraft:oak_leaves"
}, },
"ticks": 1000,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 1000
}, },
"output": { "output": {
"item": "minecraft:oak_leaves", "item": "minecraft:oak_leaves",

View File

@ -3,9 +3,10 @@
"input": { "input": {
"item": "minecraft:oak_sapling" "item": "minecraft:oak_sapling"
}, },
"ticks": 1000,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 1000
}, },
"output": { "output": {
"item": "minecraft:oak_sapling", "item": "minecraft:oak_sapling",

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:orange_tulip" "item": "minecraft:orange_tulip"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:oxeye_daisy" "item": "minecraft:oxeye_daisy"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:peony" "item": "minecraft:peony"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:pink_tulip" "item": "minecraft:pink_tulip"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:poppy" "item": "minecraft:poppy"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:potato" "item": "minecraft:potato"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:pumpkin" "item": "minecraft:pumpkin"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:red_mushroom" "item": "minecraft:red_mushroom"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:red_tulip" "item": "minecraft:red_tulip"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:rose_bush" "item": "minecraft:rose_bush"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:sea_pickle" "item": "minecraft:sea_pickle"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:seagrass" "item": "minecraft:seagrass"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:small_dripleaf" "item": "minecraft:small_dripleaf"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:spore_blossom" "item": "minecraft:spore_blossom"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,9 +3,10 @@
"input": { "input": {
"item": "minecraft:spruce_leaves" "item": "minecraft:spruce_leaves"
}, },
"ticks": 1000,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 1000
}, },
"output": { "output": {
"item": "minecraft:spruce_leaves", "item": "minecraft:spruce_leaves",

View File

@ -3,9 +3,10 @@
"input": { "input": {
"item": "minecraft:spruce_sapling" "item": "minecraft:spruce_sapling"
}, },
"ticks": 1000,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 1000
}, },
"output": { "output": {
"item": "minecraft:spruce_sapling", "item": "minecraft:spruce_sapling",

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:sugar_cane" "item": "minecraft:sugar_cane"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:sunflower" "item": "minecraft:sunflower"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:tall_grass" "item": "minecraft:tall_grass"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:twisting_vines" "item": "minecraft:twisting_vines"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:vine" "item": "minecraft:vine"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:warped_fungus" "item": "minecraft:warped_fungus"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:warped_roots" "item": "minecraft:warped_roots"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:weeping_vines" "item": "minecraft:weeping_vines"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:wheat_seeds" "item": "minecraft:wheat_seeds"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:white_tulip" "item": "minecraft:white_tulip"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -3,6 +3,7 @@
"input": { "input": {
"item": "minecraft:wither_rose" "item": "minecraft:wither_rose"
}, },
"ticks": 500,
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": 500

View File

@ -77,19 +77,33 @@ ITEMS = [
# "minecraft:torchflower", TODO: 1.20 # "minecraft:torchflower", TODO: 1.20
] ]
def basicTicksFor(item: str) -> int:
if item.endswith("_leaves") or item.endswith("_sapling"):
return 1000
return 500
def basicWaterFor(item: str) -> int:
if item.endswith("_leaves") or item.endswith("_sapling"):
return 1000
return 500
for item in ITEMS: for item in ITEMS:
namespace, item_name = item.split(":") namespace, item_name = item.split(":")
with open(f"src/main/resources/data/utamacraft/recipes/insolator_{namespace}_{item_name}.json", "w") as fp: with open(f"src/main/resources/data/utamacraft/recipes/insolator_{namespace}_{item_name}.json", "w") as fp:
fp.write(json.dumps({ fp.write(json.dumps({
"type": "utamacraft:insolator", "type": "utamacraft:insolator",
"input": { "item": item }, "input": { "item": item },
"ticks": basicTicksFor(item),
"fluid": { "fluid": {
"FluidName": "minecraft:water", "FluidName": "minecraft:water",
"Amount": 500 "Amount": basicWaterFor(item)
}, },
"output": { "item": item, "count": 2 } "output": { "item": item, "count": 2 }
}, indent=2)) }, indent=2))
with open("insolator-recipes.md", "w") as fp: with open("insolator-recipes.md", "w") as fp:
for item in ITEMS: for item in ITEMS:
fp.write(f"| [{item}] | 500 | 16,000 | 500 | 25 |\n") ticks = basicTicksFor(item)
energy = 32 * ticks
water = basicWaterFor(item)
fp.write(f"| [{item}] | {water} | {energy} | {ticks} | {ticks / 20} |\n")