18 Commits

Author SHA1 Message Date
956d2e6b53 Again update workflow
Some checks failed
build / build (push) Failing after 10s
2025-01-21 02:45:47 +05:00
ed146f441d Test 2025-01-21 02:45:24 +05:00
be9a4bdd59 Change workflow file
Some checks failed
build / build (17) (push) Failing after 2m44s
2025-01-21 02:39:28 +05:00
2c386caace Add dependency
Some checks failed
build / build (17) (push) Has been cancelled
2025-01-20 22:16:53 +05:00
b749efbbac Create get from simibubi 2024-03-12 12:08:13 +05:00
8f01df0971 More fixxxes 2024-03-12 12:04:28 +05:00
3683405780 Change create build 2024-03-12 11:37:18 +05:00
f4625f84b3 Fix? again 2024-03-12 11:37:03 +05:00
3a3b3b11fa Fix? oxygen Ad Astra 2024-03-12 10:58:41 +05:00
23667171ae Remove unusual? method 2024-03-12 10:58:27 +05:00
9d811a82af Fix? temperature for Ad Astra 2024-03-12 10:43:02 +05:00
fb97097b67 Update Gradle to 8.3 2024-03-12 09:54:58 +05:00
328ca781ff Update loom 2024-03-12 09:50:09 +05:00
429b444058 Get Create Fabric from Modrinth 2024-03-12 09:47:54 +05:00
be08c76edf Get Ad Astra from Modrinth 2024-03-12 09:34:48 +05:00
7e65f5d748 Set variable version ThinAir 2024-03-12 09:32:40 +05:00
1079b588e5 Add version for ThinAir 2024-03-12 09:30:56 +05:00
301bcad666 Update version of Create 2024-03-12 09:29:48 +05:00
8 changed files with 70 additions and 46 deletions

View File

@ -8,25 +8,25 @@ jobs:
build:
strategy:
matrix:
java: [ 17 ]
java: '17'
runs-on: ubuntu-latest
steps:
- name: checkout repository
uses: https://git.bitheaven.ru/actions/checkout@v2
uses: actions/checkout@v4
- name: setup jdk ${{ matrix.java }}
uses: https://git.bitheaven.ru/actions/setup-java@v1
uses: actions/setup-java@v4
with:
distribution: 'liberica'
java-version: ${{ matrix.java }}
- uses: https://git.bitheaven.ru/actions/cache@v2
- uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/loom-cache
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/gradle-wrapper.properties') }}
restore-keys: ${{ runner.os }}-gradle
- name: make gradle wrapper executable
run: chmod +x ./gradlew
@ -34,8 +34,11 @@ jobs:
- name: build
run: ./gradlew build
- name: capture build artifacts
uses: https://git.bitheaven.ru/actions/upload-artifact@v2
- name: Make release
uses: actions/gitea-release-action@v1
with:
name: Artifacts
path: build/libs/
name: Create Air Fabric 1.0-${{ gitea.run_id }} for 1.20.1
md5sum: true
sha256sum: true
files: |-
build/libs/**

View File

@ -1,5 +1,5 @@
plugins {
id 'fabric-loom' version '1.2-SNAPSHOT'
id 'fabric-loom' version '1.5-SNAPSHOT'
id "io.github.p03w.machete" version "1.+" // automatic jar compressing on build
id 'maven-publish'
}
@ -61,16 +61,19 @@ dependencies {
modImplementation("com.simibubi.create:create-fabric-${minecraft_version}:${create_version}")
// Thin Air
modImplementation("maven.modrinth:thin-air:v8.1.3-1.20.1-Fabric")
modImplementation("maven.modrinth:thin-air:${thinair_version}")
// Ad Astra
modImplementation("curse.maven:ad-astra-635042:4774341")
modImplementation("maven.modrinth:ad-astra:${adastra_version}")
modImplementation("maven.modrinth:botarium:${botarium_version}")
// Development QOL
modLocalRuntime("maven.modrinth:lazydfu:${lazydfu_version}")
modLocalRuntime("com.terraformersmc:modmenu:${modmenu_version}")
// Recipe Viewers - Create Fabric supports JEI, REI, and EMI.
include(implementation(annotationProcessor("io.github.llamalad7:mixinextras-fabric:0.4.1")))
// Recipe Viewers - Create Fabric supports JEI, REI, and EMI.
// See root gradle.properties to choose which to use at runtime.
switch (recipe_viewer.toLowerCase(Locale.ROOT)) {
case "jei": modLocalRuntime("mezz.jei:jei-${minecraft_version}-fabric:${jei_version}"); break
@ -87,7 +90,7 @@ processResources {
properties.put("version", version)
properties.put("fabric_loader_version", fabric_loader_version)
properties.put("fabric_api_version", fabric_api_version)
properties.put("create_version", create_version)
properties.put("create_version", "~" + create_version.split("-")[0] + "-" + create_version.split("-")[1])
properties.put("minecraft_version", minecraft_version)
properties.forEach((k, v) -> inputs.property(k, v))

View File

@ -22,7 +22,12 @@ org.gradle.jvmargs=-Xmx1G
# Dependencies
# https://modrinth.com/mod/create-fabric/versions
create_version = 0.5.1-d-build.1161+mc1.20.1
create_version = 0.5.1-f-build.1329+mc1.20.1
# https://modrinth.com/mod/thin-air/versions
thinair_version = v8.1.5-1.20.1-Fabric
# https://modrinth.com/mod/ad-astra/versions
adastra_version = MxqFxL9C
botarium_version = 5a8eybLl
# set to disabled to have none of them.
recipe_viewer = disabled
# Mod Menu - https://modrinth.com/mod/modmenu/versions

View File

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

View File

@ -1,9 +1,8 @@
package ru.bitheaven.createairfabric;
import com.simibubi.create.Create;
import earth.terrarium.ad_astra.common.util.OxygenUtils;
import earth.terrarium.adastra.api.systems.OxygenApi;
import fuzs.thinair.helper.AirQualityHelperImpl;
import io.github.fabricators_of_create.porting_lib.util.EnvExecutor;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.world.entity.Entity;
@ -18,10 +17,6 @@ public class CreateAirFabric implements ModInitializer {
@Override
public void onInitialize() {
LOGGER.info("Create addon mod [{}] is loading alongside Create [{}]!", NAME, Create.VERSION);
LOGGER.info(EnvExecutor.unsafeRunForDist(
() -> () -> "{} is accessing Porting Lib from the client!",
() -> () -> "{} is accessing Porting Lib from the server!"
), NAME);
}
public static boolean isOxygen(Entity entity) {
@ -31,7 +26,7 @@ public class CreateAirFabric implements ModInitializer {
.getAirQualityAtLocation(entity.level(), entity.getEyePosition()).canBreathe;
}
if (FabricLoader.getInstance().isModLoaded("ad_astra")) {
oxygen &= OxygenUtils.levelHasOxygen(entity.level());
oxygen &= OxygenApi.API.hasOxygen(entity.level());
}
return oxygen;
}

View File

@ -6,6 +6,7 @@ import net.minecraft.world.level.material.Fluid;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import com.simibubi.create.content.equipment.armor.DivingHelmetItem;
import ru.bitheaven.createairfabric.CreateAirFabric;
@ -14,7 +15,7 @@ public abstract class DivingHelmetItemMixin {
/**
* Activate helmet "if in water or lava" -> "if in water or bad air or lava"
*/
@Redirect(at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;isEyeInFluid(Lnet/minecraft/tags/TagKey;)Z"),
@ModifyExpressionValue(at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;isEyeInFluid(Lnet/minecraft/tags/TagKey;)Z"),
method = "breatheUnderwater(Lnet/minecraft/world/entity/LivingEntity;)V")
private static boolean redirectBreatheUnderwater(LivingEntity entity, TagKey<Fluid> fluidTagKey) {
boolean oxygen = true;

View File

@ -1,25 +1,43 @@
package ru.bitheaven.createairfabric.mixin;
import com.simibubi.create.content.equipment.armor.BacktankItem;
import com.simibubi.create.content.equipment.armor.BacktankUtil;
import com.simibubi.create.content.equipment.armor.DivingHelmetItem;
import earth.terrarium.ad_astra.common.entity.system.EntityOxygenSystem;
import earth.terrarium.ad_astra.common.util.ModUtils;
import earth.terrarium.adastra.common.items.armor.SpaceSuitItem;
import earth.terrarium.adastra.common.systems.OxygenApiImpl;
import earth.terrarium.adastra.common.tags.ModItemTags;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.LivingEntity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
@Mixin(EntityOxygenSystem.class)
@Mixin(OxygenApiImpl.class)
public abstract class EntityOxygenSystemMixin {
/**
* Make air exists if Create Air
*/
@Redirect(at = @At(value = "INVOKE", target = "Learth/terrarium/ad_astra/common/util/ModUtils;armourIsOxygenated(Lnet/minecraft/world/entity/LivingEntity;)Z"),
method = "oxygenTick(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/server/level/ServerLevel;)V")
private static boolean redirectOxygenTick(LivingEntity entity) {
@Redirect(at = @At(value = "INVOKE", target = "Learth/terrarium/adastra/common/items/armor/SpaceSuitItem;hasOxygen(Lnet/minecraft/world/entity/Entity;)Z"),
method = "entityTick(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;)V")
private boolean redirectHasOxygen(Entity entity) {
if (!(entity instanceof LivingEntity livingEntity)) return SpaceSuitItem.hasOxygen(entity);
boolean createOxygen = true;
createOxygen &= !DivingHelmetItem.getWornItem(entity).isEmpty();
createOxygen &= !BacktankUtil.getAllWithAir(entity).isEmpty();
return ModUtils.armourIsOxygenated(entity) || createOxygen;
createOxygen &= !DivingHelmetItem.getWornItem(livingEntity).isEmpty();
createOxygen &= !BacktankUtil.getAllWithAir(livingEntity).isEmpty();
return SpaceSuitItem.hasOxygen(livingEntity) || createOxygen;
}
@Redirect(at = @At(value = "INVOKE", target = "Learth/terrarium/adastra/common/items/armor/SpaceSuitItem;hasFullSet(Lnet/minecraft/world/entity/LivingEntity;)Z"),
method = "entityTick(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;)V")
private boolean redirectHasFullSet(LivingEntity entity) {
boolean createArmor = true;
createArmor &= entity.getItemBySlot(EquipmentSlot.HEAD).getItem() instanceof DivingHelmetItem;
createArmor &= entity.getItemBySlot(EquipmentSlot.CHEST).getItem() instanceof BacktankItem;
createArmor &= entity.getItemBySlot(EquipmentSlot.LEGS).is(ModItemTags.SPACE_SUITS);
createArmor &= entity.getItemBySlot(EquipmentSlot.FEET).is(ModItemTags.SPACE_SUITS);
return SpaceSuitItem.hasFullSet(entity) || createArmor;
}
}

View File

@ -1,32 +1,31 @@
package ru.bitheaven.createairfabric.mixin;
import earth.terrarium.ad_astra.common.config.AdAstraConfig;
import earth.terrarium.ad_astra.common.entity.system.EntityTemperatureSystem;
import earth.terrarium.ad_astra.common.item.armor.NetheriteSpaceSuit;
import earth.terrarium.ad_astra.common.registry.ModTags;
import earth.terrarium.adastra.common.items.armor.NetheriteSpaceSuitItem;
import earth.terrarium.adastra.common.tags.ModItemTags;
import earth.terrarium.adastra.common.systems.TemperatureApiImpl;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.LivingEntity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
@Mixin(EntityTemperatureSystem.class)
@Mixin(TemperatureApiImpl.class)
public abstract class EntityTemperatureSystemMixin {
@Redirect(at = @At(value = "INVOKE", target = "Learth/terrarium/ad_astra/common/entity/system/EntityTemperatureSystem;burnEntity(Lnet/minecraft/world/entity/LivingEntity;)V"),
method = "temperatureTick(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/server/level/ServerLevel;)V")
private static void redirectTemperatureTick(LivingEntity entity) {
@Redirect(at = @At(value = "INVOKE", target = "Learth/terrarium/adastra/common/systems/TemperatureApiImpl;burnEntity(Lnet/minecraft/world/entity/LivingEntity;)V"),
method = "entityTick(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;)V")
private void redirectTemperatureTick(TemperatureApiImpl instance, LivingEntity entity) {
boolean createNetherite = true;
createNetherite &= entity.getItemBySlot(EquipmentSlot.HEAD).getItem().isFireResistant();
createNetherite &= entity.getItemBySlot(EquipmentSlot.CHEST).getItem().isFireResistant();
createNetherite &= entity.getItemBySlot(EquipmentSlot.LEGS).is(ModTags.HEAT_RESISTANT)
|| entity.getItemBySlot(EquipmentSlot.LEGS).getItem() instanceof NetheriteSpaceSuit
createNetherite &= entity.getItemBySlot(EquipmentSlot.LEGS).is(ModItemTags.HEAT_RESISTANT_ARMOR)
|| entity.getItemBySlot(EquipmentSlot.LEGS).getItem() instanceof NetheriteSpaceSuitItem
|| entity.getItemBySlot(EquipmentSlot.LEGS).getItem().isFireResistant();
createNetherite &= entity.getItemBySlot(EquipmentSlot.FEET).is(ModTags.HEAT_RESISTANT)
|| entity.getItemBySlot(EquipmentSlot.FEET).getItem() instanceof NetheriteSpaceSuit
createNetherite &= entity.getItemBySlot(EquipmentSlot.FEET).is(ModItemTags.HEAT_RESISTANT_ARMOR)
|| entity.getItemBySlot(EquipmentSlot.FEET).getItem() instanceof NetheriteSpaceSuitItem
|| entity.getItemBySlot(EquipmentSlot.FEET).getItem().isFireResistant();
if(!createNetherite) {
entity.hurt(entity.damageSources().onFire(), (float) AdAstraConfig.heatDamage);
entity.hurt(entity.damageSources().onFire(), 6);
entity.setSecondsOnFire(10);
}
}