Jump to content

[1.7.10]Make player teleport when they are in bed


LogicTechCorp

Recommended Posts

Hello there, I made a custom bed that works like a normal bed but I would like it to teleport the player to a new location and set a bed there, interlinking the two.

 

Example:

 

The player sleeps in bed A at location A and has a random chance of teleporting to location B. When the player is teleported to location B, bed B is created. Bed A will always have a random chance of teleporting the player to bed B but bed B will always teleport to bed A.

Link to comment
Share on other sites

If I understand correctly -

1. Set Waypoint A (Bed A)

2. Set Waypoint B (Bed B)

3. Sleep in either Bed A or Bed B, and whichever one you sleep in, you get teleported to the other one?

 

Here are a few ideas -

1. Save waypoint a and b in a config file.

2. Teleportation from a or b, or b to a.

That's basically what you will want to have.

 

If you want the player to be teleported while sleeping, and when teleported, still sleeping, that will be a bit tricky, or will work the first time.

Link to comment
Share on other sites

You say "... to location B, bed B is created". That implies that there is no bed at location B originally. What determines where Location b is?

 

Say location A is the players bed and location B is a bed at spawn. When the player sleeps in their bed (A) they have a random chance of teleporting to bed (B) at spawn, when they sleep in bed (B) they teleport to their bed (A)

 

Link to comment
Share on other sites

I am sorry for not being clear earlier. There is two different dimensions, the Overworld and the Dream World. The player is going to sleep in their bed in the Overworld and have a random chance of waking up in the Dream World. The player wakes up in the exact same location in the Dream World as they were in the Overworld and when the player is done in the Dream World they will sleep and wake up in the Overworld.

Link to comment
Share on other sites

I have code that teleports the player between the dimension using the onBlockClicked Event but when I try to use my code in the SetBedOccupied Event I crash when the player is about to wake up. When I rejoin the world I am in my dimension.

 

Crash Report

https://gist.github.com/a0ddf8cbd5cf991ace03.git

 

Code

    public void getDimension(World world, EntityPlayer player)
    {
        EntityPlayerMP thePlayer = (EntityPlayerMP) player;
        WorldServer ws = (WorldServer) world;

        if(thePlayer.dimension != Reference.DREAMSCAPE_DIMENSION_ID)
        {
            thePlayer.mcServer.getConfigurationManager().transferPlayerToDimension(thePlayer, Reference.DREAMSCAPE_DIMENSION_ID, new TeleporterDreamscape(ws));

        } else
        {
            thePlayer.mcServer.getConfigurationManager().transferPlayerToDimension(thePlayer, 0, new TeleporterDreamscape(ws));

        }
    }

    @Override
    public void setBedOccupied(IBlockAccess world, int x, int y, int z, EntityPlayer player, boolean occupied)
    {
        if(world instanceof World)
        {
            BlockDreamBed.func_149979_a((World) world, x, y, z, occupied);
            if(!occupied)
            {
                getDimension((World) world, player);
            }
        }
    }

Link to comment
Share on other sites

I added in what you suggested but I keep on getting the same crash.

 

Crash

---- Minecraft Crash Report ----
// There are four lights!

Time: 7/23/14 11:52 AM
Description: Unexpected error

java.lang.ClassCastException: net.minecraft.client.entity.EntityClientPlayerMP cannot be cast to net.minecraft.entity.player.EntityPlayerMP
at com.logictechcorp.orizon.block.BlockDreamBed.travelToDimension(BlockDreamBed.java:140)
at com.logictechcorp.orizon.block.BlockDreamBed.setBedOccupied(BlockDreamBed.java:162)
at net.minecraft.entity.player.EntityPlayer.wakeUpPlayer(EntityPlayer.java:1646)
at net.minecraft.client.network.NetHandlerPlayClient.handleAnimation(NetHandlerPlayClient.java:829)
at net.minecraft.network.play.server.S0BPacketAnimation.processPacket(S0BPacketAnimation.java:49)
at net.minecraft.network.play.server.S0BPacketAnimation.processPacket(S0BPacketAnimation.java:77)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:247)
at net.minecraft.client.multiplayer.PlayerControllerMP.updateController(PlayerControllerMP.java:321)
at net.minecraft.client.Minecraft.runTick(Minecraft.java:1692)
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1038)
at net.minecraft.client.Minecraft.run(Minecraft.java:961)
at net.minecraft.client.main.Main.main(Main.java:164)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:134)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
at com.logictechcorp.orizon.block.BlockDreamBed.travelToDimension(BlockDreamBed.java:140)
at com.logictechcorp.orizon.block.BlockDreamBed.setBedOccupied(BlockDreamBed.java:162)
at net.minecraft.entity.player.EntityPlayer.wakeUpPlayer(EntityPlayer.java:1646)
at net.minecraft.client.network.NetHandlerPlayClient.handleAnimation(NetHandlerPlayClient.java:829)
at net.minecraft.network.play.server.S0BPacketAnimation.processPacket(S0BPacketAnimation.java:49)
at net.minecraft.network.play.server.S0BPacketAnimation.processPacket(S0BPacketAnimation.java:77)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:247)
at net.minecraft.client.multiplayer.PlayerControllerMP.updateController(PlayerControllerMP.java:321)

-- Affected level --
Details:
Level name: MpServer
All players: 1 total; [EntityClientPlayerMP['LogicTechCorp'/107, l='MpServer', x=164.50, y=73.76, z=277.90]]
Chunk stats: MultiplayerChunkCache: 225, 225
Level seed: 0
Level generator: ID 00 - default, ver 1. Features enabled: false
Level generator options: 
Level spawn location: World: (168,64,248), Chunk: (at 8,4,8 in 10,15; contains blocks 160,0,240 to 175,255,255), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
Level time: 621 game time, 13056 day time
Level dimension: 0
Level storage version: 0x00000 - Unknown?
Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
Forced entities: 59 total; [EntityCow['Cow'/38, l='MpServer', x=89.03, y=72.00, z=322.06], EntityCow['Cow'/39, l='MpServer', x=88.28, y=70.00, z=331.78], EntityCow['Cow'/36, l='MpServer', x=85.25, y=70.00, z=262.22], EntityCow['Cow'/40, l='MpServer', x=85.44, y=71.00, z=324.41], EntityCow['Cow'/41, l='MpServer', x=85.50, y=71.00, z=322.50], EntityCow['Cow'/51, l='MpServer', x=97.91, y=69.00, z=200.50], EntityCow['Cow'/50, l='MpServer', x=96.47, y=69.00, z=200.50], EntityCow['Cow'/55, l='MpServer', x=129.50, y=73.00, z=237.50], EntityCow['Cow'/54, l='MpServer', x=121.94, y=75.00, z=245.81], EntityCow['Cow'/53, l='MpServer', x=101.50, y=69.00, z=200.50], EntityCow['Cow'/52, l='MpServer', x=99.22, y=69.00, z=200.50], EntityCow['Cow'/57, l='MpServer', x=132.50, y=74.00, z=235.50], EntityCow['Cow'/56, l='MpServer', x=130.50, y=72.00, z=233.50], EntityChicken['Chicken'/68, l='MpServer', x=146.47, y=71.00, z=223.31], EntityChicken['Chicken'/69, l='MpServer', x=148.53, y=72.00, z=226.47], EntityVillager['Villager'/70, l='MpServer', x=148.47, y=72.00, z=283.88], EntityCow['Cow'/71, l='MpServer', x=158.53, y=72.00, z=222.63], EntityChicken['Chicken'/66, l='MpServer', x=151.50, y=72.00, z=231.50], EntityChicken['Chicken'/67, l='MpServer', x=136.59, y=71.00, z=219.25], EntityVillager['Villager'/76, l='MpServer', x=155.66, y=70.00, z=282.44], EntityVillager['Villager'/77, l='MpServer', x=160.30, y=71.00, z=293.56], EntityVillager['Villager'/78, l='MpServer', x=170.34, y=71.00, z=265.41], EntityVillager['Villager'/79, l='MpServer', x=169.27, y=70.04, z=291.70], EntityCow['Cow'/72, l='MpServer', x=162.88, y=71.00, z=222.97], EntityCow['Cow'/73, l='MpServer', x=157.03, y=71.00, z=221.97], EntityCow['Cow'/74, l='MpServer', x=165.66, y=66.00, z=215.69], EntityVillager['Villager'/75, l='MpServer', x=167.50, y=69.00, z=277.25], EntityVillager['Villager'/85, l='MpServer', x=175.53, y=71.00, z=299.50], EntityVillager['Villager'/84, l='MpServer', x=169.47, y=71.00, z=295.88], EntityCow['Cow'/87, l='MpServer', x=174.50, y=70.00, z=320.50], EntityVillager['Villager'/86, l='MpServer', x=179.50, y=70.00, z=302.50], EntityCow['Cow'/81, l='MpServer', x=171.91, y=69.00, z=289.13], EntityCow['Cow'/80, l='MpServer', x=176.59, y=68.00, z=279.22], EntityCow['Cow'/83, l='MpServer', x=172.78, y=69.00, z=290.78], EntityCow['Cow'/82, l='MpServer', x=169.61, y=70.16, z=291.00], EntityCow['Cow'/95, l='MpServer', x=184.38, y=69.00, z=332.41], EntityCow['Cow'/89, l='MpServer', x=175.41, y=70.00, z=324.41], EntityCow['Cow'/88, l='MpServer', x=173.50, y=70.00, z=324.50], EntityCow['Cow'/90, l='MpServer', x=172.50, y=70.00, z=327.50], EntityPig['Pig'/102, l='MpServer', x=204.09, y=66.00, z=340.06], EntityPig['Pig'/100, l='MpServer', x=195.97, y=67.00, z=335.13], EntityPig['Pig'/101, l='MpServer', x=203.72, y=69.00, z=334.47], EntityCow['Cow'/98, l='MpServer', x=184.47, y=67.00, z=324.22], EntityPig['Pig'/99, l='MpServer', x=201.50, y=70.00, z=330.22], EntityCow['Cow'/96, l='MpServer', x=175.38, y=70.00, z=325.53], EntityCow['Cow'/97, l='MpServer', x=186.50, y=67.00, z=321.50], EntityChicken['Chicken'/106, l='MpServer', x=244.50, y=66.00, z=343.50], EntityItem['item.tile.flower1.dandelion'/2073, l='MpServer', x=144.91, y=75.13, z=311.66], EntityItem['item.item.seeds'/2116, l='MpServer', x=168.19, y=68.13, z=276.09], EntityBat['Bat'/4136, l='MpServer', x=191.72, y=34.73, z=218.00], EntityBat['Bat'/4140, l='MpServer', x=206.41, y=56.85, z=331.75], EntityClientPlayerMP['LogicTechCorp'/107, l='MpServer', x=164.50, y=73.76, z=277.90], EntityItem['item.tile.flower1.dandelion'/4321, l='MpServer', x=144.69, y=74.13, z=314.53], EntityBat['Bat'/487, l='MpServer', x=159.28, y=22.15, z=301.23], EntityBat['Bat'/556, l='MpServer', x=179.04, y=18.57, z=286.44], EntityBat['Bat'/555, l='MpServer', x=207.34, y=12.02, z=247.98], EntityBat['Bat'/542, l='MpServer', x=176.78, y=51.82, z=282.49], EntityBat['Bat'/619, l='MpServer', x=201.63, y=58.14, z=356.53], EntityBat['Bat'/620, l='MpServer', x=207.16, y=57.95, z=352.00]]
Retry entities: 0 total; []
Server brand: fml,forge
Server type: Integrated singleplayer server
Stacktrace:
at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:417)
at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2567)
at net.minecraft.client.Minecraft.run(Minecraft.java:990)
at net.minecraft.client.main.Main.main(Main.java:164)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:134)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

-- System Details --
Details:
Minecraft Version: 1.7.10
Operating System: Windows 8.1 (amd64) version 6.3
Java Version: 1.7.0_55, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 888591552 bytes (847 MB) / 1056309248 bytes (1007 MB) up to 1056309248 bytes (1007 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 13, tallocated: 95
FML: MCP v9.05 FML v7.10.1.1152 Minecraft Forge 10.13.0.1152 4 mods loaded, 4 mods active
mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
FML{7.10.1.1152} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.0.1152.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Forge{10.13.0.1152} [Minecraft Forge] (forgeSrc-1.7.10-10.13.0.1152.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
orizon{1.7.X-1.4} [Orizon] (Orizon) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Launched Version: 1.7
LWJGL: 2.9.1
OpenGL: Intel(R) HD Graphics GL version 4.0.0 - Build 10.18.10.3621, Intel
GL Caps: Using GL 1.3 multitexturing.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Anisotropic filtering is supported and maximum anisotropy is 16.
Shaders are available because OpenGL 2.1 is supported.

Is Modded: Definitely; Client brand changed to 'fml,forge'
Type: Client (map_client.txt)
Resource Packs: []
Current Language: English (US)
Profiler Position: N/A (disabled)
Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
Anisotropic Filtering: Off (1)

 

Code

    public void travelToDimension(World world, EntityPlayer player)
    {
        EntityPlayerMP playerMP = (EntityPlayerMP) player;
        WorldServer ws = (WorldServer) world;

        if(playerMP.dimension != Reference.DREAMSCAPE_DIMENSION_ID)
        {
            playerMP.mcServer.getConfigurationManager().transferPlayerToDimension(playerMP, Reference.DREAMSCAPE_DIMENSION_ID, new TeleporterDreamscape(ws));
        } else
        {
            playerMP.mcServer.getConfigurationManager().transferPlayerToDimension(playerMP, 0, new TeleporterDreamscape(ws));
        }
    }

    @Override
    public void setBedOccupied(IBlockAccess world, int x, int y, int z, EntityPlayer player, boolean occupied)
    {
        if(world instanceof World)
        {
            BlockDreamBed.func_149979_a((World) world, x, y, z, occupied);
            if(((World) world).isRemote)
            {
                if(!occupied)
                {
                    travelToDimension((World) world, player);
                }
            }
        }
    }

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.