diff --git a/src/main/java/projecthds/herodotusutils/event/EventHandler.java b/src/main/java/projecthds/herodotusutils/event/EventHandler.java index 48b2304..2e0695f 100644 --- a/src/main/java/projecthds/herodotusutils/event/EventHandler.java +++ b/src/main/java/projecthds/herodotusutils/event/EventHandler.java @@ -18,6 +18,7 @@ import crafttweaker.mc1120.item.MCItemStack; import crafttweaker.util.ArrayUtil; import gregtech.api.GregTechAPI; +import gregtech.api.metatileentity.registry.MTEManager; import gregtech.api.unification.material.event.MaterialEvent; import gregtech.api.unification.material.event.MaterialRegistryEvent; import net.minecraft.block.state.IBlockState; @@ -400,6 +401,11 @@ public static void registerMaterialRegistry(MaterialRegistryEvent event) { GregTechAPI.materialManager.createRegistry(HerodotusUtils.MOD_ID); } + @SubscribeEvent + public static void registerMTERegistry(MTEManager.MTERegistryEvent event) { + GregTechAPI.mteManager.createRegistry(HerodotusUtils.MOD_ID); + } + @SubscribeEvent(priority = EventPriority.HIGH) public static void registerMaterials(MaterialEvent event) { HDSMaterials.init(); diff --git a/src/main/java/projecthds/herodotusutils/metatileentities/multi/MultiMachineCarver.java b/src/main/java/projecthds/herodotusutils/metatileentities/multi/MultiMachineCarver.java new file mode 100644 index 0000000..e9acf5f --- /dev/null +++ b/src/main/java/projecthds/herodotusutils/metatileentities/multi/MultiMachineCarver.java @@ -0,0 +1,95 @@ +package projecthds.herodotusutils.metatileentities.multi; + +import gregtech.api.metatileentity.MetaTileEntity; +import gregtech.api.metatileentity.interfaces.IGregTechTileEntity; +import gregtech.api.metatileentity.multiblock.*; +import gregtech.api.metatileentity.multiblock.ui.MultiblockUIBuilder; +import gregtech.api.pattern.BlockPattern; +import gregtech.api.pattern.FactoryBlockPattern; +import gregtech.api.util.KeyUtil; +import gregtech.client.renderer.ICubeRenderer; +import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntityFurnace; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; +import org.jetbrains.annotations.NotNull; +import projecthds.herodotusutils.util.TransferUtils; + +public class MultiMachineCarver extends MultiblockWithDisplayBase { + private int burnTime = 0; + private int progress = 0; + private static final int ONCE_TIME = 60; + private static final int MAX_PROGRESS = 100; + + public MultiMachineCarver(ResourceLocation metaTileEntityId) { + super(metaTileEntityId); + } + + @Override + public void update() { + super.update(); + if (!getWorld().isRemote && isActive()) { + IItemHandler chestInventory = getWorld().getTileEntity(getPos().up()).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null); + TransferUtils.forEachItems(chestInventory, (index, stack) -> { + if (TileEntityFurnace.getItemBurnTime(stack) > 0) { + + } + }); + } + } + + @Override + @SideOnly(value = Side.CLIENT) + protected void configureDisplayText(MultiblockUIBuilder builder) { + builder.addCustom((manager, syncer) -> { + manager.add(KeyUtil.lang("hdsutils.mte.carver.burn_time", burnTime)); + }); + } + + @Override + public NBTTagCompound writeToNBT(NBTTagCompound data) { + super.writeToNBT(data); + data.setInteger("burnTime", burnTime); + return data; + } + + @Override + public void readFromNBT(NBTTagCompound data) { + super.readFromNBT(data); + burnTime = data.getInteger("burnTime"); + } + + @Override + protected void updateFormedValid() {} + + @Override + protected @NotNull BlockPattern createStructurePattern() { + return FactoryBlockPattern.start() + .aisle("A") + .aisle("B") + .aisle("C") + .where('A', blocks(Blocks.CHEST)) + .where('B', selfPredicate()) + .where('C', blocks(Blocks.DROPPER)) + .build(); + } + + @Override + public ICubeRenderer getBaseTexture(IMultiblockPart iMultiblockPart) { + return null; + } + + @Override + public MetaTileEntity createMetaTileEntity(IGregTechTileEntity iGregTechTileEntity) { + return new MultiMachineCarver(metaTileEntityId); + } + + @Override + public boolean hasMaintenanceMechanics() { + return false; + } +} diff --git a/src/main/java/projecthds/herodotusutils/util/TransferUtils.java b/src/main/java/projecthds/herodotusutils/util/TransferUtils.java new file mode 100644 index 0000000..5df037e --- /dev/null +++ b/src/main/java/projecthds/herodotusutils/util/TransferUtils.java @@ -0,0 +1,16 @@ +package projecthds.herodotusutils.util; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.items.IItemHandler; + +import java.util.function.BiConsumer; + +public class TransferUtils { + + public static void forEachItems(IItemHandler handler, BiConsumer consumer) { + for (int i = 0; i < handler.getSlots(); i++) { + consumer.accept(i, handler.getStackInSlot(i)); + } + } + +} diff --git a/src/main/resources/assets/hdsutils/lang/en_us.lang b/src/main/resources/assets/hdsutils/lang/en_us.lang index 40723cb..1f80119 100644 --- a/src/main/resources/assets/hdsutils/lang/en_us.lang +++ b/src/main/resources/assets/hdsutils/lang/en_us.lang @@ -152,4 +152,6 @@ hdsutils.tips.i18ndetected.0=HerodotusUtils 检测到您正在使用 I18nUpdateM hdsutils.tips.i18ndetected.1=Herodotus 整合包内置了同隶属于 ProjectHDS 的翻译项目 https://github.com/ProjectHDS/Hermes,无需使用其他第三方汉化包 hdsutils.tips.i18ndetected.2=请您在禁用 I18nUpdateMod 模组后,再启动游戏 -hdsutils.message.block_lithium_quartz_powder_interacted=%s times of block update has been recorded \ No newline at end of file +hdsutils.message.block_lithium_quartz_powder_interacted=%s times of block update has been recorded + +hdsutils.mte.carver.burn_time=Burn Time: %s ticks \ No newline at end of file