Skip to content

Commit

Permalink
feat: pressure conduits
Browse files Browse the repository at this point in the history
  • Loading branch information
ferriarnus committed Jun 25, 2024
1 parent 2f09b62 commit f5ec4ca
Show file tree
Hide file tree
Showing 9 changed files with 153 additions and 1 deletion.
7 changes: 6 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ void exclusiveRepo(RepositoryHandler handler, String url, Consumer<InclusiveRepo

repositories { RepositoryHandler handler ->
exclusiveRepo(handler, 'https://maven.tterrag.com/', 'com.tterrag.registrate', 'com.jozufozu.flywheel')
exclusiveRepo(handler, "https://modmaven.dev/", "mezz.jei", "mcjty.theoneprobe", "appeng", "mekanism")
exclusiveRepo(handler, "https://modmaven.dev/", "mezz.jei", "mcjty.theoneprobe", "appeng", "mekanism", "me.desht.pneumaticcraft")
exclusiveRepo(handler, 'https://cursemaven.com', 'curse.maven')
exclusiveRepo(handler, 'https://maven.blamejared.com', 'vazkii.patchouli', 'net.darkhax.bookshelf', 'net.darkhax.enchdesc', 'com.almostreliable.mods')
exclusiveRepo(handler, 'https://dogforce-games.com/maven', 'dev.gigaherz.graph')
Expand Down Expand Up @@ -282,6 +282,11 @@ dependencies {
compileOnly("cc.tweaked:cc-tweaked-$minecraft_version-forge-api:$cctVersion")
runtimeOnly(fg.deobf("cc.tweaked:cc-tweaked-$minecraft_version-forge:$cctVersion"))

// Pneumaticcraft
compileOnly(fg.deobf("me.desht.pneumaticcraft:pneumaticcraft-repressurized:6.0.9+mc1.20.1"))
runtimeOnly(fg.deobf("me.desht.pneumaticcraft:pneumaticcraft-repressurized:6.0.9+mc1.20.1"))


// Jetbrains annotations
compileOnly 'org.jetbrains:annotations:23.0.0'
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@
import com.enderio.conduits.common.integrations.ae2.AE2Integration;
import com.enderio.conduits.common.integrations.cctweaked.CCIntegration;
import com.enderio.conduits.common.integrations.mekanism.MekanismIntegration;
import com.enderio.conduits.common.integrations.pneumaticcraft.PneumaticIntegration;

public class Integrations {

public static final IntegrationWrapper<AE2Integration> AE2_INTEGRATION = IntegrationManager.wrapper("ae2", () -> AE2Integration::new);
public static final IntegrationWrapper<MekanismIntegration> MEKANISM_INTEGRATION = IntegrationManager.wrapper("mekanism", () -> MekanismIntegration::new);
public static final IntegrationWrapper<CCIntegration> CC_INTEGRATION = IntegrationManager.wrapper("computercraft", () -> CCIntegration::new);
public static final IntegrationWrapper<PneumaticIntegration> PNEUMATIC_INTEGRATION = IntegrationManager.wrapper("pneumaticcraft", () -> PneumaticIntegration::new);

public static final IntegrationWrapper<ConduitSelfIntegration> SELF_INTEGRATION = IntegrationManager.wrapper("enderio", () -> ConduitSelfIntegration::new);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.enderio.conduits.common.integrations.pneumaticcraft;

import com.enderio.EnderIO;
import com.enderio.api.conduit.ConduitItemFactory;
import com.enderio.api.conduit.ConduitType;
import com.enderio.api.integration.Integration;
import com.enderio.api.registry.EnderIORegistries;
import com.enderio.base.common.init.EIOCreativeTabs;
import com.tterrag.registrate.util.entry.ItemEntry;
import net.minecraft.world.item.Item;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.RegistryObject;

import java.util.function.Supplier;

public class PneumaticIntegration implements Integration {

public static final DeferredRegister<ConduitType<?>> CONDUIT_TYPES = DeferredRegister.create(EnderIORegistries.Keys.CONDUIT_TYPES, EnderIO.MODID);

private static final RegistryObject<PressureConduitType> PRESSURE = CONDUIT_TYPES.register("pressure", PressureConduitType::new);

public static final ItemEntry<Item> PRESSURE_ITEM = createConduitItem(PRESSURE, "pressure", "Pressurised Conduit");

@Override
public void addEventListener(IEventBus modEventBus, IEventBus forgeEventBus) {
CONDUIT_TYPES.register(modEventBus);
}

private static ItemEntry<Item> createConduitItem(Supplier<? extends ConduitType<?>> type, String itemName, String english) {
return EnderIO.registrate().item(itemName + "_conduit",
properties -> ConduitItemFactory.build(type, properties))
.tab(EIOCreativeTabs.CONDUITS)
.lang(english)
.model((ctx, prov) -> {
var conduitTypeKey = ConduitType.getKey(type.get());
prov
.withExistingParent(ctx.getName(), EnderIO.loc("item/conduit"))
.texture("0", EnderIO.loc("block/conduit/" + conduitTypeKey.getPath()));
})
.register();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.enderio.conduits.common.integrations.pneumaticcraft;

import com.enderio.api.conduit.ConduitData;
import com.enderio.api.conduit.ConduitMenuData;
import com.enderio.api.conduit.ConduitNode;
import com.enderio.conduits.common.conduit.type.SimpleConduitType;
import me.desht.pneumaticcraft.api.PNCCapabilities;
import me.desht.pneumaticcraft.api.pressure.PressureTier;
import me.desht.pneumaticcraft.common.capabilities.MachineAirHandler;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.level.Level;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.LazyOptional;
import org.jetbrains.annotations.Nullable;

import java.util.Optional;

public class PressureConduitType extends SimpleConduitType<ConduitData.EmptyConduitData> {

public static final ConduitMenuData MENUDATA = new ConduitMenuData.Simple(false, false, false, false, false, false);
public static final MachineAirHandler MACHINE_AIR_HANDLER = new MachineAirHandler(PressureTier.TIER_TWO, 0);
public static final LazyOptional<MachineAirHandler> LAZY = LazyOptional.of(() -> MACHINE_AIR_HANDLER);

public PressureConduitType() {
super(PressureTicker.INSTANCE, () -> ConduitData.EMPTY, MENUDATA);
}

@Override
public <K> Optional<LazyOptional<K>> proxyCapability(Capability<K> cap, ConduitData.EmptyConduitData extendedConduitData, Level level, BlockPos pos,
@Nullable Direction direction, ConduitNode.@Nullable IOState state) {
if (cap == PNCCapabilities.AIR_HANDLER_MACHINE_CAPABILITY) {
return Optional.of(LAZY.cast()); //One shared cap should:tm: be fine
}
return super.proxyCapability(cap, extendedConduitData, level, pos, direction, state);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.enderio.conduits.common.integrations.pneumaticcraft;

import com.enderio.api.conduit.ColoredRedstoneProvider;
import com.enderio.api.conduit.ConduitData;
import com.enderio.api.conduit.ConduitGraph;
import com.enderio.api.conduit.ConduitType;
import com.enderio.api.conduit.ticker.CapabilityAwareConduitTicker;
import com.enderio.api.conduit.ticker.ConduitTicker;
import me.desht.pneumaticcraft.api.PNCCapabilities;
import me.desht.pneumaticcraft.api.tileentity.IAirHandlerMachine;
import net.minecraft.server.level.ServerLevel;
import net.minecraftforge.common.capabilities.Capability;

import java.util.List;

public class PressureTicker extends CapabilityAwareConduitTicker<ConduitData.EmptyConduitData, IAirHandlerMachine> {

public static final ConduitTicker<ConduitData.EmptyConduitData> INSTANCE = new PressureTicker();

@Override
protected void tickCapabilityGraph(ServerLevel level, ConduitType<ConduitData.EmptyConduitData> type,
List<CapabilityAwareConduitTicker<ConduitData.EmptyConduitData, IAirHandlerMachine>.CapabilityConnection> inserts,
List<CapabilityAwareConduitTicker<ConduitData.EmptyConduitData, IAirHandlerMachine>.CapabilityConnection> extracts, ConduitGraph<ConduitData.EmptyConduitData> graph,
ColoredRedstoneProvider coloredRedstoneProvider) {

for (var extract: extracts) {
for (var insert: inserts) {
IAirHandlerMachine exCap = extract.capability;
IAirHandlerMachine inCap = insert.capability;

if (exCap.getPressure() < inCap.getPressure()) {
continue;
}

float newPressure = (inCap.getAir() + exCap.getAir()) /((float)(inCap.getVolume() + exCap.getVolume()));
if (newPressure > inCap.getCriticalPressure()) {
float maxAir = inCap.getCriticalPressure() * inCap.getVolume();
int movedAir = (int) (maxAir - inCap.getAir());
inCap.addAir(movedAir);
exCap.addAir(movedAir);
} else {
inCap.setPressure(newPressure);
exCap.setPressure(newPressure);
}
}
}
}

@Override
protected Capability<IAirHandlerMachine> getCapability() {
return PNCCapabilities.AIR_HANDLER_MACHINE_CAPABILITY;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
@javax.annotation.ParametersAreNonnullByDefault
@net.minecraft.MethodsReturnNonnullByDefault

package com.enderio.conduits.common.integrations.pneumaticcraft;
1 change: 1 addition & 0 deletions src/generated/resources/assets/enderio/lang/en_ud.json
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,7 @@
"item.enderio.powdered_tin": "uı⟘ pǝɹǝpʍoԀ",
"item.enderio.prescient_crystal": "ןɐʇsʎɹƆ ʇuǝıɔsǝɹԀ",
"item.enderio.prescient_powder": "ǝɔuǝıɔsǝɹԀ ɟo suıɐɹ⅁",
"item.enderio.pressure_conduit": "ʇınpuoƆ pǝsıɹnssǝɹԀ",
"item.enderio.pressurized_chemical_conduit": "ʇınpuoƆ ןɐɔıɯǝɥƆ pǝzıɹnssǝɹԀ",
"item.enderio.pressurized_fluid_conduit": "ʇınpuoƆ pınןℲ pǝzıɹnssǝɹԀ",
"item.enderio.pulsating_alloy_grinding_ball": "ןןɐᗺ buıpuıɹ⅁ ʎoןןⱯ buıʇɐsןnԀ",
Expand Down
1 change: 1 addition & 0 deletions src/generated/resources/assets/enderio/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,7 @@
"item.enderio.powdered_tin": "Powdered Tin",
"item.enderio.prescient_crystal": "Prescient Crystal",
"item.enderio.prescient_powder": "Grains of Prescience",
"item.enderio.pressure_conduit": "Pressurised Conduit",
"item.enderio.pressurized_chemical_conduit": "Pressurized Chemical Conduit",
"item.enderio.pressurized_fluid_conduit": "Pressurized Fluid Conduit",
"item.enderio.pulsating_alloy_grinding_ball": "Pulsating Alloy Grinding Ball",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"parent": "enderio:item/conduit",
"textures": {
"0": "enderio:block/conduit/pressure"
}
}

0 comments on commit f5ec4ca

Please sign in to comment.