Jump to content

[1.19.2] drop from block based on BlockStateProperties.AGE_3


perromercenary00

Recommended Posts

good days guys
i cannot manage how to solve this issue 

i made a manhole block whit a little animation for open and close i control the animation state whit the property age_3 
so if its 0 the block is fully closed and if its 3 then is fully open 

thinking about it i end making two version of the block one whit the manhole on an the other without manhole  and a third block only whit the manhole cover 

trapdoor_manhole_hole

trapdoor_manhole_block

manhole_cover_panel

 


i wan it to behave way than if is age=0  fully closed it must to drop a trapdoor_manhole_block the version whit the manhole on 

but if is (age > 0 )than one it must drop trapdoor_manhole_hole  and leave behind the cover  manhole_cover_panel  next to it 

 

this is the code i get from the oak slab im trying to change to suit mi needs but no avail it is just wrong and dont drops anything 

	{
  "type": "minecraft:block",
  "pools": [
    {
      "bonus_rolls": 0.0,
      "entries": [
        {
          "type": "minecraft:item",
          "functions": [
            {
              "add": false,
              "conditions": [
                {
                  "block": "basemmod:manhole_gravel_block",
                  "condition": "minecraft:block_state_property",
                  "properties": {
                    "age": "0"
                  }
                }
              ],
              "count": 1.0,
              "function": "minecraft:set_count"
            },
            {
              "function": "minecraft:explosion_decay"
            }
          ],
          "name": "basemmod:manhole_gravel_hole"
        }
      ],
      "rolls": 1.0
    }
  ]
}
	

 

is this the right approach or how i made a loot table suited for mi block ? 



 

 

 




 

Link to comment
Share on other sites

Your question is pretty much unanswerable. You don't show all the relevant code and the description of what are doing is very confused/contradictory.

 

 

I can suggest the following previously asked question since you seem to want to save block properties in your dropped loot?

https://forums.minecraftforge.net/topic/116437-1192-saving-blockstate-properties-in-itemstack-and-other-way-around/#comment-514095

https://github.com/misode/mcmeta/blob/data/data/minecraft/loot_tables/blocks/bee_nest.json

If you want to do something more complicated than what is provided by vanilla minecraft, you can always write your own LootItem(Conditional)Function and/or LootItemCondition

 

 

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Link to comment
Share on other sites

Ok I understand the question now, but you don't still show nearly enough information to give you a definitive answer.

I can tell you the slab's loot tables doesn't drop different items. It drops different amounts of the same item based on the block state.

 

Here's a simple example where I have changed the redstone lamp to drop either a diamond or an emerald depending upon whether it is lit.

Note;

* the use of multiple (mutually exclusive) pools

* the use of minecraft:inverted to do a kind of else/not logic.

data/minecraft/loot_tables/blocks/redstone_lamp.json

{
  "type": "minecraft:block",
  "pools": [
    {
      "bonus_rolls": 0.0,
      "rolls": 1.0,
      "conditions": [
        {
          "block": "minecraft:redstone_lamp",
          "condition": "minecraft:block_state_property",
          "properties": {
            "lit": "true"
          }
        }
      ],
      "entries": [
        {
          "type": "minecraft:item",
          "name": "minecraft:diamond"
        }
      ]
    },
    {
      "bonus_rolls": 0.0,
      "rolls": 1.0,
      "conditions": [
        {
          "condition": "minecraft:inverted",
          "term": {
            "block": "minecraft:redstone_lamp",
            "condition": "minecraft:block_state_property",
            "properties": {
              "lit": "true"
            }
          }
        }
      ],
      "entries": [
        {
          "type": "minecraft:item",
          "name": "minecraft:emerald"
        }
      ]
    }
  ]
}

 

Edited by warjort

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • They were already updated, and just to double check I even did a cleanup and fresh update from that same page. I'm quite sure drivers are not the problem here. 
    • i tried downloading the drivers but it says no AMD graphics hardware has been detected    
    • Update your AMD/ATI drivers - get the drivers from their website - do not update via system  
    • As the title says i keep on crashing on forge 1.20.1 even without any mods downloaded, i have the latest drivers (nvidia) and vanilla minecraft works perfectly fine for me logs: https://pastebin.com/5UR01yG9
    • Hello everyone, I'm making this post to seek help for my modded block, It's a special block called FrozenBlock supposed to take the place of an old block, then after a set amount of ticks, it's supposed to revert its Block State, Entity, data... to the old block like this :  The problem I have is that the system breaks when handling multi blocks (I tried some fix but none of them worked) :  The bug I have identified is that the function "setOldBlockFields" in the item's "setFrozenBlock" function gets called once for the 1st block of multiblock getting frozen (as it should), but gets called a second time BEFORE creating the first FrozenBlock with the data of the 1st block, hence giving the same data to the two FrozenBlock :   Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=head] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@73681674 BlockEntityData : id:"minecraft:bed",x:3,y:-60,z:-6} Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=3, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=2, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} here is the code inside my custom "freeze" item :    @Override     public @NotNull InteractionResult useOn(@NotNull UseOnContext pContext) {         if (!pContext.getLevel().isClientSide() && pContext.getHand() == InteractionHand.MAIN_HAND) {             BlockPos blockPos = pContext.getClickedPos();             BlockPos secondBlockPos = getMultiblockPos(blockPos, pContext.getLevel().getBlockState(blockPos));             if (secondBlockPos != null) {                 createFrozenBlock(pContext, secondBlockPos);             }             createFrozenBlock(pContext, blockPos);             return InteractionResult.SUCCESS;         }         return super.useOn(pContext);     }     public static void createFrozenBlock(UseOnContext pContext, BlockPos blockPos) {         BlockState oldState = pContext.getLevel().getBlockState(blockPos);         BlockEntity oldBlockEntity = oldState.hasBlockEntity() ? pContext.getLevel().getBlockEntity(blockPos) : null;         CompoundTag oldBlockEntityData = oldState.hasBlockEntity() ? oldBlockEntity.serializeNBT() : null;         if (oldBlockEntity != null) {             pContext.getLevel().removeBlockEntity(blockPos);         }         BlockState FrozenBlock = setFrozenBlock(oldState, oldBlockEntity, oldBlockEntityData);         pContext.getLevel().setBlockAndUpdate(blockPos, FrozenBlock);     }     public static BlockState setFrozenBlock(BlockState blockState, @Nullable BlockEntity blockEntity, @Nullable CompoundTag blockEntityData) {         BlockState FrozenBlock = BlockRegister.FROZEN_BLOCK.get().defaultBlockState();         ((FrozenBlock) FrozenBlock.getBlock()).setOldBlockFields(blockState, blockEntity, blockEntityData);         return FrozenBlock;     }  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.