title: I created a block for fabric 1.18.1 and it doesn't show up in game at all
body: <p>I created a block in IntelliJ and ran the client and the game came up with no errors but the block is not there in inventory or with commands.</p>
  <p>The idea of the block is to create piles of gold coins that work like pickles where you can place multiple on a block.</p>
  <p>Please take a look at my code and help me understand why it won't show up.</p>
  <p>Here is my code for the block itself:</p>
  <pre><code>`package net.runic.runicscurrencymod.block.custom;
  
  import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
  import net.minecraft.block.*;
  import net.minecraft.entity.ai.pathing.NavigationType;
  import net.minecraft.fluid.FluidState;
  import net.minecraft.fluid.Fluids;
  import net.minecraft.item.ItemPlacementContext;
  import net.minecraft.server.world.ServerWorld;
  import net.minecraft.state.StateManager;
  import net.minecraft.state.property.BooleanProperty;
  import net.minecraft.state.property.IntProperty;
  import net.minecraft.state.property.Properties;
  import net.minecraft.tag.BlockTags;
  import net.minecraft.util.math.BlockPos;
  import net.minecraft.util.math.Direction;
  import net.minecraft.util.shape.VoxelShape;
  import net.minecraft.world.BlockView;
  import net.minecraft.world.World;
  import net.minecraft.world.WorldAccess;
  import net.minecraft.world.WorldView;
  import org.jetbrains.annotations.Nullable;
  import java.util.Random;
  
  public class GoldCoinPile extends Block {
      public GoldCoinPile(Settings settings) {
          super(settings);
          this.setDefaultState((BlockState)((BlockState)((BlockState)this.stateManager.getDefaultState()).with(PILES, 1)).with(WATERLOGGED, true));
  }
      public static final int MAX_PILES = 4;
      public static final IntProperty PILES = net.runic.runicscurrencymod.state.Properties.PILES;
      public static final BooleanProperty WATERLOGGED = Properties.WATERLOGGED;
      protected static final VoxelShape ONE_PILE_SHAPE = Block.createCuboidShape(6.0, 0.0, 6.0, 10.0, 6.0, 10.0);
      protected static final VoxelShape TWO_PILES_SHAPE = Block.createCuboidShape(3.0, 0.0, 3.0, 13.0, 6.0, 13.0);
      protected static final VoxelShape THREE_PILES_SHAPE = Block.createCuboidShape(2.0, 0.0, 2.0, 14.0, 6.0, 14.0);
      protected static final VoxelShape FOUR_PILES_SHAPE = Block.createCuboidShape(2.0, 0.0, 2.0, 14.0, 7.0, 14.0);
  
  
  
      @Override
      @Nullable
      public BlockState getPlacementState(ItemPlacementContext ctx) {
          BlockState blockState = ctx.getWorld().getBlockState(ctx.getBlockPos());
          if (blockState.isOf(this)) {
              return (BlockState)blockState.with(PILES, Math.min(4, blockState.get(PILES) + 1));
          }
          FluidState fluidState = ctx.getWorld().getFluidState(ctx.getBlockPos());
          boolean bl = fluidState.getFluid() == Fluids.WATER;
          return (BlockState)super.getPlacementState(ctx).with(WATERLOGGED, bl);
      }
  
      public static boolean isDry(BlockState state) {
          return state.get(WATERLOGGED) == false;
      }
  
      @Override
      public boolean canReplace(BlockState state, ItemPlacementContext context) {
          if (!context.shouldCancelInteraction() &amp;&amp; context.getStack().isOf(this.asItem()) &amp;&amp; state.get(PILES) &lt; 4) {
              return true;
          }
          return super.canReplace(state, context);
      }
  
      @Override
      public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) {
          switch (state.get(PILES)) {
              default: {
                  return ONE_PILE_SHAPE;
              }
              case 2: {
                  return TWO_PILES_SHAPE;
              }
              case 3: {
                  return THREE_PILES_SHAPE;
              }
              case 4: 
          }
          return FOUR_PILES_SHAPE;
      }
  
      @Override
      public FluidState getFluidState(BlockState state) {
          if (state.get(WATERLOGGED).booleanValue()) {
              return Fluids.WATER.getStill(false);
          }
          return super.getFluidState(state);
      }
  
      @Override
      protected void appendProperties(StateManager.Builder&lt;Block, BlockState&gt; builder) {
          builder.add(PILES, WATERLOGGED);
      }
  
  
      @Override
      public boolean canPathfindThrough(BlockState state, BlockView world, BlockPos pos, NavigationType type) {
          return false;
      }
  }
  `
  
  </code></pre>
  <p>I created the piles property with a Properties.java and the code inside it is this:</p>
  <pre><code>/*
   * Decompiled with CFR 0.0.9 (FabricMC cc05e23f).
   */
  package net.runic.runicscurrencymod.state;
  
  import net.minecraft.block.enums.*;
  import net.minecraft.state.property.BooleanProperty;
  import net.minecraft.state.property.DirectionProperty;
  import net.minecraft.state.property.EnumProperty;
  import net.minecraft.state.property.IntProperty;
  import net.minecraft.util.math.Direction;
  
  public class Properties {
  
     ``` public static final IntProperty PILES = IntProperty.of(name:&quot;piles&quot;,min:1,max:4);
  
  </code></pre>
  <p>And in the mod block file i registered it like this:</p>
  <pre><code>public static final Block GOLD_COIN_PILE = registerBlock(&quot;gold_coin_pile&quot;,
              new GoldCoinPile(FabricBlockSettings.of(Material.METAL).strength(6f)), ItemGroup.MISC); 
  </code></pre>
  <p>In the blockstates folder I have a gold_coin_pile.json that says:</p>
  <pre><code>{
    &quot;variants&quot;: {
  
      &quot;piles=1&quot;: [
        {
          &quot;model&quot;: &quot;minecraft:block/gold_coin_pile&quot;
        },
        {
          &quot;model&quot;: &quot;minecraft:block/gold_coin_pile&quot;,
          &quot;y&quot;: 90
        },
        {
          &quot;model&quot;: &quot;minecraft:block/gold_coin_pile&quot;,
          &quot;y&quot;: 180
        },
        {
          &quot;model&quot;: &quot;minecraft:block/gold_coin_pile&quot;,
          &quot;y&quot;: 270
        }
      ],
  
      &quot;piles=2&quot;: [
        {
          &quot;model&quot;: &quot;minecraft:block/two_gold_coin_piles&quot;
        },
        {
          &quot;model&quot;: &quot;minecraft:block/two_gold_coin_piles&quot;,
          &quot;y&quot;: 90
        },
        {
          &quot;model&quot;: &quot;minecraft:block/two_gold_coin_piles&quot;,
          &quot;y&quot;: 180
        },
        {
          &quot;model&quot;: &quot;minecraft:block/two_gold_coin_piles&quot;,
          &quot;y&quot;: 270
        }
      ],
  
      &quot;piles=3&quot;: [
        {
          &quot;model&quot;: &quot;minecraft:block/three_gold_coin_piles&quot;
        },
        {
          &quot;model&quot;: &quot;minecraft:block/three_gold_coin_piles&quot;,
          &quot;y&quot;: 90
        },
        {
          &quot;model&quot;: &quot;minecraft:block/three_gold_coin_piles&quot;,
          &quot;y&quot;: 180
        },
        {
          &quot;model&quot;: &quot;minecraft:block/three_gold_coin_piles&quot;,
          &quot;y&quot;: 270
        }
      ],
  
      &quot;piles=4&quot;: [
        {
          &quot;model&quot;: &quot;minecraft:block/four_gold_coin_piles&quot;
        },
        {
          &quot;model&quot;: &quot;minecraft:block/four_gold_coin_piles&quot;,
          &quot;y&quot;: 90
        },
        {
          &quot;model&quot;: &quot;minecraft:block/four_gold_coin_piles&quot;,
          &quot;y&quot;: 180
        },
        {
          &quot;model&quot;: &quot;minecraft:block/four_gold_coin_piles&quot;,
          &quot;y&quot;: 270
        }
      ]
    }
  }
  </code></pre>
  <p>In the actual blocks folder I have four json files for each of the blockstates but here is the one for just 1 pile (if you need all 4 lmk)</p>
  <pre><code>{
      &quot;parent&quot;: &quot;block/block&quot;,
      &quot;textures&quot;: {
          &quot;particle&quot;: &quot;block/gold_coin_pile&quot;,
          &quot;all&quot;: &quot;block/gold_coin_pile&quot;
      },
      &quot;elements&quot;: [
          {   &quot;from&quot;: [ 6, 0, 6 ],
              &quot;to&quot;: [ 10, 6, 10 ],
              &quot;faces&quot;: {
                  &quot;down&quot;:  { &quot;uv&quot;: [  8, 1,  12, 5 ], &quot;texture&quot;: &quot;#all&quot;, &quot;cullface&quot;: &quot;down&quot; },
                  &quot;up&quot;:    { &quot;uv&quot;: [  4, 1,  8, 5 ], &quot;texture&quot;: &quot;#all&quot; },
                  &quot;north&quot;: { &quot;uv&quot;: [ 4, 5, 8, 11 ], &quot;texture&quot;: &quot;#all&quot; },
                  &quot;south&quot;: { &quot;uv&quot;: [ 0, 5, 4, 11 ], &quot;texture&quot;: &quot;#all&quot; },
                  &quot;west&quot;:  { &quot;uv&quot;: [ 8, 5, 12, 11 ], &quot;texture&quot;: &quot;#all&quot; },
                  &quot;east&quot;:  { &quot;uv&quot;: [ 12, 5, 16, 11 ], &quot;texture&quot;: &quot;#all&quot; }
              }
          },
          {
              &quot;from&quot;: [ 6, 5.95, 6 ],
              &quot;to&quot;: [ 10, 5.95, 10 ],
              &quot;faces&quot;: {
                  &quot;up&quot;: {&quot;uv&quot;: [  8, 1,  12, 5 ], &quot;texture&quot;: &quot;#all&quot;}
              }
          },
          {
              &quot;from&quot;: [ 7.5, 5.2, 8 ],
              &quot;to&quot;: [ 8.5, 8.7, 8 ],
              &quot;rotation&quot;: { &quot;origin&quot;: [ 8, 8, 8 ], &quot;axis&quot;: &quot;y&quot;, &quot;angle&quot;: 45, &quot;rescale&quot;: true },
              &quot;shade&quot;: false,
              &quot;faces&quot;: {
                  &quot;north&quot;: { &quot;uv&quot;: [ 1, 0, 3, 5 ], &quot;texture&quot;: &quot;#all&quot; },
                  &quot;south&quot;: { &quot;uv&quot;: [ 3, 0, 1, 5 ], &quot;texture&quot;: &quot;#all&quot; }
              }
          },
          {
              &quot;from&quot;: [ 8, 5.2, 7.5 ],
              &quot;to&quot;: [ 8, 8.7, 8.5 ],
              &quot;rotation&quot;: { &quot;origin&quot;: [ 8, 8, 8 ], &quot;axis&quot;: &quot;y&quot;, &quot;angle&quot;: 45, &quot;rescale&quot;: true },
              &quot;shade&quot;: false,
              &quot;faces&quot;: {
                  &quot;west&quot;: { &quot;uv&quot;: [ 13, 0, 15, 5 ], &quot;texture&quot;: &quot;#all&quot; },
                  &quot;east&quot;: { &quot;uv&quot;: [ 15, 0, 13, 5 ], &quot;texture&quot;: &quot;#all&quot; }
              }
          }
      ]
  }
  </code></pre>
  <p>In the en_us.json lang file I have it like this:</p>
  <pre><code>&quot;block.runicscurrencymod.gold_coin_pile&quot;: &quot;Pile of Gold Coins&quot;, 
  </code></pre>
  <p>And then I have the gold_coin_pile.png file in textures.</p>
  <p>I'm not sure what's going on but it won't show up in game at all.</p>