Elevator
-
non je croit
package com.XDoctorX.main; import java.io.DataInput; import java.io.IOException; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent; import com.XDoctorX.block.BlockElevator; import cpw.mods.fml.common.eventhandler.SubscribeEvent; public class ElevatorEvent { public World world; @SubscribeEvent public void onLivingJumpEvent(LivingJumpEvent event) { if (event.entity instanceof EntityPlayer && event.entity.worldObj.getBlock((int)event.entity.posX,(int) event.entity.posY - 1,(int) event.entity.posZ) == XDoctorX.Elevator) { EntityPlayer p = (EntityPlayer)(event.entity); int[] posBlocCible = BlockElevator.getTargetBlock(world, (int)p.posX, (int)p.posY, (int)p.posZ, true); p.setPosition(posBlocCible[0], posBlocCible[1]+1, posBlocCible[2]); } } } -
public World world; n’a rien à faire là.
int[] posBlocCible = BlockElevator.getTargetBlock(world, (int)p.posX, (int)p.posY, (int)p.posZ, true);
-> event.entity.worldObj à la place de world ici. -
sa marche pas et il y a a pas de crash report
-
@‘robin4002’:
public World world; n’a rien à faire là.
int[] posBlocCible = BlockElevator.getTargetBlock(world, (int)p.posX, (int)p.posY, (int)p.posZ, true);
-> event.entity.worldObj à la place de world ici.Oups, merci Robin ^^’ Erreur d’inattention
-
je lais fait mais sa marche pas et il y a plus de crash report
-
marche pas = il se passe rien ? Tu as bien placé les blocs ? Renvoies également le code actuel.
-
Rien se passe.
code du Event :
package com.XDoctorX.main; import java.io.DataInput; import java.io.IOException; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent; import com.XDoctorX.block.BlockElevator; import cpw.mods.fml.common.eventhandler.SubscribeEvent; public class ElevatorEvent { @SubscribeEvent public void onLivingJumpEvent(LivingJumpEvent event) { if (event.entity instanceof EntityPlayer && event.entity.worldObj.getBlock((int)event.entity.posX,(int) event.entity.posY - 1,(int) event.entity.posZ) == XDoctorX.Elevator) { EntityPlayer p = (EntityPlayer)(event.entity); int[] posBlocCible = BlockElevator.getTargetBlock(event.entity.worldObj, (int)p.posX, (int)p.posY, (int)p.posZ, true); p.setPosition(posBlocCible[0], posBlocCible[1]+1, posBlocCible[2]); } } } -
Tu essaies bien en te plaçant sur un bloc ascenseur?
-
Essayes avec p.setPositionAndUpdate(posBlocCible[0], posBlocCible[1]+1, posBlocCible[2]);
-
je suis sur le bloc, rien se passe j"ai mit
p.addChatComponentMessage(new ChatComponentTranslation(“test”));
sa marche une seul fois apres sa marche plus et le code est maintenant
package com.XDoctorX.main; import java.io.DataInput; import java.io.IOException; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent; import com.XDoctorX.block.BlockElevator; import cpw.mods.fml.common.eventhandler.SubscribeEvent; public class ElevatorEvent { @SubscribeEvent public void onLivingJumpEvent(LivingJumpEvent event) { if (event.entity instanceof EntityPlayer && event.entity.worldObj.getBlock((int)event.entity.posX,(int) event.entity.posY - 1,(int) event.entity.posZ) == XDoctorX.Elevator) { EntityPlayer p = (EntityPlayer)(event.entity); p.addChatComponentMessage(new ChatComponentTranslation("test")); int[] posBlocCible = BlockElevator.getTargetBlock(event.entity.worldObj, (int)p.posX, (int)p.posY, (int)p.posZ, true); p.setPositionAndUpdate(posBlocCible[0], posBlocCible[1]+1, posBlocCible[2]); } } } -
up up up up up up up up
-
24h avant de up, merci de lire le règlement du forum …
Envoies-moi un zip de ton dossier src je vais tester de mon côté. -
-
XDoctorX.java, fonction init, ajoute ça :
FMLCommonHandler.instance().bus().register(new ElevatorEvent());
En dessous de la ligne avec Forge.
BlockElevator :package com.XDoctorX.block; import org.lwjgl.input.Keyboard; import com.XDoctorX.main.XDoctorX; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent; public class BlockElevator extends Block { public EntityPlayer player; public World world; public BlockElevator() { super(Material.circuits); } public static int getTargetBlock(World w, int x, int y, int z, boolean up) { if(up) { for(int i = y; i <= 255; i++) { if(w.getBlock(x, i, z) == XDoctorX.Elevator) { return i; } } } else { for(int i = y; i >= 0; i–) { if(w.getBlock(x, i, z) == XDoctorX.Elevator) { return i; } } } return -1; } }ElevatorEvent :
package com.XDoctorX.main; import com.XDoctorX.block.BlockElevator; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.TickEvent; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.MathHelper; import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent; public class ElevatorEvent { @SubscribeEvent public void onLivingJumpEvent(LivingJumpEvent event) { if(event.entity instanceof EntityPlayer) { if(event.entity.worldObj.getBlock(MathHelper.floor_double(event.entity.posX), MathHelper.floor_double(event.entity.posY - 1), MathHelper.floor_double(event.entity.posZ)) == XDoctorX.Elevator) { EntityPlayer p = (EntityPlayer)event.entity; int posBlocCible = BlockElevator.getTargetBlock(event.entity.worldObj, MathHelper.floor_double(event.entity.posX), MathHelper.floor_double(event.entity.posY), MathHelper.floor_double(event.entity.posZ), true); if(posBlocCible != -1) { p.setPositionAndUpdate(event.entity.posX, posBlocCible + 1, event.entity.posZ); } } } } @SubscribeEvent public void onPlayerTick(TickEvent.PlayerTickEvent event) { if(event.phase == TickEvent.Phase.START) { if(event.player.isSneaking()) { if(event.player.worldObj.getBlock(MathHelper.floor_double(event.player.posX), MathHelper.floor_double(event.player.posY - 1), MathHelper.floor_double(event.player.posZ)) == XDoctorX.Elevator) { int posBlocCible = BlockElevator.getTargetBlock(event.player.worldObj, MathHelper.floor_double(event.player.posX), MathHelper.floor_double(event.player.posY) - 2, MathHelper.floor_double(event.player.posZ), false); if(posBlocCible != -1) { event.player.setPositionAndUpdate(event.player.posX, posBlocCible + 1, event.player.posZ); event.player.setSneaking(false); } } } } } } -
merci
-
Balise résolu ?
-
Bonjour,
Avec les changement de la 1.8 sa a changer (getBlock = getBlockState) c’est difficile si vous vouvez m’aider c’est super
-
world.getBlock(x, y, z) = world.getBlockState(pos).getBlock()
C’est en effet difficile … -
et pour les coordonnée (pos ne defini pas les coordonnée) ?
-
pos c’est un BlockPos, qui contient x, y et z.