diff --git a/build.gradle.kts b/build.gradle.kts index 1dbcda4..4aaa4a2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,10 +1,12 @@ +import java.net.URI + plugins { `java-library` eclipse idea `maven-publish` id("io.freefair.lombok") version "8.6" - id ("net.neoforged.gradle.userdev") version ("7.0.139") + id ("net.neoforged.gradle.userdev") version ("7.0.142") } val minecraftVersion: String by project @@ -21,11 +23,25 @@ val modGroupId: String by project val modAuthors: String by project val modDescription: String by project +val junitVersion: String by project +val assertjVersion: String by project +val topVersion: String by project +val reiVersion: String by project + version = modVersion group = modGroupId repositories { mavenLocal() + maven { + url = URI.create("https://maven.k-4u.nl") + } + maven { + url = URI.create("https://maven.blamejared.com") + } + + maven { url = URI.create("https://maven.shedaniel.me/") } + maven { url = URI.create("https://maven.architectury.dev/") } } base { @@ -35,6 +51,7 @@ base { java.toolchain.languageVersion = JavaLanguageVersion.of(21) + sourceSets { // Include resources generated by data generators. main.configure { @@ -129,12 +146,6 @@ runs { } - -afterEvaluate { - runs["junit"].modSources = runs["junit"].modSources.get().stream().filter { it != sourceSets.main.get() }.toList() -} - - dependencies { // Specify the version of Minecraft to use. // Depending on the plugin applied there are several options. We will assume you applied the userdev plugin as shown above. @@ -144,26 +155,26 @@ dependencies { // For all intends and purposes: You can treat this dependency as if it is a normal library you would use. implementation ("net.neoforged:neoforge:${neoVersion}") + // Wait until 1.20.6 has a stable neoforge version, so that all mods should work when updated +// implementation("mcjty.theoneprobe:theoneprobe:${topVersion}") +// +// runtimeOnly("me.shedaniel:RoughlyEnoughItems-neoforge:${reiVersion}") +// compileOnly("me.shedaniel:RoughlyEnoughItems-api-neoforge:${reiVersion}") +// compileOnly("me.shedaniel:RoughlyEnoughItems-default-plugin-neoforge:${reiVersion}") // Testing - junitImplementation(platform("org.junit:junit-bom:5.10.2")) + junitImplementation(platform("org.junit:junit-bom:${junitVersion}")) junitImplementation("org.junit.jupiter:junit-jupiter-params") junitRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") - junitImplementation("org.assertj:assertj-core:3.25.1") - -// "junitImplementation"(platform("org.junit:junit-bom:5.10.2")) -// "junitImplementation"("org.junit.jupiter:junit-jupiter-params") -// "junitRuntimeOnly"("org.junit.jupiter:junit-jupiter-engine") - - + junitImplementation("org.assertj:assertj-core:${assertjVersion}") // Example mod dependency with JEI // The JEI API is declared for compile time use, while the full JEI artifact is used at runtime - // compileOnly "mezz.jei:jei-${mc_version}-common-api:${jei_version}" - // compileOnly "mezz.jei:jei-${mc_version}-forge-api:${jei_version}" - // runtimeOnly "mezz.jei:jei-${mc_version}-forge:${jei_version}" +// compileOnly("mezz.jei:jei-${minecraftVersion}-common-api:${jei_version}") +// compileOnly("mezz.jei:jei-${minecraftVersion}-forge-api:${jei_version}") +// runtimeOnly("mezz.jei:jei-${minecraftVersion}-forge:${jei_version}") // Example mod dependency using a mod jar from ./libs with a flat dir repository // This maps to ./libs/coolmod-${mc_version}-${coolmod_version}.jar @@ -181,6 +192,15 @@ dependencies { // http://www.gradle.org/docs/current/userguide/dependency_management.html } + +afterEvaluate { +// runs["junit"].modSources(runs["junit"].modSources) +// runs["junit"].modSources = runs["junit"].modSources.get().stream().filter { it != sourceSets.main.get() }.toList() + runs["junit"].modSources.all().get().values().remove(sourceSets.main.get()) +} + + + // This block of code expands all declared replace properties in the specified resource targets. // A missing property will result in an error. Properties are expanded using ${} Groovy notation. // When "copyIdeResources" is enabled, this will also run before the game launches in IDE environments. diff --git a/gradle.properties b/gradle.properties index 562643f..d2b9f4d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,7 +12,7 @@ minecraftVersion=1.20.6 # as they do not follow standard versioning conventions. minecraftVersionRange=[1.20.6,1.21) # The Neo version must agree with the Minecraft version to get a valid artifact -neoVersion=20.6.110-beta +neoVersion=20.6.113-beta # The Neo version range can use any version of Neo as bounds neoVersionRange=[20,) # The loader version range can only use the major version of FML as bounds @@ -40,3 +40,9 @@ modGroupId=robaertschi modAuthors=RoBaertschi # The description of the mod. This is a simple multiline text string that is used for display purposes in the mod list. modDescription= + +# Dependencies +junitVersion=5.10.2 +assertjVersion=3.25.1 +topVersion=1.20.5_neo-11.1.1-2 +reiVersion=15.0.728 \ No newline at end of file diff --git a/src/generated/resources/.cache/0634480364d8061ae303195c707eb408c0d40406 b/src/generated/resources/.cache/0634480364d8061ae303195c707eb408c0d40406 index 462fb82..5bd7140 100644 --- a/src/generated/resources/.cache/0634480364d8061ae303195c707eb408c0d40406 +++ b/src/generated/resources/.cache/0634480364d8061ae303195c707eb408c0d40406 @@ -1,2 +1,13 @@ -// 1.20.6 2024-06-08T10:31:27.329252554 Item Models: environmenttech +// 1.20.6 2024-06-09T12:43:39.789774136 Item Models: environmenttech ee3837b261f3dbe2001ba1192716f0fdf144b663 assets/environmenttech/models/item/env_collector.json +aa962e881326461668467281df08b7b82fcc3fd6 assets/environmenttech/models/item/env_detector.json +e6d7f80a803863d6196f53d67487af2b3644323b assets/environmenttech/models/item/env_detector_0.json +8f94bb9cdf778fafd04225c255a740669597a4f3 assets/environmenttech/models/item/env_detector_1.json +e0d2aa063a62122c33bdf28bd675d8cd0823465c assets/environmenttech/models/item/env_detector_2.json +36616927bea7fe0da6c461eb47c20e50acd33831 assets/environmenttech/models/item/env_detector_3.json +d40d8bb7ca16312405190e89b662624fb8062bb3 assets/environmenttech/models/item/env_detector_4.json +b7bfd8c3f18761814a2c3562bba8aa5da4d6e553 assets/environmenttech/models/item/env_detector_5.json +013a0e9cb6db2d7336647b0ab363d258e80c15cd assets/environmenttech/models/item/env_detector_6.json +5acb213593a6932b20ac83a20cc30803631d519d assets/environmenttech/models/item/env_detector_7.json +ba599a8c31f0b4f9c41d5a5f79a83db41c29cb49 assets/environmenttech/models/item/env_detector_8.json +f3f1594483691b7873d0679104a892bae138e925 assets/environmenttech/models/item/environmental_essence.json diff --git a/src/generated/resources/assets/environmenttech/models/item/env_detector.json b/src/generated/resources/assets/environmenttech/models/item/env_detector.json new file mode 100644 index 0000000..10c951f --- /dev/null +++ b/src/generated/resources/assets/environmenttech/models/item/env_detector.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "environmenttech:item/env_detector_0", + "predicate": { + "minecraft:custom_model_data": 0.0 + } + }, + { + "model": "environmenttech:item/env_detector_1", + "predicate": { + "minecraft:custom_model_data": 1.0 + } + }, + { + "model": "environmenttech:item/env_detector_2", + "predicate": { + "minecraft:custom_model_data": 2.0 + } + }, + { + "model": "environmenttech:item/env_detector_3", + "predicate": { + "minecraft:custom_model_data": 3.0 + } + }, + { + "model": "environmenttech:item/env_detector_4", + "predicate": { + "minecraft:custom_model_data": 4.0 + } + }, + { + "model": "environmenttech:item/env_detector_5", + "predicate": { + "minecraft:custom_model_data": 5.0 + } + }, + { + "model": "environmenttech:item/env_detector_6", + "predicate": { + "minecraft:custom_model_data": 6.0 + } + }, + { + "model": "environmenttech:item/env_detector_7", + "predicate": { + "minecraft:custom_model_data": 7.0 + } + }, + { + "model": "environmenttech:item/env_detector_8", + "predicate": { + "minecraft:custom_model_data": 8.0 + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/environmenttech/models/item/env_detector_0.json b/src/generated/resources/assets/environmenttech/models/item/env_detector_0.json new file mode 100644 index 0000000..bd24480 --- /dev/null +++ b/src/generated/resources/assets/environmenttech/models/item/env_detector_0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "environmenttech:item/env_detector_0" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/environmenttech/models/item/env_detector_1.json b/src/generated/resources/assets/environmenttech/models/item/env_detector_1.json new file mode 100644 index 0000000..cc227e2 --- /dev/null +++ b/src/generated/resources/assets/environmenttech/models/item/env_detector_1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "environmenttech:item/env_detector_1" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/environmenttech/models/item/env_detector_2.json b/src/generated/resources/assets/environmenttech/models/item/env_detector_2.json new file mode 100644 index 0000000..efac5ba --- /dev/null +++ b/src/generated/resources/assets/environmenttech/models/item/env_detector_2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "environmenttech:item/env_detector_2" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/environmenttech/models/item/env_detector_3.json b/src/generated/resources/assets/environmenttech/models/item/env_detector_3.json new file mode 100644 index 0000000..3a9ee4d --- /dev/null +++ b/src/generated/resources/assets/environmenttech/models/item/env_detector_3.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "environmenttech:item/env_detector_3" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/environmenttech/models/item/env_detector_4.json b/src/generated/resources/assets/environmenttech/models/item/env_detector_4.json new file mode 100644 index 0000000..a9dde52 --- /dev/null +++ b/src/generated/resources/assets/environmenttech/models/item/env_detector_4.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "environmenttech:item/env_detector_4" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/environmenttech/models/item/env_detector_5.json b/src/generated/resources/assets/environmenttech/models/item/env_detector_5.json new file mode 100644 index 0000000..fb666bc --- /dev/null +++ b/src/generated/resources/assets/environmenttech/models/item/env_detector_5.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "environmenttech:item/env_detector_5" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/environmenttech/models/item/env_detector_6.json b/src/generated/resources/assets/environmenttech/models/item/env_detector_6.json new file mode 100644 index 0000000..acfba52 --- /dev/null +++ b/src/generated/resources/assets/environmenttech/models/item/env_detector_6.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "environmenttech:item/env_detector_6" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/environmenttech/models/item/env_detector_7.json b/src/generated/resources/assets/environmenttech/models/item/env_detector_7.json new file mode 100644 index 0000000..189b5a6 --- /dev/null +++ b/src/generated/resources/assets/environmenttech/models/item/env_detector_7.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "environmenttech:item/env_detector_7" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/environmenttech/models/item/env_detector_8.json b/src/generated/resources/assets/environmenttech/models/item/env_detector_8.json new file mode 100644 index 0000000..e0e8000 --- /dev/null +++ b/src/generated/resources/assets/environmenttech/models/item/env_detector_8.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "environmenttech:item/env_detector_8" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/environmenttech/models/item/environmental_essence.json b/src/generated/resources/assets/environmenttech/models/item/environmental_essence.json new file mode 100644 index 0000000..8b80f54 --- /dev/null +++ b/src/generated/resources/assets/environmenttech/models/item/environmental_essence.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "environmenttech:item/environmental_essence" + } +} \ No newline at end of file diff --git a/src/main/java/robaertschi/environmenttech/datagen/ETItemModelProvider.java b/src/main/java/robaertschi/environmenttech/datagen/ETItemModelProvider.java index cdda034..06372ab 100644 --- a/src/main/java/robaertschi/environmenttech/datagen/ETItemModelProvider.java +++ b/src/main/java/robaertschi/environmenttech/datagen/ETItemModelProvider.java @@ -1,9 +1,14 @@ package robaertschi.environmenttech.datagen; import net.minecraft.data.PackOutput; +import net.minecraft.resources.ResourceLocation; +import net.neoforged.neoforge.client.model.generators.ItemModelBuilder; import net.neoforged.neoforge.client.model.generators.ItemModelProvider; +import net.neoforged.neoforge.client.model.generators.ModelFile; import net.neoforged.neoforge.common.data.ExistingFileHelper; import robaertschi.environmenttech.level.block.ETBlocks; +import robaertschi.environmenttech.level.item.ETItems; +import robaertschi.environmenttech.level.item.EnvDetectorItem; import static robaertschi.environmenttech.EnvironmentTech.MODID; @@ -15,6 +20,21 @@ public class ETItemModelProvider extends ItemModelProvider { @Override protected void registerModels() { withExistingParent(ETBlocks.ENV_COLLECTOR_BLOCK.getId().getPath(), modLoc("block/" + "env_collector")); + basicItem(ETItems.ENVIRONMENTAL_ESSENCE_ITEM.get()); + registerEnvDetector(); + } + + private void registerEnvDetector() { + + ItemModelBuilder builder = getBuilder("env_detector"); + builder.parent(new ModelFile.ExistingModelFile(new ResourceLocation("minecraft", "item/generated"), existingFileHelper)); + + for (int i = 0; i < EnvDetectorItem.STEPS; i++) { + ItemModelBuilder sub_item_builder = getBuilder("env_detector_" + i); + sub_item_builder.parent(new ModelFile.ExistingModelFile(new ResourceLocation("minecraft", "item/generated"), existingFileHelper)); + sub_item_builder.texture("layer0", modLoc("item/env_detector_" + i)); + builder.override().predicate(new ResourceLocation("custom_model_data"), i).model(sub_item_builder); + } } } diff --git a/src/main/java/robaertschi/environmenttech/level/block/entity/EnvCollectorBlockEntity.java b/src/main/java/robaertschi/environmenttech/level/block/entity/EnvCollectorBlockEntity.java index f490b50..2cfebfc 100644 --- a/src/main/java/robaertschi/environmenttech/level/block/entity/EnvCollectorBlockEntity.java +++ b/src/main/java/robaertschi/environmenttech/level/block/entity/EnvCollectorBlockEntity.java @@ -3,6 +3,9 @@ package robaertschi.environmenttech.level.block.entity; import lombok.Getter; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; +import net.minecraft.core.component.DataComponentPatch; +import net.minecraft.core.component.DataComponentType; +import net.minecraft.core.component.DataComponents; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.Connection; import net.minecraft.network.chat.Component; diff --git a/src/main/java/robaertschi/environmenttech/level/block/entity/renderer/EnvCollectorRenderer.java b/src/main/java/robaertschi/environmenttech/level/block/entity/renderer/EnvCollectorRenderer.java index bbdfb64..a99ab6c 100644 --- a/src/main/java/robaertschi/environmenttech/level/block/entity/renderer/EnvCollectorRenderer.java +++ b/src/main/java/robaertschi/environmenttech/level/block/entity/renderer/EnvCollectorRenderer.java @@ -11,11 +11,13 @@ import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.core.BlockPos; +import net.minecraft.core.Vec3i; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.LightLayer; +import net.minecraft.world.phys.Vec3; import robaertschi.environmenttech.level.block.EnvCollectorBlock; import robaertschi.environmenttech.level.block.entity.EnvCollectorBlockEntity; import robaertschi.environmenttech.level.particle.ETParticles; @@ -40,7 +42,11 @@ public class EnvCollectorRenderer implements BlockEntityRenderer ENV_DETECTOR_ITEM = ITEMS.registerItem("env_detector", EnvDetectorItem::new, new Item.Properties() + .component(DataComponents.CUSTOM_MODEL_DATA, new CustomModelData(0)) .stacksTo(1) .durability(10) ); diff --git a/src/main/java/robaertschi/environmenttech/level/item/EnvDetectorItem.java b/src/main/java/robaertschi/environmenttech/level/item/EnvDetectorItem.java index 5c6a565..3ab8b85 100644 --- a/src/main/java/robaertschi/environmenttech/level/item/EnvDetectorItem.java +++ b/src/main/java/robaertschi/environmenttech/level/item/EnvDetectorItem.java @@ -1,25 +1,38 @@ package robaertschi.environmenttech.level.item; import net.minecraft.ChatFormatting; +import net.minecraft.core.component.DataComponents; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.tooltip.TooltipComponent; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.CustomModelData; import net.minecraft.world.level.Level; import org.jetbrains.annotations.NotNull; import robaertschi.environmenttech.data.attachments.ETAttachments; import javax.annotation.ParametersAreNonnullByDefault; +import java.util.List; +import java.util.Optional; @ParametersAreNonnullByDefault public class EnvDetectorItem extends Item { + public static final int STEPS = 9; + public EnvDetectorItem(Properties properties) { super(properties); } + @Override + public void appendHoverText(ItemStack pStack, TooltipContext pContext, List pTooltipComponents, TooltipFlag pTooltipFlag) { + pTooltipComponents.add(Component.translatable("item.environmenttech.env_detector.tooltip").withStyle(ChatFormatting.GREEN)); + } + @Override public @NotNull InteractionResultHolder use(Level pLevel, Player pPlayer, InteractionHand pUsedHand) { if (pLevel.isClientSide()) return InteractionResultHolder.pass(pPlayer.getItemInHand(pUsedHand)); @@ -27,7 +40,15 @@ public class EnvDetectorItem extends Item { var chunk = pLevel.getChunk(pPlayer.blockPosition()); if (chunk.hasData(ETAttachments.ENV)) { - pPlayer.displayClientMessage(Component.literal("Chunk has " + chunk.getData(ETAttachments.ENV) + " ENV").withStyle(ChatFormatting.GREEN), true); + var env = chunk.getData(ETAttachments.ENV); + long steps = env / 2; + if (steps > STEPS) { + steps = STEPS; + } + + pPlayer.getItemInHand(pUsedHand).set(DataComponents.CUSTOM_MODEL_DATA, new CustomModelData((int)steps)); + +// pPlayer.displayClientMessage(Component.literal("Chunk has " + chunk.getData(ETAttachments.ENV) + " ENV").withStyle(ChatFormatting.GREEN), true); } else { pPlayer.displayClientMessage(Component.literal("Warning: This chunk does not have the ENV attachment, please report this to the Author of the Mod.").withStyle(ChatFormatting.YELLOW), true); } diff --git a/src/main/resources/assets/environmenttech/lang/en_us.json b/src/main/resources/assets/environmenttech/lang/en_us.json index 3ac982a..b69497d 100644 --- a/src/main/resources/assets/environmenttech/lang/en_us.json +++ b/src/main/resources/assets/environmenttech/lang/en_us.json @@ -6,5 +6,6 @@ "screen.environmenttech.env_collector": "ENV Collector", "screen.environmenttech.debug": "Debug Menu", "key.environmenttech.open_debug_menu": "Open Debug Menu", - "key.categories.environmenttech": "Environment Tech" + "key.categories.environmenttech": "Environment Tech", + "item.environmenttech.env_detector.tooltip": "The ENV Detector is a handy device that shows you how much ENV is avilable in the current chunk. It can display from 0 to 16 ENV." } \ No newline at end of file diff --git a/src/main/resources/assets/environmenttech/textures/item/env_detector_0.png b/src/main/resources/assets/environmenttech/textures/item/env_detector_0.png new file mode 100644 index 0000000..a5bd40c Binary files /dev/null and b/src/main/resources/assets/environmenttech/textures/item/env_detector_0.png differ diff --git a/src/main/resources/assets/environmenttech/textures/item/env_detector_1.png b/src/main/resources/assets/environmenttech/textures/item/env_detector_1.png new file mode 100644 index 0000000..087b812 Binary files /dev/null and b/src/main/resources/assets/environmenttech/textures/item/env_detector_1.png differ diff --git a/src/main/resources/assets/environmenttech/textures/item/env_detector_2.png b/src/main/resources/assets/environmenttech/textures/item/env_detector_2.png new file mode 100644 index 0000000..982c44a Binary files /dev/null and b/src/main/resources/assets/environmenttech/textures/item/env_detector_2.png differ diff --git a/src/main/resources/assets/environmenttech/textures/item/env_detector_3.png b/src/main/resources/assets/environmenttech/textures/item/env_detector_3.png new file mode 100644 index 0000000..a4fca47 Binary files /dev/null and b/src/main/resources/assets/environmenttech/textures/item/env_detector_3.png differ diff --git a/src/main/resources/assets/environmenttech/textures/item/env_detector_4.png b/src/main/resources/assets/environmenttech/textures/item/env_detector_4.png new file mode 100644 index 0000000..6120f8d Binary files /dev/null and b/src/main/resources/assets/environmenttech/textures/item/env_detector_4.png differ diff --git a/src/main/resources/assets/environmenttech/textures/item/env_detector_5.png b/src/main/resources/assets/environmenttech/textures/item/env_detector_5.png new file mode 100644 index 0000000..f3509b0 Binary files /dev/null and b/src/main/resources/assets/environmenttech/textures/item/env_detector_5.png differ diff --git a/src/main/resources/assets/environmenttech/textures/item/env_detector_6.png b/src/main/resources/assets/environmenttech/textures/item/env_detector_6.png new file mode 100644 index 0000000..9921a27 Binary files /dev/null and b/src/main/resources/assets/environmenttech/textures/item/env_detector_6.png differ diff --git a/src/main/resources/assets/environmenttech/textures/item/env_detector_7.png b/src/main/resources/assets/environmenttech/textures/item/env_detector_7.png new file mode 100644 index 0000000..0d21806 Binary files /dev/null and b/src/main/resources/assets/environmenttech/textures/item/env_detector_7.png differ diff --git a/src/main/resources/assets/environmenttech/textures/item/env_detector_8.png b/src/main/resources/assets/environmenttech/textures/item/env_detector_8.png new file mode 100644 index 0000000..993a893 Binary files /dev/null and b/src/main/resources/assets/environmenttech/textures/item/env_detector_8.png differ diff --git a/src/main/resources/assets/environmenttech/textures/item/environmental_essence.png b/src/main/resources/assets/environmenttech/textures/item/environmental_essence.png new file mode 100644 index 0000000..f9825b5 Binary files /dev/null and b/src/main/resources/assets/environmenttech/textures/item/environmental_essence.png differ