Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/main/java/gregtech/common/blocks/MetaBlocks.java
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ private MetaBlocks() {}
public static final Map<String, BlockFluidPipe[]> FLUID_PIPES = new Object2ObjectOpenHashMap<>();
public static final Map<String, BlockItemPipe[]> ITEM_PIPES = new Object2ObjectOpenHashMap<>();
public static final BlockOpticalPipe[] OPTICAL_PIPES = new BlockOpticalPipe[OpticalPipeType.values().length];
public static final BlockLaserPipe[] LASER_PIPES = new BlockLaserPipe[OpticalPipeType.values().length];
public static final BlockLaserPipe[] LASER_PIPES = new BlockLaserPipe[LaserPipeType.values().length];
public static BlockLongDistancePipe LD_ITEM_PIPE;
public static BlockLongDistancePipe LD_FLUID_PIPE;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@
import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityOpticalDataHatch;
import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityPassthroughHatchFluid;
import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityPassthroughHatchItem;
import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityPassthroughHatchLaser;
import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityReservoirHatch;
import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityRotorHolder;
import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntitySubstationEnergyHatch;
Expand Down Expand Up @@ -233,6 +234,7 @@ private MetaTileEntities() {}
public static MetaTileEntityLaserHatch[] LASER_OUTPUT_HATCH_256 = new MetaTileEntityLaserHatch[GTValues.V.length - 1];
public static MetaTileEntityLaserHatch[] LASER_OUTPUT_HATCH_1024 = new MetaTileEntityLaserHatch[GTValues.V.length - 1];
public static MetaTileEntityLaserHatch[] LASER_OUTPUT_HATCH_4096 = new MetaTileEntityLaserHatch[GTValues.V.length - 1];
public static MetaTileEntityPassthroughHatchLaser PASSTHROUGH_HATCH_LASER;
public static MetaTileEntityComputationHatch COMPUTATION_HATCH_RECEIVER;
public static MetaTileEntityComputationHatch COMPUTATION_HATCH_TRANSMITTER;
public static MetaTileEntityObjectHolder OBJECT_HOLDER;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@
import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityOpticalDataHatch;
import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityPassthroughHatchFluid;
import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityPassthroughHatchItem;
import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityPassthroughHatchLaser;
import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityReservoirHatch;
import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityRotorHolder;
import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntitySubstationEnergyHatch;
Expand Down Expand Up @@ -995,78 +996,81 @@ private static void multiblockParts() {
MetaTileEntities.CLEANING_MAINTENANCE_HATCH = MetaTileEntities.registerMetaTileEntity(11483,
new MetaTileEntityCleaningMaintenanceHatch(gregtechId("maintenance_hatch_cleanroom_auto")));

// Misc Hatches: ID 11495-11524
MetaTileEntities.MACHINE_HATCH = MetaTileEntities.registerMetaTileEntity(11495,
new MetaTileEntityMachineHatch(gregtechId("machine_hatch"), 5));

// Passthrough Hatches: ID 11496-11512
MetaTileEntities.PASSTHROUGH_HATCH_ITEM = MetaTileEntities.registerMetaTileEntity(11496,
new MetaTileEntityPassthroughHatchItem(gregtechId("passthrough_hatch_item"), 3));
MetaTileEntities.PASSTHROUGH_HATCH_FLUID = MetaTileEntities.registerMetaTileEntity(11497,
new MetaTileEntityPassthroughHatchFluid(gregtechId("passthrough_hatch_fluid"), 3));
MetaTileEntities.PASSTHROUGH_HATCH_LASER = MetaTileEntities.registerMetaTileEntity(11498,
new MetaTileEntityPassthroughHatchLaser(gregtechId("passthrough_hatch_laser"), 5));

// Misc Hatches: ID 11513-11549
MetaTileEntities.MACHINE_HATCH = MetaTileEntities.registerMetaTileEntity(11513,
new MetaTileEntityMachineHatch(gregtechId("machine_hatch"), 5));

MetaTileEntities.DATA_ACCESS_HATCH = MetaTileEntities.registerMetaTileEntity(11498,
MetaTileEntities.DATA_ACCESS_HATCH = MetaTileEntities.registerMetaTileEntity(11514,
new MetaTileEntityDataAccessHatch(gregtechId("data_access_hatch"), GTValues.EV, false));
MetaTileEntities.ADVANCED_DATA_ACCESS_HATCH = MetaTileEntities.registerMetaTileEntity(11499,
MetaTileEntities.ADVANCED_DATA_ACCESS_HATCH = MetaTileEntities.registerMetaTileEntity(11515,
new MetaTileEntityDataAccessHatch(gregtechId("data_access_hatch.advanced"), GTValues.LuV, false));
MetaTileEntities.CREATIVE_DATA_HATCH = MetaTileEntities.registerMetaTileEntity(11500,
MetaTileEntities.CREATIVE_DATA_HATCH = MetaTileEntities.registerMetaTileEntity(11516,
new MetaTileEntityDataAccessHatch(gregtechId("data_access_hatch.creative"), GTValues.MAX, true));

MetaTileEntities.OPTICAL_DATA_HATCH_RECEIVER = MetaTileEntities.registerMetaTileEntity(11501,
MetaTileEntities.OPTICAL_DATA_HATCH_RECEIVER = MetaTileEntities.registerMetaTileEntity(11517,
new MetaTileEntityOpticalDataHatch(gregtechId("data_access_hatch.optical.receiver"), false));
MetaTileEntities.OPTICAL_DATA_HATCH_TRANSMITTER = MetaTileEntities.registerMetaTileEntity(11502,
MetaTileEntities.OPTICAL_DATA_HATCH_TRANSMITTER = MetaTileEntities.registerMetaTileEntity(11518,
new MetaTileEntityOpticalDataHatch(gregtechId("data_access_hatch.optical.transmitter"), true));
MetaTileEntities.COMPUTATION_HATCH_RECEIVER = MetaTileEntities.registerMetaTileEntity(11503,
MetaTileEntities.COMPUTATION_HATCH_RECEIVER = MetaTileEntities.registerMetaTileEntity(11519,
new MetaTileEntityComputationHatch(gregtechId("computation_hatch.receiver"), false));
MetaTileEntities.COMPUTATION_HATCH_TRANSMITTER = MetaTileEntities.registerMetaTileEntity(11504,
MetaTileEntities.COMPUTATION_HATCH_TRANSMITTER = MetaTileEntities.registerMetaTileEntity(11520,
new MetaTileEntityComputationHatch(gregtechId("computation_hatch.transmitter"), true));

MetaTileEntities.RESERVOIR_HATCH = MetaTileEntities.registerMetaTileEntity(11505,
MetaTileEntities.RESERVOIR_HATCH = MetaTileEntities.registerMetaTileEntity(11521,
new MetaTileEntityReservoirHatch(gregtechId("reservoir_hatch")));
MetaTileEntities.PUMP_OUTPUT_HATCH = MetaTileEntities.registerMetaTileEntity(11506,
MetaTileEntities.PUMP_OUTPUT_HATCH = MetaTileEntities.registerMetaTileEntity(11522,
new MetaTileEntityPumpHatch(gregtechId("pump_hatch")));

MetaTileEntities.STEAM_EXPORT_BUS = MetaTileEntities.registerMetaTileEntity(11507,
MetaTileEntities.STEAM_EXPORT_BUS = MetaTileEntities.registerMetaTileEntity(11523,
new MetaTileEntitySteamItemBus(gregtechId("steam_export_bus"), true));
MetaTileEntities.STEAM_IMPORT_BUS = MetaTileEntities.registerMetaTileEntity(11508,
MetaTileEntities.STEAM_IMPORT_BUS = MetaTileEntities.registerMetaTileEntity(11524,
new MetaTileEntitySteamItemBus(gregtechId("steam_import_bus"), false));
MetaTileEntities.STEAM_HATCH = MetaTileEntities.registerMetaTileEntity(11509,
MetaTileEntities.STEAM_HATCH = MetaTileEntities.registerMetaTileEntity(11525,
new MetaTileEntitySteamHatch(gregtechId("steam_hatch")));

MetaTileEntities.OBJECT_HOLDER = MetaTileEntities.registerMetaTileEntity(11510,
MetaTileEntities.OBJECT_HOLDER = MetaTileEntities.registerMetaTileEntity(11526,
new MetaTileEntityObjectHolder(gregtechId("research_station.object_holder")));

MetaTileEntities.HPCA_EMPTY_COMPONENT = MetaTileEntities.registerMetaTileEntity(11511,
MetaTileEntities.HPCA_EMPTY_COMPONENT = MetaTileEntities.registerMetaTileEntity(11527,
new MetaTileEntityHPCAEmpty(gregtechId("hpca.empty_component")));
MetaTileEntities.HPCA_COMPUTATION_COMPONENT = MetaTileEntities.registerMetaTileEntity(11512,
MetaTileEntities.HPCA_COMPUTATION_COMPONENT = MetaTileEntities.registerMetaTileEntity(11528,
new MetaTileEntityHPCAComputation(gregtechId("hpca.computation_component"), false));
MetaTileEntities.HPCA_ADVANCED_COMPUTATION_COMPONENT = MetaTileEntities.registerMetaTileEntity(11513,
MetaTileEntities.HPCA_ADVANCED_COMPUTATION_COMPONENT = MetaTileEntities.registerMetaTileEntity(11529,
new MetaTileEntityHPCAComputation(gregtechId("hpca.advanced_computation_component"), true));
MetaTileEntities.HPCA_HEAT_SINK_COMPONENT = MetaTileEntities.registerMetaTileEntity(11514,
MetaTileEntities.HPCA_HEAT_SINK_COMPONENT = MetaTileEntities.registerMetaTileEntity(11530,
new MetaTileEntityHPCACooler(gregtechId("hpca.heat_sink_component"), false));
MetaTileEntities.HPCA_ACTIVE_COOLER_COMPONENT = MetaTileEntities.registerMetaTileEntity(11515,
MetaTileEntities.HPCA_ACTIVE_COOLER_COMPONENT = MetaTileEntities.registerMetaTileEntity(11531,
new MetaTileEntityHPCACooler(gregtechId("hpca.active_cooler_component"), true));
MetaTileEntities.HPCA_BRIDGE_COMPONENT = MetaTileEntities.registerMetaTileEntity(11516,
MetaTileEntities.HPCA_BRIDGE_COMPONENT = MetaTileEntities.registerMetaTileEntity(11532,
new MetaTileEntityHPCABridge(gregtechId("hpca.bridge_component")));

MetaTileEntities.WOODEN_TANK_VALVE = MetaTileEntities.registerMetaTileEntity(11523,
MetaTileEntities.WOODEN_TANK_VALVE = MetaTileEntities.registerMetaTileEntity(11539,
new MetaTileEntityTankValve(gregtechId("tank_valve.wood"), false));
MetaTileEntities.STEEL_TANK_VALVE = MetaTileEntities.registerMetaTileEntity(11524,
MetaTileEntities.STEEL_TANK_VALVE = MetaTileEntities.registerMetaTileEntity(11540,
new MetaTileEntityTankValve(gregtechId("tank_valve.steel"), true));

// ME Hatches, IDs 11525-11539
// ME Hatches, IDs 11541-11549
if (Mods.AppliedEnergistics2.isModLoaded()) {
MetaTileEntities.ITEM_IMPORT_BUS_ME = MetaTileEntities.registerMetaTileEntity(11525,
MetaTileEntities.ITEM_IMPORT_BUS_ME = MetaTileEntities.registerMetaTileEntity(11541,
new MetaTileEntityMEInputBus(gregtechId("me_import_item_bus")));
MetaTileEntities.FLUID_IMPORT_HATCH_ME = MetaTileEntities.registerMetaTileEntity(11526,
MetaTileEntities.FLUID_IMPORT_HATCH_ME = MetaTileEntities.registerMetaTileEntity(11542,
new MetaTileEntityMEInputHatch(gregtechId("me_import_fluid_hatch")));
MetaTileEntities.STOCKING_BUS_ME = MetaTileEntities.registerMetaTileEntity(11527,
MetaTileEntities.STOCKING_BUS_ME = MetaTileEntities.registerMetaTileEntity(11543,
new MetaTileEntityMEStockingBus(gregtechId("me_stocking_item_bus")));
MetaTileEntities.STOCKING_HATCH_ME = MetaTileEntities.registerMetaTileEntity(11528,
MetaTileEntities.STOCKING_HATCH_ME = MetaTileEntities.registerMetaTileEntity(11544,
new MetaTileEntityMEStockingHatch(gregtechId("me_stocking_fluid_hatch")));
// slots left for CRIB and CRIBuffer in the future for nicer sorting order
MetaTileEntities.ITEM_EXPORT_BUS_ME = MetaTileEntities.registerMetaTileEntity(11532,
MetaTileEntities.ITEM_EXPORT_BUS_ME = MetaTileEntities.registerMetaTileEntity(11548,
new MetaTileEntityMEOutputBus(gregtechId("me_export_item_bus")));
MetaTileEntities.FLUID_EXPORT_HATCH_ME = MetaTileEntities.registerMetaTileEntity(11533,
MetaTileEntities.FLUID_EXPORT_HATCH_ME = MetaTileEntities.registerMetaTileEntity(11549,
new MetaTileEntityMEOutputHatch(gregtechId("me_export_fluid_hatch")));
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
package gregtech.common.metatileentities.multi.multiblockpart;

import gregtech.api.capability.GregtechTileCapabilities;
import gregtech.api.capability.ILaserContainer;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.interfaces.IGregTechTileEntity;
import gregtech.api.metatileentity.multiblock.AbilityInstances;
import gregtech.api.metatileentity.multiblock.IMultiblockAbilityPart;
import gregtech.api.metatileentity.multiblock.IPassthroughHatch;
import gregtech.api.metatileentity.multiblock.MultiblockAbility;
import gregtech.client.renderer.texture.Textures;
import gregtech.common.pipelike.laser.net.WorldLaserPipeNet;
import gregtech.common.pipelike.laser.tile.TileEntityLaserPipe;

import net.minecraft.client.resources.I18n;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.common.capabilities.Capability;

import codechicken.lib.render.CCRenderState;
import codechicken.lib.render.pipeline.IVertexOperation;
import codechicken.lib.vec.Matrix4;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.List;

public class MetaTileEntityPassthroughHatchLaser extends MetaTileEntityMultiblockPart implements IPassthroughHatch,
IMultiblockAbilityPart<IPassthroughHatch> {

public MetaTileEntityPassthroughHatchLaser(ResourceLocation metaTileEntityId, int tier) {
super(metaTileEntityId, tier);
}

@Override
public <T> T getCapability(Capability<T> capability, EnumFacing side) {
if (capability == GregtechTileCapabilities.CAPABILITY_LASER && side == getFrontFacing().getOpposite()) {
World world = getWorld();
if (world != null && !world.isRemote) {
TileEntity te = world.getTileEntity(getPos().offset(getFrontFacing()));
if (te != null) {
return GregtechTileCapabilities.CAPABILITY_LASER.cast(te
.getCapability(GregtechTileCapabilities.CAPABILITY_LASER, getFrontFacing().getOpposite()));
}
}
}
return super.getCapability(capability, side);
}

@Override
public void setFrontFacing(EnumFacing frontFacing) {
super.setFrontFacing(frontFacing);
var worldNet = WorldLaserPipeNet.getWorldPipeNet(getWorld());
var pos = new BlockPos.MutableBlockPos();
for (var facing : EnumFacing.VALUES) {
TileEntity te = getNeighbor(facing);
if (te instanceof TileEntityLaserPipe) {
pos.setPos(getPos());
pos.move(facing);
var net = worldNet.getNetFromPos(pos);
if (net != null) {
net.onPipeConnectionsUpdate();
}
}
}
}

@Override
public MetaTileEntity createMetaTileEntity(IGregTechTileEntity tileEntity) {
return new MetaTileEntityPassthroughHatchLaser(metaTileEntityId, getTier());
}

@Override
public MultiblockAbility<IPassthroughHatch> getAbility() {
return MultiblockAbility.PASSTHROUGH_HATCH;
}

@Override
public void registerAbilities(@NotNull AbilityInstances abilityInstances) {
abilityInstances.add(this);
}

@Override
public @NotNull Class<?> getPassthroughType() {
return ILaserContainer.class;
}

@Override
protected boolean openGUIOnRightClick() {
return false;
}

@Override
public void addInformation(ItemStack stack, @Nullable World world, @NotNull List<String> tooltip,
boolean advanced) {
tooltip.add(I18n.format("gregtech.machine.laser_hatch.tooltip2"));
tooltip.add(I18n.format("gregtech.universal.enabled"));
}

@Override
public void addToolUsages(ItemStack stack, @Nullable World world, List<String> tooltip, boolean advanced) {
tooltip.add(I18n.format("gregtech.tool_action.screwdriver.access_covers"));
tooltip.add(I18n.format("gregtech.tool_action.wrench.set_facing"));
super.addToolUsages(stack, world, tooltip, advanced);
}

@Override
public void renderMetaTileEntity(CCRenderState renderState, Matrix4 translation, IVertexOperation[] pipeline) {
super.renderMetaTileEntity(renderState, translation, pipeline);
Textures.LASER_SOURCE.renderSided(getFrontFacing(), renderState, translation, pipeline);
Textures.LASER_TARGET.renderSided(getFrontFacing().getOpposite(), renderState, translation, pipeline);
}
}
Loading
Loading