mirror of
https://github.com/TicTicBoooom-Mods/MasterfulMachinery.git
synced 2026-01-18 16:37:23 +01:00
fixed jei process support and started on structure builder
This commit is contained in:
@@ -18,7 +18,7 @@ apply plugin: 'net.minecraftforge.gradle'
|
||||
apply plugin: 'eclipse'
|
||||
apply plugin: 'maven-publish'
|
||||
|
||||
version = '1.16.5-0.1.13-T' + System.currentTimeMillis()
|
||||
version = '1.16.5-0.1.15-T' + System.currentTimeMillis()
|
||||
group = 'com.yourname.modid' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
|
||||
archivesBaseName = 'MasterfulMachinery'
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.ticticboooom.mods.mm.block;
|
||||
|
||||
import com.ticticboooom.mods.mm.registration.MMSetup;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class ProjectorBlock extends Block {
|
||||
public ProjectorBlock() {
|
||||
super(Properties.of(Material.METAL));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasTileEntity(BlockState state) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
|
||||
return MMSetup.PROJECTOR_TILE.get().create();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.ticticboooom.mods.mm.block;
|
||||
|
||||
import com.ticticboooom.mods.mm.registration.MMSetup;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class StructureGenBlock extends Block {
|
||||
public StructureGenBlock() {
|
||||
super(Properties.of(Material.METAL));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasTileEntity(BlockState state) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
|
||||
return MMSetup.STRUCTURE_TILE.get().create();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.ticticboooom.mods.mm.block.container;
|
||||
|
||||
import com.ticticboooom.mods.mm.block.tile.ProjectorBlockEntity;
|
||||
import com.ticticboooom.mods.mm.registration.MMSetup;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.Container;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
|
||||
public class ProjectorBlockContainer extends Container {
|
||||
private ProjectorBlockEntity tile;
|
||||
|
||||
public ProjectorBlockContainer(int windowId, ProjectorBlockEntity tile) {
|
||||
super(MMSetup.PROJECTOR_CONTAINER.get(), windowId);
|
||||
this.tile = tile;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean stillValid(PlayerEntity p_75145_1_) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public ProjectorBlockContainer(int w, PlayerInventory inv, PacketBuffer buf) {
|
||||
this(w, (ProjectorBlockEntity) inv.player.level.getBlockEntity(buf.readBlockPos()));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.ticticboooom.mods.mm.block.container;
|
||||
|
||||
import com.ticticboooom.mods.mm.block.tile.ProjectorBlockEntity;
|
||||
import com.ticticboooom.mods.mm.block.tile.StructureGenBlockEntity;
|
||||
import com.ticticboooom.mods.mm.registration.MMSetup;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.Container;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
|
||||
public class StructureGenBlockContainer extends Container {
|
||||
private StructureGenBlockEntity tile;
|
||||
|
||||
public StructureGenBlockContainer(int windowId, StructureGenBlockEntity tile) {
|
||||
super(MMSetup.STRUCTURE_CONTAINER.get(), windowId);
|
||||
this.tile = tile;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean stillValid(PlayerEntity p_75145_1_) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public StructureGenBlockContainer(int w, PlayerInventory inv, PacketBuffer buf) {
|
||||
this(w, (StructureGenBlockEntity) inv.player.level.getBlockEntity(buf.readBlockPos()));
|
||||
}
|
||||
}
|
||||
@@ -4,9 +4,7 @@ import com.ticticboooom.mods.mm.block.container.ControllerBlockContainer;
|
||||
import com.ticticboooom.mods.mm.data.MachineProcessRecipe;
|
||||
import com.ticticboooom.mods.mm.data.MachineStructureRecipe;
|
||||
import com.ticticboooom.mods.mm.model.ProcessUpdate;
|
||||
import com.ticticboooom.mods.mm.network.PacketHandler;
|
||||
import com.ticticboooom.mods.mm.network.packets.TileClientUpdatePacket;
|
||||
import com.ticticboooom.mods.mm.ports.storage.IPortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.PortStorage;
|
||||
import com.ticticboooom.mods.mm.registration.RecipeTypes;
|
||||
import lombok.Getter;
|
||||
import net.minecraft.block.BlockState;
|
||||
@@ -23,7 +21,6 @@ import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.TranslationTextComponent;
|
||||
import net.minecraftforge.fml.RegistryObject;
|
||||
import net.minecraftforge.fml.network.PacketDistributor;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.ArrayList;
|
||||
@@ -64,8 +61,8 @@ public class ControllerBlockEntity extends UpdatableTile implements ITickableTil
|
||||
|
||||
private void onStructureFound(MachineStructureRecipe structure, int index) {
|
||||
ArrayList<BlockPos> ports = structure.getPorts(worldPosition, level, index);
|
||||
List<IPortStorage> inputPorts = new ArrayList<>();
|
||||
List<IPortStorage> outputPorts = new ArrayList<>();
|
||||
List<PortStorage> inputPorts = new ArrayList<>();
|
||||
List<PortStorage> outputPorts = new ArrayList<>();
|
||||
for (BlockPos port : ports) {
|
||||
TileEntity blockEntity = level.getBlockEntity(port);
|
||||
if (blockEntity instanceof MachinePortBlockEntity) {
|
||||
@@ -82,7 +79,7 @@ public class ControllerBlockEntity extends UpdatableTile implements ITickableTil
|
||||
onPortsEstablished(inputPorts, outputPorts, structure);
|
||||
}
|
||||
|
||||
private void onPortsEstablished(List<IPortStorage> inputPorts, List<IPortStorage> outputPorts, MachineStructureRecipe structure) {
|
||||
private void onPortsEstablished(List<PortStorage> inputPorts, List<PortStorage> outputPorts, MachineStructureRecipe structure) {
|
||||
List<MachineProcessRecipe> processRecipes = level.getRecipeManager().getAllRecipesFor(RecipeTypes.MACHINE_PROCESS);
|
||||
boolean processed = false;
|
||||
for (MachineProcessRecipe recipe : processRecipes) {
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
package com.ticticboooom.mods.mm.block.tile;
|
||||
|
||||
import com.ticticboooom.mods.mm.block.container.PortBlockContainer;
|
||||
import com.ticticboooom.mods.mm.network.PacketHandler;
|
||||
import com.ticticboooom.mods.mm.network.packets.TileClientUpdatePacket;
|
||||
import com.ticticboooom.mods.mm.ports.storage.IPortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.PortStorage;
|
||||
import lombok.Getter;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
@@ -13,14 +11,12 @@ import net.minecraft.inventory.container.ContainerType;
|
||||
import net.minecraft.inventory.container.INamedContainerProvider;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.tileentity.ITickableTileEntity;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.StringTextComponent;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fml.network.PacketDistributor;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
@@ -29,12 +25,12 @@ public class MachinePortBlockEntity extends UpdatableTile implements ITickableTi
|
||||
|
||||
private ContainerType<?> container;
|
||||
@Getter
|
||||
private IPortStorage storage;
|
||||
private PortStorage storage;
|
||||
@Getter
|
||||
private boolean input;
|
||||
|
||||
|
||||
public MachinePortBlockEntity(TileEntityType<?> p_i48289_1_, ContainerType<?> container, IPortStorage storage, boolean input) {
|
||||
public MachinePortBlockEntity(TileEntityType<?> p_i48289_1_, ContainerType<?> container, PortStorage storage, boolean input) {
|
||||
super(p_i48289_1_);
|
||||
this.container = container;
|
||||
this.storage = storage;
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.ticticboooom.mods.mm.block.tile;
|
||||
|
||||
import com.ticticboooom.mods.mm.registration.MMSetup;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
|
||||
public class ProjectorBlockEntity extends TileEntity {
|
||||
public ProjectorBlockEntity() {
|
||||
super(MMSetup.PROJECTOR_TILE.get());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.ticticboooom.mods.mm.block.tile;
|
||||
|
||||
import com.ticticboooom.mods.mm.model.ProcessUpdate;
|
||||
import com.ticticboooom.mods.mm.registration.MMSetup;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.inventory.ItemStackHelper;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.tileentity.ITickableTileEntity;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.NonNullList;
|
||||
|
||||
public class StructureGenBlockEntity extends UpdatableTile implements ITickableTileEntity {
|
||||
public StructureGenBlockEntity() {
|
||||
super(MMSetup.STRUCTURE_TILE.get());
|
||||
}
|
||||
|
||||
private ItemStack device = ItemStack.EMPTY;
|
||||
|
||||
@Override
|
||||
public CompoundNBT save(CompoundNBT nbt) {
|
||||
NonNullList<ItemStack> list = NonNullList.of(device);
|
||||
nbt = ItemStackHelper.saveAllItems(nbt, list);
|
||||
return super.save(nbt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(BlockState p_230337_1_, CompoundNBT nbt) {
|
||||
NonNullList<ItemStack> list = NonNullList.withSize(1, ItemStack.EMPTY);
|
||||
ItemStackHelper.loadAllItems(nbt, list);
|
||||
device = list.get(0);
|
||||
super.load(p_230337_1_, nbt);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
update();
|
||||
}
|
||||
}
|
||||
@@ -4,10 +4,12 @@ import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.ticticboooom.mods.mm.MM;
|
||||
import com.ticticboooom.mods.mm.data.MachineProcessRecipe;
|
||||
import com.ticticboooom.mods.mm.helper.RLUtils;
|
||||
import com.ticticboooom.mods.mm.ports.MasterfulPortType;
|
||||
import com.ticticboooom.mods.mm.ports.state.FluidPortState;
|
||||
import com.ticticboooom.mods.mm.ports.state.ItemPortState;
|
||||
import com.ticticboooom.mods.mm.ports.state.PortState;
|
||||
import com.ticticboooom.mods.mm.ports.storage.MekGasPortStorage;
|
||||
import com.ticticboooom.mods.mm.registration.MMPorts;
|
||||
import com.ticticboooom.mods.mm.registration.RecipeTypes;
|
||||
import mekanism.api.chemical.gas.GasStack;
|
||||
import mekanism.api.recipes.inputs.chemical.ChemicalIngredientDeserializer;
|
||||
@@ -26,10 +28,7 @@ import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
public class MachineProcessRecipeCategory implements IRecipeCategory<MachineProcessRecipe> {
|
||||
|
||||
@@ -70,11 +69,35 @@ public class MachineProcessRecipeCategory implements IRecipeCategory<MachineProc
|
||||
|
||||
@Override
|
||||
public void setIngredients(MachineProcessRecipe recipe, IIngredients ingredients) {
|
||||
for (PortState input : recipe.getInputs()) {
|
||||
input.setIngredient(ingredients, true);
|
||||
Map<ResourceLocation, List<?>> inputStacks = new HashMap<>();
|
||||
Map<ResourceLocation, List<?>> outputStacks = new HashMap<>();
|
||||
|
||||
for (Map.Entry<ResourceLocation, MasterfulPortType> resource : MMPorts.PORTS.entrySet()) {
|
||||
ResourceLocation registryName = resource.getKey();
|
||||
inputStacks.put(registryName, new ArrayList<MasterfulPortType>());
|
||||
outputStacks.put(registryName, new ArrayList<MasterfulPortType>());
|
||||
}
|
||||
|
||||
for (PortState input : recipe.getInputs()) {
|
||||
List<?> stacks = inputStacks.getOrDefault(input.getName(), new ArrayList<>());
|
||||
stacks.addAll(input.getIngredient(true));
|
||||
inputStacks.put(input.getName(), stacks);
|
||||
}
|
||||
|
||||
for (PortState output : recipe.getOutputs()) {
|
||||
output.setIngredient(ingredients, false);
|
||||
List<?> stacks = inputStacks.getOrDefault(output.getName(), new ArrayList<>());
|
||||
stacks.addAll(output.getIngredient(true));
|
||||
outputStacks.put(output.getName(), stacks);
|
||||
}
|
||||
|
||||
for (Map.Entry<ResourceLocation, List<?>> entry : inputStacks.entrySet()) {
|
||||
MasterfulPortType masterfulPortType = MMPorts.PORTS.get(entry.getKey());
|
||||
masterfulPortType.getParser().setIngredients(ingredients, entry.getValue(), true);
|
||||
}
|
||||
|
||||
for (Map.Entry<ResourceLocation, List<?>> entry : outputStacks.entrySet()) {
|
||||
MasterfulPortType masterfulPortType = MMPorts.PORTS.get(entry.getKey());
|
||||
masterfulPortType.getParser().setIngredients(ingredients, entry.getValue(), false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,7 +118,6 @@ public class MachineProcessRecipeCategory implements IRecipeCategory<MachineProc
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
final int offsetX = 95;
|
||||
currentX = offsetX;
|
||||
currentY = 0;
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.ticticboooom.mods.mm.client.screen;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.ticticboooom.mods.mm.block.container.StructureGenBlockContainer;
|
||||
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
|
||||
public class StructureGenBlockContainerScreen extends ContainerScreen<StructureGenBlockContainer> {
|
||||
public StructureGenBlockContainerScreen(StructureGenBlockContainer p_i51105_1_, PlayerInventory p_i51105_2_, ITextComponent p_i51105_3_) {
|
||||
super(p_i51105_1_, p_i51105_2_, p_i51105_3_);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void renderBg(MatrixStack p_230450_1_, float p_230450_2_, int p_230450_3_, int p_230450_4_) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import com.ticticboooom.mods.mm.helper.RLUtils;
|
||||
import com.ticticboooom.mods.mm.model.ProcessUpdate;
|
||||
import com.ticticboooom.mods.mm.ports.MasterfulPortType;
|
||||
import com.ticticboooom.mods.mm.ports.state.PortState;
|
||||
import com.ticticboooom.mods.mm.ports.storage.IPortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.PortStorage;
|
||||
import com.ticticboooom.mods.mm.registration.MMPorts;
|
||||
import com.ticticboooom.mods.mm.registration.RecipeTypes;
|
||||
import lombok.Getter;
|
||||
@@ -47,11 +47,11 @@ public class MachineProcessRecipe implements IRecipe<IInventory> {
|
||||
this.rl = rl;
|
||||
}
|
||||
|
||||
public boolean matches(List<IPortStorage> inputPorts, String structureId) {
|
||||
public boolean matches(List<PortStorage> inputPorts, String structureId) {
|
||||
return structureId.equals(this.structureId) && canTake(inputPorts);
|
||||
}
|
||||
|
||||
private boolean canTake(List<IPortStorage> inputPorts) {
|
||||
private boolean canTake(List<PortStorage> inputPorts) {
|
||||
for (PortState input : inputs) {
|
||||
if (!input.validateRequirement(inputPorts)) {
|
||||
return false;
|
||||
@@ -60,7 +60,7 @@ public class MachineProcessRecipe implements IRecipe<IInventory> {
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean canPut(List<IPortStorage> outputPorts) {
|
||||
private boolean canPut(List<PortStorage> outputPorts) {
|
||||
for (PortState output : outputs) {
|
||||
if (!output.validateResult(outputPorts)) {
|
||||
return false;
|
||||
@@ -69,7 +69,7 @@ public class MachineProcessRecipe implements IRecipe<IInventory> {
|
||||
return true;
|
||||
}
|
||||
|
||||
public ProcessUpdate process(List<IPortStorage> inputPorts, List<IPortStorage> outputPorts, ProcessUpdate update) {
|
||||
public ProcessUpdate process(List<PortStorage> inputPorts, List<PortStorage> outputPorts, ProcessUpdate update) {
|
||||
boolean canTake = canTake(inputPorts);
|
||||
boolean canPut = canPut(outputPorts);
|
||||
|
||||
|
||||
@@ -32,5 +32,6 @@ public class MMItemModelProvider extends ItemModelProvider {
|
||||
}
|
||||
|
||||
this.getBuilder(MMSetup.BLUEPRINT.getId().getPath()).parent(new ModelFile.UncheckedModelFile("item/generated")).texture("layer0", "items/blueprint");
|
||||
this.getBuilder(MMSetup.STRUCTURE_DEVICE.getId().getPath()).parent(new ModelFile.UncheckedModelFile("item/generated")).texture("layer0", "items/scanning_tool");
|
||||
}
|
||||
}
|
||||
@@ -32,6 +32,7 @@ public class MMLangProvider extends LanguageProvider {
|
||||
}
|
||||
|
||||
}
|
||||
this.add(MMSetup.BLUEPRINT.get(), "Blueprint");
|
||||
this.add(MMSetup.BLUEPRINT.get(), "Blueprint");
|
||||
this.add(MMSetup.STRUCTURE_DEVICE.get(), "Structure Scanner");
|
||||
}
|
||||
}
|
||||
|
||||
15
src/main/java/com/ticticboooom/mods/mm/helper/NBTHelper.java
Normal file
15
src/main/java/com/ticticboooom/mods/mm/helper/NBTHelper.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package com.ticticboooom.mods.mm.helper;
|
||||
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import org.lwjgl.system.CallbackI;
|
||||
|
||||
public class NBTHelper {
|
||||
public static CompoundNBT toCompound(BlockPos pos) {
|
||||
CompoundNBT result = new CompoundNBT();
|
||||
result.putInt("x", pos.getX());
|
||||
result.putInt("y", pos.getY());
|
||||
result.putInt("z", pos.getZ());
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.ticticboooom.mods.mm.item;
|
||||
|
||||
import com.ticticboooom.mods.mm.helper.NBTHelper;
|
||||
import com.ticticboooom.mods.mm.registration.MMLoader;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.ItemUseContext;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.util.ActionResultType;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class StructureGenSelectionDevice extends Item {
|
||||
public StructureGenSelectionDevice() {
|
||||
super(new Item.Properties().tab(MMLoader.MASTERFUL_ITEM_GROUP));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResultType useOn(ItemUseContext ctx) {
|
||||
BlockPos clickedPos = ctx.getClickedPos();
|
||||
ItemStack iih = ctx.getItemInHand();
|
||||
CompoundNBT tag = iih.getTag();
|
||||
if (tag == null) {
|
||||
tag = new CompoundNBT();
|
||||
}
|
||||
if (!tag.contains("pos1") && !tag.contains("pos2")) {
|
||||
tag.put("pos1", NBTHelper.toCompound(clickedPos));
|
||||
} else if (tag.contains("pos1") && !tag.contains("pos2")) {
|
||||
tag.put("pos2", NBTHelper.toCompound(clickedPos));
|
||||
} else {
|
||||
if (tag.contains("pos2")) {
|
||||
tag.remove("pos2");
|
||||
}
|
||||
tag.put("pos1", NBTHelper.toCompound(clickedPos));
|
||||
}
|
||||
|
||||
return ActionResultType.SUCCESS;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.ticticboooom.mods.mm.model;
|
||||
|
||||
import lombok.Getter;
|
||||
import mezz.jei.api.ingredients.IIngredientType;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class JEIIngredientWrapper<TStack> {
|
||||
@Getter
|
||||
List<TStack> stacks = new ArrayList<>();
|
||||
|
||||
public void add(IIngredientType<TStack> type, TStack stack) {
|
||||
stacks.add(stack);
|
||||
}
|
||||
|
||||
public void add(IIngredientType<TStack> type, List<TStack> stack) {
|
||||
stacks.addAll(stack);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.ticticboooom.mods.mm.ports;
|
||||
|
||||
import com.ticticboooom.mods.mm.ports.parser.IPortParser;
|
||||
import com.ticticboooom.mods.mm.ports.parser.IPortFactory;
|
||||
import lombok.Getter;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.registries.IForgeRegistryEntry;
|
||||
@@ -11,9 +11,9 @@ public class MasterfulPortType implements IForgeRegistryEntry<MasterfulPortType>
|
||||
|
||||
private ResourceLocation name;
|
||||
@Getter
|
||||
private IPortParser parser;
|
||||
private IPortFactory parser;
|
||||
|
||||
public MasterfulPortType(ResourceLocation name, IPortParser parser) {
|
||||
public MasterfulPortType(ResourceLocation name, IPortFactory parser) {
|
||||
this.name = name;
|
||||
this.parser = parser;
|
||||
}
|
||||
|
||||
@@ -8,16 +8,20 @@ import com.mojang.serialization.JsonOps;
|
||||
import com.ticticboooom.mods.mm.ports.state.EnergyPortState;
|
||||
import com.ticticboooom.mods.mm.ports.state.PortState;
|
||||
import com.ticticboooom.mods.mm.ports.storage.EnergyPortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.IPortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.PortStorage;
|
||||
import lombok.SneakyThrows;
|
||||
import mezz.jei.api.ingredients.IIngredients;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class EnergyPortParser implements IPortParser {
|
||||
public class EnergyPortParser implements IPortFactory {
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public Supplier<IPortStorage> createStorage(JsonObject obj) {
|
||||
public Supplier<PortStorage> createStorage(JsonObject obj) {
|
||||
return () -> {
|
||||
DataResult<Pair<EnergyPortStorage, JsonElement>> apply = JsonOps.INSTANCE.withDecoder(EnergyPortStorage.CODEC).apply(obj);
|
||||
return apply.result().get().getFirst();
|
||||
@@ -30,6 +34,10 @@ public class EnergyPortParser implements IPortParser {
|
||||
buf.writeWithCodec(EnergyPortState.CODEC, ((EnergyPortState) state));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIngredients(IIngredients ingredients, List<?> stacks, boolean input) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PortState createState(JsonObject obj) {
|
||||
DataResult<Pair<EnergyPortState, JsonElement>> apply = JsonOps.INSTANCE.withDecoder(EnergyPortState.CODEC).apply(obj);
|
||||
|
||||
@@ -8,16 +8,20 @@ import com.mojang.serialization.JsonOps;
|
||||
import com.ticticboooom.mods.mm.ports.state.FluidPortState;
|
||||
import com.ticticboooom.mods.mm.ports.state.PortState;
|
||||
import com.ticticboooom.mods.mm.ports.storage.FluidPortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.IPortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.PortStorage;
|
||||
import lombok.SneakyThrows;
|
||||
import mezz.jei.api.constants.VanillaTypes;
|
||||
import mezz.jei.api.ingredients.IIngredients;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class FluidPortParser implements IPortParser {
|
||||
public class FluidPortParser implements IPortFactory {
|
||||
|
||||
@Override
|
||||
public Supplier<IPortStorage> createStorage(JsonObject obj) {
|
||||
public Supplier<PortStorage> createStorage(JsonObject obj) {
|
||||
return () -> {
|
||||
DataResult<Pair<FluidPortStorage, JsonElement>> apply = JsonOps.INSTANCE.withDecoder(FluidPortStorage.CODEC).apply(obj);
|
||||
return apply.result().get().getFirst();
|
||||
@@ -29,6 +33,15 @@ public class FluidPortParser implements IPortParser {
|
||||
buf.writeWithCodec(FluidPortState.CODEC, ((FluidPortState) state));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIngredients(IIngredients ingredients, List<?> stacks, boolean input) {
|
||||
if (input) {
|
||||
ingredients.setInputs(VanillaTypes.FLUID, (List<FluidStack>)stacks);
|
||||
} else {
|
||||
ingredients.setOutputs(VanillaTypes.FLUID, (List<FluidStack>)stacks);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PortState createState(JsonObject obj) {
|
||||
DataResult<Pair<FluidPortState, JsonElement>> apply = JsonOps.INSTANCE.withDecoder(FluidPortState.CODEC).apply(obj);
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.ticticboooom.mods.mm.ports.parser;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import com.ticticboooom.mods.mm.ports.state.PortState;
|
||||
import com.ticticboooom.mods.mm.ports.storage.PortStorage;
|
||||
import mezz.jei.api.ingredients.IIngredientType;
|
||||
import mezz.jei.api.ingredients.IIngredients;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public interface IPortFactory {
|
||||
PortState createState(JsonObject obj);
|
||||
PortState createState(PacketBuffer buf);
|
||||
Supplier<PortStorage> createStorage(JsonObject obj);
|
||||
void write(PacketBuffer buf, PortState state);
|
||||
void setIngredients(IIngredients ingredients, List<?> stacks, boolean input);
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
package com.ticticboooom.mods.mm.ports.parser;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import com.ticticboooom.mods.mm.ports.state.PortState;
|
||||
import com.ticticboooom.mods.mm.ports.storage.IPortStorage;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public interface IPortParser {
|
||||
PortState createState(JsonObject obj);
|
||||
PortState createState(PacketBuffer buf);
|
||||
Supplier<IPortStorage> createStorage(JsonObject obj);
|
||||
void write(PacketBuffer buf, PortState state);
|
||||
}
|
||||
@@ -7,17 +7,32 @@ import com.mojang.serialization.DataResult;
|
||||
import com.mojang.serialization.JsonOps;
|
||||
import com.ticticboooom.mods.mm.ports.state.PortState;
|
||||
import com.ticticboooom.mods.mm.ports.state.ItemPortState;
|
||||
import com.ticticboooom.mods.mm.ports.storage.IPortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.PortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.ItemPortStorage;
|
||||
import lombok.SneakyThrows;
|
||||
import mezz.jei.api.constants.VanillaTypes;
|
||||
import mezz.jei.api.ingredients.IIngredients;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class ItemPortParser implements IPortParser {
|
||||
public class ItemPortParser implements IPortFactory {
|
||||
|
||||
|
||||
@Override
|
||||
public Supplier<IPortStorage> createStorage(JsonObject obj) {
|
||||
public void setIngredients(IIngredients ingredients, List<?> stacks, boolean input) {
|
||||
if (input) {
|
||||
ingredients.setInputs(VanillaTypes.ITEM, (List<ItemStack>)stacks);
|
||||
} else {
|
||||
ingredients.setOutputs(VanillaTypes.ITEM, (List<ItemStack>)stacks);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Supplier<PortStorage> createStorage(JsonObject obj) {
|
||||
return () -> {
|
||||
DataResult<Pair<ItemPortStorage, JsonElement>> apply = JsonOps.INSTANCE.withDecoder(ItemPortStorage.CODEC).apply(obj);
|
||||
return apply.result().get().getFirst();
|
||||
|
||||
@@ -7,14 +7,30 @@ import com.mojang.serialization.DataResult;
|
||||
import com.mojang.serialization.JsonOps;
|
||||
import com.ticticboooom.mods.mm.ports.state.PortState;
|
||||
import com.ticticboooom.mods.mm.ports.state.MekGasPortState;
|
||||
import com.ticticboooom.mods.mm.ports.storage.IPortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.PortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.MekGasPortStorage;
|
||||
import lombok.SneakyThrows;
|
||||
import mekanism.api.chemical.gas.GasStack;
|
||||
import mekanism.client.jei.MekanismJEI;
|
||||
import mezz.jei.api.constants.VanillaTypes;
|
||||
import mezz.jei.api.ingredients.IIngredients;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class MekGasPortParser implements IPortParser {
|
||||
public class MekGasPortParser implements IPortFactory {
|
||||
|
||||
@Override
|
||||
public void setIngredients(IIngredients ingredients, List<?> stacks, boolean input) {
|
||||
if (input) {
|
||||
ingredients.setInputs(MekanismJEI.TYPE_GAS, (List<GasStack>)stacks);
|
||||
} else {
|
||||
ingredients.setOutputs(MekanismJEI.TYPE_GAS, (List<GasStack>)stacks);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PortState createState(JsonObject obj) {
|
||||
DataResult<Pair<MekGasPortState, JsonElement>> apply = JsonOps.INSTANCE.withDecoder(MekGasPortState.CODEC).apply(obj);
|
||||
@@ -28,7 +44,7 @@ public class MekGasPortParser implements IPortParser {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Supplier<IPortStorage> createStorage(JsonObject obj) {
|
||||
public Supplier<PortStorage> createStorage(JsonObject obj) {
|
||||
return () -> {
|
||||
DataResult<Pair<MekGasPortStorage, JsonElement>> apply = JsonOps.INSTANCE.withDecoder(MekGasPortStorage.CODEC).apply(obj);
|
||||
return apply.result().get().getFirst();
|
||||
|
||||
@@ -6,16 +6,31 @@ import com.mojang.datafixers.util.Pair;
|
||||
import com.mojang.serialization.DataResult;
|
||||
import com.mojang.serialization.JsonOps;
|
||||
import com.ticticboooom.mods.mm.ports.state.PortState;
|
||||
import com.ticticboooom.mods.mm.ports.state.MekGasPortState;
|
||||
import com.ticticboooom.mods.mm.ports.state.MekSlurryPortState;
|
||||
import com.ticticboooom.mods.mm.ports.storage.IPortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.PortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.MekSlurryPortStorage;
|
||||
import lombok.SneakyThrows;
|
||||
import mekanism.api.chemical.slurry.SlurryStack;
|
||||
import mekanism.client.jei.MekanismJEI;
|
||||
import mezz.jei.api.constants.VanillaTypes;
|
||||
import mezz.jei.api.ingredients.IIngredients;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class MekSlurryPortParser implements IPortParser {
|
||||
public class MekSlurryPortParser implements IPortFactory {
|
||||
|
||||
@Override
|
||||
public void setIngredients(IIngredients ingredients, List<?> stacks, boolean input) {
|
||||
if (input) {
|
||||
ingredients.setInputs(MekanismJEI.TYPE_SLURRY, (List<SlurryStack>)stacks);
|
||||
} else {
|
||||
ingredients.setOutputs(MekanismJEI.TYPE_SLURRY, (List<SlurryStack>)stacks);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PortState createState(JsonObject obj) {
|
||||
DataResult<Pair<MekSlurryPortState, JsonElement>> apply = JsonOps.INSTANCE.withDecoder(MekSlurryPortState.CODEC).apply(obj);
|
||||
@@ -29,7 +44,7 @@ public class MekSlurryPortParser implements IPortParser {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Supplier<IPortStorage> createStorage(JsonObject obj) {
|
||||
public Supplier<PortStorage> createStorage(JsonObject obj) {
|
||||
return () -> {
|
||||
DataResult<Pair<MekSlurryPortStorage, JsonElement>> apply = JsonOps.INSTANCE.withDecoder(MekSlurryPortStorage.CODEC).apply(obj);
|
||||
return apply.result().get().getFirst();
|
||||
|
||||
@@ -5,10 +5,12 @@ import com.mojang.serialization.Codec;
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||
import com.ticticboooom.mods.mm.MM;
|
||||
import com.ticticboooom.mods.mm.ports.storage.EnergyPortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.IPortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.PortStorage;
|
||||
import lombok.Getter;
|
||||
import mezz.jei.api.constants.VanillaTypes;
|
||||
import mezz.jei.api.gui.drawable.IDrawableStatic;
|
||||
import mezz.jei.api.helpers.IJeiHelpers;
|
||||
import mezz.jei.api.ingredients.IIngredientType;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
import java.util.List;
|
||||
@@ -28,9 +30,9 @@ public static final Codec<EnergyPortState> CODEC =RecordCodecBuilder.create(x -
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processRequirement(List<IPortStorage> storage) {
|
||||
public void processRequirement(List<PortStorage> storage) {
|
||||
int current = amount;
|
||||
for (IPortStorage inv : storage) {
|
||||
for (PortStorage inv : storage) {
|
||||
if (inv instanceof EnergyPortStorage) {
|
||||
EnergyPortStorage energyInv = (EnergyPortStorage) inv;
|
||||
current -= energyInv.getInv().extractEnergy(current, false);
|
||||
@@ -42,9 +44,9 @@ public static final Codec<EnergyPortState> CODEC =RecordCodecBuilder.create(x -
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validateRequirement(List<IPortStorage> storage) {
|
||||
public boolean validateRequirement(List<PortStorage> storage) {
|
||||
int current = amount;
|
||||
for (IPortStorage inv : storage) {
|
||||
for (PortStorage inv : storage) {
|
||||
if (inv instanceof EnergyPortStorage) {
|
||||
EnergyPortStorage energyInv = (EnergyPortStorage) inv;
|
||||
current -= energyInv.getInv().extractEnergy(current, true);
|
||||
@@ -57,9 +59,9 @@ public static final Codec<EnergyPortState> CODEC =RecordCodecBuilder.create(x -
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processResult(List<IPortStorage> storage) {
|
||||
public void processResult(List<PortStorage> storage) {
|
||||
int current = amount;
|
||||
for (IPortStorage inv : storage) {
|
||||
for (PortStorage inv : storage) {
|
||||
if (inv instanceof EnergyPortStorage) {
|
||||
EnergyPortStorage energyInv = (EnergyPortStorage) inv;
|
||||
current -= energyInv.getInv().receiveEnergy(current, false);
|
||||
@@ -71,9 +73,9 @@ public static final Codec<EnergyPortState> CODEC =RecordCodecBuilder.create(x -
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validateResult(List<IPortStorage> storage) {
|
||||
public boolean validateResult(List<PortStorage> storage) {
|
||||
int current = amount;
|
||||
for (IPortStorage inv : storage) {
|
||||
for (PortStorage inv : storage) {
|
||||
if (inv instanceof EnergyPortStorage) {
|
||||
EnergyPortStorage energyInv = (EnergyPortStorage) inv;
|
||||
current -= energyInv.getInv().receiveEnergy(current, true);
|
||||
@@ -95,4 +97,9 @@ public static final Codec<EnergyPortState> CODEC =RecordCodecBuilder.create(x -
|
||||
IDrawableStatic drawable = helpers.getGuiHelper().createDrawable(new ResourceLocation(MM.ID, "textures/gui/slot_parts.png"), 18, 61, 4, 18);
|
||||
drawable.draw(ms, x, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IIngredientType<?> getJeiIngredientType() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package com.ticticboooom.mods.mm.ports.state;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.mojang.serialization.Codec;
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||
import com.ticticboooom.mods.mm.MM;
|
||||
import com.ticticboooom.mods.mm.client.util.FluidRenderer;
|
||||
import com.ticticboooom.mods.mm.exception.InvalidProcessDefinitionException;
|
||||
import com.ticticboooom.mods.mm.helper.RLUtils;
|
||||
import com.ticticboooom.mods.mm.ports.storage.FluidPortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.IPortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.PortStorage;
|
||||
import lombok.Getter;
|
||||
import lombok.SneakyThrows;
|
||||
import mezz.jei.api.constants.VanillaTypes;
|
||||
@@ -17,14 +17,13 @@ import mezz.jei.api.gui.drawable.IDrawableStatic;
|
||||
import mezz.jei.api.helpers.IJeiHelpers;
|
||||
import mezz.jei.api.ingredients.IIngredientType;
|
||||
import mezz.jei.api.ingredients.IIngredients;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.fluid.Fluid;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public class FluidPortState extends PortState {
|
||||
|
||||
@@ -45,9 +44,9 @@ public class FluidPortState extends PortState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processRequirement(List<IPortStorage> storage) {
|
||||
public void processRequirement(List<PortStorage> storage) {
|
||||
int current = amount;
|
||||
for (IPortStorage inv : storage) {
|
||||
for (PortStorage inv : storage) {
|
||||
if (inv instanceof FluidPortStorage) {
|
||||
FluidPortStorage fInv = (FluidPortStorage) inv;
|
||||
FluidStack fluidInTank = fInv.getInv().getFluidInTank(0);
|
||||
@@ -64,9 +63,9 @@ public class FluidPortState extends PortState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validateRequirement(List<IPortStorage> storage) {
|
||||
public boolean validateRequirement(List<PortStorage> storage) {
|
||||
int current = amount;
|
||||
for (IPortStorage inv : storage) {
|
||||
for (PortStorage inv : storage) {
|
||||
if (inv instanceof FluidPortStorage) {
|
||||
FluidPortStorage fInv = (FluidPortStorage) inv;
|
||||
FluidStack fluidInTank = fInv.getInv().getFluidInTank(0);
|
||||
@@ -84,9 +83,9 @@ public class FluidPortState extends PortState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processResult(List<IPortStorage> storage) {
|
||||
public void processResult(List<PortStorage> storage) {
|
||||
int current = amount;
|
||||
for (IPortStorage inv : storage) {
|
||||
for (PortStorage inv : storage) {
|
||||
if (inv instanceof FluidPortStorage) {
|
||||
FluidPortStorage fInv = (FluidPortStorage) inv;
|
||||
FluidStack fluidInTank = fInv.getInv().getFluidInTank(0);
|
||||
@@ -103,9 +102,9 @@ public class FluidPortState extends PortState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validateResult(List<IPortStorage> storage) {
|
||||
public boolean validateResult(List<PortStorage> storage) {
|
||||
int current = amount;
|
||||
for (IPortStorage inv : storage) {
|
||||
for (PortStorage inv : storage) {
|
||||
if (inv instanceof FluidPortStorage) {
|
||||
FluidPortStorage fInv = (FluidPortStorage) inv;
|
||||
FluidStack fluidInTank = fInv.getInv().getFluidInTank(0);
|
||||
@@ -144,19 +143,20 @@ public class FluidPortState extends PortState {
|
||||
slot.draw(ms, x, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIngredient(IIngredients in, boolean input) {
|
||||
FluidStack stack = new FluidStack(ForgeRegistries.FLUIDS.getValue(RLUtils.toRL(fluid)), amount);
|
||||
if (input) {
|
||||
in.setInput(VanillaTypes.FLUID, stack);
|
||||
} else {
|
||||
in.setOutput(VanillaTypes.FLUID, stack);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupRecipe(IRecipeLayout layout, Integer typeIndex, int x, int y, boolean input) {
|
||||
layout.getFluidStacks().init(typeIndex, input, x + 1, y + 1, 16, 16, 1, false, null);
|
||||
layout.getFluidStacks().set(typeIndex, new FluidStack(ForgeRegistries.FLUIDS.getValue(RLUtils.toRL(fluid)), 1));
|
||||
}
|
||||
|
||||
@Override
|
||||
public IIngredientType<?> getJeiIngredientType() {
|
||||
return VanillaTypes.FLUID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> getIngredient(boolean input) {
|
||||
return (List<T>) ImmutableList.of(new FluidStack(ForgeRegistries.FLUIDS.getValue(RLUtils.toRL(fluid)), amount));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,34 +1,31 @@
|
||||
package com.ticticboooom.mods.mm.ports.state;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.mojang.serialization.Codec;
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||
import com.ticticboooom.mods.mm.MM;
|
||||
import com.ticticboooom.mods.mm.exception.InvalidProcessDefinitionException;
|
||||
import com.ticticboooom.mods.mm.helper.RLUtils;
|
||||
import com.ticticboooom.mods.mm.ports.storage.IPortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.PortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.ItemPortStorage;
|
||||
import lombok.Getter;
|
||||
import lombok.SneakyThrows;
|
||||
import mekanism.common.integration.projecte.IngredientHelper;
|
||||
import mezz.jei.api.constants.VanillaTypes;
|
||||
import mezz.jei.api.gui.IRecipeLayout;
|
||||
import mezz.jei.api.gui.drawable.IDrawable;
|
||||
import mezz.jei.api.gui.drawable.IDrawableStatic;
|
||||
import mezz.jei.api.gui.ingredient.IGuiIngredient;
|
||||
import mezz.jei.api.helpers.IJeiHelpers;
|
||||
import mezz.jei.api.ingredients.IIngredientType;
|
||||
import mezz.jei.api.ingredients.IIngredients;
|
||||
import net.minecraft.data.ItemTagsProvider;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.Ingredient;
|
||||
import net.minecraft.tags.ITag;
|
||||
import net.minecraft.tags.ItemTags;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
import org.apache.http.annotation.Immutable;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -54,9 +51,9 @@ public class ItemPortState extends PortState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processRequirement(List<IPortStorage> storage) {
|
||||
public void processRequirement(List<PortStorage> storage) {
|
||||
int current = count;
|
||||
for (IPortStorage inv : storage) {
|
||||
for (PortStorage inv : storage) {
|
||||
if (inv instanceof ItemPortStorage) {
|
||||
ItemPortStorage iinv = (ItemPortStorage) inv;
|
||||
for (int i = 0; i < iinv.getInv().getSlots(); i++) {
|
||||
@@ -88,9 +85,9 @@ public class ItemPortState extends PortState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validateRequirement(List<IPortStorage> storage) {
|
||||
public boolean validateRequirement(List<PortStorage> storage) {
|
||||
int current = count;
|
||||
for (IPortStorage inv : storage) {
|
||||
for (PortStorage inv : storage) {
|
||||
if (inv instanceof ItemPortStorage) {
|
||||
ItemPortStorage iinv = (ItemPortStorage) inv;
|
||||
for (int i = 0; i < iinv.getInv().getSlots(); i++) {
|
||||
@@ -119,9 +116,9 @@ public class ItemPortState extends PortState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processResult(List<IPortStorage> storage) {
|
||||
public void processResult(List<PortStorage> storage) {
|
||||
int current = 0;
|
||||
for (IPortStorage inv : storage) {
|
||||
for (PortStorage inv : storage) {
|
||||
if (inv instanceof ItemPortStorage) {
|
||||
ItemPortStorage iinv = (ItemPortStorage) inv;
|
||||
for (int i = 0; i < iinv.getInv().getSlots(); i++) {
|
||||
@@ -148,9 +145,9 @@ public class ItemPortState extends PortState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validateResult(List<IPortStorage> storage) {
|
||||
public boolean validateResult(List<PortStorage> storage) {
|
||||
int current = 0;
|
||||
for (IPortStorage inv : storage) {
|
||||
for (PortStorage inv : storage) {
|
||||
if (inv instanceof ItemPortStorage) {
|
||||
ItemPortStorage iinv = (ItemPortStorage) inv;
|
||||
for (int i = 0; i < iinv.getInv().getSlots(); i++) {
|
||||
@@ -214,23 +211,18 @@ public class ItemPortState extends PortState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIngredient(IIngredients in, boolean input) {
|
||||
public <T> List<T> getIngredient(boolean input) {
|
||||
if (!item.equals("") && RLUtils.isRL(item)) {
|
||||
if (input){
|
||||
in.setInput(VanillaTypes.ITEM, new ItemStack(ForgeRegistries.ITEMS.getValue(RLUtils.toRL(item)), this.count));
|
||||
} else {
|
||||
in.setOutput(VanillaTypes.ITEM, new ItemStack(ForgeRegistries.ITEMS.getValue(RLUtils.toRL(item)), this.count));
|
||||
}
|
||||
return (List<T>) ImmutableList.of(new ItemStack(ForgeRegistries.ITEMS.getValue(RLUtils.toRL(item)), this.count));
|
||||
} else if (!tag.equals("") && RLUtils.isRL(tag)) {
|
||||
ITag<Item> tag = ItemTags.getAllTags().getTag(RLUtils.toRL(this.tag));
|
||||
assert tag != null;
|
||||
Stream<ItemStack> itemStackStream = tag.getValues().stream().map(x -> new ItemStack(x.getItem(), this.count));
|
||||
if (input){
|
||||
in.setInputs(VanillaTypes.ITEM, itemStackStream.collect(Collectors.toList()));
|
||||
} else {
|
||||
in.setOutputs(VanillaTypes.ITEM, itemStackStream.collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
List<ItemStack> stacks = new ArrayList<>();
|
||||
tag.getValues().forEach(z -> stacks.add(new ItemStack(z, this.count)));
|
||||
return (List<T>)stacks;
|
||||
}
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -243,6 +235,11 @@ public class ItemPortState extends PortState {
|
||||
assert tag != null;
|
||||
Stream<ItemStack> itemStackStream = tag.getValues().stream().map(z -> new ItemStack(z.getItem(), this.count));
|
||||
layout.getItemStacks().set(typeIndex, itemStackStream.collect(Collectors.toList()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public IIngredientType<?> getJeiIngredientType() {
|
||||
return VanillaTypes.ITEM;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
package com.ticticboooom.mods.mm.ports.state;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.mojang.serialization.Codec;
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||
import com.ticticboooom.mods.mm.MM;
|
||||
import com.ticticboooom.mods.mm.exception.InvalidProcessDefinitionException;
|
||||
import com.ticticboooom.mods.mm.helper.RLUtils;
|
||||
import com.ticticboooom.mods.mm.ports.storage.IPortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.PortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.MekGasPortStorage;
|
||||
import lombok.SneakyThrows;
|
||||
import mekanism.api.Action;
|
||||
import mekanism.api.MekanismAPI;
|
||||
import mekanism.api.chemical.gas.GasStack;
|
||||
import mekanism.api.inventory.AutomationType;
|
||||
import mekanism.client.jei.MekanismJEI;
|
||||
import mezz.jei.api.gui.IRecipeLayout;
|
||||
import mezz.jei.api.gui.drawable.IDrawableStatic;
|
||||
@@ -42,9 +42,9 @@ public class MekGasPortState extends PortState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processRequirement(List<IPortStorage> storage) {
|
||||
public void processRequirement(List<PortStorage> storage) {
|
||||
long current = amount;
|
||||
for (IPortStorage st : storage) {
|
||||
for (PortStorage st : storage) {
|
||||
if (st instanceof MekGasPortStorage) {
|
||||
MekGasPortStorage gasStorage = (MekGasPortStorage) st;
|
||||
GasStack extract = gasStorage.getInv().extractChemical(0, current, Action.EXECUTE);
|
||||
@@ -57,9 +57,9 @@ public class MekGasPortState extends PortState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validateRequirement(List<IPortStorage> storage) {
|
||||
public boolean validateRequirement(List<PortStorage> storage) {
|
||||
long current = amount;
|
||||
for (IPortStorage st : storage) {
|
||||
for (PortStorage st : storage) {
|
||||
if (st instanceof MekGasPortStorage) {
|
||||
MekGasPortStorage gasStorage = (MekGasPortStorage) st;
|
||||
if (gasStorage.getInv().getStack().getType().getRegistryName().toString().equals(gas)) {
|
||||
@@ -75,9 +75,9 @@ public class MekGasPortState extends PortState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processResult(List<IPortStorage> storage) {
|
||||
public void processResult(List<PortStorage> storage) {
|
||||
long current = amount;
|
||||
for (IPortStorage st : storage) {
|
||||
for (PortStorage st : storage) {
|
||||
if (st instanceof MekGasPortStorage) {
|
||||
MekGasPortStorage gasStorage = (MekGasPortStorage) st;
|
||||
GasStack extract = gasStorage.getInv().insertChemical(new GasStack(Objects.requireNonNull(MekanismAPI.gasRegistry().getValue(RLUtils.toRL(gas))), current), Action.EXECUTE);
|
||||
@@ -90,9 +90,9 @@ public class MekGasPortState extends PortState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validateResult(List<IPortStorage> storage) {
|
||||
public boolean validateResult(List<PortStorage> storage) {
|
||||
long current = amount;
|
||||
for (IPortStorage st : storage) {
|
||||
for (PortStorage st : storage) {
|
||||
if (st instanceof MekGasPortStorage) {
|
||||
MekGasPortStorage gasStorage = (MekGasPortStorage) st;
|
||||
GasStack extract = gasStorage.getInv().insertChemical(new GasStack(Objects.requireNonNull(MekanismAPI.gasRegistry().getValue(RLUtils.toRL(gas))), current), Action.SIMULATE);
|
||||
@@ -136,11 +136,12 @@ public class MekGasPortState extends PortState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIngredient(IIngredients in, boolean input) {
|
||||
if (input){
|
||||
in.setInput(MekanismJEI.TYPE_GAS, new GasStack(MekanismAPI.gasRegistry().getValue(RLUtils.toRL(gas)), 1000));
|
||||
} else {
|
||||
in.setOutput(MekanismJEI.TYPE_GAS, new GasStack(MekanismAPI.gasRegistry().getValue(RLUtils.toRL(gas)), 1000));
|
||||
}
|
||||
public <T> List<T> getIngredient(boolean input) {
|
||||
return (List<T>) ImmutableList.of(new GasStack(MekanismAPI.gasRegistry().getValue(RLUtils.toRL(gas)), 1000));
|
||||
}
|
||||
|
||||
@Override
|
||||
public IIngredientType<?> getJeiIngredientType() {
|
||||
return MekanismJEI.TYPE_GAS;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
package com.ticticboooom.mods.mm.ports.state;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.mojang.serialization.Codec;
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||
import com.ticticboooom.mods.mm.MM;
|
||||
import com.ticticboooom.mods.mm.exception.InvalidProcessDefinitionException;
|
||||
import com.ticticboooom.mods.mm.helper.RLUtils;
|
||||
import com.ticticboooom.mods.mm.ports.storage.IPortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.PortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.MekSlurryPortStorage;
|
||||
import lombok.SneakyThrows;
|
||||
import mekanism.api.Action;
|
||||
import mekanism.api.MekanismAPI;
|
||||
import mekanism.api.chemical.gas.GasStack;
|
||||
import mekanism.api.chemical.slurry.SlurryStack;
|
||||
import mekanism.api.inventory.AutomationType;
|
||||
import mekanism.client.jei.MekanismJEI;
|
||||
import mezz.jei.api.gui.IRecipeLayout;
|
||||
import mezz.jei.api.gui.drawable.IDrawableStatic;
|
||||
@@ -43,9 +42,9 @@ public class MekSlurryPortState extends PortState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processRequirement(List<IPortStorage> storage) {
|
||||
public void processRequirement(List<PortStorage> storage) {
|
||||
long current = amount;
|
||||
for (IPortStorage st : storage) {
|
||||
for (PortStorage st : storage) {
|
||||
if (st instanceof MekSlurryPortStorage) {
|
||||
MekSlurryPortStorage gasStorage = (MekSlurryPortStorage) st;
|
||||
if (gasStorage.getInv().getStack().getType().getRegistryName().toString().equals(slurry)) {
|
||||
@@ -60,9 +59,9 @@ public class MekSlurryPortState extends PortState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validateRequirement(List<IPortStorage> storage) {
|
||||
public boolean validateRequirement(List<PortStorage> storage) {
|
||||
long current = amount;
|
||||
for (IPortStorage st : storage) {
|
||||
for (PortStorage st : storage) {
|
||||
if (st instanceof MekSlurryPortStorage) {
|
||||
MekSlurryPortStorage gasStorage = (MekSlurryPortStorage) st;
|
||||
if (gasStorage.getInv().getStack().getType().getRegistryName().toString().equals(slurry)) {
|
||||
@@ -78,9 +77,9 @@ public class MekSlurryPortState extends PortState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processResult(List<IPortStorage> storage) {
|
||||
public void processResult(List<PortStorage> storage) {
|
||||
long current = amount;
|
||||
for (IPortStorage st : storage) {
|
||||
for (PortStorage st : storage) {
|
||||
if (st instanceof MekSlurryPortStorage) {
|
||||
MekSlurryPortStorage gasStorage = (MekSlurryPortStorage) st;
|
||||
SlurryStack extract = gasStorage.getInv().insertChemical(new SlurryStack(Objects.requireNonNull(MekanismAPI.slurryRegistry().getValue(RLUtils.toRL(slurry))), current), Action.EXECUTE);
|
||||
@@ -93,9 +92,9 @@ public class MekSlurryPortState extends PortState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validateResult(List<IPortStorage> storage) {
|
||||
public boolean validateResult(List<PortStorage> storage) {
|
||||
long current = amount;
|
||||
for (IPortStorage st : storage) {
|
||||
for (PortStorage st : storage) {
|
||||
if (st instanceof MekSlurryPortStorage) {
|
||||
MekSlurryPortStorage gasStorage = (MekSlurryPortStorage) st;
|
||||
SlurryStack extract = gasStorage.getInv().insertChemical(new SlurryStack(Objects.requireNonNull(MekanismAPI.slurryRegistry().getValue(RLUtils.toRL(slurry))), current), Action.SIMULATE);
|
||||
@@ -140,11 +139,12 @@ public class MekSlurryPortState extends PortState {
|
||||
|
||||
|
||||
@Override
|
||||
public void setIngredient(IIngredients in, boolean input) {
|
||||
if (input) {
|
||||
in.setInput(MekanismJEI.TYPE_SLURRY, new SlurryStack(MekanismAPI.slurryRegistry().getValue(RLUtils.toRL(slurry)), 1000));
|
||||
} else {
|
||||
in.setOutput(MekanismJEI.TYPE_SLURRY, new SlurryStack(MekanismAPI.slurryRegistry().getValue(RLUtils.toRL(slurry)), 1000));
|
||||
}
|
||||
public <T> List<T> getIngredient(boolean input) {
|
||||
return (List<T>) ImmutableList.of(new SlurryStack(MekanismAPI.slurryRegistry().getValue(RLUtils.toRL(slurry)), 1000));
|
||||
}
|
||||
|
||||
@Override
|
||||
public IIngredientType<?> getJeiIngredientType() {
|
||||
return MekanismJEI.TYPE_SLURRY;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
package com.ticticboooom.mods.mm.ports.state;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.ticticboooom.mods.mm.ports.storage.IPortStorage;
|
||||
import com.ticticboooom.mods.mm.ports.storage.PortStorage;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import mezz.jei.api.gui.IRecipeLayout;
|
||||
import mezz.jei.api.helpers.IJeiHelpers;
|
||||
import mezz.jei.api.ingredients.IIngredientType;
|
||||
import mezz.jei.api.ingredients.IIngredients;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class PortState {
|
||||
@@ -16,15 +18,16 @@ public abstract class PortState {
|
||||
@Setter
|
||||
private boolean consumePerTick = false;
|
||||
|
||||
public abstract void processRequirement(List<IPortStorage> storage);
|
||||
public abstract boolean validateRequirement(List<IPortStorage> storage);
|
||||
public abstract void processResult(List<IPortStorage> storage);
|
||||
public abstract boolean validateResult(List<IPortStorage> storage);
|
||||
public abstract void processRequirement(List<PortStorage> storage);
|
||||
public abstract boolean validateRequirement(List<PortStorage> storage);
|
||||
public abstract void processResult(List<PortStorage> storage);
|
||||
public abstract boolean validateResult(List<PortStorage> storage);
|
||||
public abstract ResourceLocation getName();
|
||||
public void validateDefinition() {}
|
||||
public void render(MatrixStack ms, int x, int y, int mouseX, int mouseY, IJeiHelpers helpers) {}
|
||||
public void setIngredient(IIngredients in, boolean input){
|
||||
|
||||
public abstract IIngredientType<?> getJeiIngredientType();
|
||||
public <T> List<T> getIngredient(boolean input) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
public void setupRecipe(IRecipeLayout layout, Integer typeIndex, int x, int y, boolean input) {
|
||||
|
||||
@@ -12,13 +12,14 @@ import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.AbstractGui;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.Slot;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.energy.CapabilityEnergy;
|
||||
|
||||
public class EnergyPortStorage implements IPortStorage {
|
||||
public class EnergyPortStorage extends PortStorage {
|
||||
public static final Codec<EnergyPortStorage> CODEC = RecordCodecBuilder.create(x -> x.group(
|
||||
Codec.INT.fieldOf("capacity").forGetter(z -> z.inv.getMaxEnergyStored())
|
||||
).apply(x, EnergyPortStorage::new));
|
||||
@@ -70,9 +71,4 @@ public class EnergyPortStorage implements IPortStorage {
|
||||
AbstractGui.drawString(stack, Minecraft.getInstance().font,Math.round((float)10000 * amount) / 100.f + "%", left + 30, top + 60, 0xfefefe);
|
||||
AbstractGui.drawString(stack, Minecraft.getInstance().font,inv.getEnergyStored() + "FE", left + 30, top + 80, 0xfefefe);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupContainer(PortBlockContainer container, PlayerInventory inv, MachinePortBlockEntity tile) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,15 +13,15 @@ import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.AbstractGui;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.Slot;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.nbt.NBTUtil;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
|
||||
public class FluidPortStorage implements IPortStorage {
|
||||
public class FluidPortStorage extends PortStorage {
|
||||
public static final Codec<FluidPortStorage> CODEC = RecordCodecBuilder.create(x -> x.group(
|
||||
Codec.INT.fieldOf("capacity").forGetter(z -> z.inv.getTankCapacity(0))
|
||||
).apply(x, FluidPortStorage::new));
|
||||
@@ -68,9 +68,4 @@ public class FluidPortStorage implements IPortStorage {
|
||||
|
||||
AbstractGui.drawCenteredString(stack, Minecraft.getInstance().font, inv.getFluidInTank(0).getAmount() + " " + inv.getFluidInTank(0).getDisplayName().getString(), left + x + 9 + 1, top + y + 30, 0xfefefe);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupContainer(PortBlockContainer container, PlayerInventory inv, MachinePortBlockEntity tile) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
package com.ticticboooom.mods.mm.ports.storage;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.ticticboooom.mods.mm.block.container.PortBlockContainer;
|
||||
import com.ticticboooom.mods.mm.block.tile.MachinePortBlockEntity;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.Container;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
|
||||
public interface IPortStorage {
|
||||
<T> LazyOptional<T> getLO();
|
||||
<T> boolean validate(Capability<T> cap);
|
||||
CompoundNBT save(CompoundNBT nbt);
|
||||
void load(CompoundNBT nbt);
|
||||
void render(MatrixStack stack, int mouseX, int mouseY, int left, int top, Screen screen);
|
||||
void setupContainer(PortBlockContainer container, PlayerInventory inv, MachinePortBlockEntity tile);
|
||||
}
|
||||
@@ -20,7 +20,7 @@ import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.items.CapabilityItemHandler;
|
||||
import net.minecraftforge.items.ItemStackHandler;
|
||||
|
||||
public class ItemPortStorage implements IPortStorage {
|
||||
public class ItemPortStorage extends PortStorage {
|
||||
public static final Codec<ItemPortStorage> CODEC = RecordCodecBuilder.create(x -> x.group(
|
||||
Codec.INT.fieldOf("rows").forGetter(z -> z.rows),
|
||||
Codec.INT.fieldOf("columns").forGetter(z -> z.columns)
|
||||
@@ -88,17 +88,6 @@ public class ItemPortStorage implements IPortStorage {
|
||||
container.addSlot(new Slot(items, (y * columns) + x, x * 18 + offsetX, y * 18 + offsetY));
|
||||
}
|
||||
}
|
||||
int playerOffsetX = 8;
|
||||
int playerOffsetY = 141;
|
||||
for (int j = 0; j < 3; j++) {
|
||||
for (int i = 0; i < 9; i++) {
|
||||
container.addSlot(new Slot(inv, 9 + (j * 9 + i), i* 18 + playerOffsetX, j* 18 + playerOffsetY));
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 9; i++) {
|
||||
container.addSlot(new Slot(inv, i,8 + (i * 18), 199));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -6,7 +6,6 @@ import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||
import com.ticticboooom.mods.mm.MM;
|
||||
import com.ticticboooom.mods.mm.block.container.PortBlockContainer;
|
||||
import com.ticticboooom.mods.mm.block.tile.MachinePortBlockEntity;
|
||||
import com.ticticboooom.mods.mm.client.util.FluidRenderer;
|
||||
import com.ticticboooom.mods.mm.helper.RLUtils;
|
||||
import com.ticticboooom.mods.mm.inventory.mek.PortMekGasInventory;
|
||||
import lombok.Getter;
|
||||
@@ -17,6 +16,7 @@ import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.AbstractGui;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.Slot;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
@@ -24,7 +24,7 @@ import net.minecraftforge.common.util.LazyOptional;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class MekGasPortStorage implements IPortStorage {
|
||||
public class MekGasPortStorage extends PortStorage {
|
||||
public static final Codec<MekGasPortStorage> CODEC = RecordCodecBuilder.create(x -> x.group(
|
||||
Codec.LONG.fieldOf("capacity").forGetter(z -> z.capacity)
|
||||
).apply(x, MekGasPortStorage::new));
|
||||
@@ -80,9 +80,4 @@ public class MekGasPortStorage implements IPortStorage {
|
||||
AbstractGui.drawString(stack, Minecraft.getInstance().font, inv.getStack().getAmount() + "mB", left + 30, top + 80, 0xfefefe);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupContainer(PortBlockContainer container, PlayerInventory inv, MachinePortBlockEntity tile) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,17 +7,16 @@ import com.ticticboooom.mods.mm.MM;
|
||||
import com.ticticboooom.mods.mm.block.container.PortBlockContainer;
|
||||
import com.ticticboooom.mods.mm.block.tile.MachinePortBlockEntity;
|
||||
import com.ticticboooom.mods.mm.helper.RLUtils;
|
||||
import com.ticticboooom.mods.mm.inventory.mek.PortMekGasInventory;
|
||||
import com.ticticboooom.mods.mm.inventory.mek.PortMekSlurryInventory;
|
||||
import lombok.Getter;
|
||||
import mekanism.api.MekanismAPI;
|
||||
import mekanism.api.chemical.gas.GasStack;
|
||||
import mekanism.api.chemical.slurry.SlurryStack;
|
||||
import mekanism.common.capabilities.Capabilities;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.AbstractGui;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.Slot;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
@@ -25,7 +24,7 @@ import net.minecraftforge.common.util.LazyOptional;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class MekSlurryPortStorage implements IPortStorage {
|
||||
public class MekSlurryPortStorage extends PortStorage {
|
||||
public static final Codec<MekSlurryPortStorage> CODEC = RecordCodecBuilder.create(x -> x.group(
|
||||
Codec.LONG.fieldOf("capacity").forGetter(z -> z.capacity)
|
||||
).apply(x, MekSlurryPortStorage::new));
|
||||
@@ -69,22 +68,17 @@ public class MekSlurryPortStorage implements IPortStorage {
|
||||
@Override
|
||||
public void render(MatrixStack stack, int mouseX, int mouseY, int left, int top, Screen screen) {
|
||||
Minecraft.getInstance().textureManager.bind(new ResourceLocation(MM.ID, "textures/gui/port_gui.png"));
|
||||
screen.blit(stack, left, top, 0, 0, 175, 256);
|
||||
screen.blit(stack, left, top, 0, 0, 175, 256);
|
||||
int barOffsetX = 175 - 30;
|
||||
int barOffsetY = 20;
|
||||
screen.blit(stack, left + barOffsetX, top + barOffsetY, 175, 18, 18, 108);
|
||||
float amount = 0;
|
||||
if (inv.getStack().getAmount() > 0) {
|
||||
amount = (float)inv.getStack().getAmount() / inv.getTankCapacity(0);
|
||||
amount = (float) inv.getStack().getAmount() / inv.getTankCapacity(0);
|
||||
}
|
||||
screen.blit(stack, left + barOffsetX, top + barOffsetY, 193, 18, 18, (int) (108 * amount));
|
||||
AbstractGui.drawString(stack, Minecraft.getInstance().font,inv.getStack().getType().getTextComponent().getString(), left + 30, top + 60, 0xfefefe);
|
||||
AbstractGui.drawString(stack, Minecraft.getInstance().font, inv.getStack().getType().getTextComponent().getString(), left + 30, top + 60, 0xfefefe);
|
||||
AbstractGui.drawString(stack, Minecraft.getInstance().font, inv.getStack().getAmount() + "mB", left + 30, top + 80, 0xfefefe);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupContainer(PortBlockContainer container, PlayerInventory inv, MachinePortBlockEntity tile) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.ticticboooom.mods.mm.ports.storage;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.ticticboooom.mods.mm.block.container.PortBlockContainer;
|
||||
import com.ticticboooom.mods.mm.block.tile.MachinePortBlockEntity;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.Container;
|
||||
import net.minecraft.inventory.container.Slot;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
|
||||
public abstract class PortStorage {
|
||||
public abstract <T> LazyOptional<T> getLO();
|
||||
public abstract <T> boolean validate(Capability<T> cap);
|
||||
public abstract CompoundNBT save(CompoundNBT nbt);
|
||||
public abstract void load(CompoundNBT nbt);
|
||||
public abstract void render(MatrixStack stack, int mouseX, int mouseY, int left, int top, Screen screen);
|
||||
public void setupContainer(PortBlockContainer container, PlayerInventory inv, MachinePortBlockEntity tile){
|
||||
int playerOffsetX = 8;
|
||||
int playerOffsetY = 141;
|
||||
for (int j = 0; j < 3; j++) {
|
||||
for (int i = 0; i < 9; i++) {
|
||||
container.addSlot(new Slot(inv, 9 + (j * 9 + i), i* 18 + playerOffsetX, j* 18 + playerOffsetY));
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 9; i++) {
|
||||
container.addSlot(new Slot(inv, i,8 + (i * 18), 199));
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -14,9 +14,7 @@ import com.ticticboooom.mods.mm.block.tile.MachinePortBlockEntity;
|
||||
import com.ticticboooom.mods.mm.helper.IOHelper;
|
||||
import com.ticticboooom.mods.mm.helper.RLUtils;
|
||||
import com.ticticboooom.mods.mm.ports.MasterfulPortType;
|
||||
import com.ticticboooom.mods.mm.ports.storage.IPortStorage;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.inventory.container.Container;
|
||||
import com.ticticboooom.mods.mm.ports.storage.PortStorage;
|
||||
import net.minecraft.inventory.container.ContainerType;
|
||||
import net.minecraft.item.*;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
@@ -24,9 +22,6 @@ import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.common.extensions.IForgeContainerType;
|
||||
import net.minecraftforge.fml.RegistryObject;
|
||||
import net.minecraftforge.fml.loading.FMLPaths;
|
||||
import net.minecraftforge.fml.network.IContainerFactory;
|
||||
import net.minecraftforge.registries.DeferredRegister;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
@@ -85,7 +80,7 @@ public class MMLoader {
|
||||
|
||||
ResourceLocation resourceLocation = RLUtils.toRL(type);
|
||||
MasterfulPortType value = MMPorts.PORTS.get(resourceLocation);
|
||||
Supplier<IPortStorage> data = value.getParser().createStorage(portObj.get("data").getAsJsonObject());
|
||||
Supplier<PortStorage> data = value.getParser().createStorage(portObj.get("data").getAsJsonObject());
|
||||
|
||||
{
|
||||
Registerable<RegistryObject<TileEntityType<?>>> tile = new Registerable<>();
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
package com.ticticboooom.mods.mm.registration;
|
||||
|
||||
import com.ticticboooom.mods.mm.MM;
|
||||
import com.ticticboooom.mods.mm.block.ProjectorBlock;
|
||||
import com.ticticboooom.mods.mm.block.StructureGenBlock;
|
||||
import com.ticticboooom.mods.mm.block.container.ProjectorBlockContainer;
|
||||
import com.ticticboooom.mods.mm.block.container.StructureGenBlockContainer;
|
||||
import com.ticticboooom.mods.mm.block.tile.ProjectorBlockEntity;
|
||||
import com.ticticboooom.mods.mm.block.tile.StructureGenBlockEntity;
|
||||
import com.ticticboooom.mods.mm.item.StructureGenSelectionDevice;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.inventory.container.ContainerType;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
import net.minecraftforge.common.extensions.IForgeContainerType;
|
||||
import net.minecraftforge.fml.RegistryObject;
|
||||
import net.minecraftforge.registries.DeferredRegister;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
@@ -18,4 +26,13 @@ public class MMSetup {
|
||||
|
||||
public static final RegistryObject<Item> BLUEPRINT = ITEMS_REG.register("blueprint", () -> new Item(new Item.Properties().tab(MMLoader.MASTERFUL_ITEM_GROUP)));
|
||||
|
||||
public static final RegistryObject<TileEntityType<?>> PROJECTOR_TILE = TILES_REG.register("projector", () -> TileEntityType.Builder.of(ProjectorBlockEntity::new).build(null));
|
||||
public static final RegistryObject<Block> PROJECTOR_BLOCK = BLOCKS_REG.register("projector", ProjectorBlock::new);
|
||||
public static final RegistryObject<ContainerType<?>> PROJECTOR_CONTAINER = CONTAINER_REG.register("projector", () -> IForgeContainerType.create(ProjectorBlockContainer::new));
|
||||
|
||||
public static final RegistryObject<TileEntityType<?>> STRUCTURE_TILE = TILES_REG.register("structure_generator", () -> TileEntityType.Builder.of(StructureGenBlockEntity::new).build(null));
|
||||
public static final RegistryObject<Block> STRUCTURE_BLOCK = BLOCKS_REG.register("structure_generator", StructureGenBlock::new);
|
||||
public static final RegistryObject<ContainerType<?>> STRUCTURE_CONTAINER = CONTAINER_REG.register("structure_generator", () -> IForgeContainerType.create(StructureGenBlockContainer::new));
|
||||
|
||||
public static final RegistryObject<Item> STRUCTURE_DEVICE = ITEMS_REG.register("structure_gen_device", StructureGenSelectionDevice::new);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user