Ignorer la navigation

setBlockWithBlocData

setBockWithBlocData ( X, Y, Z, Material, BlockData) - version 2.2 et plus

Place un bloc  Material  simple , AVEC ses Blockdata (doonées de bloc) particulières (voir : https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html pour la liste disponible) en X, Y, Z

Attention la syntaxe des blockdata est très particulière et complexe et doit être expressément respectée sous peine d'erreur java et arrêt du programme Python.

Exemples :

minecraft:hay_block[axis=y]

minecraft:ladder[facing=north,waterlogged=false]

minecraft:oak_log[axis=y]

minecraft:grass_block[snowy=false]

Cette instruction est aussi puissante que difficile à utiliser !

Il est a noter également que cette structure est susceptible de changer entre les différentes versions de serveur. Par exemple pour le block de type : STONE_BRICK_WALL, dans la version  de serveur 1.15.1, ce bloc est classé parmi les blocs de type BlockData "Fence" avec une structure de la forme : stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false].

Dans la version 1.16.1, ce bloc a été déplacé parmi les blocs de type BlockData "Wall" avec une structure de la forme : minecraft:stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=none]

X, Y, Z sont les coordonnées où placer le bloc

Material est le nom du bloc à placer (voir la dernière version : https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html)

X : int

Y : int

Z : int

Material : str - écrire en majuscule "AIR"

BlockData : str - données de bloc. Il est impératif de respecter la syntaxe associée à chaque bloc et correspondant à son BlockData particulier (Fence, Wall, Orientable, Snowable, ...). Il est impossible d'en donner une structure pour chaque type, d'autant que selon les version de serveurs, celle-ci est amenée à évoluer (voir l'exemple de STONE_BRICK_WALL) donnée plus haut.

Exemple Python :

""" Construction d'une porte de hobbit avec
SetBlockWithDataBlock(X,Y,Z, Material, Datablock)
pour serveur version 1.15.1 et plus """

from mcse.minecraft import Minecraft

# mc = Minecraft.create() # pour connexion en local
# 192.168.0.20 ou 192.168.0.21
# mc = Minecraft.create("192.168.0.20")  # pour connexion sur le raspberry pi3
mc = Minecraft.create("192.168.0.40")  # pour connexion sur le raspberry pi4

# Saisir les coordonnées du bloc de début
print("saisir les coordonnées du premier bloc : ")
x = int(input('Position en x (est - ouest) :'))
z = int(input('Position en z (sud - nord) = '))
y = int(input('Altitude y = '))

material = "COBBLESTONE"
blockdata = "minecraft:cobblestone"
mc.setBlockWithBlocData(x,y+1,z,material,blockdata)
mc.setBlockWithBlocData(x+4,y+1,z,material,blockdata)

material = "COBBLESTONE_STAIRS"
blockdata="minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]"
mc.setBlockWithBlocData(x,y,z,material,blockdata)
mc.setBlockWithBlocData(x+3,y+2,z,material,blockdata)

blockdata="minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]"
mc.setBlockWithBlocData(x,y+2,z,material,blockdata)
mc.setBlockWithBlocData(x+3,y,z,material,blockdata)

blockdata = "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]"
mc.setBlockWithBlocData(x+1,y,z,material,blockdata)
mc.setBlockWithBlocData(x+4,y+2,z,material,blockdata)

blockdata = "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]"
mc.setBlockWithBlocData(x+1,y+2,z,material,blockdata)
mc.setBlockWithBlocData(x+4,y,z,material,blockdata)

material = "COBBLESTONE_SLAB"
blockdata = "minecraft:cobblestone_slab[type=bottom,waterlogged=false]"
mc.setBlockWithBlocData(x+1,y+3,z,material,blockdata)
mc.setBlockWithBlocData(x+3,y+3,z,material,blockdata)

blockdata = "minecraft:cobblestone_slab[type=double,waterlogged=false]"
mc.setBlockWithBlocData(x+2,y+3,z,material,blockdata)


material = "GREEN_TERRACOTTA"
blockdata = "minecraft:green_terracotta"
mc.setBlockWithBlocData(x+1,y,z+1,material,blockdata)
mc.setBlockWithBlocData(x+1,y+1,z+1,material,blockdata)
mc.setBlockWithBlocData(x+1,y+2,z+1,material,blockdata)
mc.setBlockWithBlocData(x+2,y+2,z+1,material,blockdata)
mc.setBlockWithBlocData(x+3,y+1,z+1,material,blockdata)
mc.setBlockWithBlocData(x+3,y+2,z+1,material,blockdata)
mc.setBlockWithBlocData(x+3,y,z+1,material,blockdata)


material = "OAK_LOG"
blockdata = "oak_log[axis=y]"
mc.setBlockWithBlocData(x+4,y,z+1,material,blockdata)
mc.setBlockWithBlocData(x+4,y+1,z+1,material,blockdata)

material = "DARK_OAK_DOOR"
blockdata = "minecraft:dark_oak_door[facing=north,half=upper,hinge=left,open=false,powered=false]"
mc.setBlockWithBlocData(x+2,y+1,z+1,material,blockdata)
blockdata = "minecraft:dark_oak_door[facing=north,half=lower,hinge=left,open=false,powered=false]"
mc.setBlockWithBlocData(x+2,y,z+1,material,blockdata)