From 8915ff66f60279dfa1b9c779b66decd9bfcc9ec0 Mon Sep 17 00:00:00 2001 From: Zorbatron <46525467+Zorbatron@users.noreply.github.com> Date: Tue, 17 Dec 2024 19:03:59 -0500 Subject: [PATCH] Dropper covers that work like conveyors in GT5u when there is no block in front of them (#108) * yippe * Adjustable drop rate * Better UI and TOP integration * Recipes * Textures (thx mina!!!!) * whoopies --- .../java/com/zorbatron/zbgt/ZBGTCore.java | 6 + .../zorbatron/zbgt/common/CommonProxy.java | 5 + .../zbgt/common/covers/CoverDropper.java | 203 ++++++++++++++++++ .../zbgt/common/covers/ZBGTCovers.java | 27 +++ .../zbgt/common/items/ZBGTMetaItem.java | 20 ++ .../zbgt/common/items/ZBGTMetaItems.java | 14 ++ .../theoneprobe/DropperCoverProvider.java | 41 ++++ .../theoneprobe/ZBGTTOPModule.java | 17 ++ .../zorbatron/zbgt/recipe/CoverRecipes.java | 50 +++++ .../zbgt/recipe/helpers/RecipeAssists.java | 19 ++ .../items/metaitems/dropper_cover/ev.png | Bin 0 -> 2184 bytes .../items/metaitems/dropper_cover/hv.png | Bin 0 -> 2187 bytes .../items/metaitems/dropper_cover/iv.png | Bin 0 -> 2203 bytes .../items/metaitems/dropper_cover/luv.png | Bin 0 -> 2427 bytes .../items/metaitems/dropper_cover/lv.png | Bin 0 -> 2191 bytes .../items/metaitems/dropper_cover/mv.png | Bin 0 -> 2200 bytes .../items/metaitems/dropper_cover/opv.png | Bin 0 -> 2158 bytes .../items/metaitems/dropper_cover/uev.png | Bin 0 -> 2194 bytes .../items/metaitems/dropper_cover/uhv.png | Bin 0 -> 2414 bytes .../items/metaitems/dropper_cover/uiv.png | Bin 0 -> 2188 bytes .../items/metaitems/dropper_cover/uv.png | Bin 0 -> 2405 bytes .../items/metaitems/dropper_cover/uxv.png | Bin 0 -> 2187 bytes .../items/metaitems/dropper_cover/zpm.png | Bin 0 -> 2402 bytes .../resources/assets/zbgt/lang/en_us.lang | 19 ++ .../metaitems/cover.cover_dropper.ev.json | 6 + .../metaitems/cover.cover_dropper.hv.json | 6 + .../metaitems/cover.cover_dropper.iv.json | 6 + .../metaitems/cover.cover_dropper.luv.json | 6 + .../metaitems/cover.cover_dropper.lv.json | 6 + .../metaitems/cover.cover_dropper.max.json | 6 + .../metaitems/cover.cover_dropper.mv.json | 6 + .../metaitems/cover.cover_dropper.opv.json | 6 + .../metaitems/cover.cover_dropper.uev.json | 6 + .../metaitems/cover.cover_dropper.uhv.json | 6 + .../metaitems/cover.cover_dropper.uiv.json | 6 + .../metaitems/cover.cover_dropper.uv.json | 6 + .../metaitems/cover.cover_dropper.uxv.json | 6 + .../metaitems/cover.cover_dropper.zpm.json | 6 + 38 files changed, 505 insertions(+) create mode 100644 src/main/java/com/zorbatron/zbgt/common/covers/CoverDropper.java create mode 100644 src/main/java/com/zorbatron/zbgt/integration/theoneprobe/DropperCoverProvider.java create mode 100644 src/main/java/com/zorbatron/zbgt/integration/theoneprobe/ZBGTTOPModule.java create mode 100644 src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/ev.png create mode 100644 src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/hv.png create mode 100644 src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/iv.png create mode 100644 src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/luv.png create mode 100644 src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/lv.png create mode 100644 src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/mv.png create mode 100644 src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/opv.png create mode 100644 src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/uev.png create mode 100644 src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/uhv.png create mode 100644 src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/uiv.png create mode 100644 src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/uv.png create mode 100644 src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/uxv.png create mode 100644 src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/zpm.png create mode 100644 src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.ev.json create mode 100644 src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.hv.json create mode 100644 src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.iv.json create mode 100644 src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.luv.json create mode 100644 src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.lv.json create mode 100644 src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.max.json create mode 100644 src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.mv.json create mode 100644 src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.opv.json create mode 100644 src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uev.json create mode 100644 src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uhv.json create mode 100644 src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uiv.json create mode 100644 src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uv.json create mode 100644 src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uxv.json create mode 100644 src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.zpm.json diff --git a/src/main/java/com/zorbatron/zbgt/ZBGTCore.java b/src/main/java/com/zorbatron/zbgt/ZBGTCore.java index abe3f0fd..41458617 100644 --- a/src/main/java/com/zorbatron/zbgt/ZBGTCore.java +++ b/src/main/java/com/zorbatron/zbgt/ZBGTCore.java @@ -10,6 +10,7 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.SidedProxy; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; @@ -83,6 +84,11 @@ public void preInit(FMLPreInitializationEvent event) { proxy.preInit(); } + @EventHandler + public void init(FMLInitializationEvent event) { + proxy.init(); + } + @EventHandler public void postInit(FMLPostInitializationEvent event) throws IOException { proxy.postInit(); diff --git a/src/main/java/com/zorbatron/zbgt/common/CommonProxy.java b/src/main/java/com/zorbatron/zbgt/common/CommonProxy.java index 6824a695..54a5244e 100644 --- a/src/main/java/com/zorbatron/zbgt/common/CommonProxy.java +++ b/src/main/java/com/zorbatron/zbgt/common/CommonProxy.java @@ -25,6 +25,7 @@ import com.zorbatron.zbgt.common.block.ZBGTMetaBlocks; import com.zorbatron.zbgt.common.covers.ZBGTCovers; import com.zorbatron.zbgt.common.items.ZBGTMetaItems; +import com.zorbatron.zbgt.integration.theoneprobe.ZBGTTOPModule; import com.zorbatron.zbgt.recipe.ZBGTRecipes; import gregtech.api.GTValues; @@ -41,6 +42,10 @@ public void preInit() { ZBGTMetaItems.init(); } + public void init() { + ZBGTTOPModule.init(); + } + public void postInit() throws IOException { if (ZBGTConfig.worldGenerationSettings.enableOreGeneration) { CustomOreVeins.init(); diff --git a/src/main/java/com/zorbatron/zbgt/common/covers/CoverDropper.java b/src/main/java/com/zorbatron/zbgt/common/covers/CoverDropper.java new file mode 100644 index 00000000..166854df --- /dev/null +++ b/src/main/java/com/zorbatron/zbgt/common/covers/CoverDropper.java @@ -0,0 +1,203 @@ +package com.zorbatron.zbgt.common.covers; + +import net.minecraft.client.resources.I18n; +import net.minecraft.dispenser.BehaviorDefaultDispenseItem; +import net.minecraft.dispenser.IPosition; +import net.minecraft.dispenser.PositionImpl; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.PacketBuffer; +import net.minecraft.util.*; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import codechicken.lib.raytracer.CuboidRayTraceResult; +import codechicken.lib.render.CCRenderState; +import codechicken.lib.render.pipeline.IVertexOperation; +import codechicken.lib.vec.Cuboid6; +import codechicken.lib.vec.Matrix4; +import gregtech.api.capability.GregtechDataCodes; +import gregtech.api.capability.GregtechTileCapabilities; +import gregtech.api.capability.IControllable; +import gregtech.api.cover.CoverBase; +import gregtech.api.cover.CoverDefinition; +import gregtech.api.cover.CoverWithUI; +import gregtech.api.cover.CoverableView; +import gregtech.api.gui.GuiTextures; +import gregtech.api.gui.ModularUI; +import gregtech.api.gui.widgets.DynamicLabelWidget; +import gregtech.api.gui.widgets.SliderWidget; +import gregtech.client.renderer.texture.Textures; + +public class CoverDropper extends CoverBase implements ITickable, IControllable, CoverWithUI { + + private boolean isWorkingEnabled = true; + private int itemsLeftToTransferLastSecond; + private int updateRate; + private final int maxTransfer; + + public CoverDropper(@NotNull CoverDefinition definition, @NotNull CoverableView coverableView, + @NotNull EnumFacing attachedSide, int maxTransfer) { + super(definition, coverableView, attachedSide); + this.maxTransfer = maxTransfer; + this.updateRate = 20; + } + + @Override + public boolean isWorkingEnabled() { + return isWorkingEnabled; + } + + @Override + public void setWorkingEnabled(boolean isWorkingAllowed) { + isWorkingEnabled = isWorkingAllowed; + + if (!getWorld().isRemote) { + writeCustomData(GregtechDataCodes.WORKING_ENABLED, buf -> buf.writeBoolean(isWorkingAllowed)); + } + } + + @Override + public boolean canAttach(@NotNull CoverableView coverable, @NotNull EnumFacing side) { + return coverable.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side); + } + + @Override + public void renderCover(@NotNull CCRenderState renderState, @NotNull Matrix4 translation, + @NotNull IVertexOperation[] pipeline, @NotNull Cuboid6 plateBox, + @NotNull BlockRenderLayer layer) { + Textures.CONVEYOR_OVERLAY.renderSided(getAttachedSide(), plateBox, renderState, pipeline, translation); + } + + @Override + public void update() { + CoverableView coverable = getCoverableView(); + long timer = coverable.getOffsetTimer(); + + if (timer % updateRate == 0 && itemsLeftToTransferLastSecond > 0) { + IItemHandler extractFrom = coverable.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, + getAttachedSide()); + + if (extractFrom != null) { + int totalTransferred = dropItems(extractFrom, itemsLeftToTransferLastSecond); + this.itemsLeftToTransferLastSecond -= totalTransferred; + } + } + + if (timer % 20 == 0) { + this.itemsLeftToTransferLastSecond = maxTransfer; + } + } + + private int dropItems(IItemHandler extractFrom, int maxTransferAmount) { + int itemsLeftToTransfer = maxTransferAmount; + + for (int slot = 0; slot < extractFrom.getSlots(); slot++) { + ItemStack stack = extractFrom.extractItem(slot, itemsLeftToTransfer, true); + if (stack.isEmpty()) continue; + + stack = extractFrom.extractItem(slot, itemsLeftToTransfer, false); + itemsLeftToTransfer -= stack.getCount(); + + actuallyDropItems(stack); + } + + return itemsLeftToTransfer; + } + + private void actuallyDropItems(ItemStack stack) { + EnumFacing facing = getAttachedSide(); + + BehaviorDefaultDispenseItem.doDispense(getWorld(), stack, 6, facing, + getDropPosition(getPos(), facing)); + } + + private IPosition getDropPosition(BlockPos blockPos, EnumFacing facing) { + double d0 = blockPos.getX() + 0.7D * (double) facing.getXOffset() + 0.5D; + double d1 = blockPos.getY() + 0.7D * (double) facing.getYOffset() + 0.5D; + double d2 = blockPos.getZ() + 0.7D * (double) facing.getZOffset() + 0.5D; + + return new PositionImpl(d0, d1, d2); + } + + @Override + public ModularUI createUI(EntityPlayer player) { + return ModularUI.builder(GuiTextures.BACKGROUND, 110, 30) + .widget(new SliderWidget("", 5, 5, 100, 10, 1, 100, updateRate, val -> { + updateRate = (int) val; + writeCustomData(GregtechDataCodes.UPDATE_COVER_MODE, buf -> buf.writeInt(updateRate)); + })) + .widget(new DynamicLabelWidget(5, 17, () -> updateRate == 1 ? + I18n.format("cover.cover_dropper.update_rate_label.2") : + I18n.format("cover.cover_dropper.update_rate_label.1", updateRate))) + .build(this, player); + } + + @Override + public @NotNull EnumActionResult onScrewdriverClick(@NotNull EntityPlayer playerIn, @NotNull EnumHand hand, + @NotNull CuboidRayTraceResult hitResult) { + if (!getCoverableView().getWorld().isRemote) { + openUI((EntityPlayerMP) playerIn); + } + return EnumActionResult.SUCCESS; + } + + @Override + public void readCustomData(int discriminator, @NotNull PacketBuffer buf) { + super.readCustomData(discriminator, buf); + + if (discriminator == GregtechDataCodes.WORKING_ENABLED) { + isWorkingEnabled = buf.readBoolean(); + } else if (discriminator == GregtechDataCodes.UPDATE_COVER_MODE) { + updateRate = buf.readInt(); + } + } + + @Override + public void writeInitialSyncData(@NotNull PacketBuffer packetBuffer) { + super.writeInitialSyncData(packetBuffer); + packetBuffer.writeBoolean(isWorkingEnabled); + packetBuffer.writeInt(updateRate); + } + + @Override + public void readInitialSyncData(@NotNull PacketBuffer packetBuffer) { + super.readInitialSyncData(packetBuffer); + isWorkingEnabled = packetBuffer.readBoolean(); + updateRate = packetBuffer.readInt(); + } + + @Override + public @Nullable T getCapability(@NotNull Capability capability, @Nullable T defaultValue) { + if (capability == GregtechTileCapabilities.CAPABILITY_CONTROLLABLE) { + return GregtechTileCapabilities.CAPABILITY_CONTROLLABLE.cast(this); + } + + return super.getCapability(capability, defaultValue); + } + + @Override + public void writeToNBT(@NotNull NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setBoolean("IsWorkingEnabled", isWorkingEnabled); + nbt.setInteger("UpdateRate", updateRate); + } + + @Override + public void readFromNBT(@NotNull NBTTagCompound nbt) { + super.readFromNBT(nbt); + isWorkingEnabled = nbt.getBoolean("IsWorkingEnabled"); + updateRate = nbt.getInteger("UpdateRate"); + } + + public int getUpdateRate() { + return updateRate; + } +} diff --git a/src/main/java/com/zorbatron/zbgt/common/covers/ZBGTCovers.java b/src/main/java/com/zorbatron/zbgt/common/covers/ZBGTCovers.java index 16842e3b..787006e6 100644 --- a/src/main/java/com/zorbatron/zbgt/common/covers/ZBGTCovers.java +++ b/src/main/java/com/zorbatron/zbgt/common/covers/ZBGTCovers.java @@ -47,5 +47,32 @@ public static void init() { CoverBehaviors.registerBehavior(zbgtId("precise_dual_cover.uv"), ZBGTMetaItems.PRECISE_DUAL_COVER_UV, (def, tile, side) -> new CoverPreciseDualCover(def, tile, side, GTValues.UV, 16 * 64, 1280 * 64 * 64 * 4)); + + CoverBehaviors.registerBehavior(zbgtId("cover_dropper.lv"), ZBGTMetaItems.DROPPER_COVER_LV, + (def, tile, side) -> new CoverDropper(def, tile, side, 8)); + CoverBehaviors.registerBehavior(zbgtId("cover_dropper.mv"), ZBGTMetaItems.DROPPER_COVER_MV, + (def, tile, side) -> new CoverDropper(def, tile, side, 8 * 2)); + CoverBehaviors.registerBehavior(zbgtId("cover_dropper.hv"), ZBGTMetaItems.DROPPER_COVER_HV, + (def, tile, side) -> new CoverDropper(def, tile, side, 8 * 4)); + CoverBehaviors.registerBehavior(zbgtId("cover_dropper.ev"), ZBGTMetaItems.DROPPER_COVER_EV, + (def, tile, side) -> new CoverDropper(def, tile, side, 8 * 8)); + CoverBehaviors.registerBehavior(zbgtId("cover_dropper.iv"), ZBGTMetaItems.DROPPER_COVER_IV, + (def, tile, side) -> new CoverDropper(def, tile, side, 8 * 16)); + CoverBehaviors.registerBehavior(zbgtId("cover_dropper.luv"), ZBGTMetaItems.DROPPER_COVER_LuV, + (def, tile, side) -> new CoverDropper(def, tile, side, 8 * 32)); + CoverBehaviors.registerBehavior(zbgtId("cover_dropper.zpm"), ZBGTMetaItems.DROPPER_COVER_ZPM, + (def, tile, side) -> new CoverDropper(def, tile, side, 8 * 64)); + CoverBehaviors.registerBehavior(zbgtId("cover_dropper.uv"), ZBGTMetaItems.DROPPER_COVER_UV, + (def, tile, side) -> new CoverDropper(def, tile, side, 8 * 128)); + CoverBehaviors.registerBehavior(zbgtId("cover_dropper.uhv"), ZBGTMetaItems.DROPPER_COVER_UHV, + (def, tile, side) -> new CoverDropper(def, tile, side, 8 * 256)); + CoverBehaviors.registerBehavior(zbgtId("cover_dropper.uev"), ZBGTMetaItems.DROPPER_COVER_UEV, + (def, tile, side) -> new CoverDropper(def, tile, side, 8 * 512)); + CoverBehaviors.registerBehavior(zbgtId("cover_dropper.uiv"), ZBGTMetaItems.DROPPER_COVER_UIV, + (def, tile, side) -> new CoverDropper(def, tile, side, 8 * 1024)); + CoverBehaviors.registerBehavior(zbgtId("cover_dropper.uxv"), ZBGTMetaItems.DROPPER_COVER_UXV, + (def, tile, side) -> new CoverDropper(def, tile, side, 8 * 2048)); + CoverBehaviors.registerBehavior(zbgtId("cover_dropper.opv"), ZBGTMetaItems.DROPPER_COVER_OpV, + (def, tile, side) -> new CoverDropper(def, tile, side, 8 * 4096)); } } diff --git a/src/main/java/com/zorbatron/zbgt/common/items/ZBGTMetaItem.java b/src/main/java/com/zorbatron/zbgt/common/items/ZBGTMetaItem.java index 348455cd..4baacd9c 100644 --- a/src/main/java/com/zorbatron/zbgt/common/items/ZBGTMetaItem.java +++ b/src/main/java/com/zorbatron/zbgt/common/items/ZBGTMetaItem.java @@ -289,5 +289,25 @@ public void registerSubItems() { WRAPPED_CRYSTAL_SOC = addItem(115, "wrapped.misc.crystal_soc"); ZBGT_ITEM = addItem(116, "zbgt").setInvisible(); + + // Dropper Covers 117-129 + DROPPER_COVER_LV = addItem(117, "cover.cover_dropper.lv"); + DROPPER_COVER_MV = addItem(118, "cover.cover_dropper.mv"); + DROPPER_COVER_HV = addItem(119, "cover.cover_dropper.hv"); + DROPPER_COVER_EV = addItem(120, "cover.cover_dropper.ev"); + DROPPER_COVER_IV = addItem(121, "cover.cover_dropper.iv"); + DROPPER_COVER_LuV = addItem(122, "cover.cover_dropper.luv"); + DROPPER_COVER_ZPM = addItem(123, "cover.cover_dropper.zpm"); + DROPPER_COVER_UV = addItem(124, "cover.cover_dropper.uv"); + DROPPER_COVER_UHV = addItem(125, "cover.cover_dropper.uhv") + .setInvisibleIf(!GregTechAPI.isHighTier()); + DROPPER_COVER_UEV = addItem(126, "cover.cover_dropper.uev") + .setInvisibleIf(!GregTechAPI.isHighTier()); + DROPPER_COVER_UIV = addItem(127, "cover.cover_dropper.uiv") + .setInvisibleIf(!GregTechAPI.isHighTier()); + DROPPER_COVER_UXV = addItem(128, "cover.cover_dropper.uxv") + .setInvisibleIf(!GregTechAPI.isHighTier()); + DROPPER_COVER_OpV = addItem(129, "cover.cover_dropper.opv") + .setInvisibleIf(!GregTechAPI.isHighTier()); } } diff --git a/src/main/java/com/zorbatron/zbgt/common/items/ZBGTMetaItems.java b/src/main/java/com/zorbatron/zbgt/common/items/ZBGTMetaItems.java index e066d4e3..330a382d 100644 --- a/src/main/java/com/zorbatron/zbgt/common/items/ZBGTMetaItems.java +++ b/src/main/java/com/zorbatron/zbgt/common/items/ZBGTMetaItems.java @@ -137,6 +137,20 @@ public class ZBGTMetaItems { public static MetaItem.MetaValueItem WRAPPED_CRYSTAL_CPU; public static MetaItem.MetaValueItem WRAPPED_CRYSTAL_SOC; + public static MetaItem.MetaValueItem DROPPER_COVER_LV; + public static MetaItem.MetaValueItem DROPPER_COVER_MV; + public static MetaItem.MetaValueItem DROPPER_COVER_HV; + public static MetaItem.MetaValueItem DROPPER_COVER_EV; + public static MetaItem.MetaValueItem DROPPER_COVER_IV; + public static MetaItem.MetaValueItem DROPPER_COVER_LuV; + public static MetaItem.MetaValueItem DROPPER_COVER_ZPM; + public static MetaItem.MetaValueItem DROPPER_COVER_UV; + public static MetaItem.MetaValueItem DROPPER_COVER_UHV; + public static MetaItem.MetaValueItem DROPPER_COVER_UEV; + public static MetaItem.MetaValueItem DROPPER_COVER_UIV; + public static MetaItem.MetaValueItem DROPPER_COVER_UXV; + public static MetaItem.MetaValueItem DROPPER_COVER_OpV; + public static void init() { ZBGTMetaItem item = new ZBGTMetaItem(); item.setRegistryName("zbgt_meta_item"); diff --git a/src/main/java/com/zorbatron/zbgt/integration/theoneprobe/DropperCoverProvider.java b/src/main/java/com/zorbatron/zbgt/integration/theoneprobe/DropperCoverProvider.java new file mode 100644 index 00000000..93890420 --- /dev/null +++ b/src/main/java/com/zorbatron/zbgt/integration/theoneprobe/DropperCoverProvider.java @@ -0,0 +1,41 @@ +package com.zorbatron.zbgt.integration.theoneprobe; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.capabilities.Capability; + +import org.jetbrains.annotations.NotNull; + +import com.zorbatron.zbgt.ZBGTCore; +import com.zorbatron.zbgt.common.covers.CoverDropper; + +import gregtech.api.capability.GregtechTileCapabilities; +import gregtech.api.cover.Cover; +import gregtech.api.cover.CoverHolder; +import gregtech.integration.theoneprobe.provider.CapabilityInfoProvider; +import mcjty.theoneprobe.api.IProbeHitData; +import mcjty.theoneprobe.api.IProbeInfo; + +public class DropperCoverProvider extends CapabilityInfoProvider { + + @Override + protected @NotNull Capability getCapability() { + return GregtechTileCapabilities.CAPABILITY_COVER_HOLDER; + } + + @Override + protected void addProbeInfo(CoverHolder capability, IProbeInfo probeInfo, EntityPlayer player, + TileEntity tileEntity, IProbeHitData data) { + Cover cover = capability.getCoverAtSide(data.getSideHit()); + if (cover instanceof CoverDropper coverDropper) { + int updateRate = coverDropper.getUpdateRate(); + probeInfo.text(updateRate == 1 ? "{*cover.cover_dropper.update_rate.3*}" : + "{*cover.cover_dropper.update_rate.1*}" + updateRate + "{*cover.cover_dropper.update_rate.2*}"); + } + } + + @Override + public String getID() { + return ZBGTCore.MODID + ":dropper_cover_provider"; + } +} diff --git a/src/main/java/com/zorbatron/zbgt/integration/theoneprobe/ZBGTTOPModule.java b/src/main/java/com/zorbatron/zbgt/integration/theoneprobe/ZBGTTOPModule.java new file mode 100644 index 00000000..5e5d1adf --- /dev/null +++ b/src/main/java/com/zorbatron/zbgt/integration/theoneprobe/ZBGTTOPModule.java @@ -0,0 +1,17 @@ +package com.zorbatron.zbgt.integration.theoneprobe; + +import com.zorbatron.zbgt.api.util.ZBGTLog; + +import mcjty.theoneprobe.TheOneProbe; +import mcjty.theoneprobe.api.ITheOneProbe; + +public class ZBGTTOPModule { + + public static void init() { + ZBGTLog.logger.info("Registering TOP providers"); + + ITheOneProbe oneProbe = TheOneProbe.theOneProbeImp; + + oneProbe.registerProvider(new DropperCoverProvider()); + } +} diff --git a/src/main/java/com/zorbatron/zbgt/recipe/CoverRecipes.java b/src/main/java/com/zorbatron/zbgt/recipe/CoverRecipes.java index 6d8cf536..30daaaf2 100644 --- a/src/main/java/com/zorbatron/zbgt/recipe/CoverRecipes.java +++ b/src/main/java/com/zorbatron/zbgt/recipe/CoverRecipes.java @@ -1,22 +1,29 @@ package com.zorbatron.zbgt.recipe; import static com.zorbatron.zbgt.common.items.ZBGTMetaItems.*; +import static com.zorbatron.zbgt.recipe.helpers.RecipeAssists.*; import static gregtech.api.GTValues.*; import static gregtech.api.recipes.RecipeMaps.ASSEMBLER_RECIPES; import static gregtech.api.recipes.RecipeMaps.ASSEMBLY_LINE_RECIPES; import static gregtech.common.items.MetaItems.*; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; + import com.zorbatron.zbgt.recipe.helpers.RecipeAssists; +import gregtech.api.recipes.ModHandler; import gregtech.api.unification.material.MarkerMaterials; import gregtech.api.unification.material.Materials; import gregtech.api.unification.ore.OrePrefix; +import gregtech.api.unification.stack.UnificationEntry; public class CoverRecipes { protected static void init() { dualCovers(); preciseDualCovers(); + dropperCovers(); } private static void dualCovers() { @@ -135,4 +142,47 @@ private static void preciseDualCovers() { .EUt(VA[UV]).duration(20 * 25) .buildAndRegister(); } + + private static void dropperCovers() { + for (int tier = LV; tier < LuV; tier++) { + ModHandler.addShapedRecipe(String.format("dropper_cover_%s", VN[tier]), + getDropperCoverByTier(tier).getStackForm(), + "CD ", + "TwP", + 'C', getConveyorByTier(tier), + 'D', new ItemStack(Blocks.DROPPER), + 'T', new UnificationEntry(OrePrefix.circuit, getMarkerMaterialByTier(tier)), + 'P', getPistonByTier(tier)); + } + + ASSEMBLER_RECIPES.recipeBuilder() + .input(getConveyorByTier(LuV)) + .input(Blocks.DROPPER) + .input(OrePrefix.circuit, getMarkerMaterialByTier(LuV)) + .input(getPistonByTier(LuV)) + .fluidInputs(Materials.HSSS.getFluid(L)) + .output(getDropperCoverByTier(LuV)) + .EUt(VA[LuV]).duration(20 * 10) + .buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(getConveyorByTier(ZPM)) + .input(Blocks.DROPPER) + .input(OrePrefix.circuit, getMarkerMaterialByTier(ZPM)) + .input(getPistonByTier(ZPM)) + .fluidInputs(Materials.Naquadria.getFluid(L * 2)) + .output(getDropperCoverByTier(ZPM)) + .EUt(VA[ZPM]).duration(20 * 10) + .buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(getConveyorByTier(UV)) + .input(Blocks.DROPPER) + .input(OrePrefix.circuit, getMarkerMaterialByTier(UV)) + .input(getPistonByTier(UV)) + .fluidInputs(Materials.Neutronium.getFluid(L * 4)) + .output(getDropperCoverByTier(UV)) + .EUt(VA[UV]).duration(20 * 10) + .buildAndRegister(); + } } diff --git a/src/main/java/com/zorbatron/zbgt/recipe/helpers/RecipeAssists.java b/src/main/java/com/zorbatron/zbgt/recipe/helpers/RecipeAssists.java index b7b5293f..37114e92 100644 --- a/src/main/java/com/zorbatron/zbgt/recipe/helpers/RecipeAssists.java +++ b/src/main/java/com/zorbatron/zbgt/recipe/helpers/RecipeAssists.java @@ -454,4 +454,23 @@ public static MetaItem.MetaValueItem getWrappedCircuitByTier(int tier) { default -> WRAPPED_CIRCUIT_ULV; }; } + + public static MetaItem.MetaValueItem getDropperCoverByTier(int tier) { + return switch (tier) { + case (MV) -> DROPPER_COVER_MV; + case (HV) -> DROPPER_COVER_HV; + case (EV) -> DROPPER_COVER_EV; + case (IV) -> DROPPER_COVER_IV; + case (LuV) -> DROPPER_COVER_LuV; + case (ZPM) -> DROPPER_COVER_ZPM; + case (UV) -> DROPPER_COVER_UV; + case (UHV) -> DROPPER_COVER_UHV; + case (UEV) -> DROPPER_COVER_UEV; + case (UIV) -> DROPPER_COVER_UIV; + case (UXV) -> DROPPER_COVER_UXV; + case (OpV) -> DROPPER_COVER_OpV; + case (MAX) -> WRAPPED_CIRCUIT_MAX; + default -> DROPPER_COVER_LV; + }; + } } diff --git a/src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/ev.png b/src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/ev.png new file mode 100644 index 0000000000000000000000000000000000000000..6f97adfb9118e14dd50614a825d8ce765384ae6f GIT binary patch literal 2184 zcmZuy4Nwzj8V;5Ng>rg2#RJZ|Y>|eM&2BcoyCwoA2oVDja)|Y(F1s68$)Cvv5-LTp zg*t7do=8QgZEf}ZJ1YUIRj|}*Zv-nv?OeGjYOUUIDx!7HpIW{9HUy5&xHG%i@5}Q( z-}^k@`+mF0l$#Y36(1!MiDC@d`h4&^O}HmVfamOc|D{Btuo_OMGZ}O`$mDWZI4dg> ziTk!~F^cs|{&c!J!Y>bCnE`L~L2=?T{Ng8jIg_l&JK~R9b4k{v+UnmOct3Eb^=`-E zR!bRmpyB5wfwneSdH&uPj*E-eG%P>z_~s9<H*)&FZxS2U2BP5 zm#m+g5kKX|p5_Gq>EwOneEYs7H;te6T&?~%rQ_NT)5lZlw-Ya;onlRUV_(XpKm5MA zw{p=#^U=R=iH^EFcTjxy?W^zfg>8!~w_K%9QWR3~<-*@J_imn}5&zH>u%4Nkw5TP& z^U(J_v1dPcZU4;L##;m2?%rEaPk6zpZ!z)V1&x}nz(02#J;kQwpT2ziF?|(3)lrkO zd2M0qw^eC3roLWrb5G}76|D0-@JhyCTzbGt>N@LQa@ zh%YiOCTWLFLNShFR^qie0a_%|qcIFe0%2ibIo*R8BH*7+WeR(jh6%rHkPL#ugz+AlU^+xBqqVTFpa`c5W<&f;Uc36(m7l# zB$vn~7?SDb%5fNwK#<18Sjc?+!Vn1!eM1d8D(jw1kp zxP5k>@*;NkOQR$q8a?Z#U7VBW9Ck>crHUOMUJHXfMiaC-jmB|yyF26qa0K;IPE;zv zP@7H2I*4}jndKljl*=>GZnMwHqWP@b;c?MyW;tu;Um6Q%=Jt~6H;H&^65I1)G2&3^MjI{$3 zT;PEE-gEwQ@M&r{=rhdfywmwzxsx)c?QH87$G<=-rcdFMD_hckH9qu3_OJ4V^WVYQ!gxzUa>82W?NJ0o(o+2tc2a^ zLp&MVIy5i;-*=v?{qU*zh-UhqlQ)(hupytO-rWA-XVW(&?SHcL;Q3x%f30}9p}p&m z^|Upy)_t#SgLie5va2XHwyJmInw*Sx*Dp8^8&7;St)VwkJwLX#-!%DLZr|CtId%W2 zoc(-6Z285P1Co(VbKR}Fq2;C9{$F^R-@5GY^;u4pLe}x=x)}r Sy7j`>$&i_=KeS+V&Hn%x*C=TK literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/hv.png b/src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/hv.png new file mode 100644 index 0000000000000000000000000000000000000000..9b12591026c2f4cc411cc4bf6df68e319cffdac0 GIT binary patch literal 2187 zcmZuydsGu=77rD97V%MKfyEt1i{W@C^T>Oel+pwwB8Y(s)-LO0W&$I5kxWRS)wZt3 zU8+E95o(nxqE^KskL7^1)RoG*A}+F(?zXF-lt0>HRisrxt@}-Ql%C_9Gn4tg{O<4G z`}^*_Q<9#xGAtx2L?jZ08Ituz@H4&Nl-}WldOOlQ;B)c*%O=%AuoNx-{E+yEJlBzqDQXe(B++>ZUu5BP|V$ z=6tHI;_lj}=4M#&@6j{%E2}qEY-oKreD(FT`yYkA{pS z7O#4c*>?WD(2#)@*Tf?`26y)O?T#!o57HeJg=Cyfn!Wd8+4CCl)jds?3*pOF?K6H> z|KF}f-TPlZ9%Aom74aZZw|JdW8;mT1GgU1gT%R(t#M@q z>l!a_j{hNii)Z*q;CPCmCg@6hQU8Vr|JLhu-xclu%SZR!{w?JWs_JoFAofU7+<3x$ zOE(&@?~j#oI{IJAnje>Z{KBVbU)QsTzPwWm4^(Wc%+K40{(P^wXC$UOIqUtbhSP!9 zA}{0|y?bkWSN|`XZ||=hiWZeSi~KZnG&q!CNAh}?NE8|_+pW*ruZ{BLrZ*?e~D zYLd2FB@|;fu@bM<0nj3mCf@6y=zNxkOl&S^)55n;pMfEc(ZX5sR4mn@WAnJ=VketX zoR&!!=hJEij(;&MMB^m^gO%ke$ZNIOT%=bE`-n;KE^MPP{oIk5poJ=AyV-twu2dB?tr{5Lc0n zr@V;GwRD1Hl19(EXea03IlB!KXepE3&1+#0$3%cuM{4RcyUjJJ15gC@QVtZCV5rq9 zMD0Vn_{2hBJQ>SV(XPxQ2a6h6m)-58*~CKD#xI>RXXt5LhudlKWx>!WYhkSb<^taE zX;&)^sp->bA?sYu>hM_rg{M(GXZ}^2-^3&Q;|qVvIWU{%`wem`PXP$TAoX_IEyQEc zYhl4D$=GR*A$_lA1&hl~aw(!@6>>zz$Z15)NNGe#5e%)A(Fz4kOz{|OE}pW{tiS`9 zB^)5ZR5C)!;y9u-6Br`Hr6xozH7OB=)I<<1{6uF)239=(3x659MSNazS<=2~ZrqBp|U*wYVuio;+5N1S4<+ClErKi4i0r zB?$$B$w>@oj?TzMg9>dqGd~UbG$|%r|}Z1OPITV;gVOj-rN3QRdm5%%kh!w*!ENEp!)gqmlyQyn5!*- zdKc8!yLYvHm36QtIHE7*Nonf~bm2g=CQvz&qG%p%JhP`d@_{GlPf?jWHf&qfak*pd z-+%Fbdaf{{q5|rjT_NeV=Is3-V8M-9YSHeyE$Gfqa)OpUPg7e-0qlPyKMc+D(iUY8z=iV z-K%cz?oL}Eed!oaTT8a--YNO1_CHk-^UBX3eRXr|mazZLigT}<{r!mSurbcLYmTz) zfbm$68OQ$_yrpCQ)ocC1<@&1cJ2J)$&nd=B*Nn898dcobihrnF#GYpl#l`eQZ{Fy5 zcf9!F(bFHVxE{Wwj8)s`S5zW6N znsQEtO2ZbrWKk_!zU+NXa{fuiy8}JZ?GEFCva-VLob|!{qfO|gx`S`E9UrUC{Z_hA zPcEHXqW`%My82Z}O=ZK$qPA~hl=-(}W_SL0<0bU^qnq7P?{r=~FnU{b$1m{t+g#G{ SEAxa8lp!%qU;pyPt^Ws|J2FTB literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/iv.png b/src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/iv.png new file mode 100644 index 0000000000000000000000000000000000000000..8a188d40d448f69dcd862ad2f252805a6e2a8d90 GIT binary patch literal 2203 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 Y>s(h_H;ya1`InSYZ%#S!QtsCO0Vl62l>h($ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/uhv.png b/src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/uhv.png new file mode 100644 index 0000000000000000000000000000000000000000..ee73c4340b20f76e2f9c565d7b1af87fd35eae94 GIT binary patch literal 2414 zcmcIleN+=y77rB#QA%{FrGOfur9zoxW-|GjCa?$rVg+Ih7M0WEWadpANircBLZm8+ z!lG?G6<51fYpJgIx!S6ngC8yR1FXuTds?;Cw(BZALTlAlrNUO&H-WJB9RJ#LHs?(8 z-plX)?!CWz-<{Q#g52n+_$Y})5^c`Qw!&Yj_(YC^-;?hTP!dU44VRT=F=u7TEMA`F zoIoO(c45Q1SMp9-VrvH)XP8puereg~miN=@l!@vn(=O?vnmH3^y8Eh=qs?pH+M%YpUG!q(wTbj{w{8xu zSl!*eC$7>YNqRuV&yG6ucm3Rg2G`PWzi{n27I)#~z@FUmSI0)yoj%llIPpgGjqdz2 zoyQ9ksgb5B=`T%c+Ld`DcmLk>ma>jF((bj_ZJ5#Vhupf>C1ds??NJ*G4Ccg3!pdK2 z4qu4Bg>+QzJ{iCCm*;B_wVlJSaM4L?O=+36kF1crWt&P; zkE~hHS^UQr$k+=p{ShsW(p$-GkN^5nxbSK7oinKP>c}68t~^fnf7>@&x@6S;w;EeY zMzHDT1Dd9;aTkw8my~GLT4W(v1*KPpx0Nr<>rI1 zynpN)ul?*q5?a6W_Cw9xJB!}G_Cdw*-pszR=9S)4yPMf&SeMbBytzJ!WK4|sgw^+s z*ddXOZ02mmLUH~~lIC3sis9`*5pa1RS|TxI1UwX73Iv%QI5@Xae)m|5T*fg*`D^NY zG~bg27IJx&UNF0|z(!Y=(t1Xokscjo2#}D$1q4bKa5>#RGGLSkiAlH?kCk#+5F(Ts z<;D3HSr+dFGD1NpP{b7A{J0#F$YcgD!;;qQoFNjpGs+hVf`?QpD=I1!6)FYqbto~t zUav%PC5|Hyf%q1?1uB5JeNzTWhG?>ZkM?pNf#cmWk(RRa<$_TT;}{Ik<;l+L$sW6#YqV)gc{{DId^$r=+wr!z-)mMg~K!irq=2S990o&RHq$6%mH2> z>@1NALlr7WC+beZ(4l~o*mTe|m=Kxe1(d*hZ9MNZ%EcIDqD`n*VYd#dpU3$iYH{!$ z$bz5XZI}(po;VunZ6_xSb|gvBgRXp(U(|o_kX}f+9ROZg*e!!6+*2xo>+A%rrWu4) zGb*tnYDA~UaD>+CG&rCs4FT|wy^m*w3d##I9WXnX1Z<9A60&JQ)lx#ZiiJRw1cf&f z#Sm0$!*EiqBMG=xlPDBP`TxlU!(jDMoeDu|JwOP|ZbvAB)gUSrt|ll3XH_Z?it&HX zMMYv-n8nj_F(}0m^JJ|I%BPie5ckAr8XS8;YdH7d4%&rAskj>+$G{B>>V?C0(-lKB zeAAvcXJ^`Ug{@YsFk#l%9=f4=d4005;#t#-E=%~4hUL?CNK>o>k}>T?U%#?5p=NZ> zR|~pqnxjc^>z_HLemgQNc3aL1=i01A+m1MnEmNLpir80IckmT*Cjn zw|DdIpE8B16V7RWt@`NG>G!TiPMtImKzsb(eAj(YyTmeo#G;<J17<+YV+*>Vf zO=SL2!zWC3^-JAh554SrP02}LUO&3O5+hU9F^5mzdf4WwE>WC09iDBkYpCh!d{nI8 zM3k;RyM7C?*|)tc;>7JAUrQTnN!wUml6o_#mpPZP??6RfKD84IoR9jyT`u)x~sHJ-^S^Wvyrmo8iFMqkoGOdnW)pSXnz`NXKX%lK%ckH l|ISy}{ykpt-DFAsGe`gY8(;V!HbQ&>n@t7T`=>9c{txn1YyAKK literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/uiv.png b/src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/uiv.png new file mode 100644 index 0000000000000000000000000000000000000000..b8a7b40ddf6c4b52f878f283bb3f1daf1f2ebd08 GIT binary patch literal 2188 zcmZuy4^R_V9uB9_7>vX#oF0c77E$roWb;282{na~gfkE!DmvUvH=CERl5AqKB!P+* zI4E*AXzkceopM_7DB#s<1rHA^)>h?C1ihXzwN)7{r?i|<&yLC+_1*@;(HVDUH~U_` z?|Z-B_kO>(yDWJIJ};5S;c)mSV|D@j6|grq20oYl`x(LEMAcGRSr$`PmeAt!I4Bq3 za8?cMdt;69Q%ii^vzA=_Y9t`o)@x}>uNNmNc=}es*4m9r*3lEyEBK~{-!%_y@s1xa zD)Vl;e(jSDg1O6tjd^(uqJlf8Oz-JihpH}3J{g;QtzWxHur;;i%O&JaTD?&!+BMSG zzPLiqNq$5m7V=J9#y963bXVT|+}+;2c;MW#cEhC`^SSk(o#^XGy2HOSV!rtG>HH)j zTAz}+a%pF)?vCN;k<6ZL{ja8v_to#q?SIiwe|~%H5wwr@R$hiF=^9h>u(o3$@gCY= z(RMDe^5LSo6Bqs_9i;fljrw$59XBB%etmV#;(x`YDfcp>&hO$XcDz%(`c%U!Ul*%m1#a3lJg4TF=JftwTa1lwbd{=TKBc#b2}^r5oz z{=zHW{NiGjqAafKtEiYitUF(jk!Ji=@9@sYvWb@YS6+){K78sgefRF8DC5;X{Zw`K zlVoh~`=j40#~y5L`tm^V^i$nLR9B7f)3z>07u=V5UgKszhZ7se-cfs>&iNyUGk27- z7BNNUbsEy+77=!j4TwT+FGO=V883yr1X&6gp$#}GT8oTz_aH*bu0=K}%$V7m1xhGm zg%1=~$a!Z2QqSR4!nMM0U!<8z87IF5@ksaPsS zAp-T6(+m+pX@AO;$h1s0@RL5u%TOL#$jTBnPZ^^{U>s8cy1i!ej5_U~_5nH~4iR3l zM1+amZZ_&L+Rx|%kUSmBbJ2clxfh5FfZtQ*BY{2uXeK2>x05qmZ<)^(&caTLfeW}H z%nw(S%q(RvnJqJDHfty4_J$eI;TaS|IsWg>kK$qf35Oq99MWd=euRwV$pWDnnrshQ z#>QjH)*|ep8oP(2?3(Z^hG7z%AXTVTE|;TnwVgn5g;a(DLaoAN5}8~jQAKo2w4Whp z60kZ@Swuk*2Z2k}YKIyHauq=3O3a4hHbRZc2&ELLY)ZnRCL{cO9|cQ~aLtZ~)v-ez zoKPsFDxgFa1b{jcLWZi<0LrRlgo4CXcBLK0VJ9^?9-o_lTSmDFClGsSCn98>)#xlH zEg}_R(?g4kU>p#tMb=StS!jCJO1VKHL$Jn4lyZqerN$*vsY0&Cp?FwkBk=iQWwBBc zOeBMHtnV5aIy8`Aiw;u532Cx?fM7g6tHSOQo}FxZ)x1jSTV ziA;m3H8MCN|r!31ZH{)4cr;m7jCzJ{Fpo7>%gX||U=2z0L) zNVq4L^nqbBJ+&tso2up%?T$gyx#`8 zFW2iY8ds0MSU2=^9wZzllT64 zPon9t#eKh0!B3{}!innS-r>O2HKR4jyI;t4rWOv94#U{T zzu7%P8KbJ!o_*4JsP^TmTPqKSivJN9K2&}8F1hEgj$b#teezPg;Tg}+dwaMuKR9$? zyyo^Yi-CXpK6n1Bm5reJ^oEu;i*MQYg$q=T#aqsT4;&(zrf>H5%sIPq@|$t-mZgJ6 Q_VZ-Y=Vc##`IYMb0gi(wKL7v# literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/uv.png b/src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/uv.png new file mode 100644 index 0000000000000000000000000000000000000000..343abc5bbdce50ef7f3851b66616b3a1a80bcd7e GIT binary patch literal 2405 zcmcIlYg7|w8V)N^E{&uvic-*F1dEnQCNq=UEWu)k5G24tq(C{ROlBrwAUBf9#jGt> zip9%%Tw2@Oql<34h_*{@l^!fwT3aht3UsyW)=TR_dc3R_ZN0Kf*>A#S?OFfqkIgwV zneUtDeZJ>?zV~})eQ{x~I3_VhBoc`Yc{wHEUm{#lk>I}Ir*TRo3TxtYx?+P)2Nk=W z7S6_sMCk)t|L~iUV>id6}aigz!YkvQ)bDNK@j(r>Hi+Qy$(~$Hv-}qzG zfq}$JNPlq8k;LbIOjx)7^DnT|oH%8(J|lZw)a=>uzg^on_j=@FWeYFuycrjKep}U& zgBz-c%b%J@#t+2({78?r?$V;q$KKi(&VSVP!!cBHCgSSK(_>k_^P|y{)sY>W+Ip&H zSh5W7DmyPfHrOq$s!}Puab4%aBL7%$v?OzJ-iqGu*WATN+a4Wkh~?kC@2T5<@m5&g zSMSVHef&uZ+OqrFZRN-hwL8wX`VZaD9u4bibbq?1%hCn*CEAr&;Sq^q@I*7i87Z4Tohf$@{pOeat!ID8i|3pUNT8+6PA{*8fsP4*c9+pO&F=6_`T!h} z1t^zHE=6T_yP!IR_V9Wi2%gmPP_)Oi%Eih`SdY`|rdhp@b?^(P!Wnux*5!5ELRm1h zjJ2_L0P}#=6@w#`f>qKuMW`tXo8mDz zJUr!~S%C*IOF2Lymn$qdfwKszRHzYxWeE_fBoGy?#uN$_r7`2`srVu{2TG5!J*Y?E zVE_+B<0=KJ1Qco<=ui`8L`?%lD5h4afeH<#!eNM^$>mPBodR3N*(ob4b2+RqBsfcE z7aO!NCPgQQ#Wsq!0H_u&;2hq-`74LCcct7Q4v#lUIkOU}>P!dpj$hE~&IDZW*Sb}15M2;aC zZbC5jAuy$quxM~Zfzb>?m?;X;P&kdKag|(-S}Yi2o_6Pd&ILnI zIfAN8a-1X-qyp61f9H}Z6I#rJdzC4B*tSmK9%xMyZ7&oJ`W_g8xT#hujHcT$>i`?- z2F*7A^oOnBOMAqSlWkHL9WBuo{VH3sqjNAl@iB9wZ~p8>!SqDEF%P|&@Op3DmIXW0 zwl>XK{&>%QdxI;#yYg4n8CQG77B5_@-^R>Jg`xbD?_7A} zR%L^J^UO`+XKY#IOWRjSw(GK5t-Eg4n})X!jNWKaJ!i4o2&?93FUo&ia-sPo+Ft-Thkkhl?)n&v>%=3;&VMCRzOa z)&qUt4`SWHe0q<`yetNaoI6k4#dJkoJ09J9?BezIh}+WmQ_2@p7q*O`;m3!`JGX;7 zcXvO2=kA>^U)lKk((84di6_rOY0vk3cdGN0X^H-7_%++e<$J^T!ViC&UA`iMCDw_CAu;`fRcybH>=<*-Kn5l5{TVsz>% literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/uxv.png b/src/main/resources/assets/gregtech/textures/items/metaitems/dropper_cover/uxv.png new file mode 100644 index 0000000000000000000000000000000000000000..94fcd1fef86a1eaca89f566bf76bea93ae76d9b3 GIT binary patch literal 2187 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/zbgt/lang/en_us.lang b/src/main/resources/assets/zbgt/lang/en_us.lang index 34c40429..358e1ec9 100644 --- a/src/main/resources/assets/zbgt/lang/en_us.lang +++ b/src/main/resources/assets/zbgt/lang/en_us.lang @@ -112,6 +112,25 @@ metaitem.cover.dual.tooltip.transfer_rate.stacks=§bTransfer Rate: §f%,d stacks cover.dual_cover.mode_changer=Click to change between the item and fluid settings +metaitem.cover.cover_dropper.lv.name=LV Dropper Cover +metaitem.cover.cover_dropper.mv.name=MV Dropper Cover +metaitem.cover.cover_dropper.hv.name=HV Dropper Cover +metaitem.cover.cover_dropper.ev.name=EV Dropper Cover +metaitem.cover.cover_dropper.iv.name=IV Dropper Cover +metaitem.cover.cover_dropper.luv.name=LuV Dropper Cover +metaitem.cover.cover_dropper.zpm.name=ZPM Dropper Cover +metaitem.cover.cover_dropper.uv.name=UV Dropper Cover +metaitem.cover.cover_dropper.uhv.name=UHV Dropper Cover +metaitem.cover.cover_dropper.uev.name=UEV Dropper Cover +metaitem.cover.cover_dropper.uiv.name=UIV Dropper Cover +metaitem.cover.cover_dropper.uxv.name=UXV Dropper Cover +metaitem.cover.cover_dropper.opv.name=OpV Dropper Cover +cover.cover_dropper.update_rate_label.1=Drop every %s ticks +cover.cover_dropper.update_rate_label.2=Drop every tick +cover.cover_dropper.update_rate.1=Dropping every +cover.cover_dropper.update_rate.2=ticks +cover.cover_dropper.update_rate.3=Dropping every tick + # Items metaitem.generic_circuit.ulv.name=Generic ULV Circuit diff --git a/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.ev.json b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.ev.json new file mode 100644 index 00000000..4902b1ff --- /dev/null +++ b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.ev.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/metaitems/dropper_cover/ev" + } +} diff --git a/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.hv.json b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.hv.json new file mode 100644 index 00000000..8ca9f0a6 --- /dev/null +++ b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.hv.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/metaitems/dropper_cover/hv" + } +} diff --git a/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.iv.json b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.iv.json new file mode 100644 index 00000000..bd2ed8b7 --- /dev/null +++ b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.iv.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/metaitems/dropper_cover/iv" + } +} diff --git a/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.luv.json b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.luv.json new file mode 100644 index 00000000..f8d40f9b --- /dev/null +++ b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.luv.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/metaitems/dropper_cover/luv" + } +} diff --git a/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.lv.json b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.lv.json new file mode 100644 index 00000000..cb533f79 --- /dev/null +++ b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.lv.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/metaitems/dropper_cover/lv" + } +} diff --git a/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.max.json b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.max.json new file mode 100644 index 00000000..e738adf6 --- /dev/null +++ b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.max.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/metaitems/dropper_cover/max" + } +} diff --git a/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.mv.json b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.mv.json new file mode 100644 index 00000000..aeddbb8a --- /dev/null +++ b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.mv.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/metaitems/dropper_cover/mv" + } +} diff --git a/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.opv.json b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.opv.json new file mode 100644 index 00000000..a5756164 --- /dev/null +++ b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.opv.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/metaitems/dropper_cover/opv" + } +} diff --git a/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uev.json b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uev.json new file mode 100644 index 00000000..099f655a --- /dev/null +++ b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uev.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/metaitems/dropper_cover/uev" + } +} diff --git a/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uhv.json b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uhv.json new file mode 100644 index 00000000..08b8f0dc --- /dev/null +++ b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uhv.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/metaitems/dropper_cover/uhv" + } +} diff --git a/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uiv.json b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uiv.json new file mode 100644 index 00000000..7deb4cb4 --- /dev/null +++ b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uiv.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/metaitems/dropper_cover/uiv" + } +} diff --git a/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uv.json b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uv.json new file mode 100644 index 00000000..349d9384 --- /dev/null +++ b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uv.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/metaitems/dropper_cover/uv" + } +} diff --git a/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uxv.json b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uxv.json new file mode 100644 index 00000000..04fc74dc --- /dev/null +++ b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.uxv.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/metaitems/dropper_cover/uxv" + } +} diff --git a/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.zpm.json b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.zpm.json new file mode 100644 index 00000000..02d4afd0 --- /dev/null +++ b/src/main/resources/assets/zbgt/models/item/metaitems/cover.cover_dropper.zpm.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/metaitems/dropper_cover/zpm" + } +}