Frost Walker
-
Je voudrais refaire l’enchante Frost Walker mais je n’arrive pas a recuperer le code de minecraft et je n’ai pas vu sur le forum comment faire,
ce qu’il me manque c’est savoir quelles methodes et event (ou meme plus ) utiliser pour le faire. -
PlayerEvent.TickEvent, et tu dois créer l’enchantement frost walker
-
@‘BrokenSwing’:
PlayerEvent.TickEvent, et tu dois créer l’enchantement frost walker
Ok mais comment faire pour dire que ça remplace une zone d’eau de 5*5 autour de joueurs et que ça dispawn au bout de 5s
-
Utilises les ChunkCoordinates pour stocker les positions des 5 blocks sous le joueur.
Pour récupérer la position du block sous le joueur, suffit de faire une troncature sur ses positions. (Math.floor(pos))
Ensuite tu récupères les autres blocks à partir des coordonnées de celui ci.
Tu créer une liste (ou tableau) nommée lastFrostChunkCoordinates, et si les positions d’un block est différent sur le remplace par de l’eau. -
L’avantage d’éclipe c’est de pouvoir installer plusieurs version de Forge.
Ducoup, on peu voir le code sources des versions ultérieur.
Ici, la fonction qui permet de Freeze l’eau en 1.10 (EnchantementFrostWalker.class)public static void freezeNearby(EntityLivingBase living, World worldIn, BlockPos pos, int level) { if (living.onGround) { float f = (float)Math.min(16, 2 + level); BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(0, 0, 0); for (BlockPos.MutableBlockPos blockpos$mutableblockpos1 : BlockPos.getAllInBoxMutable(pos.add((double)(-f), -1.0D, (double)(-f)), pos.add((double)f, -1.0D, (double)f))) { if (blockpos$mutableblockpos1.distanceSqToCenter(living.posX, living.posY, living.posZ) <= (double)(f * f)) { blockpos$mutableblockpos.setPos(blockpos$mutableblockpos1.getX(), blockpos$mutableblockpos1.getY() + 1, blockpos$mutableblockpos1.getZ()); IBlockState iblockstate = worldIn.getBlockState(blockpos$mutableblockpos); if (iblockstate.getMaterial() == Material.AIR) { IBlockState iblockstate1 = worldIn.getBlockState(blockpos$mutableblockpos1); if (iblockstate1.getMaterial() == Material.WATER && ((Integer)iblockstate1.getValue(BlockLiquid.LEVEL)).intValue() == 0 && worldIn.canBlockBePlaced(Blocks.FROSTED_ICE, blockpos$mutableblockpos1, false, EnumFacing.DOWN, (Entity)null, (ItemStack)null)) { worldIn.setBlockState(blockpos$mutableblockpos1, Blocks.FROSTED_ICE.getDefaultState()); worldIn.scheduleUpdate(blockpos$mutableblockpos1.toImmutable(), Blocks.FROSTED_ICE, MathHelper.getRandomIntegerInRange(living.getRNG(), 60, 120)); } } } } }
De la tu peu observer tous les code sources. Les class qui n’existe pas, tu dois te débrouillé à les changer (ex : cette fonction est appeler par l’update de l’entité, tu dois donc l’ajouté dans l’event d’update d’entité).
Cela nécessiste un peu de recherche, mais tu as tout disponible sur le code sources de Minecraft. -
@‘Jodge’:
L’avantage d’éclipe c’est de pouvoir installer plusieurs version de Forge.
Ducoup, on peu voir le code sources des versions ultérieur.
Ici, la fonction qui permet de Freeze l’eau en 1.10 (EnchantementFrostWalker.class)public static void freezeNearby(EntityLivingBase living, World worldIn, BlockPos pos, int level) { if (living.onGround) { float f = (float)Math.min(16, 2 + level); BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(0, 0, 0); for (BlockPos.MutableBlockPos blockpos$mutableblockpos1 : BlockPos.getAllInBoxMutable(pos.add((double)(-f), -1.0D, (double)(-f)), pos.add((double)f, -1.0D, (double)f))) { if (blockpos$mutableblockpos1.distanceSqToCenter(living.posX, living.posY, living.posZ) <= (double)(f * f)) { blockpos$mutableblockpos.setPos(blockpos$mutableblockpos1.getX(), blockpos$mutableblockpos1.getY() + 1, blockpos$mutableblockpos1.getZ()); IBlockState iblockstate = worldIn.getBlockState(blockpos$mutableblockpos); if (iblockstate.getMaterial() == Material.AIR) { IBlockState iblockstate1 = worldIn.getBlockState(blockpos$mutableblockpos1); if (iblockstate1.getMaterial() == Material.WATER && ((Integer)iblockstate1.getValue(BlockLiquid.LEVEL)).intValue() == 0 && worldIn.canBlockBePlaced(Blocks.FROSTED_ICE, blockpos$mutableblockpos1, false, EnumFacing.DOWN, (Entity)null, (ItemStack)null)) { worldIn.setBlockState(blockpos$mutableblockpos1, Blocks.FROSTED_ICE.getDefaultState()); worldIn.scheduleUpdate(blockpos$mutableblockpos1.toImmutable(), Blocks.FROSTED_ICE, MathHelper.getRandomIntegerInRange(living.getRNG(), 60, 120)); } } } } }
De la tu peu observer tous les code sources. Les class qui n’existe pas, tu dois te débrouillé à les changer (ex : cette fonction est appeler par l’update de l’entité, tu dois donc l’ajouté dans l’event d’update d’entité).
Cela nécessiste un peu de recherche, mais tu as tout disponible sur le code sources de Minecraft.ok daccord je comprends pourquoi j’avais pas trouvé je croyais que c’etait en 1.9 x)
-
package fr.yahoo.mehdiboussalem.mehdmod.common; import net.minecraft.block.BlockLiquid; import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class EnchantementMod { public static void freezeNearby(EntityLivingBase living, World worldIn, BlockPos pos, int level) { if (living.onGround) { float f = (float)Math.min(16, 2 + level); BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(0, 0, 0); for (BlockPos.MutableBlockPos blockpos$mutableblockpos1 : BlockPos.getAllInBoxMutable(pos.add((double)(-f), -1.0D, (double)(-f)), pos.add((double)f, -1.0D, (double)f))) { if (blockpos$mutableblockpos1.distanceSqToCenter(living.posX, living.posY, living.posZ) <= (double)(f * f)) { blockpos$mutableblockpos.setPos(blockpos$mutableblockpos1.getX(), blockpos$mutableblockpos1.getY() + 1, blockpos$mutableblockpos1.getZ()); IBlockState iblockstate = worldIn.getBlockState(blockpos$mutableblockpos); if (iblockstate.getMaterial() == Material.air) { IBlockState iblockstate1 = worldIn.getBlockState(blockpos$mutableblockpos1); if (iblockstate1.getMaterial() == Material.water && ((Integer)iblockstate1.getValue(BlockLiquid.LEVEL)).intValue() == 0 && worldIn.canBlockBePlaced(Blocks.FROSTED_ICE, blockpos$mutableblockpos1, false, EnumFacing.DOWN, (Entity)null, (ItemStack)null)) { worldIn.setBlockState(blockpos$mutableblockpos1, Blocks.FROSTED_ICE.getDefaultState()); worldIn.scheduleUpdate(blockpos$mutableblockpos1.toImmutable(), Blocks.FROSTED_ICE, MathHelper.getRandomIntegerInRange(living.getRNG(), 60, 120)); } } } } } } }
j’ai des erreus sur les BlockPos, IBlockState, LEVEL, FROSTED_ICE
-
BlockPos -> remplace par des x, y z (tous des int)
IBlockState -> remplace par un Block
LEBEL c’est le niveau de l’enchantement
FROSTED_ICE -> va falloir impro par que c’est un block de la 1.10 (de la glace qui fond en peu de temps et n’importe où), c’est la glace qui est sous les pieds du joueur -
ok juste comment on telecharge les sources de mc 1.10 pour que je recree le frosted ice
-
Tu peux faire un setup 1.10 ou alors avec MCP
-
Euh j’arrive pas a faire le setup on peut juste me passer la class du frosted Ice ?
-
https://www.minecraftforgefrance.fr/showthread.php?tid=2805
Te filer la source sert à rien : c’est en 1.10. Il y aura des class qui n’existe plus, qui ont été renommé, ou qui on été adapté. Il faut faire un petit travail d’analyse pour modifier certaine chose.
Tu suis le Tuto, tu installe les sources, et tu regarde par toi même. C’est un support, on vas pas te mâché le travail en te donnant toute les réponse de simple claquement de doigt.C’est pas pour être méchant ou quoi que se soit hein, mais si on te donne toute les réponses servis sur un plateau d’argent, tu n’apprendras rien