diff --git a/build.gradle.kts b/build.gradle.kts index 30e7230..b5cd7fb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,6 +3,7 @@ plugins { eclipse idea `maven-publish` + id("io.freefair.lombok") version "8.6" id ("net.neoforged.gradle.userdev") version ("7.0.138") } diff --git a/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e new file mode 100644 index 0000000..5c21165 --- /dev/null +++ b/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -0,0 +1,3 @@ +// 1.20.6 2024-06-04T08:11:35.3127563 Recipes +a8f75064cc52045c05943428b359d7c7ef8967dc data/environmenttech/advancements/recipes/environmental_essence.json +d462a41d1b0fda35660ed3e4c807f83f6dc0e0cd data/environmenttech/recipes/environmental_essence.json diff --git a/src/generated/resources/data/environmenttech/advancements/recipes/environmental_essence.json b/src/generated/resources/data/environmenttech/advancements/recipes/environmental_essence.json new file mode 100644 index 0000000..4d263e1 --- /dev/null +++ b/src/generated/resources/data/environmenttech/advancements/recipes/environmental_essence.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_the_recipe": { + "conditions": { + "recipe": "environmenttech:environmental_essence" + }, + "trigger": "minecraft:recipe_unlocked" + }, + "iron_ingot": { + "conditions": { + "items": [ + { + "items": "minecraft:iron_ingot" + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "requirements": [ + [ + "has_the_recipe", + "iron_ingot" + ] + ], + "rewards": { + "recipes": [ + "environmenttech:environmental_essence" + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/environmenttech/recipes/environmental_essence.json b/src/generated/resources/data/environmenttech/recipes/environmental_essence.json new file mode 100644 index 0000000..4f78b62 --- /dev/null +++ b/src/generated/resources/data/environmenttech/recipes/environmental_essence.json @@ -0,0 +1,11 @@ +{ + "type": "environmenttech:env_collector", + "envUsed": 10, + "ingredient": { + "item": "minecraft:iron_ingot" + }, + "output": { + "count": 1, + "id": "environmenttech:environmental_essence" + } +} \ No newline at end of file diff --git a/src/main/java/robaertschi/environmenttech/Config.java b/src/main/java/robaertschi/environmenttech/Config.java index 2f1a11f..41c3d6a 100644 --- a/src/main/java/robaertschi/environmenttech/Config.java +++ b/src/main/java/robaertschi/environmenttech/Config.java @@ -2,16 +2,11 @@ package robaertschi.environmenttech; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Item; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.fml.event.config.ModConfigEvent; import net.neoforged.neoforge.common.ModConfigSpec; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - // An example config class. This is not required, but it's a good idea to have one to keep your config organized. // Demonstrates how to use Neo's config APIs @EventBusSubscriber(modid = EnvironmentTech.MODID, bus = EventBusSubscriber.Bus.MOD) @@ -27,30 +22,9 @@ public class Config .comment("How much is the minimum of allowed ENV in a chunk.") .defineInRange("minEnvForNewChunk", 0, 0, 1024); - private static final ModConfigSpec.BooleanValue LOG_DIRT_BLOCK = BUILDER - .comment("Whether to log the dirt block on common setup") - .define("logDirtBlock", true); - - private static final ModConfigSpec.IntValue MAGIC_NUMBER = BUILDER - .comment("A magic number") - .defineInRange("magicNumber", 42, 0, Integer.MAX_VALUE); - - public static final ModConfigSpec.ConfigValue MAGIC_NUMBER_INTRODUCTION = BUILDER - .comment("What you want the introduction message to be for the magic number") - .define("magicNumberIntroduction", "The magic number is... "); - - // a list of strings that are treated as resource locations for items - private static final ModConfigSpec.ConfigValue> ITEM_STRINGS = BUILDER - .comment("A list of items to log on common setup.") - .defineListAllowEmpty("items", List.of("minecraft:iron_ingot"), Config::validateItemName); static final ModConfigSpec SPEC = BUILDER.build(); - public static boolean logDirtBlock; - public static int magicNumber; - public static String magicNumberIntroduction; - public static Set items; - public static int maxEnvForNewChunk; public static int minEnvForNewChunk; @@ -62,17 +36,8 @@ public class Config @SubscribeEvent static void onLoad(final ModConfigEvent event) { - logDirtBlock = LOG_DIRT_BLOCK.get(); - magicNumber = MAGIC_NUMBER.get(); - magicNumberIntroduction = MAGIC_NUMBER_INTRODUCTION.get(); maxEnvForNewChunk = MAX_ENV_FOR_NEW_CHUNK.get(); minEnvForNewChunk = MIN_ENV_FOR_NEW_CHUNK.get(); - - - // convert the list of strings into a set of items - items = ITEM_STRINGS.get().stream() - .map(itemName -> BuiltInRegistries.ITEM.get(new ResourceLocation(itemName))) - .collect(Collectors.toSet()); } } diff --git a/src/main/java/robaertschi/environmenttech/EnvironmentTech.java b/src/main/java/robaertschi/environmenttech/EnvironmentTech.java index d4d9f6c..433452f 100644 --- a/src/main/java/robaertschi/environmenttech/EnvironmentTech.java +++ b/src/main/java/robaertschi/environmenttech/EnvironmentTech.java @@ -1,20 +1,7 @@ package robaertschi.environmenttech; import com.mojang.logging.LogUtils; -import net.minecraft.client.Minecraft; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.core.registries.Registries; -import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.food.FoodProperties; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.CreativeModeTabs; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraft.world.level.material.MapColor; import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.IEventBus; import net.neoforged.bus.api.SubscribeEvent; @@ -25,21 +12,15 @@ import net.neoforged.fml.config.ModConfig; import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; import net.neoforged.neoforge.common.NeoForge; -import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent; import net.neoforged.neoforge.event.server.ServerStartingEvent; import net.neoforged.neoforge.event.tick.PlayerTickEvent; -import net.neoforged.neoforge.registries.DeferredBlock; -import net.neoforged.neoforge.registries.DeferredHolder; -import net.neoforged.neoforge.registries.DeferredItem; -import net.neoforged.neoforge.registries.DeferredRegister; import org.slf4j.Logger; import robaertschi.environmenttech.data.attachments.ETAttachments; import robaertschi.environmenttech.data.capabilities.ETCapabilities; +import robaertschi.environmenttech.data.recipes.ETRecipes; import robaertschi.environmenttech.level.block.ETBlocks; import robaertschi.environmenttech.level.item.ETItems; -import java.io.IOException; - @Mod(EnvironmentTech.MODID) public class EnvironmentTech { @@ -62,6 +43,7 @@ public class EnvironmentTech ETCapabilities.init(modEventBus); ETBlocks.init(modEventBus); ETItems.init(modEventBus); + ETRecipes.init(modEventBus); NeoForge.EVENT_BUS.register(this); @@ -69,15 +51,6 @@ public class EnvironmentTech private void commonSetup(final FMLCommonSetupEvent event) { - // Some common setup code - LOGGER.info("HELLO FROM COMMON SETUP"); - - if (Config.logDirtBlock) - LOGGER.info("DIRT BLOCK >> {}", BuiltInRegistries.BLOCK.getKey(Blocks.DIRT)); - - LOGGER.info("{}{}", Config.magicNumberIntroduction, Config.magicNumber); - - Config.items.forEach((item) -> LOGGER.info("ITEM >> {}", item.toString())); } @@ -87,7 +60,7 @@ public class EnvironmentTech } @SubscribeEvent() - public void onPlayerTick(PlayerTickEvent.Post event) throws IOException { + public void onPlayerTick(PlayerTickEvent.Post event) { var level = event.getEntity().level(); if (level.isClientSide()) { return; diff --git a/src/main/java/robaertschi/environmenttech/data/capabilities/EnvStorage.java b/src/main/java/robaertschi/environmenttech/data/capabilities/EnvStorage.java index f00487d..89c68b6 100644 --- a/src/main/java/robaertschi/environmenttech/data/capabilities/EnvStorage.java +++ b/src/main/java/robaertschi/environmenttech/data/capabilities/EnvStorage.java @@ -2,36 +2,38 @@ package robaertschi.environmenttech.data.capabilities; import net.minecraft.util.Mth; -// TODO: Add max receive or something public class EnvStorage implements IEnvStorage { private final EnvType[] acceptedEnvTypes; private final long maxEnv; private long env; + private long maxTransfer; - public EnvStorage(EnvType acceptedEnvType, long maxEnv, long env) { + public EnvStorage(EnvType acceptedEnvType, long maxEnv, long env, long maxTransfer) { this.acceptedEnvTypes = new EnvType[1]; this.acceptedEnvTypes[0] = acceptedEnvType; this.maxEnv = maxEnv; this.env = env; + this.maxTransfer = maxTransfer; } public EnvStorage(EnvType acceptedEnvType, long maxEnv) { - this(acceptedEnvType, maxEnv, 0); + this(acceptedEnvType, maxEnv, 0, maxEnv); } - public EnvStorage(EnvType[] acceptedEnvTypes, long maxEnv, long env) { + public EnvStorage(EnvType[] acceptedEnvTypes, long maxEnv, long env, long maxTransfer) { this.acceptedEnvTypes = acceptedEnvTypes; this.maxEnv = maxEnv; this.env = env; + this.maxTransfer = maxTransfer; } public EnvStorage(EnvType[] acceptedEnvTypes, long maxEnv) { - this(acceptedEnvTypes, maxEnv, 0); + this(acceptedEnvTypes, maxEnv, 0, maxEnv); } @Override public long receiveEnv(long amount, boolean simulate) { - long received = Mth.clamp(this.maxEnv - this.env, 0, amount); + long received = Mth.clamp(this.maxEnv - this.env, 0, Math.min(amount, maxTransfer)); if (!simulate) env += received; diff --git a/src/main/java/robaertschi/environmenttech/data/recipes/ETRecipes.java b/src/main/java/robaertschi/environmenttech/data/recipes/ETRecipes.java new file mode 100644 index 0000000..1779f03 --- /dev/null +++ b/src/main/java/robaertschi/environmenttech/data/recipes/ETRecipes.java @@ -0,0 +1,23 @@ +package robaertschi.environmenttech.data.recipes; + +import net.minecraft.core.registries.Registries; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.RecipeType; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; + +import static robaertschi.environmenttech.EnvironmentTech.MODID; + +public class ETRecipes { + public static final DeferredRegister> RECIPE_TYPES = DeferredRegister.create(Registries.RECIPE_TYPE, MODID); + public static final DeferredRegister> RECIPE_SERIALIZERS = DeferredRegister.create(Registries.RECIPE_SERIALIZER, MODID); + + public static final DeferredHolder, RecipeType> ENV_COLLECTOR_RECIPE_TYPE = RECIPE_TYPES.register("env_collector", RecipeType::simple); + public static final DeferredHolder, RecipeSerializer> ENV_COLLECTOR_RECIPE_SERIALIZER = RECIPE_SERIALIZERS.register("env_collector", EnvCollectorRecipeSerializer::new); + + public static void init(IEventBus modEventBus) { + RECIPE_TYPES.register(modEventBus); + RECIPE_SERIALIZERS.register(modEventBus); + } +} diff --git a/src/main/java/robaertschi/environmenttech/data/recipes/EnvCollectorRecipe.java b/src/main/java/robaertschi/environmenttech/data/recipes/EnvCollectorRecipe.java new file mode 100644 index 0000000..6bd5b42 --- /dev/null +++ b/src/main/java/robaertschi/environmenttech/data/recipes/EnvCollectorRecipe.java @@ -0,0 +1,109 @@ +package robaertschi.environmenttech.data.recipes; + +import lombok.RequiredArgsConstructor; +import net.minecraft.advancements.Advancement; +import net.minecraft.advancements.AdvancementRequirements; +import net.minecraft.advancements.AdvancementRewards; +import net.minecraft.advancements.Criterion; +import net.minecraft.advancements.critereon.RecipeUnlockedTrigger; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.recipes.RecipeBuilder; +import net.minecraft.data.recipes.RecipeOutput; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.Container; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.LinkedHashMap; +import java.util.Map; + +public record EnvCollectorRecipe(Ingredient input, ItemStack output, int envUsed) implements Recipe { + @Override + public boolean matches(@NotNull Container pContainer, @NotNull Level pLevel) { + return this.input.test(pContainer.getItem(0)); + } + + @Override + public @NotNull ItemStack assemble(@NotNull Container pCraftingContainer, HolderLookup.@NotNull Provider pRegistries) { + return this.output.copy(); + } + + @Override + public boolean canCraftInDimensions(int pWidth, int pHeight) { + return true; + } + + @Override + public @NotNull ItemStack getResultItem(@NotNull HolderLookup.Provider pRegistries) { + return this.output; + } + + @Override + public @NotNull RecipeSerializer getSerializer() { + return ETRecipes.ENV_COLLECTOR_RECIPE_SERIALIZER.get(); + } + + @Override + public @NotNull RecipeType getType() { + return ETRecipes.ENV_COLLECTOR_RECIPE_TYPE.get(); + } + + @RequiredArgsConstructor + public static class Builder implements RecipeBuilder { + private final Ingredient ingredient; + private final ItemStack output; + private final int envUsed; + + private final Map> criteria = new LinkedHashMap<>(); + // Currently we just ignore the warning, maybe we will use it later, maybe never. + @SuppressWarnings("FieldCanBeLocal") + @Nullable + private String group; + + + @Override + public @NotNull RecipeBuilder group(@Nullable String pGroupName) { + this.group = pGroupName; + return this; + } + + @Override + public @NotNull Item getResult() { + return this.output.getItem(); + } + + public @NotNull Builder unlockedBy(@NotNull String name, @NotNull Criterion criterion) { + this.criteria.put(name, criterion); + return this; + } + + @Override + public void save(RecipeOutput pRecipeOutput, @NotNull ResourceLocation pId) { + this.ensureValid(pId); + + Advancement.Builder advancementBuilder = pRecipeOutput.advancement() + .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(pId)) + .rewards(AdvancementRewards.Builder.recipe(pId)) + .requirements(AdvancementRequirements.Strategy.OR); + + this.criteria.forEach(advancementBuilder::addCriterion); + + EnvCollectorRecipe envCollectorRecipe = new EnvCollectorRecipe(this.ingredient, this.output, this.envUsed); + + pRecipeOutput.accept(pId, envCollectorRecipe, advancementBuilder.build(pId.withPrefix("recipes/"))); + } + + private void ensureValid(ResourceLocation pId) { + if (this.criteria.isEmpty()) { + throw new IllegalStateException("No way of obtaining recipe " + pId); + } + } + } +} diff --git a/src/main/java/robaertschi/environmenttech/data/recipes/EnvCollectorRecipeSerializer.java b/src/main/java/robaertschi/environmenttech/data/recipes/EnvCollectorRecipeSerializer.java new file mode 100644 index 0000000..3a77c5d --- /dev/null +++ b/src/main/java/robaertschi/environmenttech/data/recipes/EnvCollectorRecipeSerializer.java @@ -0,0 +1,45 @@ +package robaertschi.environmenttech.data.recipes; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import org.jetbrains.annotations.NotNull; + +public class EnvCollectorRecipeSerializer implements RecipeSerializer { + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec( + envCollectorRecipeInstance -> envCollectorRecipeInstance.group( + Ingredient.CODEC_NONEMPTY.fieldOf("ingredient").forGetter(EnvCollectorRecipe::input), + ItemStack.CODEC.fieldOf("output").forGetter(EnvCollectorRecipe::output), + Codec.INT.fieldOf("envUsed").forGetter(EnvCollectorRecipe::envUsed) + ).apply(envCollectorRecipeInstance, EnvCollectorRecipe::new) + ); + public final StreamCodec streamCodec = StreamCodec.of(this::toNetwork, this::fromNetwork); + + @Override + public @NotNull MapCodec codec() { + return CODEC; + } + + @Override + public @NotNull StreamCodec streamCodec() { + return streamCodec; + } + + private EnvCollectorRecipe fromNetwork(RegistryFriendlyByteBuf byteBuf) { + Ingredient ingredient = Ingredient.CONTENTS_STREAM_CODEC.decode(byteBuf); + ItemStack itemStack = ItemStack.STREAM_CODEC.decode(byteBuf); + int envUsed = byteBuf.readInt(); + return new EnvCollectorRecipe(ingredient, itemStack, envUsed); + } + + private void toNetwork(RegistryFriendlyByteBuf byteBuf, EnvCollectorRecipe recipe) { + Ingredient.CONTENTS_STREAM_CODEC.encode(byteBuf, recipe.input()); + ItemStack.STREAM_CODEC.encode(byteBuf, recipe.output()); + byteBuf.writeInt(recipe.envUsed()); + } +} diff --git a/src/main/java/robaertschi/environmenttech/datagen/ETDatagen.java b/src/main/java/robaertschi/environmenttech/datagen/ETDatagen.java new file mode 100644 index 0000000..85ae1f9 --- /dev/null +++ b/src/main/java/robaertschi/environmenttech/datagen/ETDatagen.java @@ -0,0 +1,29 @@ +package robaertschi.environmenttech.datagen; + +import net.minecraft.core.HolderLookup; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.common.data.ExistingFileHelper; +import net.neoforged.neoforge.data.event.GatherDataEvent; + +import java.util.concurrent.CompletableFuture; + +import static robaertschi.environmenttech.EnvironmentTech.MODID; + +@EventBusSubscriber(bus = EventBusSubscriber.Bus.MOD, modid = MODID) +public class ETDatagen { + @SubscribeEvent() + public static void gatherData(GatherDataEvent event) { + DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); + ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); + CompletableFuture lookupProvider = event.getLookupProvider(); + + generator.addProvider( + event.includeServer(), + new ETRecipeProvider(output, lookupProvider) + ); + } +} diff --git a/src/main/java/robaertschi/environmenttech/datagen/ETRecipeProvider.java b/src/main/java/robaertschi/environmenttech/datagen/ETRecipeProvider.java new file mode 100644 index 0000000..af5e2b8 --- /dev/null +++ b/src/main/java/robaertschi/environmenttech/datagen/ETRecipeProvider.java @@ -0,0 +1,33 @@ +package robaertschi.environmenttech.datagen; + +import net.minecraft.advancements.critereon.InventoryChangeTrigger; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; +import net.minecraft.data.recipes.RecipeOutput; +import net.minecraft.data.recipes.RecipeProvider; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Ingredient; +import org.jetbrains.annotations.NotNull; +import robaertschi.environmenttech.data.recipes.EnvCollectorRecipe; +import robaertschi.environmenttech.level.item.ETItems; + +import java.util.concurrent.CompletableFuture; + +public class ETRecipeProvider extends RecipeProvider { + public ETRecipeProvider(PackOutput pOutput, CompletableFuture pRegistries) { + super(pOutput, pRegistries); + } + + @Override + protected void buildRecipes(@NotNull RecipeOutput recipeOutput) { + new EnvCollectorRecipe.Builder( + Ingredient.of(Items.IRON_INGOT), + new ItemStack(ETItems.ENVIRONMENTAL_ESSENCE_ITEM.get()), + 10 + ).unlockedBy( + "iron_ingot", + InventoryChangeTrigger.TriggerInstance.hasItems(Items.IRON_INGOT) + ).save(recipeOutput); + } +} diff --git a/src/main/java/robaertschi/environmenttech/level/block/EnvCollectorBlock.java b/src/main/java/robaertschi/environmenttech/level/block/EnvCollectorBlock.java index 33e3256..caabb5e 100644 --- a/src/main/java/robaertschi/environmenttech/level/block/EnvCollectorBlock.java +++ b/src/main/java/robaertschi/environmenttech/level/block/EnvCollectorBlock.java @@ -2,15 +2,16 @@ package robaertschi.environmenttech.level.block; import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; -import net.minecraft.util.ExtraCodecs; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.BaseEntityBlock; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import robaertschi.environmenttech.level.block.entity.ETBlockEntities; import robaertschi.environmenttech.level.block.entity.EnvCollectorBlockEntity; import javax.annotation.ParametersAreNonnullByDefault; @@ -39,4 +40,10 @@ public class EnvCollectorBlock extends BaseEntityBlock { public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { return new EnvCollectorBlockEntity(pPos, pState); } + + @Nullable + @Override + public BlockEntityTicker getTicker(Level pLevel, BlockState pState, BlockEntityType pBlockEntityType) { + return createTickerHelper(pBlockEntityType, ETBlockEntities.ENV_COLLECTOR_BLOCK_ENTITY.get(), EnvCollectorBlockEntity::tick); + } } 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 9355363..e1c4e4d 100644 --- a/src/main/java/robaertschi/environmenttech/level/block/entity/EnvCollectorBlockEntity.java +++ b/src/main/java/robaertschi/environmenttech/level/block/entity/EnvCollectorBlockEntity.java @@ -1,17 +1,19 @@ package robaertschi.environmenttech.level.block.entity; import net.minecraft.core.BlockPos; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.registries.DeferredHolder; public class EnvCollectorBlockEntity extends BlockEntity { - public EnvCollectorBlockEntity(BlockEntityType pType, BlockPos pPos, BlockState pBlockState) { - super(pType, pPos, pBlockState); - } + private int progress = 0; + public EnvCollectorBlockEntity(BlockPos pos, BlockState state) { - this(ETBlockEntities.ENV_COLLECTOR_BLOCK_ENTITY.get(), pos, state); + super(ETBlockEntities.ENV_COLLECTOR_BLOCK_ENTITY.get(), pos, state); + } + + public static void tick(Level level, BlockPos blockPos, BlockState blockState, EnvCollectorBlockEntity envCollectorBlockEntity) { + } } diff --git a/src/main/java/robaertschi/environmenttech/level/item/ETItems.java b/src/main/java/robaertschi/environmenttech/level/item/ETItems.java index 1d62cdf..e595b6d 100644 --- a/src/main/java/robaertschi/environmenttech/level/item/ETItems.java +++ b/src/main/java/robaertschi/environmenttech/level/item/ETItems.java @@ -34,7 +34,7 @@ public class ETItems { .durability(10) ); - public static final DeferredItem ENVIRONMENTAL_ESSENCE = ITEMS.registerSimpleItem("environmental_essence"); + public static final DeferredItem ENVIRONMENTAL_ESSENCE_ITEM = ITEMS.registerSimpleItem("environmental_essence"); @SuppressWarnings("unused") @@ -45,7 +45,7 @@ public class ETItems { .displayItems((parameters, output) -> { output.accept(ENV_DETECTOR_ITEM.get()); output.accept(EXAMPLE_BLOCK_ITEM.get()); - output.accept(ENVIRONMENTAL_ESSENCE.get()); + output.accept(ENVIRONMENTAL_ESSENCE_ITEM.get()); }).build()); diff --git a/src/main/java/robaertschi/environmenttech/level/item/EnvDetectorItem.java b/src/main/java/robaertschi/environmenttech/level/item/EnvDetectorItem.java index e5b4a6d..5c6a565 100644 --- a/src/main/java/robaertschi/environmenttech/level/item/EnvDetectorItem.java +++ b/src/main/java/robaertschi/environmenttech/level/item/EnvDetectorItem.java @@ -4,11 +4,11 @@ import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; -import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; +import org.jetbrains.annotations.NotNull; import robaertschi.environmenttech.data.attachments.ETAttachments; import javax.annotation.ParametersAreNonnullByDefault; @@ -21,7 +21,7 @@ public class EnvDetectorItem extends Item { @Override - public InteractionResultHolder use(Level pLevel, Player pPlayer, InteractionHand pUsedHand) { + public @NotNull InteractionResultHolder use(Level pLevel, Player pPlayer, InteractionHand pUsedHand) { if (pLevel.isClientSide()) return InteractionResultHolder.pass(pPlayer.getItemInHand(pUsedHand)); var chunk = pLevel.getChunk(pPlayer.blockPosition()); @@ -33,9 +33,7 @@ public class EnvDetectorItem extends Item { } if (!pPlayer.isCreative()) { - pPlayer.getItemInHand(pUsedHand).hurtAndBreak(1, pLevel.getRandom(), pPlayer, () -> { - pPlayer.getItemInHand(pUsedHand).setCount(0); - }); + pPlayer.getItemInHand(pUsedHand).hurtAndBreak(1, pLevel.getRandom(), pPlayer, () -> pPlayer.getItemInHand(pUsedHand).setCount(0)); } return InteractionResultHolder.consume(pPlayer.getItemInHand(pUsedHand));