Résolu Portail vers nouveau Monde
-
Eh bien salut tout le monde
je suis confronté a un probleme un gros problemeJ’ai creer une nouvelle dimension
tout marche sans soucis mais y a un hic
comment aller dans cette dimension ?
j’aimerais bien creer un portail comme pour le nether -
Tiens, voici un tuto pour t’aider : http://www.minecraftforum.net/topic/1431137-164-forge-smp-modding-tutorials-updated-8-9-2013-dimensions-done/
-
lol
le meme mec qui a fait le tuto que j’ai suivi pour le monde -
J’ai une préférence pour ce tutoriel :
http://www.minecraftforum.net/topic/1797143-152-16-forge-dimension-tutorial-multi-biome-dimension-ore-gen-basic-house-gen-tree-gen-skyrenderer-githubsrc-code/
Les tutoriels de wuppy ne sont pas de très bonne qualité, certains de ces codes ne sont pas trop optimisés
Rien que ça c’est impardonnable -
j’ai quasiment fini mais a la fin je suis largué
j’ai fait le TeleporterMoon
j’ai mis ce qu’il me dit de mettre
et apres il dit y a une erreur c’est normal mettez sa :You will now have an error under the constructor. To fix this add a line of code to the top that looks like this.
super(par1WorldServer);mais j’ai beau le mettre sa ne change rien
package common; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.util.Direction; import net.minecraft.util.LongHashMap; import net.minecraft.util.MathHelper; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.PortalPosition; import net.minecraft.world.Teleporter; import net.minecraft.world.WorldServer; public class TeleporterMoon extends Teleporter { private final WorldServer worldServerInstance; /** A private Random() function in Teleporter */ private final Random random; /** Stores successful portal placement locations for rapid lookup. */ private final LongHashMap destinationCoordinateCache = new LongHashMap(); /** * A list of valid keys for the destinationCoordainteCache. These are based on the X & Z of the players initial * location. */ private final List destinationCoordinateKeys = new ArrayList(); public TeleporterMoon(WorldServer, par1WorldServer) { this.worldServerInstance = par1WorldServer; this.random = new Random(par1WorldServer.getSeed()); } /** * Place an entity in a nearby portal, creating one if necessary. */ public void placeInPortal(Entity par1Entity, double par2, double par4, double par6, float par8) { if (this.worldServerInstance.provider.dimensionId != 1) { if (!this.placeInExistingPortal(par1Entity, par2, par4, par6, par8)) { this.makePortal(par1Entity); this.placeInExistingPortal(par1Entity, par2, par4, par6, par8); } } else { int i = MathHelper.floor_double(par1Entity.posX); int j = MathHelper.floor_double(par1Entity.posY) - 1; int k = MathHelper.floor_double(par1Entity.posZ); byte b0 = 1; byte b1 = 0; for (int l = -2; l <= 2; ++l) { for (int i1 = -2; i1 <= 2; ++i1) { for (int j1 = -1; j1 < 3; ++j1) { int k1 = i + i1 * b0 + l * b1; int l1 = j + j1; int i2 = k + i1 * b1 - l * b0; boolean flag = j1 < 0; this.worldServerInstance.setBlock(k1, l1, i2, flag ? Block.obsidian.blockID : 0); } } } par1Entity.setLocationAndAngles((double)i, (double)j, (double)k, par1Entity.rotationYaw, 0.0F); par1Entity.motionX = par1Entity.motionY = par1Entity.motionZ = 0.0D; } } /** * Place an entity in a nearby portal which already exists. */ public boolean placeInExistingPortal(Entity par1Entity, double par2, double par4, double par6, float par8) { short short1 = 128; double d3 = -1.0D; int i = 0; int j = 0; int k = 0; int l = MathHelper.floor_double(par1Entity.posX); int i1 = MathHelper.floor_double(par1Entity.posZ); long j1 = ChunkCoordIntPair.chunkXZ2Int(l, i1); boolean flag = true; double d4; int k1; if (this.destinationCoordinateCache.containsItem(j1)) { PortalPosition portalposition = (PortalPosition)this.destinationCoordinateCache.getValueByKey(j1); d3 = 0.0D; i = portalposition.posX; j = portalposition.posY; k = portalposition.posZ; portalposition.lastUpdateTime = this.worldServerInstance.getTotalWorldTime(); flag = false; } else { for (k1 = l - short1; k1 <= l + short1; ++k1) { double d5 = (double)k1 + 0.5D - par1Entity.posX; for (int l1 = i1 - short1; l1 <= i1 + short1; ++l1) { double d6 = (double)l1 + 0.5D - par1Entity.posZ; for (int i2 = this.worldServerInstance.getActualHeight() - 1; i2 >= 0; –i2) { if (this.worldServerInstance.getBlockId(k1, i2, l1) == Block.portal.blockID) { while (this.worldServerInstance.getBlockId(k1, i2 - 1, l1) == Block.portal.blockID) { --i2; } d4 = (double)i2 + 0.5D - par1Entity.posY; double d7 = d5 * d5 + d4 * d4 + d6 * d6; if (d3 < 0.0D || d7 < d3) { d3 = d7; i = k1; j = i2; k = l1; } } } } } } if (d3 >= 0.0D) { if (flag) { this.destinationCoordinateCache.add(j1, new PortalPosition(this, i, j, k, this.worldServerInstance.getTotalWorldTime())); this.destinationCoordinateKeys.add(Long.valueOf(j1)); } double d8 = (double)i + 0.5D; double d9 = (double)j + 0.5D; d4 = (double)k + 0.5D; int j2 = -1; if (this.worldServerInstance.getBlockId(i - 1, j, k) == Block.portal.blockID) { j2 = 2; } if (this.worldServerInstance.getBlockId(i + 1, j, k) == Block.portal.blockID) { j2 = 0; } if (this.worldServerInstance.getBlockId(i, j, k - 1) == Block.portal.blockID) { j2 = 3; } if (this.worldServerInstance.getBlockId(i, j, k + 1) == Block.portal.blockID) { j2 = 1; } int k2 = par1Entity.getTeleportDirection(); if (j2 > -1) { int l2 = Direction.rotateLeft[j2]; int i3 = Direction.offsetX[j2]; int j3 = Direction.offsetZ[j2]; int k3 = Direction.offsetX[l2]; int l3 = Direction.offsetZ[l2]; boolean flag1 = !this.worldServerInstance.isAirBlock(i + i3 + k3, j, k + j3 + l3) || !this.worldServerInstance.isAirBlock(i + i3 + k3, j + 1, k + j3 + l3); boolean flag2 = !this.worldServerInstance.isAirBlock(i + i3, j, k + j3) || !this.worldServerInstance.isAirBlock(i + i3, j + 1, k + j3); if (flag1 && flag2) { j2 = Direction.rotateOpposite[j2]; l2 = Direction.rotateOpposite[l2]; i3 = Direction.offsetX[j2]; j3 = Direction.offsetZ[j2]; k3 = Direction.offsetX[l2]; l3 = Direction.offsetZ[l2]; k1 = i - k3; d8 -= (double)k3; int i4 = k - l3; d4 -= (double)l3; flag1 = !this.worldServerInstance.isAirBlock(k1 + i3 + k3, j, i4 + j3 + l3) || !this.worldServerInstance.isAirBlock(k1 + i3 + k3, j + 1, i4 + j3 + l3); flag2 = !this.worldServerInstance.isAirBlock(k1 + i3, j, i4 + j3) || !this.worldServerInstance.isAirBlock(k1 + i3, j + 1, i4 + j3); } float f1 = 0.5F; float f2 = 0.5F; if (!flag1 && flag2) { f1 = 1.0F; } else if (flag1 && !flag2) { f1 = 0.0F; } else if (flag1 && flag2) { f2 = 0.0F; } d8 += (double)((float)k3 * f1 + f2 * (float)i3); d4 += (double)((float)l3 * f1 + f2 * (float)j3); float f3 = 0.0F; float f4 = 0.0F; float f5 = 0.0F; float f6 = 0.0F; if (j2 == k2) { f3 = 1.0F; f4 = 1.0F; } else if (j2 == Direction.rotateOpposite[k2]) { f3 = -1.0F; f4 = -1.0F; } else if (j2 == Direction.rotateRight[k2]) { f5 = 1.0F; f6 = -1.0F; } else { f5 = -1.0F; f6 = 1.0F; } double d10 = par1Entity.motionX; double d11 = par1Entity.motionZ; par1Entity.motionX = d10 * (double)f3 + d11 * (double)f6; par1Entity.motionZ = d10 * (double)f5 + d11 * (double)f4; par1Entity.rotationYaw = par8 - (float)(k2 * 90) + (float)(j2 * 90); } else { par1Entity.motionX = par1Entity.motionY = par1Entity.motionZ = 0.0D; } par1Entity.setLocationAndAngles(d8, d9, d4, par1Entity.rotationYaw, par1Entity.rotationPitch); return true; } else { return false; } } public boolean makePortal(Entity par1Entity) { byte b0 = 16; double d0 = -1.0D; int i = MathHelper.floor_double(par1Entity.posX); int j = MathHelper.floor_double(par1Entity.posY); int k = MathHelper.floor_double(par1Entity.posZ); int l = i; int i1 = j; int j1 = k; int k1 = 0; int l1 = this.random.nextInt(4); int i2; double d1; double d2; int j2; int k2; int l2; int i3; int j3; int k3; int l3; int i4; int j4; int k4; double d3; double d4; for (i2 = i - b0; i2 <= i + b0; ++i2) { d1 = (double)i2 + 0.5D - par1Entity.posX; for (j2 = k - b0; j2 <= k + b0; ++j2) { d2 = (double)j2 + 0.5D - par1Entity.posZ; label274: for (k2 = this.worldServerInstance.getActualHeight() - 1; k2 >= 0; –k2) { if (this.worldServerInstance.isAirBlock(i2, k2, j2)) { while (k2 > 0 && this.worldServerInstance.isAirBlock(i2, k2 - 1, j2)) { --k2; } for (i3 = l1; i3 < l1 + 4; ++i3) { l2 = i3 % 2; k3 = 1 - l2; if (i3 % 4 >= 2) { l2 = -l2; k3 = -k3; } for (j3 = 0; j3 < 3; ++j3) { for (i4 = 0; i4 < 4; ++i4) { for (l3 = -1; l3 < 4; ++l3) { k4 = i2 + (i4 - 1) * l2 + j3 * k3; j4 = k2 + l3; int l4 = j2 + (i4 - 1) * k3 - j3 * l2; if (l3 < 0 && !this.worldServerInstance.getBlockMaterial(k4, j4, l4).isSolid() || l3 >= 0 && !this.worldServerInstance.isAirBlock(k4, j4, l4)) { continue label274; } } } } d4 = (double)k2 + 0.5D - par1Entity.posY; d3 = d1 * d1 + d4 * d4 + d2 * d2; if (d0 < 0.0D || d3 < d0) { d0 = d3; l = i2; i1 = k2; j1 = j2; k1 = i3 % 4; } } } } } } if (d0 < 0.0D) { for (i2 = i - b0; i2 <= i + b0; ++i2) { d1 = (double)i2 + 0.5D - par1Entity.posX; for (j2 = k - b0; j2 <= k + b0; ++j2) { d2 = (double)j2 + 0.5D - par1Entity.posZ; label222: for (k2 = this.worldServerInstance.getActualHeight() - 1; k2 >= 0; --k2) { if (this.worldServerInstance.isAirBlock(i2, k2, j2)) { while (k2 > 0 && this.worldServerInstance.isAirBlock(i2, k2 - 1, j2)) { --k2; } for (i3 = l1; i3 < l1 + 2; ++i3) { l2 = i3 % 2; k3 = 1 - l2; for (j3 = 0; j3 < 4; ++j3) { for (i4 = -1; i4 < 4; ++i4) { l3 = i2 + (j3 - 1) * l2; k4 = k2 + i4; j4 = j2 + (j3 - 1) * k3; if (i4 < 0 && !this.worldServerInstance.getBlockMaterial(l3, k4, j4).isSolid() || i4 >= 0 && !this.worldServerInstance.isAirBlock(l3, k4, j4)) { continue label222; } } } d4 = (double)k2 + 0.5D - par1Entity.posY; d3 = d1 * d1 + d4 * d4 + d2 * d2; if (d0 < 0.0D || d3 < d0) { d0 = d3; l = i2; i1 = k2; j1 = j2; k1 = i3 % 2; } } } } } } } int i5 = l; int j5 = i1; j2 = j1; int k5 = k1 % 2; int l5 = 1 - k5; if (k1 % 4 >= 2) { k5 = -k5; l5 = -l5; } boolean flag; if (d0 < 0.0D) { if (i1 < 70) { i1 = 70; } if (i1 > this.worldServerInstance.getActualHeight() - 10) { i1 = this.worldServerInstance.getActualHeight() - 10; } j5 = i1; for (k2 = -1; k2 <= 1; ++k2) { for (i3 = 1; i3 < 3; ++i3) { for (l2 = -1; l2 < 3; ++l2) { k3 = i5 + (i3 - 1) * k5 + k2 * l5; j3 = j5 + l2; i4 = j2 + (i3 - 1) * l5 - k2 * k5; flag = l2 < 0; this.worldServerInstance.setBlock(k3, j3, i4, flag ? Block.obsidian.blockID : 0); } } } } for (k2 = 0; k2 < 4; ++k2) { for (i3 = 0; i3 < 4; ++i3) { for (l2 = -1; l2 < 4; ++l2) { k3 = i5 + (i3 - 1) * k5; j3 = j5 + l2; i4 = j2 + (i3 - 1) * l5; flag = i3 == 0 || i3 == 3 || l2 == -1 || l2 == 3; this.worldServerInstance.setBlock(k3, j3, i4, flag ? Block.obsidian.blockID : Block.portal.blockID, 0, 2); } } for (i3 = 0; i3 < 4; ++i3) { for (l2 = -1; l2 < 4; ++l2) { k3 = i5 + (i3 - 1) * k5; j3 = j5 + l2; i4 = j2 + (i3 - 1) * l5; this.worldServerInstance.notifyBlocksOfNeighborChange(k3, j3, i4, this.worldServerInstance.getBlockId(k3, j3, i4)); } } } return true; } /** * called periodically to remove out-of-date portal locations from the cache list. Argument par1 is a * WorldServer.getTotalWorldTime() value. */ public void removeStalePortalLocations(long par1) { if (par1 % 100L == 0L) { Iterator iterator = this.destinationCoordinateKeys.iterator(); long j = par1 - 600L; while (iterator.hasNext()) { Long olong = (Long)iterator.next(); PortalPosition portalposition = (PortalPosition)this.destinationCoordinateCache.getValueByKey(olong.longValue()); if (portalposition == null || portalposition.lastUpdateTime < j) { iterator.remove(); this.destinationCoordinateCache.remove(olong.longValue()); } } } } }
en bref je met sa ou ?
-
Tu l’as mit ou le super(par1WorldServer); ?
Il va directement après le
public TeleporterMoon(WorldServer, par1WorldServer)
{ -
Voila je l’ai mis au bon endroit a priori mais sa me met des erreurs sa m’en rajoute:
-
public TeleporterMoon(WorldServer, par1WorldServer) retire la virgule.
-
Dernier Probleme maintenant quand je vais en jeu je passe le portail et crash
j’ai du supprimer la map ( pas la dimension ) et quand je creer un nouveau monde il reste bloqué sur converting
–-- Minecraft Crash Report ---- // There are four lights! Time: 24/10/13 18:53 Description: Exception getting block type in world java.lang.NullPointerException at net.minecraft.world.World.getBlockMaterial(World.java:596) at net.minecraft.world.gen.feature.WorldGenDungeons.generate(WorldGenDungeons.java:34) at common.ChunkProviderMoon.populate(ChunkProviderMoon.java:585) at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:258) at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1244) at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:153) at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:166) at net.minecraft.world.World.getChunkFromChunkCoords(World.java:527) at net.minecraft.world.World.getBlockId(World.java:412) at net.minecraft.world.World.isAirBlock(World.java:436) at net.minecraft.world.World.getFirstUncoveredBlock(World.java:383) at net.minecraft.world.WorldProvider.canCoordinateBeSpawn(WorldProvider.java:102) at net.minecraft.world.WorldServer.createSpawnPosition(WorldServer.java:828) at net.minecraft.world.WorldServer.initialize(WorldServer.java:792) at net.minecraft.world.World.<init>(World.java:296) at net.minecraft.world.WorldServer.<init>(WorldServer.java:108) at net.minecraft.world.WorldServerMulti.<init>(WorldServerMulti.java:13) at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:77) at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:107) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:443) at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Stacktrace: at net.minecraft.world.World.getBlockMaterial(World.java:596) at net.minecraft.world.gen.feature.WorldGenDungeons.generate(WorldGenDungeons.java:34) at common.ChunkProviderMoon.populate(ChunkProviderMoon.java:585) at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:258) at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1244) at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:153) at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:166) at net.minecraft.world.World.getChunkFromChunkCoords(World.java:527) -- Requested block coordinates -- Details: Found chunk: true Location: World: (-6,64,-242), Chunk: (at 10,4,14 in -1,-16; contains blocks -16,0,-256 to -1,255,-241), Region: (-1,-1; contains chunks -32,-32 to -1,-1, blocks -512,0,-512 to -1,255,-1) Stacktrace: at net.minecraft.world.World.getBlockId(World.java:412) at net.minecraft.world.World.isAirBlock(World.java:436) at net.minecraft.world.World.getFirstUncoveredBlock(World.java:383) at net.minecraft.world.WorldProvider.canCoordinateBeSpawn(WorldProvider.java:102) at net.minecraft.world.WorldServer.createSpawnPosition(WorldServer.java:828) at net.minecraft.world.WorldServer.initialize(WorldServer.java:792) -- Affected level -- Details: Level name: Test All players: 0 total; [] Chunk stats: ServerChunkCache: 48 Drop: 0 Level seed: 6105371104791245190 Level generator: ID 00 - default, ver 1\. Features enabled: true Level generator options: Level spawn location: World: (0,0,0), Chunk: (at 0,0,0 in 0,0; contains blocks 0,0,0 to 15,255,15), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511) Level time: 0 game time, 0 day time Level dimension: 0 Level storage version: 0x04ABD - Anvil Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false) Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: true Stacktrace: at net.minecraft.world.World.<init>(World.java:296) at net.minecraft.world.WorldServer.<init>(WorldServer.java:108) at net.minecraft.world.WorldServerMulti.<init>(WorldServerMulti.java:13) at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:77) at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:107) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:443) at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16) -- System Details -- Details: Minecraft Version: 1.6.2 Operating System: Windows 7 (amd64) version 6.1 Java Version: 1.7.0_25, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 933314288 bytes (890 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB) JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used Suspicious classes: FML and Forge are installed IntCache: cache: 2, tcache: 0, allocated: 1, tallocated: 63 FML: MCP v8.04 FML v6.2.57.845 Minecraft Forge 9.10.0.845 4 mods loaded, 4 mods active mcp{8.04} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available FML{6.2.57.845} [Forge Mod Loader] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available Forge{9.10.0.845} [Minecraft Forge] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available GADD{Alpha 1.0.0} [Galacticraft AddOns] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available Profiler Position: N/A (disabled) Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used Player Count: 0 / 8; [] Type: Integrated Server (map_client.txt) Is Modded: Definitely; Client brand changed to 'fml,forge' ```</init></init></init></init></init></init>
-
NPE.
Tu as mit quel biome dans ton monde ? Si c’est un biome custom, quels sont les id des blocs ? -
Biome DesertHills
et j’ai mis ma stone et ma dirt custom leur id :
dirt : 1012
stone : 1011 -
Les ID de bloc utilisés dans la génération de terrain (biome) doivent être inférieur à 255.
-
Ah ouai Ok je modifie sa
Edit: Merci beaucoup sa marche tellement mieux ^^