Posted November 30, 201212 yr I am working on a mod where I have an item that acts as a portal, and transports you between "Dimensions". In order to test it, I have an Item with this method: @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { switch(world.provider.dimensionId) { case -1: player.travelToDimension(0); break; case 0: player.travelToDimension(-1); break; } return stack; } I was hoping that would bounce me back and forth between the Overworld and the Nether. However, whenever I use it, it makes a Nether Portal wherever I teleport to, and I'm automatically in it, so it sends me back. Is there a way to not make it make that portal? Or is that part of travelToDimension()? I don't really want the portals there, because I'm going to be making more Dimensions, and I want to only go between them with my Item. The Item shows up, works, and everything is good, except for the teleporting
December 1, 201212 yr I´ve got the same Problem. You have to use your own Teleporter Class, but i don´t know how to tell Minecraft wich Teleporter you want to use. With ModLoader there was a method like .usePortal(<ID>, <Teleporter>) where you could give your Teleporter as a Parameter, but i don´t know how this works with Forge. I hope this is understandable, my English is kinda bad. Edit: I think i´ve found a Solution: player.mcServer.getConfigurationManager().transferPlayerToDimension(ent, Infiniverse.dimID, new IVTeleporterBasic(wserv)); I´ll try it now.
December 2, 201212 yr Author The only problem there is that EntityPlayer has no field called mcServer, or anything that is a MinecraftServer. Also, where are you getting ent? Because that should be an EnitityPlayerMP.
December 2, 201212 yr My dimension isn't working right but I did find a function for the transfer: transferToDimension that is in the EntityPlayer class... seems to get around those other issues I ran into trying to do it the other way.
December 3, 201212 yr Author My dimension isn't working right but I did find a function for the transfer: transferToDimension that is in the EntityPlayer class... seems to get around those other issues I ran into trying to do it the other way. Did you finally get it working? I ended up using mcServer.getConfigurationManager().transferEntityToWorld(player, dimensionID, currentWorld, newWorld, new Teleporter(newWorld)); But it gives me some wierd errors, as well as not teleporting me to the right place. The Teleporter problem I can fix, the error it gives me is if I try to use it twice in a row, like to go back to the Dimension I just left, it crashes saying something about "Entity is already being tracked!", and I can't figure out what's wrong. I can use the transferToDimension one, but it makes a Teleporter wherever I transport to, and then I just fall back into it, which isn't very helpful Thus, I am trying to specify a custom Teleporter so that it won't make the portal everytime I use my item.
December 3, 201212 yr I'm still playing around it as well. I suspect your describing what I've been working through in terms of that function so I guess it is back to a similar style as your working on again Thanks
December 3, 201212 yr Author I'll be sure to let you know if I figure it out. I'm also planning on making a Dimension tutorial when I'm done.
December 5, 201212 yr Author So I actually figured it out! Here's my code, from the item I'm using as a "portal": @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { System.out.println(world.provider.getDimensionName()); switch(world.provider.dimensionId) { case 1885: travelTime(0, player); break; case 0: travelTime(1885, player); break; } return stack; } public void travelTime(int dimensionID, Entity player) { if (!player.worldObj.isRemote && !player.isDead) { MinecraftServer mcServer = MinecraftServer.getServer(); WorldServer newWorld = mcServer.worldServerForDimension(dimensionID); mcServer.getConfigurationManager().transferPlayerToDimension((EntityPlayerMP)player, dimensionID, new TimeTeleporter(newWorld)); } } My TimeTeleporter() class is just an extension of Teleporter, but to use the same basic Teleporter as default, you should use this: mcServer.worldServerForDimension(dimensionID).func_85176_s() as the third parameter
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.