CatalogType vers BlockState


#1

[FR]
Bonjour, ce code fonctionne pas, il ne place pas le bloc, une solution ?

[google trad]
Hello, this code does not work, it does not place the block, a solution?

    Player player = (Player) sender;
    CatalogType bloc = args.<CatalogType>getOne("bloc").get();
    String blocId = bloc.getId();

    getLogger().debug(blocId);

    if(getGame().getRegistry().getType(BlockState.class, blocId).isPresent()) {
        Sponge.getLogger().debug("Bloc placé");
        BlockState b = Sponge.getGame().getRegistry().getType(BlockState.class, blocId).get();

        Location<World> location = new Location<World>(player.getWorld(), player.getPosition().sub(0, 0, 1));
        location.setBlock(b);
    } else {
        Sponge.getLogger().debug("Error");
    }

#2

You can request a specific argument of BlockState instead of CatalogType, that way you have tab completion for the player to use to get the desired block state.

So in code:

Player player = (Player) sender;
BlockState state = args.<BlockState>getOne("bloc").get();
player.getLocation().sub(0,0,1).setBlock(state);

Can’t remember if Location specifically. has methods like that, but that should work in theory.


#3

Avec ceci ?

.arguments(GenericArguments.onlyOne(GenericArguments.catalogedElement(Text.of(“bloc”), CatalogTypes.BLOCK_TYPE)))


#4

Yep, that will work.

Oui, ça va marcher.


#5

Cela ne fonctionne pas:

BlockState state = args.<BlockState>getOne(“bloc”).get();

.arguments(GenericArguments.onlyOne(GenericArguments.catalogedElement(Text.of(“bloc”), CatalogTypes.BLOCK_TYPE)))

Error occurred while executing command ‘test3 minecraft:stone’ for source EntityPlayerMP[‘SimonBHB’/353, l=‘monde’, x=-109,97, y=67,00, z=293,01]: net.minecraft.block.BlockStone cannot be cast to org.spongepowered.api.block.BlockState
java.lang.ClassCastException: net.minecraft.block.BlockStone cannot be cast to org.spongepowered.api.block.BlockState


#6

Remplace CatalogTypes.BLOCK_TYPE par BlockState.class


#7

Ca fonctionne, mais quand j’appuie sur la touche tab ça écrit tout seul: /test3 minecraft: et le jeu crash.