well the press... almost works...

This commit is contained in:
Flanks255 2022-01-06 17:16:37 -06:00
parent ebb9200957
commit 99521c64a1
25 changed files with 357 additions and 93 deletions

View file

@ -85,6 +85,7 @@ dependencies {
runtimeOnly fg.deobf("mezz.jei:jei-${jei_version}")
runtimeOnly fg.deobf("curse.maven:TOP-245211:3319255")
runtimeOnly fg.deobf("curse.maven:MEK-268560:3590099")
}
// not sure if this is still needed

View file

@ -7,10 +7,10 @@ mod_version=1.1.52
# Forge
game_version=1.16.5
forge_version=36.2.8
forge_version=36.2.22
# Parchment (Mappings)
parchment_version=2021.10.17
# Other mods
jei_version=1.16.4:7.6.1.71
jei_version=1.16.5:7.7.1.117

View file

@ -14,7 +14,7 @@ c93b89c4b673b6063148666b2eb13dec98918532 assets/actuallyadditions/blockstates/bl
ac5d75bda4dc24894fb380d5e3ec751a0aa5c498 assets/actuallyadditions/blockstates/black_quartz_stair.json
146faa2ebbb31f320f8b336f6e675fce6faac2db assets/actuallyadditions/blockstates/black_quartz_wall.json
5dea2f0e554a5ecb9b7f547526d745ff85353a40 assets/actuallyadditions/blockstates/breaker.json
48eb2c3f1180c04e668046abc65dbadeaaf3aed6 assets/actuallyadditions/blockstates/canola.json
273dff01ca0d0738f05639086aa4f1b6bf3fde3c assets/actuallyadditions/blockstates/canola_crop.json
5101139337dd4e5a057333e9e424df47f7138c93 assets/actuallyadditions/blockstates/canola_press.json
c8d5786cd66f324b82d201e6e4eb0ae0a5978d13 assets/actuallyadditions/blockstates/charcoal_block.json
998b11d1f63e153ab2f8bd11830405611c8886a2 assets/actuallyadditions/blockstates/chiseled_black_quartz_block.json
@ -146,7 +146,7 @@ f277709029801d7292d300b13876189a32d1b3a4 assets/actuallyadditions/models/block/b
93b61ddd8e53f61ca25c4768de3a3b95a23297b4 assets/actuallyadditions/models/block/black_quartz_wall_post.json
1c617e7845d3211b4f7cda38a9bee59208de8c23 assets/actuallyadditions/models/block/black_quartz_wall_side.json
46c7aa812a7af600d4f927eba5fa3f5b4956fa28 assets/actuallyadditions/models/block/black_quartz_wall_side_tall.json
e3b1972935fa68ca5feaad8f7412530df5d6b8a2 assets/actuallyadditions/models/block/canola.json
f399ee0d5977015e82c733336cd6317dee65aefe assets/actuallyadditions/models/block/canola_crop.json
49e551c7f9943bd24b1fa09fb65836bae48096df assets/actuallyadditions/models/block/charcoal_block.json
48a6232ced27b9a35fc236705adb2ea817a03b3f assets/actuallyadditions/models/block/chiseled_black_quartz_slab.json
85a969896c0aad4f70878d4c075c6c0885a5ade4 assets/actuallyadditions/models/block/chiseled_black_quartz_slab_top.json
@ -250,7 +250,8 @@ dfb8604b25fc7a671c371a81e3384410c69cc7b1 assets/actuallyadditions/models/item/bl
ea2f5b2bf99670f4df05889ab67c73686a26a58b assets/actuallyadditions/models/item/black_quartz_stair.json
be227e074a54982e1e9f9f304e63df3095006955 assets/actuallyadditions/models/item/black_quartz_wall.json
3679056a9aee03821a997a2616b8808af7bfe4b7 assets/actuallyadditions/models/item/breaker.json
f3282e55e71d26a32cee1287881ac2d5e91c30a8 assets/actuallyadditions/models/item/canola.json
e1b2c741f6da5cfb51392b1a722c4d664ae2400e assets/actuallyadditions/models/item/canola.json
89b4704399440cae3ffdee004e5df95cbc0ab0d8 assets/actuallyadditions/models/item/canola_crop.json
e4b8fbed9602c0cf96eff84111586799412982fc assets/actuallyadditions/models/item/canola_oil_bucket.json
08c70d561c219bb4c6d21b5f56192df81f054e0a assets/actuallyadditions/models/item/canola_press.json
0507025fadef30e363cbc825265576c782880f7b assets/actuallyadditions/models/item/canola_seeds.json
@ -683,6 +684,7 @@ b0b8c23e30fa6890c6cb3b4bcb0c21170e6e6cfd data/actuallyadditions/recipes/palis_le
c91d538c767c582f8dbd9008c59d2069b253d85b data/actuallyadditions/recipes/palis_shovel.json
34f63da2e20810935ec211fb1a5e7cfc5d6d19e3 data/actuallyadditions/recipes/palis_sword.json
4590b472dcb90700ea525a3c6ac3f325458fab19 data/actuallyadditions/recipes/phantom_connector.json
6a1050a9aaadea6d3961b7e77ee17880404a56e0 data/actuallyadditions/recipes/pressing/canola.json
68e7d4bd5e6ea852ef57ff5032d922a9a703fd77 data/actuallyadditions/recipes/quadruple_battery.json
fe64f278992ae37581a7b50e0870b222d9e9577e data/actuallyadditions/recipes/quartz_aiot.json
d64fe5965c8274ca27a5fcb0a83d372ed817e62f data/actuallyadditions/recipes/quartz_axe.json

View file

@ -1,7 +0,0 @@
{
"variants": {
"": {
"model": "actuallyadditions:block/canola"
}
}
}

View file

@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "actuallyadditions:block/canola_crop"
}
}
}

View file

@ -1,6 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "actuallyadditions:block/canola"
"all": "actuallyadditions:block/canola_crop"
}
}

View file

@ -1,3 +1,6 @@
{
"parent": "actuallyadditions:block/canola"
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "actuallyadditions:item/canola"
}
}

View file

@ -0,0 +1,3 @@
{
"parent": "actuallyadditions:block/canola_crop"
}

View file

@ -0,0 +1,10 @@
{
"type": "actuallyadditions:pressing",
"ingredient": {
"item": "actuallyadditions:canola"
},
"result": {
"fluid": "actuallyadditions:canola_oil",
"amount": 80
}
}

View file

@ -21,6 +21,7 @@ import de.ellpeck.actuallyadditions.api.lens.LensConversion;
import de.ellpeck.actuallyadditions.api.recipe.*;
import de.ellpeck.actuallyadditions.mod.crafting.CrushingRecipe;
import de.ellpeck.actuallyadditions.mod.crafting.EmpowererRecipe;
import de.ellpeck.actuallyadditions.mod.crafting.PressingRecipe;
import de.ellpeck.actuallyadditions.mod.crafting.SolidFuelRecipe;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
@ -48,6 +49,7 @@ public final class ActuallyAdditionsAPI {
public static final Map<Item, IColorLensChanger> RECONSTRUCTOR_LENS_COLOR_CHANGERS = new HashMap<>();
public static final List<SolidFuelRecipe> SOLID_FUEL_RECIPES = new ArrayList<>();
public static final List<PressingRecipe> PRESSING_RECIPES = new ArrayList<>();
/**
* Farmer behaviors are sorted when first accessed, this will not be done until after loading, but do not add behaviors at runtime.
*/

View file

@ -37,6 +37,7 @@ public class ActuallyAdditionsData {
generator.addProvider(new EmpoweringRecipeGenerator(generator));
generator.addProvider(new CrushingRecipeGenerator(generator));
generator.addProvider(new SolidFuelGenerator(generator));
generator.addProvider(new MiscMachineRecipeGenerator(generator));
}
}
}

View file

@ -0,0 +1,32 @@
package de.ellpeck.actuallyadditions.data;
import com.google.gson.JsonObject;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.crafting.PressingRecipe;
import de.ellpeck.actuallyadditions.mod.fluids.InitFluids;
import de.ellpeck.actuallyadditions.mod.items.ActuallyItems;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.DirectoryCache;
import net.minecraft.data.IFinishedRecipe;
import net.minecraft.data.RecipeProvider;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fluids.FluidStack;
import java.nio.file.Path;
import java.util.function.Consumer;
public class MiscMachineRecipeGenerator extends RecipeProvider {
public MiscMachineRecipeGenerator(DataGenerator pGenerator) {
super(pGenerator);
}
@Override
protected void saveAdvancement(DirectoryCache pCache, JsonObject pAdvancementJson, Path pPath) {
}
@Override
protected void buildShapelessRecipes(Consumer<IFinishedRecipe> consumer) {
consumer.accept(new PressingRecipe.FinishedRecipe(new ResourceLocation(ActuallyAdditions.MODID, "pressing/canola"), Ingredient.of(ActuallyItems.CANOLA.get()), new FluidStack(InitFluids.CANOLA_OIL.get(), 80)));
}
}

View file

@ -264,7 +264,7 @@ public final class ActuallyBlocks {
//TODO: Are plants normal blocks / blockitems? i have no idea... news at 11...
public static final AABlockReg<BlockPlant, AABlockItem, ?> RICE = new AABlockReg<>("rice", () -> new BlockPlant(ActuallyItems.RICE_SEEDS),
(b) -> new AABlockItem(b, defaultBlockItemProperties));
public static final AABlockReg<BlockPlant, AABlockItem, ?> CANOLA = new AABlockReg<>("canola", () -> new BlockPlant(ActuallyItems.CANOLA_SEEDS),
public static final AABlockReg<BlockPlant, AABlockItem, ?> CANOLA = new AABlockReg<>("canola_crop", () -> new BlockPlant(ActuallyItems.CANOLA_SEEDS),
(b) -> new AABlockItem(b, defaultBlockItemProperties));
public static final AABlockReg<BlockPlant, AABlockItem, ?> FLAX = new AABlockReg<>("flax", () -> new BlockPlant(ActuallyItems.FLAX_SEEDS),
(b) -> new AABlockItem(b, defaultBlockItemProperties));

View file

@ -40,11 +40,16 @@ public class BlockCanolaPress extends BlockContainerBase {
// }
@Nullable
//@Override
public TileEntity newBlockEntity(IBlockReader world) {
@Override
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
return new TileEntityCanolaPress();
}
@Override
public boolean hasTileEntity(BlockState state) {
return true;
}
@Override
public ActionResultType use(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit) {
if (!world.isClientSide) {

View file

@ -20,6 +20,7 @@ public class ActuallyRecipes {
public static final RegistryObject<IRecipeSerializer<?>> EMPOWERING_RECIPE = SERIALIZERS.register(EmpowererRecipe.NAME, EmpowererRecipe.Serializer::new);
public static final RegistryObject<IRecipeSerializer<?>> CRUSHING_RECIPE = SERIALIZERS.register(CrushingRecipe.NAME, CrushingRecipe.Serializer::new);
public static final RegistryObject<IRecipeSerializer<?>> SOLID_FUEL_RECIPE = SERIALIZERS.register(SolidFuelRecipe.NAME, SolidFuelRecipe.Serializer::new);
public static final RegistryObject<IRecipeSerializer<?>> PRESSING_RECIPE = SERIALIZERS.register(PressingRecipe.NAME, PressingRecipe.Serializer::new);
@ -29,7 +30,7 @@ public class ActuallyRecipes {
public static final IRecipeType<CrushingRecipe> CRUSHING = IRecipeType.register(ActuallyAdditions.MODID + ":crushing");
public static final IRecipeType<SolidFuelRecipe> SOLID_FUEL = IRecipeType.register(ActuallyAdditions.MODID + ":solid_fuel");
//public static final IRecipeType<LiquidFuelRecipe> LIQUIDFUEL = IRecipeType.register(ActuallyAdditions.MODID + ":liquid_fuel");
//public static final IRecipeType<PressingRecipe> PRESSING = IRecipeType.register(ActuallyAdditions.MODID + ":pressing");
public static final IRecipeType<PressingRecipe> PRESSING = IRecipeType.register(ActuallyAdditions.MODID + ":pressing");
//public static final IRecipeType<FermentingRecipe> FERMENTING = IRecipeType.register(ActuallyAdditions.MODID + ":fermenting");
}
}

View file

@ -0,0 +1,154 @@
package de.ellpeck.actuallyadditions.mod.crafting;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import net.minecraft.data.IFinishedRecipe;
import net.minecraft.fluid.Fluid;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.IRecipeSerializer;
import net.minecraft.item.crafting.IRecipeType;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.network.PacketBuffer;
import net.minecraft.util.JSONUtils;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.ForgeRegistryEntry;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class PressingRecipe implements IRecipe<IInventory> {
public static final String NAME = "pressing";
private final ResourceLocation ID;
private final Ingredient input;
private final FluidStack output;
public PressingRecipe(ResourceLocation ID, Ingredient input, FluidStack output) {
this.ID = ID;
this.input = input;
this.output = output;
}
@Override
public boolean matches(@Nonnull IInventory pInv, @Nullable World pLevel) {
return input.test(pInv.getItem(0));
}
@Override
public ItemStack assemble(IInventory pInv) {
return ItemStack.EMPTY;
}
@Override
public boolean canCraftInDimensions(int pWidth, int pHeight) {
return true;
}
public FluidStack getOutput() {
return this.output;
}
@Override
public ItemStack getResultItem() {
return ItemStack.EMPTY;
}
@Override
public ResourceLocation getId() {
return ID;
}
@Override
public IRecipeSerializer<?> getSerializer() {
return ActuallyRecipes.PRESSING_RECIPE.get();
}
@Override
public IRecipeType<?> getType() {
return ActuallyRecipes.Types.PRESSING;
}
public static class Serializer extends ForgeRegistryEntry<IRecipeSerializer<?>> implements IRecipeSerializer<PressingRecipe> {
@Nonnull
@Override
public PressingRecipe fromJson(@Nonnull ResourceLocation pRecipeId, @Nonnull JsonObject pJson) {
Ingredient ingredient = Ingredient.fromJson(JSONUtils.getAsJsonObject(pJson, "ingredient"));
JsonObject result = pJson.getAsJsonObject("result");
ResourceLocation fluidRes = new ResourceLocation(JSONUtils.getAsString(result, "fluid"));
int fluidAmount = JSONUtils.getAsInt(result, "amount");
Fluid fluid = ForgeRegistries.FLUIDS.getValue(fluidRes);
if(fluid == null)
throw new JsonParseException("Unknown fluid '" + fluidRes + "'");
FluidStack output = new FluidStack(fluid, fluidAmount);
return new PressingRecipe(pRecipeId, ingredient, output);
}
@Nullable
@Override
public PressingRecipe fromNetwork(@Nonnull ResourceLocation pRecipeId, @Nonnull PacketBuffer pBuffer) {
Ingredient ingredient = Ingredient.fromNetwork(pBuffer);
ResourceLocation fluidRes = new ResourceLocation(pBuffer.readUtf());
int fluidAmount = pBuffer.readInt();
Fluid fluid = ForgeRegistries.FLUIDS.getValue(fluidRes);
if(fluid == null)
throw new JsonParseException("Unknown fluid '" + fluidRes + "'");
FluidStack output = new FluidStack(fluid, fluidAmount);
return new PressingRecipe(pRecipeId, ingredient, output);
}
@Override
public void toNetwork(@Nonnull PacketBuffer pBuffer, @Nonnull PressingRecipe pRecipe) {
pRecipe.input.toNetwork(pBuffer);
pBuffer.writeUtf(pRecipe.output.getFluid().getRegistryName().toString());
pBuffer.writeInt(pRecipe.output.getAmount());
}
}
public static class FinishedRecipe implements IFinishedRecipe {
private final ResourceLocation ID;
private final Ingredient input;
private final FluidStack output;
public FinishedRecipe(ResourceLocation ID, Ingredient input, FluidStack output) {
this.ID = ID;
this.input = input;
this.output = output;
}
@Override
public void serializeRecipeData(JsonObject pJson) {
pJson.add("ingredient", input.toJson());
JsonObject result = new JsonObject();
result.addProperty("fluid", output.getFluid().getRegistryName().toString());
result.addProperty("amount", output.getAmount());
pJson.add("result", result);
}
@Override
public ResourceLocation getId() {
return ID;
}
@Override
public IRecipeSerializer<?> getType() {
return ActuallyRecipes.PRESSING_RECIPE.get();
}
@Nullable
@Override
public JsonObject serializeAdvancement() {
return null;
}
@Nullable
@Override
public ResourceLocation getAdvancementId() {
return null;
}
}
}

View file

@ -0,0 +1,27 @@
package de.ellpeck.actuallyadditions.mod.fluids;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.capability.templates.FluidTank;
import java.util.function.Predicate;
public class OutputOnlyFluidTank extends FluidTank {
public OutputOnlyFluidTank(int capacity) {
super(capacity, (FluidStack fluidStack) -> true);
}
public OutputOnlyFluidTank(int capacity, Predicate<FluidStack> validator) {
super(capacity, validator);
}
@Override
public int fill(FluidStack resource, FluidAction action) {
return 0;
}
public int fillInternal(FluidStack resource, FluidAction action) {
return super.fill(resource, action);
}
}

View file

@ -11,18 +11,28 @@
package de.ellpeck.actuallyadditions.mod.inventory.gui;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.fluid.Fluid;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidTank;
import net.minecraftforge.fluids.capability.templates.FluidTank;
import net.minecraftforge.fml.client.gui.GuiUtils;
import java.text.NumberFormat;
import java.util.Collections;
@OnlyIn(Dist.CLIENT)
public class FluidDisplay extends AbstractGui {
private FluidStack fluidReference;
private IFluidTank fluidReference;
private Fluid oldFluid;
private int x;
@ -33,15 +43,15 @@ public class FluidDisplay extends AbstractGui {
private boolean drawTextNextTo;
public FluidDisplay(int x, int y, FluidStack fluidReference, boolean outline, boolean drawTextNextTo) {
public FluidDisplay(int x, int y, IFluidTank fluidReference, boolean outline, boolean drawTextNextTo) {
this.setData(x, y, fluidReference, outline, drawTextNextTo);
}
public FluidDisplay(int x, int y, FluidStack fluidReference) {
public FluidDisplay(int x, int y, IFluidTank fluidReference) {
this(x, y, fluidReference, false, false);
}
public void setData(int x, int y, FluidStack fluidReference, boolean outline, boolean drawTextNextTo) {
public void setData(int x, int y, IFluidTank fluidReference, boolean outline, boolean drawTextNextTo) {
this.x = x;
this.y = y;
this.fluidReference = fluidReference;
@ -50,7 +60,7 @@ public class FluidDisplay extends AbstractGui {
}
public void draw(MatrixStack matrices) {
/* Minecraft mc = Minecraft.getInstance();
Minecraft mc = Minecraft.getInstance();
mc.getTextureManager().bind(AssetUtil.GUI_INVENTORY_LOCATION);
int barX = this.x;
@ -65,15 +75,13 @@ public class FluidDisplay extends AbstractGui {
this.blit(matrices, barX, barY, 0, 171, 18, 85);
FluidStack stack = this.fluidReference.getFluid();
Fluid fluid = stack == null
? null
: stack.getFluid();
Fluid fluid = stack.getFluid();
if (this.resLoc == null || this.oldFluid != fluid) {
this.oldFluid = fluid;
if (this.resLoc == null || this.oldFluid != stack.getFluid()) {
this.oldFluid = stack.getFluid();
if (fluid != null && fluid.getStill() != null) {
this.resLoc = new ResourceLocation(fluid.getStill().getNamespace(), "textures/" + fluid.getStill().getPath() + ".png");
if (fluid != null && fluid.getAttributes().getStillTexture() != null) {
this.resLoc = new ResourceLocation(fluid.getAttributes().getStillTexture().getNamespace(), "textures/" + fluid.getAttributes().getStillTexture().getPath() + ".png");
}
}
@ -82,18 +90,19 @@ public class FluidDisplay extends AbstractGui {
GlStateManager._pushMatrix();
GlStateManager._enableBlend();
GlStateManager.disableAlpha();
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
int i = this.fluidReference.getFluidAmount() * 83 / this.fluidReference.getCapacity();
Gui.drawModalRectWithCustomSizedTexture(barX + 1, barY + 84 - i, 36, 172, 16, i, 16, 512);
GlStateManager._disableAlphaTest();
GlStateManager._blendFuncSeparate(770, 771, 1, 0);
int i = this.fluidReference.getFluid().getAmount() * 83 / this.fluidReference.getCapacity();
blit(matrices, barX + 1, barY + 84 - i, 0, 0, 36, 172, 16, i, 16, 512);
//drawModalRectWithCustomSizedTexture(barX + 1, barY + 84 - i, 36, 172, 16, i, 16, 512);
GlStateManager._disableBlend();
GlStateManager.enableAlpha();
GlStateManager._enableAlphaTest();
GlStateManager._popMatrix();
}
if (this.drawTextNextTo) {
this.drawString(mc.font, this.getOverlayText(), barX + 25, barY + 78, StringUtil.DECIMAL_COLOR_WHITE);
}*/
mc.font.draw(matrices, new StringTextComponent(this.getOverlayText()), barX + 25, barY + 78, StringUtil.DECIMAL_COLOR_WHITE);
}
}
public void render(MatrixStack matrices, int mouseX, int mouseY) {
@ -103,17 +112,16 @@ public class FluidDisplay extends AbstractGui {
? 93
: 85)) {
Minecraft mc = Minecraft.getInstance();
//GuiUtils.drawHoveringText(Collections.singletonList(this.getOverlayText()), mouseX, mouseY, mc.displayWidth, mc.displayHeight, -1, mc.font);
GuiUtils.drawHoveringText(matrices, Collections.singletonList(new StringTextComponent(this.getOverlayText())), mouseX, mouseY, mc.getWindow().getWidth(), mc.getWindow().getHeight(), -1, mc.font);
}
}
private String getOverlayText() {
/* NumberFormat format = NumberFormat.getInstance();
NumberFormat format = NumberFormat.getInstance();
FluidStack stack = this.fluidReference.getFluid();
String cap = format.format(this.fluidReference.getCapacity());
return stack == null || stack.getFluid() == null
return stack.isEmpty()
? "0/" + cap + " mB"
: format.format(this.fluidReference.getFluidAmount()) + "/" + cap + " mB " + stack.getLocalizedName();*/
return "";
: format.format(this.fluidReference.getFluidAmount()) + "/" + cap + " mB " + stack.getDisplayName().getString();
}
}

View file

@ -41,8 +41,11 @@ public class GuiCanolaPress extends AAScreen<ContainerCanolaPress> {
@Override
public void init() {
super.init();
//this.energy = new EnergyDisplay(this.leftPos + 42, this.topPos + 5, this.press.storage);
//this.fluid = new FluidDisplay(this.leftPos + 116, this.topPos + 5, this.press.tank);
this.energy = new EnergyDisplay(this.leftPos + 42, this.topPos + 5, this.press.storage);
this.fluid = new FluidDisplay(this.leftPos + 116, this.topPos + 5, this.press.tank);
titleLabelX = (int) (imageWidth / 2.0f - font.width(title) / 2.0f);
titleLabelY = -10;
}
@Override
@ -53,11 +56,6 @@ public class GuiCanolaPress extends AAScreen<ContainerCanolaPress> {
this.fluid.render(matrices, x, y);
}
@Override
public void renderLabels(@Nonnull MatrixStack matrices, int x, int y) {
AssetUtil.displayNameString(matrices, this.font, this.imageWidth, -10, this.press);
}
@Override
public void renderBg(MatrixStack matrices, float f, int x, int y) {
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);

View file

@ -37,7 +37,7 @@ public final class ActuallyItems {
public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, ActuallyAdditions.MODID);
// MISC ITEMS
// public static final RegistryObject<Item> CANOLA = ITEMS.register("canola", ItemBase::new);
public static final RegistryObject<Item> CANOLA = ITEMS.register("canola", ItemBase::new);
public static final RegistryObject<Item> COFFEE_CUP = ITEMS.register("coffee_cup", ItemBase::new);
public static final RegistryObject<Item> PAPER_CONE = ITEMS.register("paper_cone", ItemBase::new);
public static final RegistryObject<Item> DOUGH = ITEMS.register("dough", ItemBase::new);
@ -292,7 +292,7 @@ public final class ActuallyItems {
RESTONIA_CRYSTAL_SHARD, PALIS_CRYSTAL_SHARD, DIAMATINE_CRYSTAL_SHARD, VOID_CRYSTAL_SHARD, EMERADIC_CRYSTAL_SHARD,
ENORI_CRYSTAL_SHARD, ENGINEERS_GOGGLES, ENGINEERS_GOGGLES_ADVANCED, LASER_UPGRADE_RANGE, LASER_UPGRADE_INVISIBILITY,
HANDHELD_FILLER, TRAVELERS_SACK, VOID_SACK, WORM, PLAYER_PROBE, FILTER, WATER_BOWL, PAPER_CONE, DOUGH,
RING, BASIC_COIL, ADVANCED_COIL, RICE_DOUGH, TINY_COAL, TINY_CHARCOAL, RICE_SLIMEBALL, /*CANOLA,*/ EMPTY_CUP,
RING, BASIC_COIL, ADVANCED_COIL, RICE_DOUGH, TINY_COAL, TINY_CHARCOAL, RICE_SLIMEBALL, CANOLA, EMPTY_CUP,
BATS_WING, DRILL_CORE, LENS, ENDER_STAR, CRYSTALLIZED_CANOLA_SEED, EMPOWERED_CANOLA_SEED, LENS_OF_COLOR,
LENS_OF_DETONATION, LENS_OF_CERTAIN_DEATH, LENS_OF_THE_KILLER, LENS_OF_DISENCHANTING, LENS_OF_THE_MINER,
LASER_WRENCH, TELEPORT_STAFF, WINGS_OF_THE_BATS, SINGLE_BATTERY, DOUBLE_BATTERY, TRIPLE_BATTERY, QUADRUPLE_BATTERY, QUINTUPLE_BATTERY,

View file

@ -10,8 +10,12 @@
package de.ellpeck.actuallyadditions.mod.tile;
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.mod.blocks.ActuallyBlocks;
import de.ellpeck.actuallyadditions.mod.crafting.PressingRecipe;
import de.ellpeck.actuallyadditions.mod.crafting.SingleItem;
import de.ellpeck.actuallyadditions.mod.fluids.InitFluids;
import de.ellpeck.actuallyadditions.mod.fluids.OutputOnlyFluidTank;
import de.ellpeck.actuallyadditions.mod.inventory.ContainerCanolaPress;
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA.IAcceptor;
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA.IRemover;
@ -26,31 +30,29 @@ import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.Direction;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.energy.IEnergyStorage;
import net.minecraftforge.fluids.FluidAttributes;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidTank;
import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.fluids.capability.templates.FluidTank;
import javax.annotation.Nullable;
import java.util.Optional;
public class TileEntityCanolaPress extends TileEntityInventoryBase implements INamedContainerProvider, ISharingFluidHandler {
public static final int PRODUCE = 80;
//public static final int PRODUCE = 80;
public static final int ENERGY_USE = 35;
private static final int TIME = 30;
public final CustomEnergyStorage storage = new CustomEnergyStorage(40000, 100, 0);
public final LazyOptional<IEnergyStorage> lazyEnergy = LazyOptional.of(() -> this.storage);
public final FluidTank tank = new FluidTank(2 * Util.BUCKET) {
// TODO: [port] ensure this is the correct replacement for canFill
@Override
public boolean isFluidValid(FluidStack stack) {
return false;
}
};
public final OutputOnlyFluidTank tank = new OutputOnlyFluidTank(2 * FluidAttributes.BUCKET_VOLUME);
public final LazyOptional<IFluidHandler> lazyFluid = LazyOptional.of(() -> this.tank);
public int currentProcessTime;
@ -62,9 +64,9 @@ public class TileEntityCanolaPress extends TileEntityInventoryBase implements IN
super(ActuallyBlocks.CANOLA_PRESS.getTileEntityType(), 1);
}
public static boolean isCanola(ItemStack stack) {
return stack.getItem() == ActuallyBlocks.CANOLA.getItem();
}
// public static boolean isCanola(ItemStack stack) {
// return stack.getItem() == ActuallyBlocks.CANOLA.getItem();
// }
@OnlyIn(Dist.CLIENT)
public int getTankScaled(int i) {
@ -105,22 +107,25 @@ public class TileEntityCanolaPress extends TileEntityInventoryBase implements IN
public void updateEntity() {
super.updateEntity();
if (!this.level.isClientSide) {
if (isCanola(this.inv.getStackInSlot(0)) && PRODUCE <= this.tank.getCapacity() - this.tank.getFluidAmount()) {
if (this.storage.getEnergyStored() >= ENERGY_USE) {
this.currentProcessTime++;
this.storage.extractEnergyInternal(ENERGY_USE, false);
if (this.currentProcessTime >= TIME) {
this.currentProcessTime = 0;
Optional<PressingRecipe> recipe = getRecipeForInput(this.inv.getStackInSlot(0));
recipe.ifPresent(r -> {
if ((r.getOutput().isFluidEqual(this.tank.getFluid()) || this.tank.isEmpty()) && r.getOutput().getAmount() <= this.tank.getCapacity() - this.tank.getFluidAmount()) {
if (this.storage.getEnergyStored() >= ENERGY_USE) {
this.currentProcessTime++;
this.storage.extractEnergyInternal(ENERGY_USE, false);
if (this.currentProcessTime >= TIME) {
this.currentProcessTime = 0;
this.inv.setStackInSlot(0, StackUtil.shrink(this.inv.getStackInSlot(0), 1));
this.tank.fill(new FluidStack(InitFluids.CANOLA_OIL.get(), PRODUCE), IFluidHandler.FluidAction.EXECUTE);
this.setChanged();
this.inv.setStackInSlot(0, StackUtil.shrink(this.inv.getStackInSlot(0), 1));
FluidStack produced = r.getOutput().copy();
this.tank.fillInternal(produced, IFluidHandler.FluidAction.EXECUTE);
this.setChanged();
}
}
}
} else {
});
if (!recipe.isPresent())
this.currentProcessTime = 0;
}
if ((this.storage.getEnergyStored() != this.lastEnergyStored || this.tank.getFluidAmount() != this.lastTankAmount | this.currentProcessTime != this.lastProcessTime) && this.sendUpdateWithInterval()) {
this.lastEnergyStored = this.storage.getEnergyStored();
@ -130,9 +135,17 @@ public class TileEntityCanolaPress extends TileEntityInventoryBase implements IN
}
}
public boolean validInput(ItemStack stack) {
return getRecipeForInput(stack).isPresent();
}
public Optional<PressingRecipe> getRecipeForInput(ItemStack stack) {
return ActuallyAdditionsAPI.PRESSING_RECIPES.stream().filter(recipe -> recipe.matches(new SingleItem(stack), null)).findFirst();
}
@Override
public IAcceptor getAcceptor() {
return (slot, stack, automation) -> slot == 0 && isCanola(stack);
return (slot, stack, automation) -> slot == 0 && validInput(stack);
}
@Override
@ -167,7 +180,7 @@ public class TileEntityCanolaPress extends TileEntityInventoryBase implements IN
@Override
public ITextComponent getDisplayName() {
return StringTextComponent.EMPTY;
return new TranslationTextComponent("container.actuallyadditions.canola_press");
}
@Nullable

View file

@ -27,6 +27,7 @@ import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.fluids.FluidAttributes;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.fluids.capability.templates.FluidTank;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@ -74,8 +75,8 @@ public class TileEntityFermentingBarrel extends TileEntityBase implements IShari
if (this.currentProcessTime >= PROCESS_TIME) {
this.currentProcessTime = 0;
this.tanks.oilTank.grow(produce);
this.tanks.canolaTank.shrink(produce);
this.tanks.oilTank.getFluid().grow(produce);
this.tanks.canolaTank.getFluid().shrink(produce);
}
} else {
this.currentProcessTime = 0;
@ -151,9 +152,9 @@ public class TileEntityFermentingBarrel extends TileEntityBase implements IShari
public class FermentingBarrelMultiTank implements IFluidHandler {
public FluidStack canolaTank = new FluidStack(InitFluids.CANOLA_OIL.get(), 0);
public FluidStack oilTank = new FluidStack(InitFluids.REFINED_CANOLA_OIL.get(), 0);
private int capacity = FluidAttributes.BUCKET_VOLUME * 2;
public FluidTank canolaTank = new FluidTank(capacity);
public FluidTank oilTank = new FluidTank(capacity);
@Override
public int getTanks() {
@ -163,7 +164,7 @@ public class TileEntityFermentingBarrel extends TileEntityBase implements IShari
@Nonnull
@Override
public FluidStack getFluidInTank(int tank) {
return tank == 0? canolaTank:oilTank;
return tank == 0 ? canolaTank.getFluid() : oilTank.getFluid();
}
@Override
@ -186,22 +187,22 @@ public class TileEntityFermentingBarrel extends TileEntityBase implements IShari
if (canolaTank.isEmpty())
return Math.min(capacity, resource.getAmount());
else
return Math.min(capacity - canolaTank.getAmount(), resource.getAmount());
return Math.min(capacity - canolaTank.getFluid().getAmount(), resource.getAmount());
}
else {
if (canolaTank.isEmpty()) {
canolaTank = new FluidStack(resource, Math.min(capacity, resource.getAmount()));
canolaTank.fill(new FluidStack(resource, Math.min(capacity, resource.getAmount())), FluidAction.EXECUTE);
//TODO need to set the BE dirty.
return canolaTank.getAmount();
return canolaTank.getFluid().getAmount();
}
else {
int filledAmt = capacity - canolaTank.getAmount();
int filledAmt = capacity - canolaTank.getFluid().getAmount();
if (resource.getAmount() < filledAmt) {
canolaTank.grow(resource.getAmount());
canolaTank.getFluid().grow(resource.getAmount());
filledAmt = resource.getAmount();
}
else
canolaTank.setAmount(capacity);
canolaTank.getFluid().setAmount(capacity);
if (filledAmt > 0){
//TODO set BE dirty
@ -236,14 +237,14 @@ public class TileEntityFermentingBarrel extends TileEntityBase implements IShari
@Override
public FluidStack drain(int maxDrain, FluidAction action) {
int drained = maxDrain;
if (oilTank.getAmount() < drained)
if (oilTank.getFluid().getAmount() < drained)
{
drained = oilTank.getAmount();
drained = oilTank.getFluid().getAmount();
}
FluidStack stack = new FluidStack(oilTank, drained);
FluidStack stack = new FluidStack(oilTank.getFluid(), drained);
if (action.execute() && drained > 0)
{
oilTank.shrink(drained);
oilTank.getFluid().shrink(drained);
//TODO set BE dirty
}
return stack;

View file

@ -23,5 +23,8 @@ public class ResourceReloader implements IResourceManagerReloadListener {
ActuallyAdditionsAPI.SOLID_FUEL_RECIPES.clear();
ActuallyAdditionsAPI.SOLID_FUEL_RECIPES.addAll(recipeManager.getAllRecipesFor(ActuallyRecipes.Types.SOLID_FUEL));
ActuallyAdditionsAPI.PRESSING_RECIPES.clear();
ActuallyAdditionsAPI.PRESSING_RECIPES.addAll(recipeManager.getAllRecipesFor(ActuallyRecipes.Types.PRESSING));
}
}

View file

@ -296,7 +296,7 @@
"item.actuallyadditions.coffee_seed": "Coffee Seeds",
"item.actuallyadditions.coffee_beans": "Coffee Beans",
"item.actuallyadditions.canola_seed": "Canola Seeds",
"item.actuallyadditions.misc_canola": "Canola",
"item.actuallyadditions.canola": "Canola",
"item.actuallyadditions.resonant_rice": "Resonant Rice",
"item.actuallyadditions.drill_upgrade_speed": "Drill Speed Augment I",
"item.actuallyadditions.drill_upgrade_speed_ii": "Drill Speed Augment II",
@ -642,7 +642,7 @@
"container.actuallyadditions.breaker": "Breaker",
"container.actuallyadditions.dropper": "Precision Dropper",
"container.actuallyadditions.crafting": "Crafting Table On A Stick",
"container.actuallyadditions.canolaPress": "Canola Press",
"container.actuallyadditions.canola_press": "Canola Press",
"container.actuallyadditions.fermentingBarrel": "Fermenting Barrel",
"container.actuallyadditions.coalGenerator": "Coal Generator",
"container.actuallyadditions.oilGenerator": "Oil Generator",