This commit is contained in:
modmuss50 2019-10-18 20:26:30 +01:00
parent 4bbcf9e282
commit ef96e41557
3 changed files with 30 additions and 5 deletions

View file

@ -34,11 +34,12 @@ import net.minecraft.nbt.CompoundTag;
import reborncore.api.IToolDrop; import reborncore.api.IToolDrop;
import reborncore.api.blockentity.InventoryProvider; import reborncore.api.blockentity.InventoryProvider;
import reborncore.common.blockentity.MachineBaseBlockEntity; import reborncore.common.blockentity.MachineBaseBlockEntity;
import reborncore.common.blockentity.SlotConfiguration;
import reborncore.common.blocks.BlockMachineBase; import reborncore.common.blocks.BlockMachineBase;
import reborncore.common.util.RebornInventory; import reborncore.common.util.RebornInventory;
import techreborn.config.TechRebornConfig; import techreborn.config.TechRebornConfig;
public abstract class AbstractIronMachineBlockEntity extends MachineBaseBlockEntity implements InventoryProvider, IToolDrop { public abstract class AbstractIronMachineBlockEntity extends MachineBaseBlockEntity implements InventoryProvider, IToolDrop, SlotConfiguration.SlotFilter {
public RebornInventory<?> inventory; public RebornInventory<?> inventory;
public int burnTime; public int burnTime;
@ -62,7 +63,7 @@ public abstract class AbstractIronMachineBlockEntity extends MachineBaseBlockEnt
* @return * @return
*/ */
protected abstract boolean canSmelt(); protected abstract boolean canSmelt();
/** /**
* Turn ingredients into the appropriate smelted * Turn ingredients into the appropriate smelted
* item in the output slot * item in the output slot
@ -228,4 +229,5 @@ public abstract class AbstractIronMachineBlockEntity extends MachineBaseBlockEnt
this.progress = progress; this.progress = progress;
} }
} }

View file

@ -136,4 +136,17 @@ public class IronAlloyFurnaceBlockEntity extends AbstractIronMachineBlockEntity
.syncIntegerValue(this::getTotalBurnTime, this::setTotalBurnTime) .syncIntegerValue(this::getTotalBurnTime, this::setTotalBurnTime)
.addInventory().create(this, syncID); .addInventory().create(this, syncID);
} }
@Override
public boolean isStackValid(int slotID, ItemStack stack) {
return ModRecipes.ALLOY_SMELTER.getRecipes(world).stream()
.anyMatch(rebornRecipe -> rebornRecipe.getRebornIngredients().stream()
.anyMatch(rebornIngredient -> rebornIngredient.test(stack))
);
}
@Override
public int[] getInputSlots() {
return new int[]{input1, input2};
}
} }

View file

@ -24,8 +24,6 @@
package techreborn.blockentity.machine.iron; package techreborn.blockentity.machine.iron;
import java.util.Optional;
import net.minecraft.entity.ExperienceOrbEntity; import net.minecraft.entity.ExperienceOrbEntity;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -41,6 +39,8 @@ import techreborn.init.TRBlockEntities;
import techreborn.init.TRContent; import techreborn.init.TRContent;
import techreborn.utils.RecipeUtils; import techreborn.utils.RecipeUtils;
import java.util.Optional;
public class IronFurnaceBlockEntity extends AbstractIronMachineBlockEntity implements IContainerProvider { public class IronFurnaceBlockEntity extends AbstractIronMachineBlockEntity implements IContainerProvider {
int inputSlot = 0; int inputSlot = 0;
@ -118,7 +118,12 @@ public class IronFurnaceBlockEntity extends AbstractIronMachineBlockEntity imple
int result = inventory.getInvStack(outputSlot).getCount() + outputStack.getCount(); int result = inventory.getInvStack(outputSlot).getCount() + outputStack.getCount();
return result <= inventory.getStackLimit() && result <= outputStack.getMaxCount(); return result <= inventory.getStackLimit() && result <= outputStack.getMaxCount();
} }
@Override
public boolean isStackValid(int slotID, ItemStack stack) {
return !getResultFor(stack).isEmpty();
}
@Override @Override
public void fromTag(CompoundTag compoundTag) { public void fromTag(CompoundTag compoundTag) {
super.fromTag(compoundTag); super.fromTag(compoundTag);
@ -141,6 +146,11 @@ public class IronFurnaceBlockEntity extends AbstractIronMachineBlockEntity imple
this.experience = experience; this.experience = experience;
} }
@Override
public int[] getInputSlots() {
return new int[]{inputSlot};
}
@Override @Override
public BuiltContainer createContainer(int syncID, final PlayerEntity player) { public BuiltContainer createContainer(int syncID, final PlayerEntity player) {
return new ContainerBuilder("ironfurnace").player(player.inventory).inventory().hotbar() return new ContainerBuilder("ironfurnace").player(player.inventory).inventory().hotbar()