diff --git a/.gitignore b/.gitignore index 08207dc82..f08c371be 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,5 @@ docsOut # Files from Forge MDK forge*changelog.txt +/src/generated/resources/.cache/ +/src/generated/resources/.cache/ diff --git a/src/generated/resources/data/farmersdelight/tags/blocks/tray_heat_sources.json b/src/generated/resources/data/farmersdelight/tags/blocks/tray_heat_sources.json index 83ff51c6d..b8ebb6a4f 100644 --- a/src/generated/resources/data/farmersdelight/tags/blocks/tray_heat_sources.json +++ b/src/generated/resources/data/farmersdelight/tags/blocks/tray_heat_sources.json @@ -2,6 +2,7 @@ "values": [ "minecraft:lava", "#minecraft:campfires", - "#minecraft:fire" + "#minecraft:fire", + {"id":"decorative_blocks:braziers","required":false} ] } \ No newline at end of file diff --git a/src/main/java/vectorwing/farmersdelight/FarmersDelight.java b/src/main/java/vectorwing/farmersdelight/FarmersDelight.java index 663c8febd..6f6fef15f 100644 --- a/src/main/java/vectorwing/farmersdelight/FarmersDelight.java +++ b/src/main/java/vectorwing/farmersdelight/FarmersDelight.java @@ -15,6 +15,14 @@ import vectorwing.farmersdelight.client.ClientSetup; import vectorwing.farmersdelight.common.CommonSetup; import vectorwing.farmersdelight.common.Configuration; +import vectorwing.farmersdelight.common.block.entity.CookingPotBlockEntity; +import vectorwing.farmersdelight.common.block.entity.CuttingBoardBlockEntity; +import vectorwing.farmersdelight.common.event.CommonEvents; +import vectorwing.farmersdelight.common.event.VillagerEvents; +import vectorwing.farmersdelight.common.item.DogFoodItem; +import vectorwing.farmersdelight.common.item.HorseFeedItem; +import vectorwing.farmersdelight.common.item.KnifeItem; +import vectorwing.farmersdelight.common.networking.ModNetworking; import vectorwing.farmersdelight.common.registry.*; import vectorwing.farmersdelight.common.world.VillageStructures; import vectorwing.farmersdelight.common.world.WildCropGeneration; @@ -61,5 +69,6 @@ public FarmersDelight() { MinecraftForge.EVENT_BUS.addListener(VillageStructures::addNewVillageBuilding); MinecraftForge.EVENT_BUS.register(this); + ModNetworking.init(); } } diff --git a/src/main/java/vectorwing/farmersdelight/client/ClientSetup.java b/src/main/java/vectorwing/farmersdelight/client/ClientSetup.java index 43f4f5597..e97375fb4 100644 --- a/src/main/java/vectorwing/farmersdelight/client/ClientSetup.java +++ b/src/main/java/vectorwing/farmersdelight/client/ClientSetup.java @@ -1,10 +1,13 @@ package vectorwing.farmersdelight.client; import net.minecraft.client.gui.screens.MenuScreens; +import net.minecraft.client.renderer.item.ItemProperties; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import vectorwing.farmersdelight.client.gui.ComfortHealthOverlay; import vectorwing.farmersdelight.client.gui.CookingPotScreen; import vectorwing.farmersdelight.client.gui.NourishmentHungerOverlay; +import vectorwing.farmersdelight.common.registry.ModItems; import vectorwing.farmersdelight.common.registry.ModMenuTypes; public class ClientSetup @@ -14,5 +17,9 @@ public static void init(final FMLClientSetupEvent event) { NourishmentHungerOverlay.init(); ComfortHealthOverlay.init(); + + ItemProperties.register(ModItems.SKILLET.get(), new ResourceLocation("cooking"), + (stack, world, entity, s) -> stack.getTagElement("Cooking") != null ? 1 : 0); + } } diff --git a/src/main/java/vectorwing/farmersdelight/client/event/TooltipEvents.java b/src/main/java/vectorwing/farmersdelight/client/event/ClientEvents.java similarity index 67% rename from src/main/java/vectorwing/farmersdelight/client/event/TooltipEvents.java rename to src/main/java/vectorwing/farmersdelight/client/event/ClientEvents.java index 7b97e275e..514e282bf 100644 --- a/src/main/java/vectorwing/farmersdelight/client/event/TooltipEvents.java +++ b/src/main/java/vectorwing/farmersdelight/client/event/ClientEvents.java @@ -1,6 +1,8 @@ package vectorwing.farmersdelight.client.event; +import com.mojang.blaze3d.platform.InputConstants; import com.mojang.datafixers.util.Pair; +import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.effect.MobEffectInstance; @@ -8,17 +10,22 @@ import net.minecraft.world.food.FoodProperties; import net.minecraft.world.item.Item; import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.InputEvent; import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; +import org.lwjgl.glfw.GLFW; import vectorwing.farmersdelight.FarmersDelight; import vectorwing.farmersdelight.common.Configuration; import vectorwing.farmersdelight.common.FoodValues; +import vectorwing.farmersdelight.common.item.SkilletItem; +import vectorwing.farmersdelight.common.networking.ModNetworking; +import vectorwing.farmersdelight.common.registry.ModItems; import java.util.List; @Mod.EventBusSubscriber(modid = FarmersDelight.MODID, value = Dist.CLIENT) -public class TooltipEvents +public class ClientEvents { @SubscribeEvent public static void addTooltipToVanillaSoups(ItemTooltipEvent event) { @@ -42,4 +49,18 @@ public static void addTooltipToVanillaSoups(ItemTooltipEvent event) { } } } + + @SubscribeEvent + public static void onMouseClicked(InputEvent.MouseButton event){ + if (event.getButton() == GLFW.GLFW_MOUSE_BUTTON_1 && event.getAction() == InputConstants.PRESS) { + var player = Minecraft.getInstance().player; + if (player != null && player.isUsingItem()) { + if (player.getUseItem().getItem() instanceof SkilletItem) { + ModNetworking.CHANNEL.sendToServer(new ModNetworking.FlipSkilletMessage()); + } + } + } + } + + } diff --git a/src/main/java/vectorwing/farmersdelight/client/renderer/SkilletItemRenderer.java b/src/main/java/vectorwing/farmersdelight/client/renderer/SkilletItemRenderer.java new file mode 100644 index 000000000..40f82d09c --- /dev/null +++ b/src/main/java/vectorwing/farmersdelight/client/renderer/SkilletItemRenderer.java @@ -0,0 +1,62 @@ +package vectorwing.farmersdelight.client.renderer; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Vector3f; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.util.Mth; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.state.BlockState; +import vectorwing.farmersdelight.common.item.SkilletItem; + +public class SkilletItemRenderer extends BlockEntityWithoutLevelRenderer { + + public SkilletItemRenderer() { + super(Minecraft.getInstance().getBlockEntityRenderDispatcher(), Minecraft.getInstance().getEntityModels()); + } + + @Override + public void renderByItem(ItemStack stack, ItemTransforms.TransformType pTransformType, PoseStack poseStack, MultiBufferSource buffer, int packedLight, int packedOverlay) { + //render block + poseStack.pushPose(); + BlockItem item = ((BlockItem) stack.getItem()); + BlockState state = item.getBlock().defaultBlockState(); + Minecraft.getInstance().getBlockRenderer().renderSingleBlock(state, poseStack, buffer, packedLight, packedOverlay); + poseStack.popPose(); + + CompoundTag tag = stack.getTagElement("Cooking"); + ItemStack ingredientStack = ItemStack.of(tag); + + if (!ingredientStack.isEmpty()) { + poseStack.pushPose(); + poseStack.translate(0.5, 1 / 16f, 0.5); + + long gameTime = Minecraft.getInstance().level.getGameTime(); + long time = stack.getOrCreateTag().getLong("FlipTimeStamp"); + if (time != 0) { + float partialTicks = Minecraft.getInstance().getFrameTime(); + float animation = ((gameTime - time) + partialTicks) / SkilletItem.FLIP_TIME; + float maxH = 1; + poseStack.translate(0, maxH * Mth.sin(animation * Mth.PI), 0); + poseStack.mulPose(Vector3f.XP.rotationDegrees(360 * animation)); + } + + poseStack.mulPose(Vector3f.XP.rotationDegrees(90)); + poseStack.scale(0.5F, 0.5F, 0.5F); + + var itemRenderer = Minecraft.getInstance().getItemRenderer(); + itemRenderer.renderStatic(ingredientStack, ItemTransforms.TransformType.FIXED, packedLight, + packedOverlay, poseStack, buffer, 0); + + poseStack.popPose(); + } + + + } + + +} diff --git a/src/main/java/vectorwing/farmersdelight/client/renderer/SkilletRenderer.java b/src/main/java/vectorwing/farmersdelight/client/renderer/SkilletRenderer.java index f07cab819..e4fe0f8ba 100644 --- a/src/main/java/vectorwing/farmersdelight/client/renderer/SkilletRenderer.java +++ b/src/main/java/vectorwing/farmersdelight/client/renderer/SkilletRenderer.java @@ -8,69 +8,83 @@ import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; +import net.minecraft.util.Mth; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraftforge.items.IItemHandler; import vectorwing.farmersdelight.common.block.StoveBlock; import vectorwing.farmersdelight.common.block.entity.SkilletBlockEntity; +import vectorwing.farmersdelight.common.item.SkilletItem; import java.util.Random; -public class SkilletRenderer implements BlockEntityRenderer -{ - private final Random random = new Random(); +public class SkilletRenderer implements BlockEntityRenderer { + private final Random random = new Random(); - public SkilletRenderer(BlockEntityRendererProvider.Context context) { - } + public SkilletRenderer(BlockEntityRendererProvider.Context context) { + } - @Override - public void render(SkilletBlockEntity skilletEntity, float partialTicks, PoseStack poseStack, MultiBufferSource buffer, int combinedLight, int combinedOverlay) { - Direction direction = skilletEntity.getBlockState().getValue(StoveBlock.FACING); - IItemHandler inventory = skilletEntity.getInventory(); - int posLong = (int) skilletEntity.getBlockPos().asLong(); + @Override + public void render(SkilletBlockEntity skilletEntity, float partialTicks, PoseStack poseStack, MultiBufferSource buffer, int combinedLight, int combinedOverlay) { + Direction direction = skilletEntity.getBlockState().getValue(StoveBlock.FACING); + IItemHandler inventory = skilletEntity.getInventory(); + int posLong = (int) skilletEntity.getBlockPos().asLong(); - ItemStack stack = inventory.getStackInSlot(0); - int seed = stack.isEmpty() ? 187 : Item.getId(stack.getItem()) + stack.getDamageValue(); - this.random.setSeed(seed); + ItemStack stack = inventory.getStackInSlot(0); + int seed = stack.isEmpty() ? 187 : Item.getId(stack.getItem()) + stack.getDamageValue(); + this.random.setSeed(seed); - if (!stack.isEmpty()) { - int itemRenderCount = this.getModelCount(stack); - for (int i = 0; i < itemRenderCount; i++) { - poseStack.pushPose(); + if (!stack.isEmpty()) { + int itemRenderCount = this.getModelCount(stack); + for (int i = 0; i < itemRenderCount; i++) { + poseStack.pushPose(); - // Stack up items in the skillet, with a slight offset per item - float xOffset = (this.random.nextFloat() * 2.0F - 1.0F) * 0.15F * 0.5F; - float zOffset = (this.random.nextFloat() * 2.0F - 1.0F) * 0.15F * 0.5F; - poseStack.translate(0.5D + xOffset, 0.1D + 0.03 * (i + 1), 0.5D + zOffset); + // Stack up items in the skillet, with a slight offset per item + float xOffset = (this.random.nextFloat() * 2.0F - 1.0F) * 0.15F * 0.5F; + float zOffset = (this.random.nextFloat() * 2.0F - 1.0F) * 0.15F * 0.5F; + poseStack.translate(0.5D + xOffset, 0.1D + 0.03 * (i + 1), 0.5D + zOffset); - // Rotate item to face the skillet's front side - float degrees = -direction.toYRot(); - poseStack.mulPose(Axis.YP.rotationDegrees(degrees)); + // Rotate item to face the skillet's front side + float degrees = -direction.toYRot(); + poseStack.mulPose(Axis.YP.rotationDegrees(degrees)); - // Rotate item flat on the skillet. Use X and Y from now on - poseStack.mulPose(Axis.XP.rotationDegrees(90.0F)); + // epic flip last item + if(i == itemRenderCount - 1) { + long gameTime = Minecraft.getInstance().level.getGameTime(); + long time = skilletEntity.lastFlippedTime; + float animation = ((gameTime - time) + partialTicks) / SkilletItem.FLIP_TIME; + if (animation < 1) { + float maxH = 0.5f; + poseStack.translate(0, maxH * Mth.sin(animation * Mth.PI), 0); + poseStack.mulPose(Axis.XP.rotationDegrees(360 * animation)); + } + } - // Resize the items - poseStack.scale(0.5F, 0.5F, 0.5F); - if (skilletEntity.getLevel() != null) - Minecraft.getInstance().getItemRenderer().renderStatic(stack, ItemDisplayContext.FIXED, combinedLight, combinedOverlay, poseStack, buffer, skilletEntity.getLevel(), posLong); - poseStack.popPose(); - } - } - } + // Rotate item flat on the skillet. Use X and Y from now on + poseStack.mulPose(Axis.XP.rotationDegrees(90.0F)); - protected int getModelCount(ItemStack stack) { - if (stack.getCount() > 48) { - return 5; - } else if (stack.getCount() > 32) { - return 4; - } else if (stack.getCount() > 16) { - return 3; - } else if (stack.getCount() > 1) { - return 2; - } - return 1; - } + // Resize the items + poseStack.scale(0.5F, 0.5F, 0.5F); + + if (skilletEntity.getLevel() != null) + Minecraft.getInstance().getItemRenderer().renderStatic(stack, ItemDisplayContext.FIXED, combinedLight, combinedOverlay, poseStack, buffer, skilletEntity.getLevel(), posLong); + poseStack.popPose(); + } + } + } + + protected int getModelCount(ItemStack stack) { + if (stack.getCount() > 48) { + return 5; + } else if (stack.getCount() > 32) { + return 4; + } else if (stack.getCount() > 16) { + return 3; + } else if (stack.getCount() > 1) { + return 2; + } + return 1; + } } diff --git a/src/main/java/vectorwing/farmersdelight/common/Configuration.java b/src/main/java/vectorwing/farmersdelight/common/Configuration.java index 902a0a2e7..afe389239 100644 --- a/src/main/java/vectorwing/farmersdelight/common/Configuration.java +++ b/src/main/java/vectorwing/farmersdelight/common/Configuration.java @@ -5,6 +5,7 @@ import net.minecraftforge.fml.common.Mod; import java.util.List; +import java.util.function.Supplier; @Mod.EventBusSubscriber public class Configuration @@ -14,58 +15,58 @@ public class Configuration // COMMON public static final String CATEGORY_SETTINGS = "settings"; - public static ForgeConfigSpec.BooleanValue ENABLE_VANILLA_CROP_CRATES; - public static ForgeConfigSpec.BooleanValue FARMERS_BUY_FD_CROPS; - public static ForgeConfigSpec.BooleanValue WANDERING_TRADER_SELLS_FD_ITEMS; - public static ForgeConfigSpec.DoubleValue RICH_SOIL_BOOST_CHANCE; - public static ForgeConfigSpec.DoubleValue CUTTING_BOARD_FORTUNE_BONUS; - public static ForgeConfigSpec.BooleanValue ENABLE_ROPE_REELING; - public static ForgeConfigSpec.ConfigValue> CANVAS_SIGN_DARK_BACKGROUND_LIST; + public static Supplier ENABLE_VANILLA_CROP_CRATES; + public static Supplier FARMERS_BUY_FD_CROPS; + public static Supplier WANDERING_TRADER_SELLS_FD_ITEMS; + public static Supplier RICH_SOIL_BOOST_CHANCE; + public static Supplier CUTTING_BOARD_FORTUNE_BONUS; + public static Supplier ENABLE_ROPE_REELING; + public static Supplier> CANVAS_SIGN_DARK_BACKGROUND_LIST; public static final String CATEGORY_FARMING = "farming"; - public static ForgeConfigSpec.ConfigValue DEFAULT_TOMATO_VINE_ROPE; - public static ForgeConfigSpec.BooleanValue ENABLE_TOMATO_VINE_CLIMBING_TAGGED_ROPES; + public static Supplier DEFAULT_TOMATO_VINE_ROPE; + public static Supplier ENABLE_TOMATO_VINE_CLIMBING_TAGGED_ROPES; public static final String CATEGORY_RECIPE_BOOK = "recipe_book"; - public static ForgeConfigSpec.BooleanValue ENABLE_RECIPE_BOOK_COOKING_POT; + public static Supplier ENABLE_RECIPE_BOOK_COOKING_POT; public static final String CATEGORY_OVERRIDES = "overrides"; - public static ForgeConfigSpec.BooleanValue VANILLA_SOUP_EXTRA_EFFECTS; - public static ForgeConfigSpec.BooleanValue RABBIT_STEW_JUMP_BOOST; - public static ForgeConfigSpec.BooleanValue DISPENSER_TOOLS_CUTTING_BOARD; + public static Supplier VANILLA_SOUP_EXTRA_EFFECTS; + public static Supplier RABBIT_STEW_JUMP_BOOST; + public static Supplier DISPENSER_TOOLS_CUTTING_BOARD; public static final String CATEGORY_OVERRIDES_STACK_SIZE = "stack_size"; - public static ForgeConfigSpec.BooleanValue ENABLE_STACKABLE_SOUP_ITEMS; - public static ForgeConfigSpec.ConfigValue> SOUP_ITEM_LIST; + public static Supplier ENABLE_STACKABLE_SOUP_ITEMS; + public static Supplier> SOUP_ITEM_LIST; public static final String CATEGORY_WORLD = "world"; - public static ForgeConfigSpec.BooleanValue GENERATE_FD_CHEST_LOOT; - public static ForgeConfigSpec.BooleanValue GENERATE_VILLAGE_COMPOST_HEAPS; - public static ForgeConfigSpec.BooleanValue GENERATE_WILD_CABBAGES; - public static ForgeConfigSpec.IntValue CHANCE_WILD_CABBAGES; - public static ForgeConfigSpec.BooleanValue GENERATE_WILD_BEETROOTS; - public static ForgeConfigSpec.IntValue CHANCE_WILD_BEETROOTS; - public static ForgeConfigSpec.BooleanValue GENERATE_WILD_POTATOES; - public static ForgeConfigSpec.IntValue CHANCE_WILD_POTATOES; - public static ForgeConfigSpec.BooleanValue GENERATE_WILD_ONIONS; - public static ForgeConfigSpec.IntValue CHANCE_WILD_ONIONS; - public static ForgeConfigSpec.BooleanValue GENERATE_WILD_CARROTS; - public static ForgeConfigSpec.IntValue CHANCE_WILD_CARROTS; - public static ForgeConfigSpec.BooleanValue GENERATE_WILD_TOMATOES; - public static ForgeConfigSpec.IntValue CHANCE_WILD_TOMATOES; - public static ForgeConfigSpec.BooleanValue GENERATE_WILD_RICE; - public static ForgeConfigSpec.IntValue CHANCE_WILD_RICE; - public static ForgeConfigSpec.BooleanValue GENERATE_BROWN_MUSHROOM_COLONIES; - public static ForgeConfigSpec.IntValue CHANCE_BROWN_MUSHROOM_COLONIES; - public static ForgeConfigSpec.BooleanValue GENERATE_RED_MUSHROOM_COLONIES; - public static ForgeConfigSpec.IntValue CHANCE_RED_MUSHROOM_COLONIES; + public static Supplier GENERATE_FD_CHEST_LOOT; + public static Supplier GENERATE_VILLAGE_COMPOST_HEAPS; + public static Supplier GENERATE_WILD_CABBAGES; + public static Supplier CHANCE_WILD_CABBAGES; + public static Supplier GENERATE_WILD_BEETROOTS; + public static Supplier CHANCE_WILD_BEETROOTS; + public static Supplier GENERATE_WILD_POTATOES; + public static Supplier CHANCE_WILD_POTATOES; + public static Supplier GENERATE_WILD_ONIONS; + public static Supplier CHANCE_WILD_ONIONS; + public static Supplier GENERATE_WILD_CARROTS; + public static Supplier CHANCE_WILD_CARROTS; + public static Supplier GENERATE_WILD_TOMATOES; + public static Supplier CHANCE_WILD_TOMATOES; + public static Supplier GENERATE_WILD_RICE; + public static Supplier CHANCE_WILD_RICE; + public static Supplier GENERATE_BROWN_MUSHROOM_COLONIES; + public static Supplier CHANCE_BROWN_MUSHROOM_COLONIES; + public static Supplier GENERATE_RED_MUSHROOM_COLONIES; + public static Supplier CHANCE_RED_MUSHROOM_COLONIES; // CLIENT public static final String CATEGORY_CLIENT = "client"; - public static ForgeConfigSpec.BooleanValue NOURISHED_HUNGER_OVERLAY; - public static ForgeConfigSpec.BooleanValue COMFORT_HEALTH_OVERLAY; - public static ForgeConfigSpec.BooleanValue FOOD_EFFECT_TOOLTIP; + public static Supplier NOURISHED_HUNGER_OVERLAY; + public static Supplier COMFORT_HEALTH_OVERLAY; + public static Supplier FOOD_EFFECT_TOOLTIP; static { ForgeConfigSpec.Builder COMMON_BUILDER = new ForgeConfigSpec.Builder(); diff --git a/src/main/java/vectorwing/farmersdelight/common/block/BasketBlock.java b/src/main/java/vectorwing/farmersdelight/common/block/BasketBlock.java index dbb79c386..9e305aa25 100644 --- a/src/main/java/vectorwing/farmersdelight/common/block/BasketBlock.java +++ b/src/main/java/vectorwing/farmersdelight/common/block/BasketBlock.java @@ -98,7 +98,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player.openMenu((BasketBlockEntity) tileEntity); } } - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide); } @Override diff --git a/src/main/java/vectorwing/farmersdelight/common/block/CabinetBlock.java b/src/main/java/vectorwing/farmersdelight/common/block/CabinetBlock.java index 258b449bf..28ccb790e 100644 --- a/src/main/java/vectorwing/farmersdelight/common/block/CabinetBlock.java +++ b/src/main/java/vectorwing/farmersdelight/common/block/CabinetBlock.java @@ -46,7 +46,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player.openMenu((CabinetBlockEntity) tile); } } - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide); } @Override diff --git a/src/main/java/vectorwing/farmersdelight/common/block/CookingPotBlock.java b/src/main/java/vectorwing/farmersdelight/common/block/CookingPotBlock.java index 053d4d910..82ad735a6 100644 --- a/src/main/java/vectorwing/farmersdelight/common/block/CookingPotBlock.java +++ b/src/main/java/vectorwing/farmersdelight/common/block/CookingPotBlock.java @@ -86,9 +86,8 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player NetworkHooks.openScreen((ServerPlayer) player, cookingPotEntity, pos); } } - return InteractionResult.SUCCESS; } - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide); } @Override diff --git a/src/main/java/vectorwing/farmersdelight/common/block/CuttingBoardBlock.java b/src/main/java/vectorwing/farmersdelight/common/block/CuttingBoardBlock.java index 7b43c83b4..fbac98785 100644 --- a/src/main/java/vectorwing/farmersdelight/common/block/CuttingBoardBlock.java +++ b/src/main/java/vectorwing/farmersdelight/common/block/CuttingBoardBlock.java @@ -66,46 +66,37 @@ public VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, Co @Override public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - BlockEntity tileEntity = level.getBlockEntity(pos); - if (tileEntity instanceof CuttingBoardBlockEntity cuttingBoardEntity) { - ItemStack heldStack = player.getItemInHand(hand); - ItemStack offhandStack = player.getOffhandItem(); - - if (cuttingBoardEntity.isEmpty()) { - if (!offhandStack.isEmpty()) { - if (hand.equals(InteractionHand.MAIN_HAND) && !offhandStack.is(ModTags.OFFHAND_EQUIPMENT) && !(heldStack.getItem() instanceof BlockItem)) { - return InteractionResult.PASS; // Pass to off-hand if that item is placeable - } - if (hand.equals(InteractionHand.OFF_HAND) && offhandStack.is(ModTags.OFFHAND_EQUIPMENT)) { - return InteractionResult.PASS; // Items in this tag should not be placed from the off-hand - } - } - if (heldStack.isEmpty()) { - return InteractionResult.PASS; - } else if (cuttingBoardEntity.addItem(player.getAbilities().instabuild ? heldStack.copy() : heldStack)) { - level.playSound(null, pos.getX(), pos.getY(), pos.getZ(), SoundEvents.WOOD_PLACE, SoundSource.BLOCKS, 1.0F, 0.8F); - return InteractionResult.SUCCESS; - } + if (!(level.getBlockEntity(pos) instanceof CuttingBoardBlockEntity cuttingBoard)) { + return InteractionResult.PASS; + } - } else if (!heldStack.isEmpty()) { - ItemStack boardStack = cuttingBoardEntity.getStoredItem().copy(); - if (cuttingBoardEntity.processStoredItemUsingTool(heldStack, player)) { - spawnCuttingParticles(level, pos, boardStack, 5); - return InteractionResult.SUCCESS; - } - return InteractionResult.CONSUME; + ItemStack mainHandStack = player.getMainHandItem(); - } else if (hand.equals(InteractionHand.MAIN_HAND)) { - if (!player.isCreative()) { - if (!player.getInventory().add(cuttingBoardEntity.removeItem())) { - Containers.dropItemStack(level, pos.getX(), pos.getY(), pos.getZ(), cuttingBoardEntity.removeItem()); - } - } else { - cuttingBoardEntity.removeItem(); - } - level.playSound(null, pos.getX(), pos.getY(), pos.getZ(), SoundEvents.WOOD_HIT, SoundSource.BLOCKS, 0.25F, 0.5F); + if (mainHandStack.isEmpty()) { + if (cuttingBoard.isEmpty() || level.isClientSide) { + return InteractionResult.sidedSuccess(level.isClientSide); + } + ItemStack removedStack = cuttingBoard.removeItem(); + if (!player.isCreative()) { + player.getInventory().add(removedStack); + } + level.playSound(null, pos.getX(), pos.getY(), pos.getZ(), ModSounds.BLOCK_CUTTING_BOARD_REMOVE.get(), SoundSource.BLOCKS, 0.25F, 0.5F); + return InteractionResult.CONSUME; + } + if (cuttingBoard.canAddItem(mainHandStack)) { + if (level.isClientSide) { return InteractionResult.SUCCESS; } + ItemStack remainderStack = cuttingBoard.addItem(player.getAbilities().instabuild ? mainHandStack.copy() : mainHandStack); + if (!player.isCreative()) { + player.setItemSlot(EquipmentSlot.MAINHAND, remainderStack); + } + level.playSound(null, pos.getX(), pos.getY(), pos.getZ(), ModSounds.BLOCK_CUTTING_BOARD_PLACE.get(), SoundSource.BLOCKS, 1.0F, 0.8F); + return InteractionResult.CONSUME; + } else { + if (cuttingBoard.processStoredItemUsingTool(mainHandStack, player)) { + return InteractionResult.sidedSuccess(level.isClientSide); + } } return InteractionResult.PASS; } @@ -217,6 +208,9 @@ public static void onSneakPlaceTool(PlayerInteractEvent.RightClickBlock event) { ItemStack heldStack = player.getMainHandItem(); BlockEntity tileEntity = level.getBlockEntity(event.getPos()); + if (!(level.getBlockEntity(pos) instanceof CuttingBoardBlockEntity cuttingBoard)) { + return; + } if (player.isSecondaryUseActive() && !heldStack.isEmpty() && tileEntity instanceof CuttingBoardBlockEntity) { if (heldStack.getItem() instanceof TieredItem || heldStack.getItem() instanceof TridentItem || @@ -225,7 +219,7 @@ public static void onSneakPlaceTool(PlayerInteractEvent.RightClickBlock event) { if (success) { level.playSound(null, pos.getX(), pos.getY(), pos.getZ(), SoundEvents.WOOD_PLACE, SoundSource.BLOCKS, 1.0F, 0.8F); event.setCanceled(true); - event.setCancellationResult(InteractionResult.SUCCESS); + event.setCancellationResult(InteractionResult.sidedSuccess(level.isClientSide)); } } } diff --git a/src/main/java/vectorwing/farmersdelight/common/block/FeastBlock.java b/src/main/java/vectorwing/farmersdelight/common/block/FeastBlock.java index f33b2cca0..ad16fd757 100644 --- a/src/main/java/vectorwing/farmersdelight/common/block/FeastBlock.java +++ b/src/main/java/vectorwing/farmersdelight/common/block/FeastBlock.java @@ -80,12 +80,6 @@ public VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, Co @Override public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - if (level.isClientSide) { - if (this.takeServing(level, pos, state, player, hand).consumesAction()) { - return InteractionResult.SUCCESS; - } - } - return this.takeServing(level, pos, state, player, hand); } @@ -95,7 +89,7 @@ protected InteractionResult takeServing(LevelAccessor level, BlockPos pos, Block if (servings == 0) { level.playSound(null, pos, SoundEvents.WOOD_BREAK, SoundSource.PLAYERS, 0.8F, 0.8F); level.destroyBlock(pos, true); - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide()); } ItemStack serving = this.getServingItem(state); @@ -114,7 +108,7 @@ protected InteractionResult takeServing(LevelAccessor level, BlockPos pos, Block level.removeBlock(pos, false); } level.playSound(null, pos, SoundEvents.ARMOR_EQUIP_GENERIC, SoundSource.BLOCKS, 1.0F, 1.0F); - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide()); } else { player.displayClientMessage(TextUtils.getTranslation("block.feast.use_container", serving.getCraftingRemainingItem().getHoverName()), true); } diff --git a/src/main/java/vectorwing/farmersdelight/common/block/MushroomColonyBlock.java b/src/main/java/vectorwing/farmersdelight/common/block/MushroomColonyBlock.java index d49f21164..240212ab0 100644 --- a/src/main/java/vectorwing/farmersdelight/common/block/MushroomColonyBlock.java +++ b/src/main/java/vectorwing/farmersdelight/common/block/MushroomColonyBlock.java @@ -87,7 +87,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player if (!level.isClientSide) { heldStack.hurtAndBreak(1, player, (playerIn) -> playerIn.broadcastBreakEvent(hand)); } - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide); } return InteractionResult.PASS; diff --git a/src/main/java/vectorwing/farmersdelight/common/block/PieBlock.java b/src/main/java/vectorwing/farmersdelight/common/block/PieBlock.java index c2a4673a3..6a35da713 100644 --- a/src/main/java/vectorwing/farmersdelight/common/block/PieBlock.java +++ b/src/main/java/vectorwing/farmersdelight/common/block/PieBlock.java @@ -73,20 +73,6 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { @Override public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { ItemStack heldStack = player.getItemInHand(hand); - if (level.isClientSide) { - if (heldStack.is(ModTags.KNIVES)) { - return cutSlice(level, pos, state, player); - } - - if (this.consumeBite(level, pos, state, player) == InteractionResult.SUCCESS) { - return InteractionResult.SUCCESS; - } - - if (heldStack.isEmpty()) { - return InteractionResult.CONSUME; - } - } - if (heldStack.is(ModTags.KNIVES)) { return cutSlice(level, pos, state, player); } @@ -119,7 +105,7 @@ protected InteractionResult consumeBite(Level level, BlockPos pos, BlockState st level.removeBlock(pos, false); } level.playSound(null, pos, SoundEvents.GENERIC_EAT, SoundSource.PLAYERS, 0.8F, 0.8F); - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide); } } @@ -138,7 +124,7 @@ protected InteractionResult cutSlice(Level level, BlockPos pos, BlockState state ItemUtils.spawnItemEntity(level, this.getPieSliceItem(), pos.getX() + 0.5, pos.getY() + 0.3, pos.getZ() + 0.5, direction.getStepX() * 0.15, 0.05, direction.getStepZ() * 0.15); level.playSound(null, pos, SoundEvents.WOOL_BREAK, SoundSource.PLAYERS, 0.8F, 0.8F); - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide); } @Override diff --git a/src/main/java/vectorwing/farmersdelight/common/block/RopeBlock.java b/src/main/java/vectorwing/farmersdelight/common/block/RopeBlock.java index 1d5bdd43f..42b924e8d 100644 --- a/src/main/java/vectorwing/farmersdelight/common/block/RopeBlock.java +++ b/src/main/java/vectorwing/farmersdelight/common/block/RopeBlock.java @@ -82,7 +82,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player Block blockAbove = blockStateAbove.getBlock(); if (blockAbove == Blocks.BELL) { ((BellBlock) blockAbove).attemptToRing(level, bellRingingPos, blockStateAbove.getValue(BellBlock.FACING).getClockWise()); - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide); } else if (blockAbove == ModBlocks.ROPE.get()) { bellRingingPos.move(Direction.UP); } else { diff --git a/src/main/java/vectorwing/farmersdelight/common/block/SkilletBlock.java b/src/main/java/vectorwing/farmersdelight/common/block/SkilletBlock.java index 1726006e7..aa6892635 100644 --- a/src/main/java/vectorwing/farmersdelight/common/block/SkilletBlock.java +++ b/src/main/java/vectorwing/farmersdelight/common/block/SkilletBlock.java @@ -5,6 +5,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; +import net.minecraft.tags.ItemTags; import net.minecraft.util.Mth; import net.minecraft.util.RandomSource; import net.minecraft.world.Containers; @@ -33,169 +34,177 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import vectorwing.farmersdelight.common.block.entity.SkilletBlockEntity; +import vectorwing.farmersdelight.common.item.SkilletItem; import vectorwing.farmersdelight.common.registry.ModBlockEntityTypes; import vectorwing.farmersdelight.common.registry.ModSounds; import vectorwing.farmersdelight.common.tag.ModTags; -import javax.annotation.Nullable; +; @SuppressWarnings("deprecation") -public class SkilletBlock extends BaseEntityBlock -{ - public static final int MINIMUM_COOKING_TIME = 60; - - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; - public static final BooleanProperty SUPPORT = BooleanProperty.create("support"); - - protected static final VoxelShape SHAPE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 4.0D, 15.0D); - protected static final VoxelShape SHAPE_WITH_TRAY = Shapes.or(SHAPE, Block.box(0.0D, -1.0D, 0.0D, 16.0D, 0.0D, 16.0D)); - - public SkilletBlock(BlockBehaviour.Properties properties) { - super(properties); - this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH).setValue(SUPPORT, false)); - } - - @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - BlockEntity tileEntity = level.getBlockEntity(pos); - if (tileEntity instanceof SkilletBlockEntity skilletEntity) { - if (!level.isClientSide) { - ItemStack heldStack = player.getItemInHand(hand); - EquipmentSlot heldSlot = hand.equals(InteractionHand.MAIN_HAND) ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND; - if (heldStack.isEmpty()) { - ItemStack extractedStack = skilletEntity.removeItem(); - if (!player.isCreative()) { - player.setItemSlot(heldSlot, extractedStack); - } - return InteractionResult.SUCCESS; - } else { - ItemStack remainderStack = skilletEntity.addItemToCook(heldStack, player); - if (remainderStack.getCount() != heldStack.getCount()) { - if (!player.isCreative()) { - player.setItemSlot(heldSlot, remainderStack); - } - level.playSound(null, pos, SoundEvents.LANTERN_PLACE, SoundSource.BLOCKS, 0.7F, 1.0F); - return InteractionResult.SUCCESS; - } - } - } - return InteractionResult.CONSUME; - } - return InteractionResult.PASS; - } - - @Override - public RenderShape getRenderShape(BlockState pState) { - return RenderShape.MODEL; - } - - @Override - public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean isMoving) { - if (state.getBlock() != newState.getBlock()) { - BlockEntity tileEntity = level.getBlockEntity(pos); - if (tileEntity instanceof SkilletBlockEntity) { - Containers.dropItemStack(level, pos.getX(), pos.getY(), pos.getZ(), ((SkilletBlockEntity) tileEntity).getInventory().getStackInSlot(0)); - } - - super.onRemove(state, level, pos, newState, isMoving); - } - } - - @Override - public VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { - return SHAPE; - } - - @Override - public VoxelShape getCollisionShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { - return state.getValue(SUPPORT).equals(true) ? SHAPE_WITH_TRAY : SHAPE; - } - - @Override - public BlockState getStateForPlacement(BlockPlaceContext context) { - return this.defaultBlockState() - .setValue(FACING, context.getHorizontalDirection()) - .setValue(SUPPORT, getTrayState(context.getLevel(), context.getClickedPos())); - } - - @Override - public BlockState updateShape(BlockState state, Direction facing, BlockState facingState, LevelAccessor world, BlockPos currentPos, BlockPos facingPos) { - if (facing.getAxis().equals(Direction.Axis.Y)) { - return state.setValue(SUPPORT, getTrayState(world, currentPos)); - } - return state; - } - - @Override - public ItemStack getCloneItemStack(BlockGetter level, BlockPos pos, BlockState state) { - ItemStack stack = super.getCloneItemStack(level, pos, state); - SkilletBlockEntity skilletEntity = (SkilletBlockEntity) level.getBlockEntity(pos); - CompoundTag nbt = new CompoundTag(); - if (skilletEntity != null) { - skilletEntity.writeSkilletItem(nbt); - } - if (!nbt.isEmpty()) { - stack = ItemStack.of(nbt.getCompound("Skillet")); - } - return stack; - } - - @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { - builder.add(FACING, SUPPORT); - } - - @Override - public void animateTick(BlockState stateIn, Level level, BlockPos pos, RandomSource rand) { - BlockEntity tileEntity = level.getBlockEntity(pos); - if (tileEntity instanceof SkilletBlockEntity skilletEntity) { - if (skilletEntity.isCooking()) { - double x = (double) pos.getX() + 0.5D; - double y = pos.getY(); - double z = (double) pos.getZ() + 0.5D; - if (rand.nextInt(10) == 0) { - level.playLocalSound(x, y, z, ModSounds.BLOCK_SKILLET_SIZZLE.get(), SoundSource.BLOCKS, 0.4F, rand.nextFloat() * 0.2F + 0.9F, false); - } - } - } - } - - @Nullable - @Override - public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { - return ModBlockEntityTypes.SKILLET.get().create(pos, state); - } - - @Nullable - public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType blockEntity) { - if (level.isClientSide) { - return createTickerHelper(blockEntity, ModBlockEntityTypes.SKILLET.get(), SkilletBlockEntity::animationTick); - } else { - return createTickerHelper(blockEntity, ModBlockEntityTypes.SKILLET.get(), SkilletBlockEntity::cookingTick); - } - } - - private boolean getTrayState(LevelAccessor world, BlockPos pos) { - return world.getBlockState(pos.below()).is(ModTags.TRAY_HEAT_SOURCES); - } - - /** - * Calculates the total cooking time for the Skillet, affected by Fire Aspect. - * Assuming a default of 30 seconds (600 ticks), the time is divided by 5, then reduced further per level of Fire Aspect, to a minimum of 3 seconds. - * Times are always rounded to a multiple of 20, to ensure exact seconds. - */ - public static int getSkilletCookingTime(int originalCookingTime, int fireAspectLevel) { - int cookingTime = originalCookingTime > 0 ? originalCookingTime : 600; - int cookingSeconds = cookingTime / 20; - float cookingTimeReduction = 0.2F; - - if (fireAspectLevel > 0) { - cookingTimeReduction -= fireAspectLevel * 0.05; - } - - int result = (int) (cookingSeconds * cookingTimeReduction) * 20; - - return Mth.clamp(result, MINIMUM_COOKING_TIME, originalCookingTime); - } +public class SkilletBlock extends BaseEntityBlock { + public static final int MINIMUM_COOKING_TIME = 60; + + public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final BooleanProperty SUPPORT = BooleanProperty.create("support"); + + protected static final VoxelShape SHAPE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 4.0D, 15.0D); + protected static final VoxelShape SHAPE_WITH_TRAY = Shapes.or(SHAPE, Block.box(0.0D, -1.0D, 0.0D, 16.0D, 0.0D, 16.0D)); + + public SkilletBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH).setValue(SUPPORT, false)); + } + + @Override + public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { + BlockEntity tileEntity = level.getBlockEntity(pos); + if (tileEntity instanceof SkilletBlockEntity skilletEntity) { + ItemStack heldStack = player.getItemInHand(hand); + + if (heldStack.is(ItemTags.SHOVELS) && skilletEntity.isCooking()) { + if (skilletEntity.lastFlippedTime + SkilletItem.FLIP_TIME < level.getGameTime() ) { + skilletEntity.lastFlippedTime = level.getGameTime(); + return InteractionResult.sidedSuccess(level.isClientSide); + } + return InteractionResult.PASS; + } + + EquipmentSlot heldSlot = hand.equals(InteractionHand.MAIN_HAND) ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND; + if (heldStack.isEmpty()) { + ItemStack extractedStack = skilletEntity.removeItem(); + if (!player.isCreative()) { + player.setItemSlot(heldSlot, extractedStack); + } + return InteractionResult.sidedSuccess(level.isClientSide); + } else { + ItemStack remainderStack = skilletEntity.addItemToCook(heldStack, player); + if (remainderStack.getCount() != heldStack.getCount()) { + if (!player.isCreative()) { + player.setItemSlot(heldSlot, remainderStack); + } + level.playSound(null, pos, SoundEvents.LANTERN_PLACE, SoundSource.BLOCKS, 0.7F, 1.0F); + return InteractionResult.sidedSuccess(level.isClientSide); + } + } + } + return InteractionResult.PASS; + } + + @Override + public RenderShape getRenderShape(BlockState pState) { + return RenderShape.MODEL; + } + + @Override + public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean isMoving) { + if (state.getBlock() != newState.getBlock()) { + BlockEntity tileEntity = level.getBlockEntity(pos); + if (tileEntity instanceof SkilletBlockEntity) { + Containers.dropItemStack(level, pos.getX(), pos.getY(), pos.getZ(), ((SkilletBlockEntity) tileEntity).getInventory().getStackInSlot(0)); + } + + super.onRemove(state, level, pos, newState, isMoving); + } + } + + @Override + public VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE; + } + + @Override + public VoxelShape getCollisionShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return state.getValue(SUPPORT).equals(true) ? SHAPE_WITH_TRAY : SHAPE; + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState() + .setValue(FACING, context.getHorizontalDirection()) + .setValue(SUPPORT, getTrayState(context.getLevel(), context.getClickedPos())); + } + + @Override + public BlockState updateShape(BlockState state, Direction facing, BlockState facingState, LevelAccessor world, BlockPos currentPos, BlockPos facingPos) { + if (facing.getAxis().equals(Direction.Axis.Y)) { + return state.setValue(SUPPORT, getTrayState(world, currentPos)); + } + return state; + } + + @Override + public ItemStack getCloneItemStack(BlockGetter level, BlockPos pos, BlockState state) { + ItemStack stack = super.getCloneItemStack(level, pos, state); + SkilletBlockEntity skilletEntity = (SkilletBlockEntity) level.getBlockEntity(pos); + CompoundTag nbt = new CompoundTag(); + if (skilletEntity != null) { + skilletEntity.writeSkilletItem(nbt); + } + if (!nbt.isEmpty()) { + stack = ItemStack.of(nbt.getCompound("Skillet")); + } + return stack; + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING, SUPPORT); + } + + @Override + public void animateTick(BlockState stateIn, Level level, BlockPos pos, RandomSource rand) { + BlockEntity tileEntity = level.getBlockEntity(pos); + if (tileEntity instanceof SkilletBlockEntity skilletEntity) { + if (skilletEntity.isCooking()) { + double x = (double) pos.getX() + 0.5D; + double y = pos.getY(); + double z = (double) pos.getZ() + 0.5D; + if (rand.nextInt(10) == 0) { + level.playLocalSound(x, y, z, ModSounds.BLOCK_SKILLET_SIZZLE.get(), SoundSource.BLOCKS, 0.4F, rand.nextFloat() * 0.2F + 0.9F, false); + } + } + } + } + + @Nullable + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + return ModBlockEntityTypes.SKILLET.get().create(pos, state); + } + + @Nullable + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType blockEntity) { + if (level.isClientSide) { + return createTickerHelper(blockEntity, ModBlockEntityTypes.SKILLET.get(), SkilletBlockEntity::animationTick); + } else { + return createTickerHelper(blockEntity, ModBlockEntityTypes.SKILLET.get(), SkilletBlockEntity::cookingTick); + } + } + + private boolean getTrayState(LevelAccessor world, BlockPos pos) { + return world.getBlockState(pos.below()).is(ModTags.TRAY_HEAT_SOURCES); + } + + /** + * Calculates the total cooking time for the Skillet, affected by Fire Aspect. + * Assuming a default of 30 seconds (600 ticks), the time is divided by 5, then reduced further per level of Fire Aspect, to a minimum of 3 seconds. + * Times are always rounded to a multiple of 20, to ensure exact seconds. + */ + public static int getSkilletCookingTime(int originalCookingTime, int fireAspectLevel) { + int cookingTime = originalCookingTime > 0 ? originalCookingTime : 600; + int cookingSeconds = cookingTime / 20; + float cookingTimeReduction = 0.2F; + + if (fireAspectLevel > 0) { + cookingTimeReduction -= fireAspectLevel * 0.05; + } + + int result = (int) (cookingSeconds * cookingTimeReduction) * 20; + + return Mth.clamp(result, MINIMUM_COOKING_TIME, originalCookingTime); + } } diff --git a/src/main/java/vectorwing/farmersdelight/common/block/StoveBlock.java b/src/main/java/vectorwing/farmersdelight/common/block/StoveBlock.java index a70ff6301..8bb287bcd 100644 --- a/src/main/java/vectorwing/farmersdelight/common/block/StoveBlock.java +++ b/src/main/java/vectorwing/farmersdelight/common/block/StoveBlock.java @@ -62,7 +62,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player if (heldStack.canPerformAction(ToolActions.SHOVEL_DIG)) { extinguish(state, level, pos); heldStack.hurtAndBreak(1, player, action -> action.broadcastBreakEvent(hand)); - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide); } else if (heldItem == Items.WATER_BUCKET) { if (!level.isClientSide()) { level.playSound(null, pos, SoundEvents.GENERIC_EXTINGUISH_FIRE, SoundSource.BLOCKS, 1.0F, 1.0F); @@ -71,21 +71,21 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player if (!player.isCreative()) { player.setItemInHand(hand, new ItemStack(Items.BUCKET)); } - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide); } } else { if (heldItem instanceof FlintAndSteelItem) { level.playSound(player, pos, SoundEvents.FLINTANDSTEEL_USE, SoundSource.BLOCKS, 1.0F, MathUtils.RAND.nextFloat() * 0.4F + 0.8F); level.setBlock(pos, state.setValue(BlockStateProperties.LIT, Boolean.TRUE), 11); heldStack.hurtAndBreak(1, player, action -> action.broadcastBreakEvent(hand)); - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide); } else if (heldItem instanceof FireChargeItem) { level.playSound(null, pos, SoundEvents.FIRECHARGE_USE, SoundSource.BLOCKS, 1.0F, (MathUtils.RAND.nextFloat() - MathUtils.RAND.nextFloat()) * 0.2F + 1.0F); level.setBlock(pos, state.setValue(BlockStateProperties.LIT, Boolean.TRUE), 11); if (!player.isCreative()) { heldStack.shrink(1); } - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide); } } @@ -98,9 +98,9 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player Optional recipe = stoveEntity.getMatchingRecipe(new SimpleContainer(heldStack), stoveSlot); if (recipe.isPresent()) { if (!level.isClientSide && stoveEntity.addItem(player.getAbilities().instabuild ? heldStack.copy() : heldStack, recipe.get(), stoveSlot)) { - return InteractionResult.SUCCESS; + return InteractionResult.CONSUME; } - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(level.isClientSide); } } diff --git a/src/main/java/vectorwing/farmersdelight/common/block/TomatoVineBlock.java b/src/main/java/vectorwing/farmersdelight/common/block/TomatoVineBlock.java index 4392cfdf3..13c2b9f2f 100644 --- a/src/main/java/vectorwing/farmersdelight/common/block/TomatoVineBlock.java +++ b/src/main/java/vectorwing/farmersdelight/common/block/TomatoVineBlock.java @@ -63,7 +63,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player level.playSound(null, pos, ModSounds.ITEM_TOMATO_PICK_FROM_BUSH.get(), SoundSource.BLOCKS, 1.0F, 0.8F + level.random.nextFloat() * 0.4F); level.setBlock(pos, state.setValue(getAgeProperty(), 0), 2); - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide); } else { return super.use(state, level, pos, player, hand, hit); } diff --git a/src/main/java/vectorwing/farmersdelight/common/block/entity/SkilletBlockEntity.java b/src/main/java/vectorwing/farmersdelight/common/block/entity/SkilletBlockEntity.java index 5423b36bb..6e2484c63 100644 --- a/src/main/java/vectorwing/farmersdelight/common/block/entity/SkilletBlockEntity.java +++ b/src/main/java/vectorwing/farmersdelight/common/block/entity/SkilletBlockEntity.java @@ -32,6 +32,8 @@ import javax.annotation.Nullable; import java.util.Optional; +import static vectorwing.farmersdelight.common.item.SkilletItem.FLIP_TIME; + public class SkilletBlockEntity extends SyncedBlockEntity implements HeatableBlockEntity { private final ItemStackHandler inventory = createHandler(); @@ -42,6 +44,9 @@ public class SkilletBlockEntity extends SyncedBlockEntity implements HeatableBlo private ItemStack skilletStack; private int fireAspectLevel; + // client only. can stay public + public long lastFlippedTime = 0; + public SkilletBlockEntity(BlockPos pos, BlockState state) { super(ModBlockEntityTypes.SKILLET.get(), pos, state); skilletStack = ItemStack.EMPTY; @@ -59,6 +64,7 @@ public static void cookingTick(Level level, BlockPos pos, BlockState state, Skil } else if (skillet.cookingTime > 0) { skillet.cookingTime = Mth.clamp(skillet.cookingTime - 2, 0, skillet.cookingTimeTotal); } + } public static void animationTick(Level level, BlockPos pos, BlockState state, SkilletBlockEntity skillet) { @@ -80,6 +86,13 @@ public static void animationTick(Level level, BlockPos pos, BlockState state, Sk double motionZ = level.random.nextFloat() - 0.5F; level.addParticle(ParticleTypes.ENCHANTED_HIT, x, y, z, motionX, motionY, motionZ); } + + if (level.getGameTime() - skillet.lastFlippedTime == FLIP_TIME) { + double x = (double) pos.getX() + 0.5D; + double y = (double) pos.getY() + 0.1D; + double z = (double) pos.getZ() + 0.5D; + level.playLocalSound(x, y, z, ModSounds.BLOCK_SKILLET_SIZZLE.get(), SoundSource.BLOCKS, 0.4F, level.random.nextFloat() * 0.2F + 0.9F, false); + } } } diff --git a/src/main/java/vectorwing/farmersdelight/common/item/DogFoodItem.java b/src/main/java/vectorwing/farmersdelight/common/item/DogFoodItem.java index 1288ad5b4..c515f1d51 100644 --- a/src/main/java/vectorwing/farmersdelight/common/item/DogFoodItem.java +++ b/src/main/java/vectorwing/farmersdelight/common/item/DogFoodItem.java @@ -77,7 +77,7 @@ public static void onDogFoodApplied(PlayerInteractEvent.EntityInteract event) { itemStack.shrink(1); } - event.setCancellationResult(InteractionResult.SUCCESS); + event.setCancellationResult(InteractionResult.sidedSuccess(event.getLevel().isClientSide)); event.setCanceled(true); } } @@ -115,7 +115,7 @@ public void appendHoverText(ItemStack stack, @Nullable Level level, List toolAttributes; public SkilletItem(Block block, Item.Properties properties) { @@ -74,6 +87,12 @@ public SkilletItem(Block block, Item.Properties properties) { @Mod.EventBusSubscriber(modid = FarmersDelight.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public static class SkilletEvents { + @SubscribeEvent + public static void trackCooldown(AttackEntityEvent event) { + Player player = event.getEntity(); + localAtkStrength = player.getAttackStrengthScale(0.0F); + } + @SubscribeEvent public static void playSkilletAttackSound(LivingDamageEvent event) { DamageSource damageSource = event.getSource(); @@ -84,8 +103,7 @@ public static void playSkilletAttackSound(LivingDamageEvent event) { float pitch = 0.9F + (livingEntity.getRandom().nextFloat() * 0.2F); if (livingEntity instanceof Player player) { - float attackPower = player.getAttackStrengthScale(0.0F); - if (attackPower > 0.8F) { + if (localAtkStrength > 0.8F) { player.getCommandSenderWorld().playSound(null, player.getX(), player.getY(), player.getZ(), ModSounds.ITEM_SKILLET_ATTACK_STRONG.get(), SoundSource.PLAYERS, 1.0F, pitch); } else { player.getCommandSenderWorld().playSound(null, player.getX(), player.getY(), player.getZ(), ModSounds.ITEM_SKILLET_ATTACK_WEAK.get(), SoundSource.PLAYERS, 0.8F, 0.9F); @@ -165,7 +183,14 @@ public void onUseTick(Level level, LivingEntity entity, ItemStack stack, int cou if (level.random.nextInt(50) == 0) { level.playLocalSound(x, y, z, ModSounds.BLOCK_SKILLET_SIZZLE.get(), SoundSource.BLOCKS, 0.4F, level.random.nextFloat() * 0.2F + 0.9F, false); } - } + CompoundTag tag = stack.getOrCreateTag(); + if (tag.contains("FlipTimeStamp")) { + long flipTimeStamp = tag.getLong("FlipTimeStamp"); + if (level.getGameTime() - flipTimeStamp > FLIP_TIME) { + tag.remove("FlipTimeStamp"); + level.playLocalSound(x, y, z, ModSounds.BLOCK_SKILLET_SIZZLE.get(), SoundSource.BLOCKS, 0.4F, level.random.nextFloat() * 0.2F + 0.9F, false); + } + }} } @Override @@ -178,7 +203,7 @@ public void releaseUsing(ItemStack stack, Level level, LivingEntity entity, int player.getInventory().placeItemBackInInventory(cookingStack); tag.remove("Cooking"); tag.remove("CookTimeHandheld"); - } + tag.remove("FlipTimeStamp");} } } @@ -192,7 +217,7 @@ public ItemStack finishUsingItem(ItemStack stack, Level level, LivingEntity enti Optional cookingRecipe = getCookingRecipe(cookingStack, level); cookingRecipe.ifPresent((recipe) -> { - ItemStack resultStack = recipe.assemble(new SimpleContainer(), level.registryAccess()); + ItemStack resultStack = recipe.assemble(new SimpleContainer()); if (!player.getInventory().add(resultStack)) { player.drop(resultStack, false); } @@ -202,13 +227,51 @@ public ItemStack finishUsingItem(ItemStack stack, Level level, LivingEntity enti }); tag.remove("Cooking"); tag.remove("CookTimeHandheld"); - } + tag.remove("FlipTimeStamp");} } return stack; } - public static Optional getCookingRecipe(ItemStack stack, Level level) { + @Override + public void initializeClient(Consumer consumer) { + consumer.accept(new IClientItemExtensions() { + BlockEntityWithoutLevelRenderer renderer = new SkilletItemRenderer(); + @Override + public BlockEntityWithoutLevelRenderer getCustomRenderer() { + return renderer; + } + }); + } + + // uber hack + @Override + public int getBarWidth(ItemStack stack) { + if (stack.getTagElement("Cooking") != null) { + return Math.round(13.0F - (float) getClientPlayerHack().getUseItemRemainingTicks() * 13.0F / (float) this.getUseDuration(stack)); + }else{ + return super.getBarWidth(stack); + } + } + + // hack + @OnlyIn(Dist.CLIENT) + private static Player getClientPlayerHack(){ + return Minecraft.getInstance().player; + } + + @Override + public int getBarColor(ItemStack stack) { + if (stack.getTagElement("Cooking") != null) { + return 0xFF8B4F; + } + else return super.getBarColor(stack); + } + + @Override + public boolean isBarVisible(ItemStack stack) { + return super.isBarVisible(stack) || stack.getTagElement("Cooking") != null; + }public static Optional getCookingRecipe(ItemStack stack, Level level) { if (stack.isEmpty()) { return Optional.empty(); } diff --git a/src/main/java/vectorwing/farmersdelight/common/networking/ModNetworking.java b/src/main/java/vectorwing/farmersdelight/common/networking/ModNetworking.java new file mode 100644 index 000000000..1fc81f922 --- /dev/null +++ b/src/main/java/vectorwing/farmersdelight/common/networking/ModNetworking.java @@ -0,0 +1,55 @@ +package vectorwing.farmersdelight.common.networking; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.network.NetworkRegistry; +import net.minecraftforge.network.simple.SimpleChannel; +import vectorwing.farmersdelight.common.item.SkilletItem; + +import java.util.function.Supplier; + +public class ModNetworking { + + public static final SimpleChannel CHANNEL = NetworkRegistry.newSimpleChannel(new ResourceLocation("farmersdelight:channel"), + () -> "1", s -> s.equals("1"), s -> s.equals("1")); + + static { + CHANNEL.registerMessage(0, FlipSkilletMessage.class, + FlipSkilletMessage::encode, FlipSkilletMessage::new, FlipSkilletMessage::handle); + } + + + public static void init() { + } + + public static class FlipSkilletMessage { + + private static void handle(FlipSkilletMessage msg, Supplier contextSupplier) { + contextSupplier.get().enqueueWork(() -> { + Player player = contextSupplier.get().getSender(); + ItemStack stack = player.getUseItem(); + if (stack.getItem() instanceof SkilletItem) { + CompoundTag tag = stack.getOrCreateTag(); + if (!tag.contains("FlipTimeStamp")) { + tag.putLong("FlipTimeStamp", player.level.getGameTime()); + } + } + }); + } + + public FlipSkilletMessage(FriendlyByteBuf buf) { + } + + public FlipSkilletMessage() { + } + + public void encode(FriendlyByteBuf buf) { + + } + + } +} diff --git a/src/main/java/vectorwing/farmersdelight/common/registry/ModBiomeFeatures.java b/src/main/java/vectorwing/farmersdelight/common/registry/ModBiomeFeatures.java index 20ae8fb62..d25a97a79 100644 --- a/src/main/java/vectorwing/farmersdelight/common/registry/ModBiomeFeatures.java +++ b/src/main/java/vectorwing/farmersdelight/common/registry/ModBiomeFeatures.java @@ -10,10 +10,12 @@ import vectorwing.farmersdelight.common.world.feature.WildCropFeature; import vectorwing.farmersdelight.common.world.feature.WildRiceFeature; +import java.util.function.Supplier; + public class ModBiomeFeatures { public static final DeferredRegister> FEATURES = DeferredRegister.create(ForgeRegistries.FEATURES, FarmersDelight.MODID); - public static final RegistryObject> WILD_RICE = FEATURES.register("wild_rice", () -> new WildRiceFeature(RandomPatchConfiguration.CODEC)); - public static final RegistryObject> WILD_CROP = FEATURES.register("wild_crop", () -> new WildCropFeature(WildCropConfiguration.CODEC)); + public static final Supplier> WILD_RICE = FEATURES.register("wild_rice", () -> new WildRiceFeature(RandomPatchConfiguration.CODEC)); + public static final Supplier> WILD_CROP = FEATURES.register("wild_crop", () -> new WildCropFeature(WildCropConfiguration.CODEC)); } diff --git a/src/main/java/vectorwing/farmersdelight/common/registry/ModBiomeModifiers.java b/src/main/java/vectorwing/farmersdelight/common/registry/ModBiomeModifiers.java index 0afb63ee6..dbb03751f 100644 --- a/src/main/java/vectorwing/farmersdelight/common/registry/ModBiomeModifiers.java +++ b/src/main/java/vectorwing/farmersdelight/common/registry/ModBiomeModifiers.java @@ -13,13 +13,14 @@ import vectorwing.farmersdelight.common.world.modifier.AddFeaturesByFilterBiomeModifier; import java.util.Optional; +import java.util.function.Supplier; public class ModBiomeModifiers { public static DeferredRegister> BIOME_MODIFIER_SERIALIZERS = DeferredRegister.create(ForgeRegistries.Keys.BIOME_MODIFIER_SERIALIZERS, FarmersDelight.MODID); - public static RegistryObject> ADD_FEATURES_BY_FILTER = BIOME_MODIFIER_SERIALIZERS.register("add_features_by_filter", () -> + public static Supplier> ADD_FEATURES_BY_FILTER = BIOME_MODIFIER_SERIALIZERS.register("add_features_by_filter", () -> RecordCodecBuilder.create(builder -> builder.group( Biome.LIST_CODEC.fieldOf("allowed_biomes").forGetter(AddFeaturesByFilterBiomeModifier::allowedBiomes), Biome.LIST_CODEC.optionalFieldOf("denied_biomes").orElse(Optional.empty()).forGetter(AddFeaturesByFilterBiomeModifier::deniedBiomes), diff --git a/src/main/java/vectorwing/farmersdelight/common/registry/ModBlockEntityTypes.java b/src/main/java/vectorwing/farmersdelight/common/registry/ModBlockEntityTypes.java index 2a45cc7b6..f44847291 100644 --- a/src/main/java/vectorwing/farmersdelight/common/registry/ModBlockEntityTypes.java +++ b/src/main/java/vectorwing/farmersdelight/common/registry/ModBlockEntityTypes.java @@ -7,21 +7,27 @@ import vectorwing.farmersdelight.FarmersDelight; import vectorwing.farmersdelight.common.block.entity.*; +import java.util.function.Supplier; + public class ModBlockEntityTypes { public static final DeferredRegister> TILES = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, FarmersDelight.MODID); - public static final RegistryObject> STOVE = TILES.register("stove", + public static final Supplier> STOVE = TILES.register("stove", () -> BlockEntityType.Builder.of(StoveBlockEntity::new, ModBlocks.STOVE.get()).build(null)); - public static final RegistryObject> COOKING_POT = TILES.register("cooking_pot", + public static final Supplier> COOKING_POT = TILES.register("cooking_pot", () -> BlockEntityType.Builder.of(CookingPotBlockEntity::new, ModBlocks.COOKING_POT.get()).build(null)); - public static final RegistryObject> BASKET = TILES.register("basket", + public static final Supplier> BASKET = TILES.register("basket", () -> BlockEntityType.Builder.of(BasketBlockEntity::new, ModBlocks.BASKET.get()).build(null)); - public static final RegistryObject> CUTTING_BOARD = TILES.register("cutting_board", + public static final Supplier> CUTTING_BOARD = TILES.register("cutting_board", () -> BlockEntityType.Builder.of(CuttingBoardBlockEntity::new, ModBlocks.CUTTING_BOARD.get()).build(null)); - public static final RegistryObject> SKILLET = TILES.register("skillet", + public static final Supplier> SKILLET = TILES.register("skillet", () -> BlockEntityType.Builder.of(SkilletBlockEntity::new, ModBlocks.SKILLET.get()).build(null)); - public static final RegistryObject> CABINET = TILES.register("cabinet", + public static final Supplier> PANTRY = TILES.register("pantry", + () -> BlockEntityType.Builder.of(CabinetBlockEntity::new, + ModBlocks.OAK_CABINET.get(), ModBlocks.BIRCH_CABINET.get(), ModBlocks.SPRUCE_CABINET.get(), ModBlocks.JUNGLE_CABINET.get(), ModBlocks.ACACIA_CABINET.get(), ModBlocks.DARK_OAK_CABINET.get()) + .build(null)); + public static final Supplier> CABINET = TILES.register("cabinet", () -> BlockEntityType.Builder.of(CabinetBlockEntity::new, ModBlocks.OAK_CABINET.get(), ModBlocks.BIRCH_CABINET.get(), @@ -34,7 +40,7 @@ public class ModBlockEntityTypes ModBlocks.CRIMSON_CABINET.get(), ModBlocks.WARPED_CABINET.get()) .build(null)); - public static final RegistryObject> CANVAS_SIGN = TILES.register("canvas_sign", + public static final Supplier> CANVAS_SIGN = TILES.register("canvas_sign", () -> BlockEntityType.Builder.of(CanvasSignBlockEntity::new, ModBlocks.CANVAS_SIGN.get(), ModBlocks.WHITE_CANVAS_SIGN.get(), diff --git a/src/main/java/vectorwing/farmersdelight/common/registry/ModBlocks.java b/src/main/java/vectorwing/farmersdelight/common/registry/ModBlocks.java index 9a93b09c2..e91c1cf71 100644 --- a/src/main/java/vectorwing/farmersdelight/common/registry/ModBlocks.java +++ b/src/main/java/vectorwing/farmersdelight/common/registry/ModBlocks.java @@ -18,6 +18,7 @@ import vectorwing.farmersdelight.FarmersDelight; import vectorwing.farmersdelight.common.block.*; +import java.util.function.Supplier; import java.util.function.ToIntFunction; public class ModBlocks @@ -29,141 +30,141 @@ private static ToIntFunction litBlockEmission(int lightValue) { } // Workstations - public static final RegistryObject STOVE = BLOCKS.register("stove", + public static final Supplier STOVE = BLOCKS.register("stove", () -> new StoveBlock(Block.Properties.copy(Blocks.BRICKS).lightLevel(litBlockEmission(13)))); - public static final RegistryObject COOKING_POT = BLOCKS.register("cooking_pot", + public static final Supplier COOKING_POT = BLOCKS.register("cooking_pot", () -> new CookingPotBlock(Block.Properties.of().mapColor(MapColor.METAL).strength(0.5F, 6.0F).sound(SoundType.LANTERN))); - public static final RegistryObject SKILLET = BLOCKS.register("skillet", + public static final Supplier SKILLET = BLOCKS.register("skillet", () -> new SkilletBlock(Block.Properties.of().mapColor(MapColor.METAL).strength(0.5F, 6.0F).sound(SoundType.LANTERN))); - public static final RegistryObject BASKET = BLOCKS.register("basket", + public static final Supplier BASKET = BLOCKS.register("basket", () -> new BasketBlock(Block.Properties.of().strength(1.5F).sound(SoundType.BAMBOO_WOOD))); - public static final RegistryObject CUTTING_BOARD = BLOCKS.register("cutting_board", + public static final Supplier CUTTING_BOARD = BLOCKS.register("cutting_board", () -> new CuttingBoardBlock(Block.Properties.copy(Blocks.OAK_PLANKS).strength(2.0F).sound(SoundType.WOOD))); // Crop Storage - public static final RegistryObject CARROT_CRATE = BLOCKS.register("carrot_crate", + public static final Supplier CARROT_CRATE = BLOCKS.register("carrot_crate", () -> new Block(Block.Properties.copy(Blocks.OAK_PLANKS).strength(2.0F, 3.0F).sound(SoundType.WOOD))); - public static final RegistryObject POTATO_CRATE = BLOCKS.register("potato_crate", + public static final Supplier POTATO_CRATE = BLOCKS.register("potato_crate", () -> new Block(Block.Properties.copy(Blocks.OAK_PLANKS).strength(2.0F, 3.0F).sound(SoundType.WOOD))); - public static final RegistryObject BEETROOT_CRATE = BLOCKS.register("beetroot_crate", + public static final Supplier BEETROOT_CRATE = BLOCKS.register("beetroot_crate", () -> new Block(Block.Properties.copy(Blocks.OAK_PLANKS).strength(2.0F, 3.0F).sound(SoundType.WOOD))); - public static final RegistryObject CABBAGE_CRATE = BLOCKS.register("cabbage_crate", + public static final Supplier CABBAGE_CRATE = BLOCKS.register("cabbage_crate", () -> new Block(Block.Properties.copy(Blocks.OAK_PLANKS).strength(2.0F, 3.0F).sound(SoundType.WOOD))); - public static final RegistryObject TOMATO_CRATE = BLOCKS.register("tomato_crate", + public static final Supplier TOMATO_CRATE = BLOCKS.register("tomato_crate", () -> new Block(Block.Properties.copy(Blocks.OAK_PLANKS).strength(2.0F, 3.0F).sound(SoundType.WOOD))); - public static final RegistryObject ONION_CRATE = BLOCKS.register("onion_crate", + public static final Supplier ONION_CRATE = BLOCKS.register("onion_crate", () -> new Block(Block.Properties.copy(Blocks.OAK_PLANKS).strength(2.0F, 3.0F).sound(SoundType.WOOD))); - public static final RegistryObject RICE_BALE = BLOCKS.register("rice_bale", + public static final Supplier RICE_BALE = BLOCKS.register("rice_bale", () -> new RiceBaleBlock(Block.Properties.copy(Blocks.HAY_BLOCK))); - public static final RegistryObject RICE_BAG = BLOCKS.register("rice_bag", + public static final Supplier RICE_BAG = BLOCKS.register("rice_bag", () -> new Block(Block.Properties.copy(Blocks.WHITE_WOOL))); - public static final RegistryObject STRAW_BALE = BLOCKS.register("straw_bale", + public static final Supplier STRAW_BALE = BLOCKS.register("straw_bale", () -> new StrawBaleBlock(Block.Properties.copy(Blocks.HAY_BLOCK))); // Building - public static final RegistryObject ROPE = BLOCKS.register("rope", + public static final Supplier ROPE = BLOCKS.register("rope", () -> new RopeBlock(Block.Properties.copy(Blocks.BROWN_CARPET).noCollission().noOcclusion().strength(0.2F).sound(SoundType.WOOL))); - public static final RegistryObject SAFETY_NET = BLOCKS.register("safety_net", + public static final Supplier SAFETY_NET = BLOCKS.register("safety_net", () -> new SafetyNetBlock(Block.Properties.copy(Blocks.BROWN_CARPET).strength(0.2F).sound(SoundType.WOOL))); - public static final RegistryObject OAK_CABINET = BLOCKS.register("oak_cabinet", + public static final Supplier OAK_CABINET = BLOCKS.register("oak_cabinet", () -> new CabinetBlock(Block.Properties.copy(Blocks.BARREL))); - public static final RegistryObject SPRUCE_CABINET = BLOCKS.register("spruce_cabinet", + public static final Supplier SPRUCE_CABINET = BLOCKS.register("spruce_cabinet", () -> new CabinetBlock(Block.Properties.copy(Blocks.BARREL))); - public static final RegistryObject BIRCH_CABINET = BLOCKS.register("birch_cabinet", + public static final Supplier BIRCH_CABINET = BLOCKS.register("birch_cabinet", () -> new CabinetBlock(Block.Properties.copy(Blocks.BARREL))); - public static final RegistryObject JUNGLE_CABINET = BLOCKS.register("jungle_cabinet", + public static final Supplier JUNGLE_CABINET = BLOCKS.register("jungle_cabinet", () -> new CabinetBlock(Block.Properties.copy(Blocks.BARREL))); - public static final RegistryObject ACACIA_CABINET = BLOCKS.register("acacia_cabinet", + public static final Supplier ACACIA_CABINET = BLOCKS.register("acacia_cabinet", () -> new CabinetBlock(Block.Properties.copy(Blocks.BARREL))); - public static final RegistryObject DARK_OAK_CABINET = BLOCKS.register("dark_oak_cabinet", + public static final Supplier DARK_OAK_CABINET = BLOCKS.register("dark_oak_cabinet", () -> new CabinetBlock(Block.Properties.copy(Blocks.BARREL))); - public static final RegistryObject MANGROVE_CABINET = BLOCKS.register("mangrove_cabinet", + public static final Supplier MANGROVE_CABINET = BLOCKS.register("mangrove_cabinet", () -> new CabinetBlock(Block.Properties.copy(Blocks.BARREL))); public static final RegistryObject CHERRY_CABINET = BLOCKS.register("cherry_cabinet", () -> new CabinetBlock(Block.Properties.copy(Blocks.BARREL).sound(SoundType.CHERRY_WOOD))); public static final RegistryObject BAMBOO_CABINET = BLOCKS.register("bamboo_cabinet", () -> new CabinetBlock(Block.Properties.copy(Blocks.BARREL).sound(SoundType.BAMBOO_WOOD))); - public static final RegistryObject CRIMSON_CABINET = BLOCKS.register("crimson_cabinet", + public static final Supplier CRIMSON_CABINET = BLOCKS.register("crimson_cabinet", () -> new CabinetBlock(Block.Properties.copy(Blocks.BARREL).sound(SoundType.NETHER_WOOD))); - public static final RegistryObject WARPED_CABINET = BLOCKS.register("warped_cabinet", + public static final Supplier WARPED_CABINET = BLOCKS.register("warped_cabinet", () -> new CabinetBlock(Block.Properties.copy(Blocks.BARREL).sound(SoundType.NETHER_WOOD))); - public static final RegistryObject CANVAS_RUG = BLOCKS.register("canvas_rug", + public static final Supplier CANVAS_RUG = BLOCKS.register("canvas_rug", () -> new CanvasRugBlock(Block.Properties.copy(Blocks.WHITE_CARPET).sound(SoundType.GRASS).strength(0.2F))); - public static final RegistryObject TATAMI = BLOCKS.register("tatami", + public static final Supplier TATAMI = BLOCKS.register("tatami", () -> new TatamiBlock(Block.Properties.copy(Blocks.WHITE_WOOL))); - public static final RegistryObject FULL_TATAMI_MAT = BLOCKS.register("full_tatami_mat", + public static final Supplier FULL_TATAMI_MAT = BLOCKS.register("full_tatami_mat", () -> new TatamiMatBlock(Block.Properties.copy(Blocks.WHITE_WOOL).strength(0.3F))); - public static final RegistryObject HALF_TATAMI_MAT = BLOCKS.register("half_tatami_mat", + public static final Supplier HALF_TATAMI_MAT = BLOCKS.register("half_tatami_mat", () -> new TatamiHalfMatBlock(BlockBehaviour.Properties.copy(Blocks.WHITE_WOOL).strength(0.3F).pushReaction(PushReaction.DESTROY))); - public static final RegistryObject CANVAS_SIGN = BLOCKS.register("canvas_sign", + public static final Supplier CANVAS_SIGN = BLOCKS.register("canvas_sign", () -> new StandingCanvasSignBlock(null)); - public static final RegistryObject WHITE_CANVAS_SIGN = BLOCKS.register("white_canvas_sign", + public static final Supplier WHITE_CANVAS_SIGN = BLOCKS.register("white_canvas_sign", () -> new StandingCanvasSignBlock(DyeColor.WHITE)); - public static final RegistryObject ORANGE_CANVAS_SIGN = BLOCKS.register("orange_canvas_sign", + public static final Supplier ORANGE_CANVAS_SIGN = BLOCKS.register("orange_canvas_sign", () -> new StandingCanvasSignBlock(DyeColor.ORANGE)); - public static final RegistryObject MAGENTA_CANVAS_SIGN = BLOCKS.register("magenta_canvas_sign", + public static final Supplier MAGENTA_CANVAS_SIGN = BLOCKS.register("magenta_canvas_sign", () -> new StandingCanvasSignBlock(DyeColor.MAGENTA)); - public static final RegistryObject LIGHT_BLUE_CANVAS_SIGN = BLOCKS.register("light_blue_canvas_sign", + public static final Supplier LIGHT_BLUE_CANVAS_SIGN = BLOCKS.register("light_blue_canvas_sign", () -> new StandingCanvasSignBlock(DyeColor.LIGHT_BLUE)); - public static final RegistryObject YELLOW_CANVAS_SIGN = BLOCKS.register("yellow_canvas_sign", + public static final Supplier YELLOW_CANVAS_SIGN = BLOCKS.register("yellow_canvas_sign", () -> new StandingCanvasSignBlock(DyeColor.YELLOW)); - public static final RegistryObject LIME_CANVAS_SIGN = BLOCKS.register("lime_canvas_sign", + public static final Supplier LIME_CANVAS_SIGN = BLOCKS.register("lime_canvas_sign", () -> new StandingCanvasSignBlock(DyeColor.LIME)); - public static final RegistryObject PINK_CANVAS_SIGN = BLOCKS.register("pink_canvas_sign", + public static final Supplier PINK_CANVAS_SIGN = BLOCKS.register("pink_canvas_sign", () -> new StandingCanvasSignBlock(DyeColor.PINK)); - public static final RegistryObject GRAY_CANVAS_SIGN = BLOCKS.register("gray_canvas_sign", + public static final Supplier GRAY_CANVAS_SIGN = BLOCKS.register("gray_canvas_sign", () -> new StandingCanvasSignBlock(DyeColor.GRAY)); - public static final RegistryObject LIGHT_GRAY_CANVAS_SIGN = BLOCKS.register("light_gray_canvas_sign", + public static final Supplier LIGHT_GRAY_CANVAS_SIGN = BLOCKS.register("light_gray_canvas_sign", () -> new StandingCanvasSignBlock(DyeColor.LIGHT_GRAY)); - public static final RegistryObject CYAN_CANVAS_SIGN = BLOCKS.register("cyan_canvas_sign", + public static final Supplier CYAN_CANVAS_SIGN = BLOCKS.register("cyan_canvas_sign", () -> new StandingCanvasSignBlock(DyeColor.CYAN)); - public static final RegistryObject PURPLE_CANVAS_SIGN = BLOCKS.register("purple_canvas_sign", + public static final Supplier PURPLE_CANVAS_SIGN = BLOCKS.register("purple_canvas_sign", () -> new StandingCanvasSignBlock(DyeColor.PURPLE)); - public static final RegistryObject BLUE_CANVAS_SIGN = BLOCKS.register("blue_canvas_sign", + public static final Supplier BLUE_CANVAS_SIGN = BLOCKS.register("blue_canvas_sign", () -> new StandingCanvasSignBlock(DyeColor.BLUE)); - public static final RegistryObject BROWN_CANVAS_SIGN = BLOCKS.register("brown_canvas_sign", + public static final Supplier BROWN_CANVAS_SIGN = BLOCKS.register("brown_canvas_sign", () -> new StandingCanvasSignBlock(DyeColor.BROWN)); - public static final RegistryObject GREEN_CANVAS_SIGN = BLOCKS.register("green_canvas_sign", + public static final Supplier GREEN_CANVAS_SIGN = BLOCKS.register("green_canvas_sign", () -> new StandingCanvasSignBlock(DyeColor.GREEN)); - public static final RegistryObject RED_CANVAS_SIGN = BLOCKS.register("red_canvas_sign", + public static final Supplier RED_CANVAS_SIGN = BLOCKS.register("red_canvas_sign", () -> new StandingCanvasSignBlock(DyeColor.RED)); - public static final RegistryObject BLACK_CANVAS_SIGN = BLOCKS.register("black_canvas_sign", + public static final Supplier BLACK_CANVAS_SIGN = BLOCKS.register("black_canvas_sign", () -> new StandingCanvasSignBlock(DyeColor.BLACK)); - public static final RegistryObject CANVAS_WALL_SIGN = BLOCKS.register("canvas_wall_sign", + public static final Supplier CANVAS_WALL_SIGN = BLOCKS.register("canvas_wall_sign", () -> new WallCanvasSignBlock(Block.Properties.copy(Blocks.SPRUCE_SIGN).lootFrom(CANVAS_SIGN), null)); - public static final RegistryObject WHITE_CANVAS_WALL_SIGN = BLOCKS.register("white_canvas_wall_sign", + public static final Supplier WHITE_CANVAS_WALL_SIGN = BLOCKS.register("white_canvas_wall_sign", () -> new WallCanvasSignBlock(Block.Properties.copy(Blocks.SPRUCE_SIGN).lootFrom(WHITE_CANVAS_SIGN), DyeColor.WHITE)); - public static final RegistryObject ORANGE_CANVAS_WALL_SIGN = BLOCKS.register("orange_canvas_wall_sign", + public static final Supplier ORANGE_CANVAS_WALL_SIGN = BLOCKS.register("orange_canvas_wall_sign", () -> new WallCanvasSignBlock(Block.Properties.copy(Blocks.SPRUCE_SIGN).lootFrom(ORANGE_CANVAS_SIGN), DyeColor.ORANGE)); - public static final RegistryObject MAGENTA_CANVAS_WALL_SIGN = BLOCKS.register("magenta_canvas_wall_sign", + public static final Supplier MAGENTA_CANVAS_WALL_SIGN = BLOCKS.register("magenta_canvas_wall_sign", () -> new WallCanvasSignBlock(Block.Properties.copy(Blocks.SPRUCE_SIGN).lootFrom(MAGENTA_CANVAS_SIGN), DyeColor.MAGENTA)); - public static final RegistryObject LIGHT_BLUE_CANVAS_WALL_SIGN = BLOCKS.register("light_blue_canvas_wall_sign", + public static final Supplier LIGHT_BLUE_CANVAS_WALL_SIGN = BLOCKS.register("light_blue_canvas_wall_sign", () -> new WallCanvasSignBlock(Block.Properties.copy(Blocks.SPRUCE_SIGN).lootFrom(LIGHT_BLUE_CANVAS_SIGN), DyeColor.LIGHT_BLUE)); - public static final RegistryObject YELLOW_CANVAS_WALL_SIGN = BLOCKS.register("yellow_canvas_wall_sign", + public static final Supplier YELLOW_CANVAS_WALL_SIGN = BLOCKS.register("yellow_canvas_wall_sign", () -> new WallCanvasSignBlock(Block.Properties.copy(Blocks.SPRUCE_SIGN).lootFrom(YELLOW_CANVAS_SIGN), DyeColor.YELLOW)); - public static final RegistryObject LIME_CANVAS_WALL_SIGN = BLOCKS.register("lime_canvas_wall_sign", + public static final Supplier LIME_CANVAS_WALL_SIGN = BLOCKS.register("lime_canvas_wall_sign", () -> new WallCanvasSignBlock(Block.Properties.copy(Blocks.SPRUCE_SIGN).lootFrom(LIME_CANVAS_SIGN), DyeColor.LIME)); - public static final RegistryObject PINK_CANVAS_WALL_SIGN = BLOCKS.register("pink_canvas_wall_sign", + public static final Supplier PINK_CANVAS_WALL_SIGN = BLOCKS.register("pink_canvas_wall_sign", () -> new WallCanvasSignBlock(Block.Properties.copy(Blocks.SPRUCE_SIGN).lootFrom(PINK_CANVAS_SIGN), DyeColor.PINK)); - public static final RegistryObject GRAY_CANVAS_WALL_SIGN = BLOCKS.register("gray_canvas_wall_sign", + public static final Supplier GRAY_CANVAS_WALL_SIGN = BLOCKS.register("gray_canvas_wall_sign", () -> new WallCanvasSignBlock(Block.Properties.copy(Blocks.SPRUCE_SIGN).lootFrom(GRAY_CANVAS_SIGN), DyeColor.GRAY)); - public static final RegistryObject LIGHT_GRAY_CANVAS_WALL_SIGN = BLOCKS.register("light_gray_canvas_wall_sign", + public static final Supplier LIGHT_GRAY_CANVAS_WALL_SIGN = BLOCKS.register("light_gray_canvas_wall_sign", () -> new WallCanvasSignBlock(Block.Properties.copy(Blocks.SPRUCE_SIGN).lootFrom(LIGHT_GRAY_CANVAS_SIGN), DyeColor.LIGHT_GRAY)); - public static final RegistryObject CYAN_CANVAS_WALL_SIGN = BLOCKS.register("cyan_canvas_wall_sign", + public static final Supplier CYAN_CANVAS_WALL_SIGN = BLOCKS.register("cyan_canvas_wall_sign", () -> new WallCanvasSignBlock(Block.Properties.copy(Blocks.SPRUCE_SIGN).lootFrom(CYAN_CANVAS_SIGN), DyeColor.CYAN)); - public static final RegistryObject PURPLE_CANVAS_WALL_SIGN = BLOCKS.register("purple_canvas_wall_sign", + public static final Supplier PURPLE_CANVAS_WALL_SIGN = BLOCKS.register("purple_canvas_wall_sign", () -> new WallCanvasSignBlock(Block.Properties.copy(Blocks.SPRUCE_SIGN).lootFrom(PURPLE_CANVAS_SIGN), DyeColor.PURPLE)); - public static final RegistryObject BLUE_CANVAS_WALL_SIGN = BLOCKS.register("blue_canvas_wall_sign", + public static final Supplier BLUE_CANVAS_WALL_SIGN = BLOCKS.register("blue_canvas_wall_sign", () -> new WallCanvasSignBlock(Block.Properties.copy(Blocks.SPRUCE_SIGN).lootFrom(BLUE_CANVAS_SIGN), DyeColor.BLUE)); - public static final RegistryObject BROWN_CANVAS_WALL_SIGN = BLOCKS.register("brown_canvas_wall_sign", + public static final Supplier BROWN_CANVAS_WALL_SIGN = BLOCKS.register("brown_canvas_wall_sign", () -> new WallCanvasSignBlock(Block.Properties.copy(Blocks.SPRUCE_SIGN).lootFrom(BROWN_CANVAS_SIGN), DyeColor.BROWN)); - public static final RegistryObject GREEN_CANVAS_WALL_SIGN = BLOCKS.register("green_canvas_wall_sign", + public static final Supplier GREEN_CANVAS_WALL_SIGN = BLOCKS.register("green_canvas_wall_sign", () -> new WallCanvasSignBlock(Block.Properties.copy(Blocks.SPRUCE_SIGN).lootFrom(GREEN_CANVAS_SIGN), DyeColor.GREEN)); - public static final RegistryObject RED_CANVAS_WALL_SIGN = BLOCKS.register("red_canvas_wall_sign", + public static final Supplier RED_CANVAS_WALL_SIGN = BLOCKS.register("red_canvas_wall_sign", () -> new WallCanvasSignBlock(Block.Properties.copy(Blocks.SPRUCE_SIGN).lootFrom(RED_CANVAS_SIGN), DyeColor.RED)); - public static final RegistryObject BLACK_CANVAS_WALL_SIGN = BLOCKS.register("black_canvas_wall_sign", + public static final Supplier BLACK_CANVAS_WALL_SIGN = BLOCKS.register("black_canvas_wall_sign", () -> new WallCanvasSignBlock(Block.Properties.copy(Blocks.SPRUCE_SIGN).lootFrom(BLACK_CANVAS_SIGN), DyeColor.BLACK)); public static final RegistryObject HANGING_CANVAS_SIGN = BLOCKS.register("hanging_canvas_sign", @@ -237,68 +238,68 @@ private static ToIntFunction litBlockEmission(int lightValue) { () -> new WallHangingCanvasSignBlock(Block.Properties.copy(Blocks.SPRUCE_WALL_HANGING_SIGN).lootFrom(BLACK_HANGING_CANVAS_SIGN), DyeColor.BLACK)); // Composting - public static final RegistryObject BROWN_MUSHROOM_COLONY = BLOCKS.register("brown_mushroom_colony", + public static final Supplier BROWN_MUSHROOM_COLONY = BLOCKS.register("brown_mushroom_colony", () -> new MushroomColonyBlock(Block.Properties.copy(Blocks.BROWN_MUSHROOM), () -> Items.BROWN_MUSHROOM)); - public static final RegistryObject RED_MUSHROOM_COLONY = BLOCKS.register("red_mushroom_colony", + public static final Supplier RED_MUSHROOM_COLONY = BLOCKS.register("red_mushroom_colony", () -> new MushroomColonyBlock(Block.Properties.copy(Blocks.RED_MUSHROOM), () -> Items.RED_MUSHROOM)); - public static final RegistryObject ORGANIC_COMPOST = BLOCKS.register("organic_compost", + public static final Supplier ORGANIC_COMPOST = BLOCKS.register("organic_compost", () -> new OrganicCompostBlock(Block.Properties.copy(Blocks.DIRT).strength(1.2F).sound(SoundType.CROP))); - public static final RegistryObject RICH_SOIL = BLOCKS.register("rich_soil", + public static final Supplier RICH_SOIL = BLOCKS.register("rich_soil", () -> new RichSoilBlock(Block.Properties.copy(Blocks.DIRT).randomTicks())); - public static final RegistryObject RICH_SOIL_FARMLAND = BLOCKS.register("rich_soil_farmland", + public static final Supplier RICH_SOIL_FARMLAND = BLOCKS.register("rich_soil_farmland", () -> new RichSoilFarmlandBlock(Block.Properties.copy(Blocks.FARMLAND))); // Pastries - public static final RegistryObject APPLE_PIE = BLOCKS.register("apple_pie", + public static final Supplier APPLE_PIE = BLOCKS.register("apple_pie", () -> new PieBlock(Block.Properties.copy(Blocks.CAKE), ModItems.APPLE_PIE_SLICE)); - public static final RegistryObject SWEET_BERRY_CHEESECAKE = BLOCKS.register("sweet_berry_cheesecake", + public static final Supplier SWEET_BERRY_CHEESECAKE = BLOCKS.register("sweet_berry_cheesecake", () -> new PieBlock(Block.Properties.copy(Blocks.CAKE), ModItems.SWEET_BERRY_CHEESECAKE_SLICE)); - public static final RegistryObject CHOCOLATE_PIE = BLOCKS.register("chocolate_pie", + public static final Supplier CHOCOLATE_PIE = BLOCKS.register("chocolate_pie", () -> new PieBlock(Block.Properties.copy(Blocks.CAKE), ModItems.CHOCOLATE_PIE_SLICE)); // Wild Crops - public static final RegistryObject SANDY_SHRUB = BLOCKS.register("sandy_shrub", + public static final Supplier SANDY_SHRUB = BLOCKS.register("sandy_shrub", () -> new SandyShrubBlock(Block.Properties.copy(Blocks.TALL_GRASS))); - public static final RegistryObject WILD_CABBAGES = BLOCKS.register("wild_cabbages", + public static final Supplier WILD_CABBAGES = BLOCKS.register("wild_cabbages", () -> new WildCropBlock(MobEffects.DAMAGE_BOOST, 6, Block.Properties.copy(Blocks.TALL_GRASS))); - public static final RegistryObject WILD_ONIONS = BLOCKS.register("wild_onions", + public static final Supplier WILD_ONIONS = BLOCKS.register("wild_onions", () -> new WildCropBlock(MobEffects.FIRE_RESISTANCE, 6, Block.Properties.copy(Blocks.TALL_GRASS))); - public static final RegistryObject WILD_TOMATOES = BLOCKS.register("wild_tomatoes", + public static final Supplier WILD_TOMATOES = BLOCKS.register("wild_tomatoes", () -> new WildCropBlock(MobEffects.POISON, 10, Block.Properties.copy(Blocks.TALL_GRASS))); - public static final RegistryObject WILD_CARROTS = BLOCKS.register("wild_carrots", + public static final Supplier WILD_CARROTS = BLOCKS.register("wild_carrots", () -> new WildCropBlock(MobEffects.DIG_SLOWDOWN, 6, Block.Properties.copy(Blocks.TALL_GRASS))); - public static final RegistryObject WILD_POTATOES = BLOCKS.register("wild_potatoes", + public static final Supplier WILD_POTATOES = BLOCKS.register("wild_potatoes", () -> new WildCropBlock(MobEffects.CONFUSION, 8, Block.Properties.copy(Blocks.TALL_GRASS))); - public static final RegistryObject WILD_BEETROOTS = BLOCKS.register("wild_beetroots", + public static final Supplier WILD_BEETROOTS = BLOCKS.register("wild_beetroots", () -> new WildCropBlock(MobEffects.WATER_BREATHING, 8, Block.Properties.copy(Blocks.TALL_GRASS))); - public static final RegistryObject WILD_RICE = BLOCKS.register("wild_rice", + public static final Supplier WILD_RICE = BLOCKS.register("wild_rice", () -> new WildRiceBlock(Block.Properties.copy(Blocks.TALL_GRASS))); // Crops - public static final RegistryObject CABBAGE_CROP = BLOCKS.register("cabbages", + public static final Supplier CABBAGE_CROP = BLOCKS.register("cabbages", () -> new CabbageBlock(Block.Properties.copy(Blocks.WHEAT))); - public static final RegistryObject ONION_CROP = BLOCKS.register("onions", + public static final Supplier ONION_CROP = BLOCKS.register("onions", () -> new OnionBlock(Block.Properties.copy(Blocks.WHEAT))); - public static final RegistryObject BUDDING_TOMATO_CROP = BLOCKS.register("budding_tomatoes", + public static final Supplier BUDDING_TOMATO_CROP = BLOCKS.register("budding_tomatoes", () -> new BuddingTomatoBlock(Block.Properties.copy(Blocks.WHEAT))); // TODO: Figure out how to make Tomato Crop waterproof again. - public static final RegistryObject TOMATO_CROP = BLOCKS.register("tomatoes", + public static final Supplier TOMATO_CROP = BLOCKS.register("tomatoes", () -> new TomatoVineBlock(Block.Properties.of().noCollission().randomTicks().instabreak().sound(SoundType.CROP).pushReaction(PushReaction.DESTROY))); - public static final RegistryObject RICE_CROP = BLOCKS.register("rice", + public static final Supplier RICE_CROP = BLOCKS.register("rice", () -> new RiceBlock(Block.Properties.copy(Blocks.WHEAT).strength(0.2F))); - public static final RegistryObject RICE_CROP_PANICLES = BLOCKS.register("rice_panicles", + public static final Supplier RICE_CROP_PANICLES = BLOCKS.register("rice_panicles", () -> new RicePaniclesBlock(Block.Properties.copy(Blocks.WHEAT))); // Feasts - public static final RegistryObject ROAST_CHICKEN_BLOCK = BLOCKS.register("roast_chicken_block", + public static final Supplier ROAST_CHICKEN_BLOCK = BLOCKS.register("roast_chicken_block", () -> new RoastChickenBlock(Block.Properties.copy(Blocks.CAKE), ModItems.ROAST_CHICKEN, true)); - public static final RegistryObject STUFFED_PUMPKIN_BLOCK = BLOCKS.register("stuffed_pumpkin_block", + public static final Supplier STUFFED_PUMPKIN_BLOCK = BLOCKS.register("stuffed_pumpkin_block", () -> new FeastBlock(Block.Properties.copy(Blocks.PUMPKIN), ModItems.STUFFED_PUMPKIN, false)); - public static final RegistryObject HONEY_GLAZED_HAM_BLOCK = BLOCKS.register("honey_glazed_ham_block", + public static final Supplier HONEY_GLAZED_HAM_BLOCK = BLOCKS.register("honey_glazed_ham_block", () -> new HoneyGlazedHamBlock(Block.Properties.copy(Blocks.CAKE), ModItems.HONEY_GLAZED_HAM, true)); - public static final RegistryObject SHEPHERDS_PIE_BLOCK = BLOCKS.register("shepherds_pie_block", + public static final Supplier SHEPHERDS_PIE_BLOCK = BLOCKS.register("shepherds_pie_block", () -> new ShepherdsPieBlock(Block.Properties.copy(Blocks.CAKE), ModItems.SHEPHERDS_PIE, true)); - public static final RegistryObject RICE_ROLL_MEDLEY_BLOCK = BLOCKS.register("rice_roll_medley_block", + public static final Supplier RICE_ROLL_MEDLEY_BLOCK = BLOCKS.register("rice_roll_medley_block", () -> new RiceRollMedleyBlock(Block.Properties.copy(Blocks.CAKE))); } diff --git a/src/main/java/vectorwing/farmersdelight/common/registry/ModEffects.java b/src/main/java/vectorwing/farmersdelight/common/registry/ModEffects.java index f78578ddb..7d9e2d508 100644 --- a/src/main/java/vectorwing/farmersdelight/common/registry/ModEffects.java +++ b/src/main/java/vectorwing/farmersdelight/common/registry/ModEffects.java @@ -8,10 +8,12 @@ import vectorwing.farmersdelight.common.effect.ComfortEffect; import vectorwing.farmersdelight.common.effect.NourishmentEffect; +import java.util.function.Supplier; + public class ModEffects { public static final DeferredRegister EFFECTS = DeferredRegister.create(ForgeRegistries.MOB_EFFECTS, FarmersDelight.MODID); - public static final RegistryObject NOURISHMENT = EFFECTS.register("nourishment", NourishmentEffect::new); - public static final RegistryObject COMFORT = EFFECTS.register("comfort", ComfortEffect::new); + public static final Supplier NOURISHMENT = EFFECTS.register("nourishment", NourishmentEffect::new); + public static final Supplier COMFORT = EFFECTS.register("comfort", ComfortEffect::new); } diff --git a/src/main/java/vectorwing/farmersdelight/common/registry/ModEnchantments.java b/src/main/java/vectorwing/farmersdelight/common/registry/ModEnchantments.java index 229974776..6b2f6abbd 100644 --- a/src/main/java/vectorwing/farmersdelight/common/registry/ModEnchantments.java +++ b/src/main/java/vectorwing/farmersdelight/common/registry/ModEnchantments.java @@ -10,12 +10,14 @@ import vectorwing.farmersdelight.common.item.KnifeItem; import vectorwing.farmersdelight.common.item.enchantment.BackstabbingEnchantment; +import java.util.function.Supplier; + public class ModEnchantments { public static final EnchantmentCategory KNIFE = EnchantmentCategory.create("knife", item -> item instanceof KnifeItem); public static final DeferredRegister ENCHANTMENTS = DeferredRegister.create(ForgeRegistries.ENCHANTMENTS, FarmersDelight.MODID); - public static final RegistryObject BACKSTABBING = ENCHANTMENTS.register("backstabbing", + public static final Supplier BACKSTABBING = ENCHANTMENTS.register("backstabbing", () -> new BackstabbingEnchantment(Enchantment.Rarity.UNCOMMON, KNIFE, EquipmentSlot.MAINHAND)); } diff --git a/src/main/java/vectorwing/farmersdelight/common/registry/ModEntityTypes.java b/src/main/java/vectorwing/farmersdelight/common/registry/ModEntityTypes.java index da1ef0314..beb304130 100644 --- a/src/main/java/vectorwing/farmersdelight/common/registry/ModEntityTypes.java +++ b/src/main/java/vectorwing/farmersdelight/common/registry/ModEntityTypes.java @@ -8,11 +8,13 @@ import vectorwing.farmersdelight.FarmersDelight; import vectorwing.farmersdelight.common.entity.RottenTomatoEntity; +import java.util.function.Supplier; + public class ModEntityTypes { public static final DeferredRegister> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITY_TYPES, FarmersDelight.MODID); - public static final RegistryObject> ROTTEN_TOMATO = ENTITIES.register("rotten_tomato", () -> ( + public static final Supplier> ROTTEN_TOMATO = ENTITIES.register("rotten_tomato", () -> ( EntityType.Builder.of(RottenTomatoEntity::new, MobCategory.MISC) .sized(0.25F, 0.25F) .clientTrackingRange(4) diff --git a/src/main/java/vectorwing/farmersdelight/common/registry/ModItems.java b/src/main/java/vectorwing/farmersdelight/common/registry/ModItems.java index d52f25919..f2ebf7439 100644 --- a/src/main/java/vectorwing/farmersdelight/common/registry/ModItems.java +++ b/src/main/java/vectorwing/farmersdelight/common/registry/ModItems.java @@ -45,84 +45,84 @@ public static Item.Properties drinkItem() { } // Blocks - public static final RegistryObject STOVE = registerWithTab("stove", + public static final Supplier STOVE = registerWithTab("stove", () -> new BlockItem(ModBlocks.STOVE.get(), basicItem())); - public static final RegistryObject COOKING_POT = registerWithTab("cooking_pot", + public static final Supplier COOKING_POT = registerWithTab("cooking_pot", () -> new CookingPotItem(ModBlocks.COOKING_POT.get(), basicItem().stacksTo(1))); - public static final RegistryObject SKILLET = registerWithTab("skillet", + public static final Supplier SKILLET = registerWithTab("skillet", () -> new SkilletItem(ModBlocks.SKILLET.get(), basicItem().stacksTo(1))); - public static final RegistryObject CUTTING_BOARD = registerWithTab("cutting_board", + public static final Supplier CUTTING_BOARD = registerWithTab("cutting_board", () -> new FuelBlockItem(ModBlocks.CUTTING_BOARD.get(), basicItem(), 200)); - public static final RegistryObject BASKET = registerWithTab("basket", + public static final Supplier BASKET = registerWithTab("basket", () -> new FuelBlockItem(ModBlocks.BASKET.get(), basicItem(), 300)); - public static final RegistryObject CARROT_CRATE = registerWithTab("carrot_crate", + public static final Supplier CARROT_CRATE = registerWithTab("carrot_crate", () -> new BlockItem(ModBlocks.CARROT_CRATE.get(), basicItem())); - public static final RegistryObject POTATO_CRATE = registerWithTab("potato_crate", + public static final Supplier POTATO_CRATE = registerWithTab("potato_crate", () -> new BlockItem(ModBlocks.POTATO_CRATE.get(), basicItem())); - public static final RegistryObject BEETROOT_CRATE = registerWithTab("beetroot_crate", + public static final Supplier BEETROOT_CRATE = registerWithTab("beetroot_crate", () -> new BlockItem(ModBlocks.BEETROOT_CRATE.get(), basicItem())); - public static final RegistryObject CABBAGE_CRATE = registerWithTab("cabbage_crate", + public static final Supplier CABBAGE_CRATE = registerWithTab("cabbage_crate", () -> new BlockItem(ModBlocks.CABBAGE_CRATE.get(), basicItem())); - public static final RegistryObject TOMATO_CRATE = registerWithTab("tomato_crate", + public static final Supplier TOMATO_CRATE = registerWithTab("tomato_crate", () -> new BlockItem(ModBlocks.TOMATO_CRATE.get(), basicItem())); - public static final RegistryObject ONION_CRATE = registerWithTab("onion_crate", + public static final Supplier ONION_CRATE = registerWithTab("onion_crate", () -> new BlockItem(ModBlocks.ONION_CRATE.get(), basicItem())); - public static final RegistryObject RICE_BALE = registerWithTab("rice_bale", + public static final Supplier RICE_BALE = registerWithTab("rice_bale", () -> new BlockItem(ModBlocks.RICE_BALE.get(), basicItem())); - public static final RegistryObject RICE_BAG = registerWithTab("rice_bag", + public static final Supplier RICE_BAG = registerWithTab("rice_bag", () -> new BlockItem(ModBlocks.RICE_BAG.get(), basicItem())); - public static final RegistryObject STRAW_BALE = registerWithTab("straw_bale", + public static final Supplier STRAW_BALE = registerWithTab("straw_bale", () -> new BlockItem(ModBlocks.STRAW_BALE.get(), basicItem())); - public static final RegistryObject SAFETY_NET = registerWithTab("safety_net", + public static final Supplier SAFETY_NET = registerWithTab("safety_net", () -> new FuelBlockItem(ModBlocks.SAFETY_NET.get(), basicItem(), 200)); - public static final RegistryObject OAK_CABINET = registerWithTab("oak_cabinet", + public static final Supplier OAK_CABINET = registerWithTab("oak_cabinet", () -> new FuelBlockItem(ModBlocks.OAK_CABINET.get(), basicItem(), 300)); - public static final RegistryObject SPRUCE_CABINET = registerWithTab("spruce_cabinet", + public static final Supplier SPRUCE_CABINET = registerWithTab("spruce_cabinet", () -> new FuelBlockItem(ModBlocks.SPRUCE_CABINET.get(), basicItem(), 300)); - public static final RegistryObject BIRCH_CABINET = registerWithTab("birch_cabinet", + public static final Supplier BIRCH_CABINET = registerWithTab("birch_cabinet", () -> new FuelBlockItem(ModBlocks.BIRCH_CABINET.get(), basicItem(), 300)); - public static final RegistryObject JUNGLE_CABINET = registerWithTab("jungle_cabinet", + public static final Supplier JUNGLE_CABINET = registerWithTab("jungle_cabinet", () -> new FuelBlockItem(ModBlocks.JUNGLE_CABINET.get(), basicItem(), 300)); - public static final RegistryObject ACACIA_CABINET = registerWithTab("acacia_cabinet", + public static final Supplier ACACIA_CABINET = registerWithTab("acacia_cabinet", () -> new FuelBlockItem(ModBlocks.ACACIA_CABINET.get(), basicItem(), 300)); - public static final RegistryObject DARK_OAK_CABINET = registerWithTab("dark_oak_cabinet", + public static final Supplier DARK_OAK_CABINET = registerWithTab("dark_oak_cabinet", () -> new FuelBlockItem(ModBlocks.DARK_OAK_CABINET.get(), basicItem(), 300)); - public static final RegistryObject MANGROVE_CABINET = registerWithTab("mangrove_cabinet", + public static final Supplier MANGROVE_CABINET = registerWithTab("mangrove_cabinet", () -> new FuelBlockItem(ModBlocks.MANGROVE_CABINET.get(), basicItem(), 300)); public static final RegistryObject CHERRY_CABINET = registerWithTab("cherry_cabinet", () -> new FuelBlockItem(ModBlocks.CHERRY_CABINET.get(), basicItem(), 300)); public static final RegistryObject BAMBOO_CABINET = registerWithTab("bamboo_cabinet", () -> new FuelBlockItem(ModBlocks.BAMBOO_CABINET.get(), basicItem(), 300)); - public static final RegistryObject CRIMSON_CABINET = registerWithTab("crimson_cabinet", + public static final Supplier CRIMSON_CABINET = registerWithTab("crimson_cabinet", () -> new BlockItem(ModBlocks.CRIMSON_CABINET.get(), basicItem())); - public static final RegistryObject WARPED_CABINET = registerWithTab("warped_cabinet", + public static final Supplier WARPED_CABINET = registerWithTab("warped_cabinet", () -> new BlockItem(ModBlocks.WARPED_CABINET.get(), basicItem())); - public static final RegistryObject TATAMI = registerWithTab("tatami", + public static final Supplier TATAMI = registerWithTab("tatami", () -> new FuelBlockItem(ModBlocks.TATAMI.get(), basicItem(), 400)); - public static final RegistryObject FULL_TATAMI_MAT = registerWithTab("full_tatami_mat", + public static final Supplier FULL_TATAMI_MAT = registerWithTab("full_tatami_mat", () -> new FuelBlockItem(ModBlocks.FULL_TATAMI_MAT.get(), basicItem(), 200)); - public static final RegistryObject HALF_TATAMI_MAT = registerWithTab("half_tatami_mat", + public static final Supplier HALF_TATAMI_MAT = registerWithTab("half_tatami_mat", () -> new FuelBlockItem(ModBlocks.HALF_TATAMI_MAT.get(), basicItem())); - public static final RegistryObject CANVAS_RUG = registerWithTab("canvas_rug", + public static final Supplier CANVAS_RUG = registerWithTab("canvas_rug", () -> new FuelBlockItem(ModBlocks.CANVAS_RUG.get(), basicItem(), 200)); - public static final RegistryObject ORGANIC_COMPOST = registerWithTab("organic_compost", + public static final Supplier ORGANIC_COMPOST = registerWithTab("organic_compost", () -> new BlockItem(ModBlocks.ORGANIC_COMPOST.get(), basicItem())); - public static final RegistryObject RICH_SOIL = registerWithTab("rich_soil", + public static final Supplier RICH_SOIL = registerWithTab("rich_soil", () -> new BlockItem(ModBlocks.RICH_SOIL.get(), basicItem())); - public static final RegistryObject RICH_SOIL_FARMLAND = registerWithTab("rich_soil_farmland", + public static final Supplier RICH_SOIL_FARMLAND = registerWithTab("rich_soil_farmland", () -> new BlockItem(ModBlocks.RICH_SOIL_FARMLAND.get(), basicItem())); - public static final RegistryObject ROPE = registerWithTab("rope", + public static final Supplier ROPE = registerWithTab("rope", () -> new RopeItem(ModBlocks.ROPE.get(), basicItem())); // Canvas Signs... - public static final RegistryObject CANVAS_SIGN = registerWithTab("canvas_sign", + public static final Supplier CANVAS_SIGN = registerWithTab("canvas_sign", () -> new SignItem(basicItem(), ModBlocks.CANVAS_SIGN.get(), ModBlocks.CANVAS_WALL_SIGN.get())); public static final RegistryObject HANGING_CANVAS_SIGN = registerWithTab("hanging_canvas_sign", () -> new HangingSignItem(ModBlocks.HANGING_CANVAS_SIGN.get(), ModBlocks.HANGING_CANVAS_WALL_SIGN.get(), basicItem())); - public static final RegistryObject WHITE_CANVAS_SIGN = registerWithTab("white_canvas_sign", + public static final Supplier WHITE_CANVAS_SIGN = registerWithTab("white_canvas_sign", () -> new SignItem(basicItem(), ModBlocks.WHITE_CANVAS_SIGN.get(), ModBlocks.WHITE_CANVAS_WALL_SIGN.get())); public static final RegistryObject WHITE_HANGING_CANVAS_SIGN = registerWithTab("white_hanging_canvas_sign", () -> new HangingSignItem(ModBlocks.WHITE_HANGING_CANVAS_SIGN.get(), ModBlocks.WHITE_HANGING_CANVAS_WALL_SIGN.get(), basicItem())); @@ -152,29 +152,30 @@ public static Item.Properties drinkItem() { public static final RegistryObject RED_HANGING_CANVAS_SIGN = registerWithTab("red_hanging_canvas_sign", () -> new HangingSignItem(ModBlocks.RED_HANGING_CANVAS_SIGN.get(), ModBlocks.RED_HANGING_CANVAS_WALL_SIGN.get(), basicItem())); - public static final RegistryObject ORANGE_CANVAS_SIGN = registerWithTab("orange_canvas_sign", + public static final Supplier ORANGE_CANVAS_SIGN = registerWithTab("orange_canvas_sign", () -> new SignItem(basicItem(), ModBlocks.ORANGE_CANVAS_SIGN.get(), ModBlocks.ORANGE_CANVAS_WALL_SIGN.get())); - public static final RegistryObject ORANGE_HANGING_CANVAS_SIGN = registerWithTab("orange_hanging_canvas_sign", - () -> new HangingSignItem(ModBlocks.ORANGE_HANGING_CANVAS_SIGN.get(), ModBlocks.ORANGE_HANGING_CANVAS_WALL_SIGN.get(), basicItem())); - - public static final RegistryObject YELLOW_CANVAS_SIGN = registerWithTab("yellow_canvas_sign", + public static final Supplier MAGENTA_CANVAS_SIGN = ITEMS.register("magenta_canvas_sign", + () -> new SignItem(basicItem(), ModBlocks.MAGENTA_CANVAS_SIGN.get(), ModBlocks.MAGENTA_CANVAS_WALL_SIGN.get())); + public static final Supplier LIGHT_BLUE_CANVAS_SIGN = ITEMS.register("light_blue_canvas_sign", + () -> new SignItem(basicItem(), ModBlocks.LIGHT_BLUE_CANVAS_SIGN.get(), ModBlocks.LIGHT_BLUE_CANVAS_WALL_SIGN.get())); + public static final Supplier YELLOW_CANVAS_SIGN = ITEMS.register("yellow_canvas_sign", () -> new SignItem(basicItem(), ModBlocks.YELLOW_CANVAS_SIGN.get(), ModBlocks.YELLOW_CANVAS_WALL_SIGN.get())); public static final RegistryObject YELLOW_HANGING_CANVAS_SIGN = registerWithTab("yellow_hanging_canvas_sign", () -> new HangingSignItem(ModBlocks.YELLOW_HANGING_CANVAS_SIGN.get(), ModBlocks.YELLOW_HANGING_CANVAS_WALL_SIGN.get(), basicItem())); - public static final RegistryObject LIME_CANVAS_SIGN = registerWithTab("lime_canvas_sign", + public static final Supplier LIME_CANVAS_SIGN = registerWithTab("lime_canvas_sign", () -> new SignItem(basicItem(), ModBlocks.LIME_CANVAS_SIGN.get(), ModBlocks.LIME_CANVAS_WALL_SIGN.get())); - public static final RegistryObject LIME_HANGING_CANVAS_SIGN = registerWithTab("lime_hanging_canvas_sign", + public static final Supplier LIME_HANGING_CANVAS_SIGN = registerWithTab("lime_hanging_canvas_sign", () -> new HangingSignItem(ModBlocks.LIME_HANGING_CANVAS_SIGN.get(), ModBlocks.LIME_HANGING_CANVAS_WALL_SIGN.get(), basicItem())); - public static final RegistryObject GREEN_CANVAS_SIGN = registerWithTab("green_canvas_sign", + public static final Supplier GREEN_CANVAS_SIGN = registerWithTab("green_canvas_sign", () -> new SignItem(basicItem(), ModBlocks.GREEN_CANVAS_SIGN.get(), ModBlocks.GREEN_CANVAS_WALL_SIGN.get())); - public static final RegistryObject GREEN_HANGING_CANVAS_SIGN = registerWithTab("green_hanging_canvas_sign", + public static final Supplier GREEN_HANGING_CANVAS_SIGN = registerWithTab("green_hanging_canvas_sign", () -> new HangingSignItem(ModBlocks.GREEN_HANGING_CANVAS_SIGN.get(), ModBlocks.GREEN_HANGING_CANVAS_WALL_SIGN.get(), basicItem())); - public static final RegistryObject CYAN_CANVAS_SIGN = registerWithTab("cyan_canvas_sign", + public static final Supplier CYAN_CANVAS_SIGN = registerWithTab("cyan_canvas_sign", () -> new SignItem(basicItem(), ModBlocks.CYAN_CANVAS_SIGN.get(), ModBlocks.CYAN_CANVAS_WALL_SIGN.get())); - public static final RegistryObject CYAN_HANGING_CANVAS_SIGN = registerWithTab("cyan_hanging_canvas_sign", + public static final Supplier CYAN_HANGING_CANVAS_SIGN = registerWithTab("cyan_hanging_canvas_sign", () -> new HangingSignItem(ModBlocks.CYAN_HANGING_CANVAS_SIGN.get(), ModBlocks.CYAN_HANGING_CANVAS_WALL_SIGN.get(), basicItem())); public static final RegistryObject LIGHT_BLUE_CANVAS_SIGN = registerWithTab("light_blue_canvas_sign", @@ -182,77 +183,77 @@ public static Item.Properties drinkItem() { public static final RegistryObject LIGHT_BLUE_HANGING_CANVAS_SIGN = registerWithTab("light_blue_hanging_canvas_sign", () -> new HangingSignItem(ModBlocks.LIGHT_BLUE_HANGING_CANVAS_SIGN.get(), ModBlocks.LIGHT_BLUE_HANGING_CANVAS_WALL_SIGN.get(), basicItem())); - public static final RegistryObject BLUE_CANVAS_SIGN = registerWithTab("blue_canvas_sign", + public static final Supplier BLUE_CANVAS_SIGN = registerWithTab("blue_canvas_sign", () -> new SignItem(basicItem(), ModBlocks.BLUE_CANVAS_SIGN.get(), ModBlocks.BLUE_CANVAS_WALL_SIGN.get())); - public static final RegistryObject BLUE_HANGING_CANVAS_SIGN = registerWithTab("blue_hanging_canvas_sign", + public static final Supplier BLUE_HANGING_CANVAS_SIGN = registerWithTab("blue_hanging_canvas_sign", () -> new HangingSignItem(ModBlocks.BLUE_HANGING_CANVAS_SIGN.get(), ModBlocks.BLUE_HANGING_CANVAS_WALL_SIGN.get(), basicItem())); public static final RegistryObject PURPLE_CANVAS_SIGN = registerWithTab("purple_canvas_sign", () -> new SignItem(basicItem(), ModBlocks.PURPLE_CANVAS_SIGN.get(), ModBlocks.PURPLE_CANVAS_WALL_SIGN.get())); - public static final RegistryObject PURPLE_HANGING_CANVAS_SIGN = registerWithTab("purple_hanging_canvas_sign", + public static final Supplier PURPLE_HANGING_CANVAS_SIGN = registerWithTab("purple_hanging_canvas_sign", () -> new HangingSignItem(ModBlocks.PURPLE_HANGING_CANVAS_SIGN.get(), ModBlocks.PURPLE_HANGING_CANVAS_WALL_SIGN.get(), basicItem())); public static final RegistryObject MAGENTA_CANVAS_SIGN = registerWithTab("magenta_canvas_sign", () -> new SignItem(basicItem(), ModBlocks.MAGENTA_CANVAS_SIGN.get(), ModBlocks.MAGENTA_CANVAS_WALL_SIGN.get())); - public static final RegistryObject MAGENTA_HANGING_CANVAS_SIGN = registerWithTab("magenta_hanging_canvas_sign", + public static final Supplier MAGENTA_HANGING_CANVAS_SIGN = registerWithTab("magenta_hanging_canvas_sign", () -> new HangingSignItem(ModBlocks.MAGENTA_HANGING_CANVAS_SIGN.get(), ModBlocks.MAGENTA_HANGING_CANVAS_WALL_SIGN.get(), basicItem())); - public static final RegistryObject PINK_CANVAS_SIGN = registerWithTab("pink_canvas_sign", + public static final Supplier PINK_CANVAS_SIGN = registerWithTab("pink_canvas_sign", () -> new SignItem(basicItem(), ModBlocks.PINK_CANVAS_SIGN.get(), ModBlocks.PINK_CANVAS_WALL_SIGN.get())); public static final RegistryObject PINK_HANGING_CANVAS_SIGN = registerWithTab("pink_hanging_canvas_sign", () -> new HangingSignItem(ModBlocks.PINK_HANGING_CANVAS_SIGN.get(), ModBlocks.PINK_HANGING_CANVAS_WALL_SIGN.get(), basicItem())); // Tools - public static final RegistryObject FLINT_KNIFE = registerWithTab("flint_knife", + public static final Supplier FLINT_KNIFE = registerWithTab("flint_knife", () -> new KnifeItem(ModMaterials.FLINT, 0.5F, -2.0F, basicItem())); - public static final RegistryObject IRON_KNIFE = registerWithTab("iron_knife", + public static final Supplier IRON_KNIFE = registerWithTab("iron_knife", () -> new KnifeItem(Tiers.IRON, 0.5F, -2.0F, basicItem())); - public static final RegistryObject DIAMOND_KNIFE = registerWithTab("diamond_knife", + public static final Supplier DIAMOND_KNIFE = registerWithTab("diamond_knife", () -> new KnifeItem(Tiers.DIAMOND, 0.5F, -2.0F, basicItem())); - public static final RegistryObject NETHERITE_KNIFE = registerWithTab("netherite_knife", + public static final Supplier NETHERITE_KNIFE = registerWithTab("netherite_knife", () -> new KnifeItem(Tiers.NETHERITE, 0.5F, -2.0F, basicItem().fireResistant())); - public static final RegistryObject GOLDEN_KNIFE = registerWithTab("golden_knife", + public static final Supplier GOLDEN_KNIFE = registerWithTab("golden_knife", () -> new KnifeItem(Tiers.GOLD, 0.5F, -2.0F, basicItem())); - public static final RegistryObject STRAW = registerWithTab("straw", () -> new FuelItem(basicItem())); - public static final RegistryObject CANVAS = registerWithTab("canvas", () -> new FuelItem(basicItem(), 400)); - public static final RegistryObject TREE_BARK = registerWithTab("tree_bark", () -> new FuelItem(basicItem(), 200)); + public static final Supplier STRAW = registerWithTab("straw", () -> new FuelItem(basicItem())); + public static final Supplier CANVAS = registerWithTab("canvas", () -> new FuelItem(basicItem(), 400)); + public static final Supplier TREE_BARK = registerWithTab("tree_bark", () -> new FuelItem(basicItem(), 200)); // Wild Crops - public static final RegistryObject SANDY_SHRUB = registerWithTab("sandy_shrub", + public static final Supplier SANDY_SHRUB = registerWithTab("sandy_shrub", () -> new BlockItem(ModBlocks.SANDY_SHRUB.get(), basicItem())); - public static final RegistryObject WILD_CABBAGES = registerWithTab("wild_cabbages", + public static final Supplier WILD_CABBAGES = registerWithTab("wild_cabbages", () -> new BlockItem(ModBlocks.WILD_CABBAGES.get(), basicItem())); - public static final RegistryObject WILD_ONIONS = registerWithTab("wild_onions", + public static final Supplier WILD_ONIONS = registerWithTab("wild_onions", () -> new BlockItem(ModBlocks.WILD_ONIONS.get(), basicItem())); - public static final RegistryObject WILD_TOMATOES = registerWithTab("wild_tomatoes", + public static final Supplier WILD_TOMATOES = registerWithTab("wild_tomatoes", () -> new BlockItem(ModBlocks.WILD_TOMATOES.get(), basicItem())); - public static final RegistryObject WILD_CARROTS = registerWithTab("wild_carrots", + public static final Supplier WILD_CARROTS = registerWithTab("wild_carrots", () -> new BlockItem(ModBlocks.WILD_CARROTS.get(), basicItem())); - public static final RegistryObject WILD_POTATOES = registerWithTab("wild_potatoes", + public static final Supplier WILD_POTATOES = registerWithTab("wild_potatoes", () -> new BlockItem(ModBlocks.WILD_POTATOES.get(), basicItem())); - public static final RegistryObject WILD_BEETROOTS = registerWithTab("wild_beetroots", + public static final Supplier WILD_BEETROOTS = registerWithTab("wild_beetroots", () -> new BlockItem(ModBlocks.WILD_BEETROOTS.get(), basicItem())); - public static final RegistryObject WILD_RICE = registerWithTab("wild_rice", + public static final Supplier WILD_RICE = registerWithTab("wild_rice", () -> new DoubleHighBlockItem(ModBlocks.WILD_RICE.get(), basicItem())); - public static final RegistryObject BROWN_MUSHROOM_COLONY = registerWithTab("brown_mushroom_colony", + public static final Supplier BROWN_MUSHROOM_COLONY = registerWithTab("brown_mushroom_colony", () -> new MushroomColonyItem(ModBlocks.BROWN_MUSHROOM_COLONY.get(), basicItem())); - public static final RegistryObject RED_MUSHROOM_COLONY = registerWithTab("red_mushroom_colony", + public static final Supplier RED_MUSHROOM_COLONY = registerWithTab("red_mushroom_colony", () -> new MushroomColonyItem(ModBlocks.RED_MUSHROOM_COLONY.get(), basicItem())); // Basic Crops - public static final RegistryObject CABBAGE = registerWithTab("cabbage", + public static final Supplier CABBAGE = registerWithTab("cabbage", () -> new Item(foodItem(FoodValues.CABBAGE))); - public static final RegistryObject TOMATO = registerWithTab("tomato", + public static final Supplier TOMATO = registerWithTab("tomato", () -> new Item(foodItem(FoodValues.TOMATO))); - public static final RegistryObject ONION = registerWithTab("onion", + public static final Supplier ONION = registerWithTab("onion", () -> new ItemNameBlockItem(ModBlocks.ONION_CROP.get(), foodItem(FoodValues.ONION))); - public static final RegistryObject RICE_PANICLE = registerWithTab("rice_panicle", () -> new Item(basicItem())); - public static final RegistryObject RICE = registerWithTab("rice", + public static final Supplier RICE_PANICLE = registerWithTab("rice_panicle", () -> new Item(basicItem())); + public static final Supplier RICE = registerWithTab("rice", () -> new RiceItem(ModBlocks.RICE_CROP.get(), basicItem())); - public static final RegistryObject CABBAGE_SEEDS = registerWithTab("cabbage_seeds", () -> new ItemNameBlockItem(ModBlocks.CABBAGE_CROP.get(), basicItem())); - public static final RegistryObject TOMATO_SEEDS = registerWithTab("tomato_seeds", () -> new ItemNameBlockItem(ModBlocks.BUDDING_TOMATO_CROP.get(), basicItem()) + public static final Supplier CABBAGE_SEEDS = registerWithTab("cabbage_seeds", () -> new ItemNameBlockItem(ModBlocks.CABBAGE_CROP.get(), basicItem())); + public static final Supplier TOMATO_SEEDS = registerWithTab("tomato_seeds", () -> new ItemNameBlockItem(ModBlocks.BUDDING_TOMATO_CROP.get(), basicItem()) { @Override public void registerBlocks(Map blockToItemMap, Item item) { @@ -266,190 +267,190 @@ public void removeFromBlockToItemMap(Map blockToItemMap, Item itemI blockToItemMap.remove(ModBlocks.TOMATO_CROP.get()); } }); - public static final RegistryObject ROTTEN_TOMATO = registerWithTab("rotten_tomato", + public static final Supplier ROTTEN_TOMATO = registerWithTab("rotten_tomato", () -> new RottenTomatoItem(new Item.Properties().stacksTo(16))); // Foodstuffs - public static final RegistryObject FRIED_EGG = registerWithTab("fried_egg", + public static final Supplier FRIED_EGG = registerWithTab("fried_egg", () -> new Item(foodItem(FoodValues.FRIED_EGG))); - public static final RegistryObject MILK_BOTTLE = registerWithTab("milk_bottle", + public static final Supplier MILK_BOTTLE = registerWithTab("milk_bottle", () -> new MilkBottleItem(drinkItem())); - public static final RegistryObject HOT_COCOA = registerWithTab("hot_cocoa", + public static final Supplier HOT_COCOA = registerWithTab("hot_cocoa", () -> new HotCocoaItem(drinkItem())); - public static final RegistryObject APPLE_CIDER = registerWithTab("apple_cider", + public static final Supplier APPLE_CIDER = registerWithTab("apple_cider", () -> new DrinkableItem(drinkItem().food(FoodValues.APPLE_CIDER), true, false)); - public static final RegistryObject MELON_JUICE = registerWithTab("melon_juice", + public static final Supplier MELON_JUICE = registerWithTab("melon_juice", () -> new MelonJuiceItem(drinkItem())); - public static final RegistryObject TOMATO_SAUCE = registerWithTab("tomato_sauce", + public static final Supplier TOMATO_SAUCE = registerWithTab("tomato_sauce", () -> new ConsumableItem(foodItem(FoodValues.TOMATO_SAUCE).craftRemainder(Items.BOWL))); - public static final RegistryObject WHEAT_DOUGH = registerWithTab("wheat_dough", + public static final Supplier WHEAT_DOUGH = registerWithTab("wheat_dough", () -> new Item(foodItem(FoodValues.WHEAT_DOUGH))); - public static final RegistryObject RAW_PASTA = registerWithTab("raw_pasta", + public static final Supplier RAW_PASTA = registerWithTab("raw_pasta", () -> new Item(foodItem(FoodValues.RAW_PASTA))); - public static final RegistryObject PUMPKIN_SLICE = registerWithTab("pumpkin_slice", + public static final Supplier PUMPKIN_SLICE = registerWithTab("pumpkin_slice", () -> new Item(foodItem(FoodValues.PUMPKIN_SLICE))); - public static final RegistryObject CABBAGE_LEAF = registerWithTab("cabbage_leaf", + public static final Supplier CABBAGE_LEAF = registerWithTab("cabbage_leaf", () -> new Item(foodItem(FoodValues.CABBAGE_LEAF))); - public static final RegistryObject MINCED_BEEF = registerWithTab("minced_beef", + public static final Supplier MINCED_BEEF = registerWithTab("minced_beef", () -> new Item(foodItem(FoodValues.MINCED_BEEF))); - public static final RegistryObject BEEF_PATTY = registerWithTab("beef_patty", + public static final Supplier BEEF_PATTY = registerWithTab("beef_patty", () -> new Item(foodItem(FoodValues.BEEF_PATTY))); - public static final RegistryObject CHICKEN_CUTS = registerWithTab("chicken_cuts", + public static final Supplier CHICKEN_CUTS = registerWithTab("chicken_cuts", () -> new Item(foodItem(FoodValues.CHICKEN_CUTS))); - public static final RegistryObject COOKED_CHICKEN_CUTS = registerWithTab("cooked_chicken_cuts", + public static final Supplier COOKED_CHICKEN_CUTS = registerWithTab("cooked_chicken_cuts", () -> new Item(foodItem(FoodValues.COOKED_CHICKEN_CUTS))); - public static final RegistryObject BACON = registerWithTab("bacon", + public static final Supplier BACON = registerWithTab("bacon", () -> new Item(foodItem(FoodValues.BACON))); - public static final RegistryObject COOKED_BACON = registerWithTab("cooked_bacon", + public static final Supplier COOKED_BACON = registerWithTab("cooked_bacon", () -> new Item(foodItem(FoodValues.COOKED_BACON))); - public static final RegistryObject COD_SLICE = registerWithTab("cod_slice", + public static final Supplier COD_SLICE = registerWithTab("cod_slice", () -> new Item(foodItem(FoodValues.COD_SLICE))); - public static final RegistryObject COOKED_COD_SLICE = registerWithTab("cooked_cod_slice", + public static final Supplier COOKED_COD_SLICE = registerWithTab("cooked_cod_slice", () -> new Item(foodItem(FoodValues.COOKED_COD_SLICE))); - public static final RegistryObject SALMON_SLICE = registerWithTab("salmon_slice", + public static final Supplier SALMON_SLICE = registerWithTab("salmon_slice", () -> new Item(foodItem(FoodValues.SALMON_SLICE))); - public static final RegistryObject COOKED_SALMON_SLICE = registerWithTab("cooked_salmon_slice", + public static final Supplier COOKED_SALMON_SLICE = registerWithTab("cooked_salmon_slice", () -> new Item(foodItem(FoodValues.COOKED_SALMON_SLICE))); - public static final RegistryObject MUTTON_CHOPS = registerWithTab("mutton_chops", + public static final Supplier MUTTON_CHOPS = registerWithTab("mutton_chops", () -> new Item(foodItem(FoodValues.MUTTON_CHOP))); - public static final RegistryObject COOKED_MUTTON_CHOPS = registerWithTab("cooked_mutton_chops", + public static final Supplier COOKED_MUTTON_CHOPS = registerWithTab("cooked_mutton_chops", () -> new Item(foodItem(FoodValues.COOKED_MUTTON_CHOP))); - public static final RegistryObject HAM = registerWithTab("ham", + public static final Supplier HAM = registerWithTab("ham", () -> new Item(foodItem(FoodValues.HAM))); - public static final RegistryObject SMOKED_HAM = registerWithTab("smoked_ham", + public static final Supplier SMOKED_HAM = registerWithTab("smoked_ham", () -> new Item(foodItem(FoodValues.SMOKED_HAM))); // Sweets - public static final RegistryObject PIE_CRUST = registerWithTab("pie_crust", + public static final Supplier PIE_CRUST = registerWithTab("pie_crust", () -> new Item(foodItem(FoodValues.PIE_CRUST))); - public static final RegistryObject APPLE_PIE = registerWithTab("apple_pie", + public static final Supplier APPLE_PIE = registerWithTab("apple_pie", () -> new BlockItem(ModBlocks.APPLE_PIE.get(), basicItem())); - public static final RegistryObject SWEET_BERRY_CHEESECAKE = registerWithTab("sweet_berry_cheesecake", + public static final Supplier SWEET_BERRY_CHEESECAKE = registerWithTab("sweet_berry_cheesecake", () -> new BlockItem(ModBlocks.SWEET_BERRY_CHEESECAKE.get(), basicItem())); - public static final RegistryObject CHOCOLATE_PIE = registerWithTab("chocolate_pie", + public static final Supplier CHOCOLATE_PIE = registerWithTab("chocolate_pie", () -> new BlockItem(ModBlocks.CHOCOLATE_PIE.get(), basicItem())); - public static final RegistryObject CAKE_SLICE = registerWithTab("cake_slice", + public static final Supplier CAKE_SLICE = registerWithTab("cake_slice", () -> new Item(foodItem(FoodValues.CAKE_SLICE))); - public static final RegistryObject APPLE_PIE_SLICE = registerWithTab("apple_pie_slice", + public static final Supplier APPLE_PIE_SLICE = registerWithTab("apple_pie_slice", () -> new Item(foodItem(FoodValues.PIE_SLICE))); - public static final RegistryObject SWEET_BERRY_CHEESECAKE_SLICE = registerWithTab("sweet_berry_cheesecake_slice", + public static final Supplier SWEET_BERRY_CHEESECAKE_SLICE = registerWithTab("sweet_berry_cheesecake_slice", () -> new Item(foodItem(FoodValues.PIE_SLICE))); - public static final RegistryObject CHOCOLATE_PIE_SLICE = registerWithTab("chocolate_pie_slice", + public static final Supplier CHOCOLATE_PIE_SLICE = registerWithTab("chocolate_pie_slice", () -> new Item(foodItem(FoodValues.PIE_SLICE))); - public static final RegistryObject SWEET_BERRY_COOKIE = registerWithTab("sweet_berry_cookie", + public static final Supplier SWEET_BERRY_COOKIE = registerWithTab("sweet_berry_cookie", () -> new Item(foodItem(FoodValues.COOKIES))); - public static final RegistryObject HONEY_COOKIE = registerWithTab("honey_cookie", + public static final Supplier HONEY_COOKIE = registerWithTab("honey_cookie", () -> new Item(foodItem(FoodValues.COOKIES))); - public static final RegistryObject MELON_POPSICLE = registerWithTab("melon_popsicle", + public static final Supplier MELON_POPSICLE = registerWithTab("melon_popsicle", () -> new PopsicleItem(foodItem(FoodValues.POPSICLE))); - public static final RegistryObject GLOW_BERRY_CUSTARD = registerWithTab("glow_berry_custard", + public static final Supplier GLOW_BERRY_CUSTARD = registerWithTab("glow_berry_custard", () -> new ConsumableItem(foodItem(FoodValues.GLOW_BERRY_CUSTARD).craftRemainder(Items.GLASS_BOTTLE).stacksTo(16))); - public static final RegistryObject FRUIT_SALAD = registerWithTab("fruit_salad", + public static final Supplier FRUIT_SALAD = registerWithTab("fruit_salad", () -> new ConsumableItem(bowlFoodItem(FoodValues.FRUIT_SALAD), true)); // Basic Meals - public static final RegistryObject MIXED_SALAD = registerWithTab("mixed_salad", + public static final Supplier MIXED_SALAD = registerWithTab("mixed_salad", () -> new ConsumableItem(bowlFoodItem(FoodValues.MIXED_SALAD), true)); - public static final RegistryObject NETHER_SALAD = registerWithTab("nether_salad", + public static final Supplier NETHER_SALAD = registerWithTab("nether_salad", () -> new ConsumableItem(bowlFoodItem(FoodValues.NETHER_SALAD))); - public static final RegistryObject BARBECUE_STICK = registerWithTab("barbecue_stick", + public static final Supplier BARBECUE_STICK = registerWithTab("barbecue_stick", () -> new Item(foodItem(FoodValues.BARBECUE_STICK))); - public static final RegistryObject EGG_SANDWICH = registerWithTab("egg_sandwich", + public static final Supplier EGG_SANDWICH = registerWithTab("egg_sandwich", () -> new Item(foodItem(FoodValues.EGG_SANDWICH))); - public static final RegistryObject CHICKEN_SANDWICH = registerWithTab("chicken_sandwich", + public static final Supplier CHICKEN_SANDWICH = registerWithTab("chicken_sandwich", () -> new Item(foodItem(FoodValues.CHICKEN_SANDWICH))); - public static final RegistryObject HAMBURGER = registerWithTab("hamburger", + public static final Supplier HAMBURGER = registerWithTab("hamburger", () -> new Item(foodItem(FoodValues.HAMBURGER))); - public static final RegistryObject BACON_SANDWICH = registerWithTab("bacon_sandwich", + public static final Supplier BACON_SANDWICH = registerWithTab("bacon_sandwich", () -> new Item(foodItem(FoodValues.BACON_SANDWICH))); - public static final RegistryObject MUTTON_WRAP = registerWithTab("mutton_wrap", + public static final Supplier MUTTON_WRAP = registerWithTab("mutton_wrap", () -> new Item(foodItem(FoodValues.MUTTON_WRAP))); - public static final RegistryObject DUMPLINGS = registerWithTab("dumplings", + public static final Supplier DUMPLINGS = registerWithTab("dumplings", () -> new Item(foodItem(FoodValues.DUMPLINGS))); - public static final RegistryObject STUFFED_POTATO = registerWithTab("stuffed_potato", + public static final Supplier STUFFED_POTATO = registerWithTab("stuffed_potato", () -> new Item(foodItem(FoodValues.STUFFED_POTATO))); - public static final RegistryObject CABBAGE_ROLLS = registerWithTab("cabbage_rolls", + public static final Supplier CABBAGE_ROLLS = registerWithTab("cabbage_rolls", () -> new Item(foodItem(FoodValues.CABBAGE_ROLLS))); - public static final RegistryObject SALMON_ROLL = registerWithTab("salmon_roll", + public static final Supplier SALMON_ROLL = registerWithTab("salmon_roll", () -> new Item(foodItem(FoodValues.SALMON_ROLL))); - public static final RegistryObject COD_ROLL = registerWithTab("cod_roll", + public static final Supplier COD_ROLL = registerWithTab("cod_roll", () -> new Item(foodItem(FoodValues.COD_ROLL))); - public static final RegistryObject KELP_ROLL = registerWithTab("kelp_roll", + public static final Supplier KELP_ROLL = registerWithTab("kelp_roll", () -> new KelpRollItem(foodItem(FoodValues.KELP_ROLL))); - public static final RegistryObject KELP_ROLL_SLICE = registerWithTab("kelp_roll_slice", + public static final Supplier KELP_ROLL_SLICE = registerWithTab("kelp_roll_slice", () -> new Item(foodItem(FoodValues.KELP_ROLL_SLICE))); // Soups and Stews - public static final RegistryObject COOKED_RICE = registerWithTab("cooked_rice", + public static final Supplier COOKED_RICE = registerWithTab("cooked_rice", () -> new ConsumableItem(bowlFoodItem(FoodValues.COOKED_RICE), true)); - public static final RegistryObject BONE_BROTH = registerWithTab("bone_broth", + public static final Supplier BONE_BROTH = registerWithTab("bone_broth", () -> new DrinkableItem(bowlFoodItem(FoodValues.BONE_BROTH), true)); - public static final RegistryObject BEEF_STEW = registerWithTab("beef_stew", + public static final Supplier BEEF_STEW = registerWithTab("beef_stew", () -> new ConsumableItem(bowlFoodItem(FoodValues.BEEF_STEW), true)); - public static final RegistryObject CHICKEN_SOUP = registerWithTab("chicken_soup", + public static final Supplier CHICKEN_SOUP = registerWithTab("chicken_soup", () -> new ConsumableItem(bowlFoodItem(FoodValues.CHICKEN_SOUP), true)); - public static final RegistryObject VEGETABLE_SOUP = registerWithTab("vegetable_soup", + public static final Supplier VEGETABLE_SOUP = registerWithTab("vegetable_soup", () -> new ConsumableItem(bowlFoodItem(FoodValues.VEGETABLE_SOUP), true)); - public static final RegistryObject FISH_STEW = registerWithTab("fish_stew", + public static final Supplier FISH_STEW = registerWithTab("fish_stew", () -> new ConsumableItem(bowlFoodItem(FoodValues.FISH_STEW), true)); - public static final RegistryObject FRIED_RICE = registerWithTab("fried_rice", + public static final Supplier FRIED_RICE = registerWithTab("fried_rice", () -> new ConsumableItem(bowlFoodItem(FoodValues.FRIED_RICE), true)); - public static final RegistryObject PUMPKIN_SOUP = registerWithTab("pumpkin_soup", + public static final Supplier PUMPKIN_SOUP = registerWithTab("pumpkin_soup", () -> new ConsumableItem(bowlFoodItem(FoodValues.PUMPKIN_SOUP), true)); - public static final RegistryObject BAKED_COD_STEW = registerWithTab("baked_cod_stew", + public static final Supplier BAKED_COD_STEW = registerWithTab("baked_cod_stew", () -> new ConsumableItem(bowlFoodItem(FoodValues.BAKED_COD_STEW), true)); - public static final RegistryObject NOODLE_SOUP = registerWithTab("noodle_soup", + public static final Supplier NOODLE_SOUP = registerWithTab("noodle_soup", () -> new ConsumableItem(bowlFoodItem(FoodValues.NOODLE_SOUP), true)); // Plated Meals - public static final RegistryObject BACON_AND_EGGS = registerWithTab("bacon_and_eggs", + public static final Supplier BACON_AND_EGGS = registerWithTab("bacon_and_eggs", () -> new ConsumableItem(bowlFoodItem(FoodValues.BACON_AND_EGGS), true)); - public static final RegistryObject PASTA_WITH_MEATBALLS = registerWithTab("pasta_with_meatballs", + public static final Supplier PASTA_WITH_MEATBALLS = registerWithTab("pasta_with_meatballs", () -> new ConsumableItem(bowlFoodItem(FoodValues.PASTA_WITH_MEATBALLS), true)); - public static final RegistryObject PASTA_WITH_MUTTON_CHOP = registerWithTab("pasta_with_mutton_chop", + public static final Supplier PASTA_WITH_MUTTON_CHOP = registerWithTab("pasta_with_mutton_chop", () -> new ConsumableItem(bowlFoodItem(FoodValues.PASTA_WITH_MUTTON_CHOP), true)); - public static final RegistryObject MUSHROOM_RICE = registerWithTab("mushroom_rice", + public static final Supplier MUSHROOM_RICE = registerWithTab("mushroom_rice", () -> new ConsumableItem(bowlFoodItem(FoodValues.MUSHROOM_RICE), true)); - public static final RegistryObject ROASTED_MUTTON_CHOPS = registerWithTab("roasted_mutton_chops", + public static final Supplier ROASTED_MUTTON_CHOPS = registerWithTab("roasted_mutton_chops", () -> new ConsumableItem(bowlFoodItem(FoodValues.ROASTED_MUTTON_CHOPS), true)); - public static final RegistryObject VEGETABLE_NOODLES = registerWithTab("vegetable_noodles", + public static final Supplier VEGETABLE_NOODLES = registerWithTab("vegetable_noodles", () -> new ConsumableItem(bowlFoodItem(FoodValues.VEGETABLE_NOODLES), true)); - public static final RegistryObject STEAK_AND_POTATOES = registerWithTab("steak_and_potatoes", + public static final Supplier STEAK_AND_POTATOES = registerWithTab("steak_and_potatoes", () -> new ConsumableItem(bowlFoodItem(FoodValues.STEAK_AND_POTATOES), true)); - public static final RegistryObject RATATOUILLE = registerWithTab("ratatouille", + public static final Supplier RATATOUILLE = registerWithTab("ratatouille", () -> new ConsumableItem(bowlFoodItem(FoodValues.RATATOUILLE), true)); - public static final RegistryObject SQUID_INK_PASTA = registerWithTab("squid_ink_pasta", + public static final Supplier SQUID_INK_PASTA = registerWithTab("squid_ink_pasta", () -> new ConsumableItem(bowlFoodItem(FoodValues.SQUID_INK_PASTA), true)); - public static final RegistryObject GRILLED_SALMON = registerWithTab("grilled_salmon", + public static final Supplier GRILLED_SALMON = registerWithTab("grilled_salmon", () -> new ConsumableItem(bowlFoodItem(FoodValues.GRILLED_SALMON), true)); // Feasts - public static final RegistryObject ROAST_CHICKEN_BLOCK = registerWithTab("roast_chicken_block", + public static final Supplier ROAST_CHICKEN_BLOCK = registerWithTab("roast_chicken_block", () -> new BlockItem(ModBlocks.ROAST_CHICKEN_BLOCK.get(), basicItem().stacksTo(1))); - public static final RegistryObject ROAST_CHICKEN = registerWithTab("roast_chicken", + public static final Supplier ROAST_CHICKEN = registerWithTab("roast_chicken", () -> new ConsumableItem(bowlFoodItem(FoodValues.ROAST_CHICKEN), true)); - public static final RegistryObject STUFFED_PUMPKIN_BLOCK = registerWithTab("stuffed_pumpkin_block", + public static final Supplier STUFFED_PUMPKIN_BLOCK = registerWithTab("stuffed_pumpkin_block", () -> new BlockItem(ModBlocks.STUFFED_PUMPKIN_BLOCK.get(), basicItem().stacksTo(1))); - public static final RegistryObject STUFFED_PUMPKIN = registerWithTab("stuffed_pumpkin", + public static final Supplier STUFFED_PUMPKIN = registerWithTab("stuffed_pumpkin", () -> new ConsumableItem(bowlFoodItem(FoodValues.STUFFED_PUMPKIN), true)); - public static final RegistryObject HONEY_GLAZED_HAM_BLOCK = registerWithTab("honey_glazed_ham_block", + public static final Supplier HONEY_GLAZED_HAM_BLOCK = registerWithTab("honey_glazed_ham_block", () -> new BlockItem(ModBlocks.HONEY_GLAZED_HAM_BLOCK.get(), basicItem().stacksTo(1))); - public static final RegistryObject HONEY_GLAZED_HAM = registerWithTab("honey_glazed_ham", + public static final Supplier HONEY_GLAZED_HAM = registerWithTab("honey_glazed_ham", () -> new ConsumableItem(bowlFoodItem(FoodValues.HONEY_GLAZED_HAM), true)); - public static final RegistryObject SHEPHERDS_PIE_BLOCK = registerWithTab("shepherds_pie_block", + public static final Supplier SHEPHERDS_PIE_BLOCK = registerWithTab("shepherds_pie_block", () -> new BlockItem(ModBlocks.SHEPHERDS_PIE_BLOCK.get(), basicItem().stacksTo(1))); - public static final RegistryObject SHEPHERDS_PIE = registerWithTab("shepherds_pie", + public static final Supplier SHEPHERDS_PIE = registerWithTab("shepherds_pie", () -> new ConsumableItem(bowlFoodItem(FoodValues.SHEPHERDS_PIE), true)); - public static final RegistryObject RICE_ROLL_MEDLEY_BLOCK = registerWithTab("rice_roll_medley_block", + public static final Supplier RICE_ROLL_MEDLEY_BLOCK = registerWithTab("rice_roll_medley_block", () -> new BlockItem(ModBlocks.RICE_ROLL_MEDLEY_BLOCK.get(), basicItem().stacksTo(1))); // Pet Foods - public static final RegistryObject DOG_FOOD = registerWithTab("dog_food", + public static final Supplier DOG_FOOD = registerWithTab("dog_food", () -> new DogFoodItem(bowlFoodItem(FoodValues.DOG_FOOD))); - public static final RegistryObject HORSE_FEED = registerWithTab("horse_feed", + public static final Supplier HORSE_FEED = registerWithTab("horse_feed", () -> new HorseFeedItem(basicItem().stacksTo(16))); } diff --git a/src/main/java/vectorwing/farmersdelight/common/registry/ModLootFunctions.java b/src/main/java/vectorwing/farmersdelight/common/registry/ModLootFunctions.java index 129466264..4c9b29655 100644 --- a/src/main/java/vectorwing/farmersdelight/common/registry/ModLootFunctions.java +++ b/src/main/java/vectorwing/farmersdelight/common/registry/ModLootFunctions.java @@ -9,11 +9,13 @@ import vectorwing.farmersdelight.common.loot.function.CopySkilletFunction; import vectorwing.farmersdelight.common.loot.function.SmokerCookFunction; +import java.util.function.Supplier; + public class ModLootFunctions { public static final DeferredRegister LOOT_FUNCTIONS = DeferredRegister.create(BuiltInRegistries.LOOT_FUNCTION_TYPE.key(), FarmersDelight.MODID); - public static final RegistryObject COPY_MEAL = LOOT_FUNCTIONS.register("copy_meal", () -> new LootItemFunctionType(new CopyMealFunction.Serializer())); - public static final RegistryObject COPY_SKILLET = LOOT_FUNCTIONS.register("copy_skillet", () -> new LootItemFunctionType(new CopySkilletFunction.Serializer())); - public static final RegistryObject SMOKER_COOK = LOOT_FUNCTIONS.register("smoker_cook", () -> new LootItemFunctionType(new SmokerCookFunction.Serializer())); + public static final Supplier COPY_MEAL = LOOT_FUNCTIONS.register("copy_meal", () -> new LootItemFunctionType(new CopyMealFunction.Serializer())); + public static final Supplier COPY_SKILLET = LOOT_FUNCTIONS.register("copy_skillet", () -> new LootItemFunctionType(new CopySkilletFunction.Serializer())); + public static final Supplier SMOKER_COOK = LOOT_FUNCTIONS.register("smoker_cook", () -> new LootItemFunctionType(new SmokerCookFunction.Serializer())); } diff --git a/src/main/java/vectorwing/farmersdelight/common/registry/ModLootModifiers.java b/src/main/java/vectorwing/farmersdelight/common/registry/ModLootModifiers.java index c0826f56f..3dc4fa67c 100644 --- a/src/main/java/vectorwing/farmersdelight/common/registry/ModLootModifiers.java +++ b/src/main/java/vectorwing/farmersdelight/common/registry/ModLootModifiers.java @@ -14,7 +14,7 @@ public class ModLootModifiers { public static final DeferredRegister> LOOT_MODIFIERS = DeferredRegister.create(ForgeRegistries.Keys.GLOBAL_LOOT_MODIFIER_SERIALIZERS, FarmersDelight.MODID); - public static final RegistryObject> ADD_ITEM = LOOT_MODIFIERS.register("add_item", AddItemModifier.CODEC); - public static final RegistryObject> ADD_LOOT_TABLE = LOOT_MODIFIERS.register("add_loot_table", AddLootTableModifier.CODEC); - public static final RegistryObject> PASTRY_SLICING = LOOT_MODIFIERS.register("pastry_slicing", PastrySlicingModifier.CODEC); + public static final Supplier> ADD_ITEM = LOOT_MODIFIERS.register("add_item", AddItemModifier.CODEC); + public static final Supplier> ADD_LOOT_TABLE = LOOT_MODIFIERS.register("add_loot_table", AddLootTableModifier.CODEC); + public static final Supplier> PASTRY_SLICING = LOOT_MODIFIERS.register("pastry_slicing", PastrySlicingModifier.CODEC); } diff --git a/src/main/java/vectorwing/farmersdelight/common/registry/ModMenuTypes.java b/src/main/java/vectorwing/farmersdelight/common/registry/ModMenuTypes.java index d8fab5eef..bf6fa18b8 100644 --- a/src/main/java/vectorwing/farmersdelight/common/registry/ModMenuTypes.java +++ b/src/main/java/vectorwing/farmersdelight/common/registry/ModMenuTypes.java @@ -8,10 +8,12 @@ import vectorwing.farmersdelight.FarmersDelight; import vectorwing.farmersdelight.common.block.entity.container.CookingPotMenu; +import java.util.function.Supplier; + public class ModMenuTypes { public static final DeferredRegister> MENU_TYPES = DeferredRegister.create(ForgeRegistries.MENU_TYPES, FarmersDelight.MODID); - public static final RegistryObject> COOKING_POT = MENU_TYPES + public static final Supplier> COOKING_POT = MENU_TYPES .register("cooking_pot", () -> IForgeMenuType.create(CookingPotMenu::new)); } diff --git a/src/main/java/vectorwing/farmersdelight/common/registry/ModParticleTypes.java b/src/main/java/vectorwing/farmersdelight/common/registry/ModParticleTypes.java index e621c5f56..fc1eb94a0 100644 --- a/src/main/java/vectorwing/farmersdelight/common/registry/ModParticleTypes.java +++ b/src/main/java/vectorwing/farmersdelight/common/registry/ModParticleTypes.java @@ -7,12 +7,14 @@ import net.minecraftforge.registries.ForgeRegistries; import vectorwing.farmersdelight.FarmersDelight; +import java.util.function.Supplier; + public class ModParticleTypes { public static final DeferredRegister> PARTICLE_TYPES = DeferredRegister.create(ForgeRegistries.PARTICLE_TYPES, FarmersDelight.MODID); - public static final RegistryObject STAR = PARTICLE_TYPES.register("star", + public static final Supplier STAR = PARTICLE_TYPES.register("star", () -> new SimpleParticleType(true)); - public static final RegistryObject STEAM = PARTICLE_TYPES.register("steam", + public static final Supplier STEAM = PARTICLE_TYPES.register("steam", () -> new SimpleParticleType(true)); } diff --git a/src/main/java/vectorwing/farmersdelight/common/registry/ModPlacementModifiers.java b/src/main/java/vectorwing/farmersdelight/common/registry/ModPlacementModifiers.java index a7ff4c24a..091035f80 100644 --- a/src/main/java/vectorwing/farmersdelight/common/registry/ModPlacementModifiers.java +++ b/src/main/java/vectorwing/farmersdelight/common/registry/ModPlacementModifiers.java @@ -10,11 +10,13 @@ import vectorwing.farmersdelight.FarmersDelight; import vectorwing.farmersdelight.common.world.filter.BiomeTagFilter; +import java.util.function.Supplier; + public class ModPlacementModifiers { public static final DeferredRegister> PLACEMENT_MODIFIERS = DeferredRegister.create(BuiltInRegistries.PLACEMENT_MODIFIER_TYPE.key(), FarmersDelight.MODID); - public static final RegistryObject> BIOME_TAG = PLACEMENT_MODIFIERS.register("biome_tag", () -> typeConvert(BiomeTagFilter.CODEC)); + public static final Supplier> BIOME_TAG = PLACEMENT_MODIFIERS.register("biome_tag", () -> typeConvert(BiomeTagFilter.CODEC)); private static

PlacementModifierType

typeConvert(Codec

codec) { return () -> codec; diff --git a/src/main/java/vectorwing/farmersdelight/common/registry/ModRecipeSerializers.java b/src/main/java/vectorwing/farmersdelight/common/registry/ModRecipeSerializers.java index 9804d6b67..de01645fa 100644 --- a/src/main/java/vectorwing/farmersdelight/common/registry/ModRecipeSerializers.java +++ b/src/main/java/vectorwing/farmersdelight/common/registry/ModRecipeSerializers.java @@ -10,13 +10,15 @@ import vectorwing.farmersdelight.common.crafting.CuttingBoardRecipe; import vectorwing.farmersdelight.common.crafting.FoodServingRecipe; +import java.util.function.Supplier; + public class ModRecipeSerializers { public static final DeferredRegister> RECIPE_SERIALIZERS = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, FarmersDelight.MODID); - public static final RegistryObject> COOKING = RECIPE_SERIALIZERS.register("cooking", CookingPotRecipe.Serializer::new); - public static final RegistryObject> CUTTING = RECIPE_SERIALIZERS.register("cutting", CuttingBoardRecipe.Serializer::new); + public static final Supplier> COOKING = RECIPE_SERIALIZERS.register("cooking", CookingPotRecipe.Serializer::new); + public static final Supplier> CUTTING = RECIPE_SERIALIZERS.register("cutting", CuttingBoardRecipe.Serializer::new); - public static final RegistryObject> FOOD_SERVING = + public static final Supplier> FOOD_SERVING = RECIPE_SERIALIZERS.register("food_serving", () -> new SimpleCraftingRecipeSerializer<>(FoodServingRecipe::new)); } diff --git a/src/main/java/vectorwing/farmersdelight/common/registry/ModRecipeTypes.java b/src/main/java/vectorwing/farmersdelight/common/registry/ModRecipeTypes.java index 4cf05facd..d0004ba09 100644 --- a/src/main/java/vectorwing/farmersdelight/common/registry/ModRecipeTypes.java +++ b/src/main/java/vectorwing/farmersdelight/common/registry/ModRecipeTypes.java @@ -10,12 +10,14 @@ import vectorwing.farmersdelight.common.crafting.CookingPotRecipe; import vectorwing.farmersdelight.common.crafting.CuttingBoardRecipe; +import java.util.function.Supplier; + public class ModRecipeTypes { public static final DeferredRegister> RECIPE_TYPES = DeferredRegister.create(ForgeRegistries.RECIPE_TYPES, FarmersDelight.MODID); - public static final RegistryObject> COOKING = RECIPE_TYPES.register("cooking", () -> registerRecipeType("cooking")); - public static final RegistryObject> CUTTING = RECIPE_TYPES.register("cutting", () -> registerRecipeType("cutting")); + public static final Supplier> COOKING = RECIPE_TYPES.register("cooking", () -> registerRecipeType("cooking")); + public static final Supplier> CUTTING = RECIPE_TYPES.register("cutting", () -> registerRecipeType("cutting")); public static > RecipeType registerRecipeType(final String identifier) { return new RecipeType<>() diff --git a/src/main/java/vectorwing/farmersdelight/common/registry/ModSounds.java b/src/main/java/vectorwing/farmersdelight/common/registry/ModSounds.java index 8629b1fda..85b581d54 100644 --- a/src/main/java/vectorwing/farmersdelight/common/registry/ModSounds.java +++ b/src/main/java/vectorwing/farmersdelight/common/registry/ModSounds.java @@ -7,46 +7,54 @@ import net.minecraftforge.registries.ForgeRegistries; import vectorwing.farmersdelight.FarmersDelight; +import java.util.function.Supplier; + public class ModSounds { public static final DeferredRegister SOUNDS = DeferredRegister.create(ForgeRegistries.SOUND_EVENTS, FarmersDelight.MODID); // Stove - public static final RegistryObject BLOCK_STOVE_CRACKLE = SOUNDS.register("block.stove.crackle", + public static final Supplier BLOCK_STOVE_CRACKLE = SOUNDS.register("block.stove.crackle", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(FarmersDelight.MODID, "block.stove.crackle"))); // Cooking Pot - public static final RegistryObject BLOCK_COOKING_POT_BOIL = SOUNDS.register("block.cooking_pot.boil", + public static final Supplier BLOCK_COOKING_POT_BOIL = SOUNDS.register("block.cooking_pot.boil", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(FarmersDelight.MODID, "block.cooking_pot.boil"))); - public static final RegistryObject BLOCK_COOKING_POT_BOIL_SOUP = SOUNDS.register("block.cooking_pot.boil_soup", + public static final Supplier BLOCK_COOKING_POT_BOIL_SOUP = SOUNDS.register("block.cooking_pot.boil_soup", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(FarmersDelight.MODID, "block.cooking_pot.boil_soup"))); // Cutting Board - public static final RegistryObject BLOCK_CUTTING_BOARD_KNIFE = SOUNDS.register("block.cutting_board.knife", - () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(FarmersDelight.MODID, "block.cutting_board.knife"))); + public static final Supplier BLOCK_CUTTING_BOARD_PLACE = SOUNDS.register("block.cutting_board.place", + () -> new SoundEvent(new ResourceLocation(FarmersDelight.MODID, "block.cutting_board.place"))); + public static final Supplier BLOCK_CUTTING_BOARD_REMOVE = SOUNDS.register("block.cutting_board.remove", + () -> new SoundEvent(new ResourceLocation(FarmersDelight.MODID, "block.cutting_board.remove"))); + public static final Supplier BLOCK_CUTTING_BOARD_CARVE = SOUNDS.register("block.cutting_board.carve", + () -> new SoundEvent(new ResourceLocation(FarmersDelight.MODID, "block.cutting_board.carve"))); + public static final Supplier BLOCK_CUTTING_BOARD_KNIFE = SOUNDS.register("block.cutting_board.knife", + () -> new SoundEvent(new ResourceLocation(FarmersDelight.MODID, "block.cutting_board.knife"))); // Cabinet - public static final RegistryObject BLOCK_CABINET_OPEN = SOUNDS.register("block.cabinet.open", + public static final Supplier BLOCK_CABINET_OPEN = SOUNDS.register("block.cabinet.open", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(FarmersDelight.MODID, "block.cabinet.open"))); - public static final RegistryObject BLOCK_CABINET_CLOSE = SOUNDS.register("block.cabinet.close", + public static final Supplier BLOCK_CABINET_CLOSE = SOUNDS.register("block.cabinet.close", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(FarmersDelight.MODID, "block.cabinet.close"))); // Skillet - public static final RegistryObject BLOCK_SKILLET_SIZZLE = SOUNDS.register("block.skillet.sizzle", + public static final Supplier BLOCK_SKILLET_SIZZLE = SOUNDS.register("block.skillet.sizzle", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(FarmersDelight.MODID, "block.skillet.sizzle"))); - public static final RegistryObject BLOCK_SKILLET_ADD_FOOD = SOUNDS.register("block.skillet.add_food", + public static final Supplier BLOCK_SKILLET_ADD_FOOD = SOUNDS.register("block.skillet.add_food", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(FarmersDelight.MODID, "block.skillet.add_food"))); - public static final RegistryObject ITEM_SKILLET_ATTACK_STRONG = SOUNDS.register("item.skillet.attack.strong", + public static final Supplier ITEM_SKILLET_ATTACK_STRONG = SOUNDS.register("item.skillet.attack.strong", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(FarmersDelight.MODID, "item.skillet.attack.strong"))); - public static final RegistryObject ITEM_SKILLET_ATTACK_WEAK = SOUNDS.register("item.skillet.attack.weak", + public static final Supplier ITEM_SKILLET_ATTACK_WEAK = SOUNDS.register("item.skillet.attack.weak", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(FarmersDelight.MODID, "item.skillet.attack.weak"))); // Tomato Bush - public static final RegistryObject ITEM_TOMATO_PICK_FROM_BUSH = SOUNDS.register("block.tomato_bush.pick_tomatoes", + public static final Supplier ITEM_TOMATO_PICK_FROM_BUSH = SOUNDS.register("block.tomato_bush.pick_tomatoes", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(FarmersDelight.MODID, "block.tomato_bush.pick_tomatoes"))); - public static final RegistryObject ENTITY_ROTTEN_TOMATO_THROW = SOUNDS.register("entity.rotten_tomato.throw", + public static final Supplier ENTITY_ROTTEN_TOMATO_THROW = SOUNDS.register("entity.rotten_tomato.throw", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(FarmersDelight.MODID, "entity.rotten_tomato.throw"))); - public static final RegistryObject ENTITY_ROTTEN_TOMATO_HIT = SOUNDS.register("entity.rotten_tomato.hit", + public static final Supplier ENTITY_ROTTEN_TOMATO_HIT = SOUNDS.register("entity.rotten_tomato.hit", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(FarmersDelight.MODID, "entity.rotten_tomato.hit"))); } diff --git a/src/main/resources/assets/farmersdelight/models/item/skillet.json b/src/main/resources/assets/farmersdelight/models/item/skillet.json index 3670c9139..120b5e421 100644 --- a/src/main/resources/assets/farmersdelight/models/item/skillet.json +++ b/src/main/resources/assets/farmersdelight/models/item/skillet.json @@ -1,5 +1,13 @@ { "parent": "farmersdelight:block/skillet", + "overrides": [ + { + "predicate": { + "cooking": 1 + }, + "model": "farmersdelight:item/skillet_cooking" + } + ], "display": { "thirdperson_righthand": { "rotation": [90, 0, 80], diff --git a/src/main/resources/assets/farmersdelight/models/item/skillet_cooking.json b/src/main/resources/assets/farmersdelight/models/item/skillet_cooking.json index bfd64aa7d..12c4b98e1 100644 --- a/src/main/resources/assets/farmersdelight/models/item/skillet_cooking.json +++ b/src/main/resources/assets/farmersdelight/models/item/skillet_cooking.json @@ -1,5 +1,5 @@ { - "parent": "farmersdelight:block/skillet", + "parent": "builtin/entity", "display": { "thirdperson_righthand": { "rotation": [70, 0, 0],