Readdaed teleporter sensitive versions of the teleport function
Added per-world list of custom teleporters, Modders, use World.Load to populate this list. Changed the definition of our version schemes.
This commit is contained in:
parent
0f3b030a1d
commit
2f0dcebbf9
|
@ -7,10 +7,10 @@ package net.minecraftforge.common;
|
|||
|
||||
public class ForgeVersion
|
||||
{
|
||||
//This number is incremented every Minecraft version, and never reset
|
||||
//This number is incremented every time we remove deprecated code/major API changes, never reset
|
||||
public static final int majorVersion = 6;
|
||||
//This number is incremented every official release, and reset every Minecraft version
|
||||
public static final int minorVersion = 0;
|
||||
//This number is incremented every minecraft release, never reset
|
||||
public static final int minorVersion = 2;
|
||||
//This number is incremented every time a interface changes or new major feature is added, and reset every Minecraft version
|
||||
public static final int revisionVersion = 1;
|
||||
//This number is incremented every time Jenkins builds Forge, and never reset. Should always be 0 in the repo code.
|
||||
|
|
|
@ -29,7 +29,16 @@
|
|||
var7.entityId = par1EntityPlayerMP.entityId;
|
||||
WorldServer var8 = this.mcServer.worldServerForDimension(par1EntityPlayerMP.dimension);
|
||||
this.func_72381_a(var7, par1EntityPlayerMP, var8);
|
||||
@@ -367,6 +375,7 @@
|
||||
@@ -363,14 +371,20 @@
|
||||
|
||||
public void transferPlayerToDimension(EntityPlayerMP par1EntityPlayerMP, int par2)
|
||||
{
|
||||
+ transferPlayerToDimension(par1EntityPlayerMP, par2, mcServer.worldServerForDimension(par2).func_85176_s());
|
||||
+ }
|
||||
+
|
||||
+ public void transferPlayerToDimension(EntityPlayerMP par1EntityPlayerMP, int par2, Teleporter teleporter)
|
||||
+ {
|
||||
int var3 = par1EntityPlayerMP.dimension;
|
||||
WorldServer var4 = this.mcServer.worldServerForDimension(par1EntityPlayerMP.dimension);
|
||||
par1EntityPlayerMP.dimension = par2;
|
||||
WorldServer var5 = this.mcServer.worldServerForDimension(par1EntityPlayerMP.dimension);
|
||||
|
@ -37,13 +46,23 @@
|
|||
par1EntityPlayerMP.playerNetServerHandler.sendPacketToPlayer(new Packet9Respawn(par1EntityPlayerMP.dimension, (byte)par1EntityPlayerMP.worldObj.difficultySetting, var5.getWorldInfo().getTerrainType(), var5.getHeight(), par1EntityPlayerMP.theItemInWorldManager.getGameType()));
|
||||
var4.removeEntity(par1EntityPlayerMP);
|
||||
par1EntityPlayerMP.isDead = false;
|
||||
@@ -391,38 +400,18 @@
|
||||
- this.transferEntityToWorld(par1EntityPlayerMP, var3, var4, var5);
|
||||
+ this.transferEntityToWorld(par1EntityPlayerMP, var3, var4, var5, teleporter);
|
||||
this.func_72375_a(par1EntityPlayerMP, var4);
|
||||
par1EntityPlayerMP.playerNetServerHandler.setPlayerLocation(par1EntityPlayerMP.posX, par1EntityPlayerMP.posY, par1EntityPlayerMP.posZ, par1EntityPlayerMP.rotationYaw, par1EntityPlayerMP.rotationPitch);
|
||||
par1EntityPlayerMP.theItemInWorldManager.setWorld(var5);
|
||||
@@ -391,38 +405,23 @@
|
||||
*/
|
||||
public void transferEntityToWorld(Entity par1Entity, int par2, WorldServer par3WorldServer, WorldServer par4WorldServer)
|
||||
{
|
||||
- double var5 = par1Entity.posX;
|
||||
- double var7 = par1Entity.posZ;
|
||||
- double var9 = 8.0D;
|
||||
+ transferEntityToWorld(par1Entity, par2, par3WorldServer, par4WorldServer, par4WorldServer.func_85176_s());
|
||||
+ }
|
||||
+
|
||||
+ public void transferEntityToWorld(Entity par1Entity, int par2, WorldServer par3WorldServer, WorldServer par4WorldServer, Teleporter teleporter)
|
||||
+ {
|
||||
+ WorldProvider pOld = par3WorldServer.provider;
|
||||
+ WorldProvider pNew = par4WorldServer.provider;
|
||||
+ double moveFactor = pOld.getMovementFactor() / pNew.getMovementFactor();
|
||||
|
@ -82,3 +101,12 @@
|
|||
{
|
||||
ChunkCoordinates var18;
|
||||
|
||||
@@ -459,7 +458,7 @@
|
||||
par4WorldServer.spawnEntityInWorld(par1Entity);
|
||||
par1Entity.setLocationAndAngles(var5, par1Entity.posY, var7, par1Entity.rotationYaw, par1Entity.rotationPitch);
|
||||
par4WorldServer.updateEntityWithOptionalForce(par1Entity, false);
|
||||
- par4WorldServer.func_85176_s().placeInPortal(par1Entity, var11, var13, var15, var17);
|
||||
+ teleporter.placeInPortal(par1Entity, var11, var13, var15, var17);
|
||||
}
|
||||
|
||||
par3WorldServer.theProfiler.endSection();
|
||||
|
|
|
@ -21,17 +21,18 @@
|
|||
|
||||
public class WorldServer extends World
|
||||
{
|
||||
@@ -45,6 +52,9 @@
|
||||
@@ -45,6 +52,10 @@
|
||||
/** An IntHashMap of entity IDs (integers) to their Entity objects. */
|
||||
private IntHashMap entityIdMap;
|
||||
|
||||
+ /** Stores the recently processed (lighting) chunks */
|
||||
+ protected Set<ChunkCoordIntPair> doneChunks = new HashSet<ChunkCoordIntPair>();
|
||||
+ public List<Teleporter> customTeleporters = new ArrayList<Teleporter>();
|
||||
+
|
||||
public WorldServer(MinecraftServer par1MinecraftServer, ISaveHandler par2ISaveHandler, String par3Str, int par4, WorldSettings par5WorldSettings, Profiler par6Profiler)
|
||||
{
|
||||
super(par2ISaveHandler, par3Str, par5WorldSettings, WorldProvider.getProviderForDimension(par4), par6Profiler);
|
||||
@@ -68,6 +78,7 @@
|
||||
@@ -68,6 +79,7 @@
|
||||
}
|
||||
|
||||
this.field_85177_Q = new Teleporter(this);
|
||||
|
@ -39,7 +40,18 @@
|
|||
}
|
||||
|
||||
/**
|
||||
@@ -184,10 +195,7 @@
|
||||
@@ -131,6 +143,10 @@
|
||||
this.villageSiegeObj.tick();
|
||||
this.theProfiler.endStartSection("portalForcer");
|
||||
this.field_85177_Q.func_85189_a(this.getTotalWorldTime());
|
||||
+ for (Teleporter tele : customTeleporters)
|
||||
+ {
|
||||
+ tele.func_85189_a(getTotalWorldTime());
|
||||
+ }
|
||||
this.theProfiler.endSection();
|
||||
this.sendAndApplyBlockEvents();
|
||||
}
|
||||
@@ -184,10 +200,7 @@
|
||||
|
||||
private void resetRainAndThunder()
|
||||
{
|
||||
|
@ -51,7 +63,7 @@
|
|||
}
|
||||
|
||||
public boolean areAllPlayersAsleep()
|
||||
@@ -258,6 +266,14 @@
|
||||
@@ -258,6 +271,14 @@
|
||||
int var1 = 0;
|
||||
int var2 = 0;
|
||||
Iterator var3 = this.activeChunkSet.iterator();
|
||||
|
@ -66,7 +78,7 @@
|
|||
|
||||
while (var3.hasNext())
|
||||
{
|
||||
@@ -268,14 +284,16 @@
|
||||
@@ -268,14 +289,16 @@
|
||||
Chunk var7 = this.getChunkFromChunkCoords(var4.chunkXPos, var4.chunkZPos);
|
||||
this.moodSoundAndLightCheck(var5, var6, var7);
|
||||
this.theProfiler.endStartSection("tickChunk");
|
||||
|
@ -85,7 +97,7 @@
|
|||
{
|
||||
this.updateLCG = this.updateLCG * 3 + 1013904223;
|
||||
var8 = this.updateLCG >> 2;
|
||||
@@ -293,7 +311,7 @@
|
||||
@@ -293,7 +316,7 @@
|
||||
this.theProfiler.endStartSection("iceandsnow");
|
||||
int var13;
|
||||
|
||||
|
@ -94,7 +106,7 @@
|
|||
{
|
||||
this.updateLCG = this.updateLCG * 3 + 1013904223;
|
||||
var8 = this.updateLCG >> 2;
|
||||
@@ -372,7 +390,8 @@
|
||||
@@ -372,7 +395,8 @@
|
||||
public void func_82740_a(int par1, int par2, int par3, int par4, int par5, int par6)
|
||||
{
|
||||
NextTickListEntry var7 = new NextTickListEntry(par1, par2, par3, par4);
|
||||
|
@ -104,7 +116,7 @@
|
|||
|
||||
if (this.scheduledUpdatesAreImmediate && par4 > 0)
|
||||
{
|
||||
@@ -434,7 +453,7 @@
|
||||
@@ -434,7 +458,7 @@
|
||||
*/
|
||||
public void updateEntities()
|
||||
{
|
||||
|
@ -113,7 +125,7 @@
|
|||
{
|
||||
if (this.updateEntityTick++ >= 1200)
|
||||
{
|
||||
@@ -483,7 +502,8 @@
|
||||
@@ -483,7 +507,8 @@
|
||||
|
||||
this.pendingTickListEntries.remove(var4);
|
||||
this.field_73064_N.remove(var4);
|
||||
|
@ -123,7 +135,7 @@
|
|||
|
||||
if (this.checkChunksExist(var4.xCoord - var5, var4.yCoord - var5, var4.zCoord - var5, var4.xCoord + var5, var4.yCoord + var5, var4.zCoord + var5))
|
||||
{
|
||||
@@ -601,15 +621,27 @@
|
||||
@@ -601,15 +626,27 @@
|
||||
public List getAllTileEntityInBox(int par1, int par2, int par3, int par4, int par5, int par6)
|
||||
{
|
||||
ArrayList var7 = new ArrayList();
|
||||
|
@ -160,7 +172,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -620,6 +652,11 @@
|
||||
@@ -620,6 +657,11 @@
|
||||
* Called when checking if a certain block can be mined or not. The 'spawn safe zone' check is located here.
|
||||
*/
|
||||
public boolean canMineBlock(EntityPlayer par1EntityPlayer, int par2, int par3, int par4)
|
||||
|
@ -172,7 +184,7 @@
|
|||
{
|
||||
int var5 = MathHelper.abs_int(par2 - this.worldInfo.getSpawnX());
|
||||
int var6 = MathHelper.abs_int(par4 - this.worldInfo.getSpawnZ());
|
||||
@@ -629,7 +666,7 @@
|
||||
@@ -629,7 +671,7 @@
|
||||
var6 = var5;
|
||||
}
|
||||
|
||||
|
@ -181,7 +193,7 @@
|
|||
}
|
||||
|
||||
protected void initialize(WorldSettings par1WorldSettings)
|
||||
@@ -712,7 +749,7 @@
|
||||
@@ -712,7 +754,7 @@
|
||||
*/
|
||||
protected void createBonusChest()
|
||||
{
|
||||
|
@ -190,7 +202,7 @@
|
|||
|
||||
for (int var2 = 0; var2 < 10; ++var2)
|
||||
{
|
||||
@@ -755,6 +792,7 @@
|
||||
@@ -755,6 +797,7 @@
|
||||
}
|
||||
|
||||
this.chunkProvider.saveChunks(par1, par2IProgressUpdate);
|
||||
|
@ -198,7 +210,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -766,6 +804,7 @@
|
||||
@@ -766,6 +809,7 @@
|
||||
this.checkSessionLock();
|
||||
this.saveHandler.saveWorldInfoWithPlayer(this.worldInfo, this.mcServer.getConfigurationManager().getTagsFromLastWrite());
|
||||
this.mapStorage.saveAllData();
|
||||
|
@ -206,7 +218,7 @@
|
|||
}
|
||||
|
||||
/**
|
||||
@@ -996,4 +1035,9 @@
|
||||
@@ -996,4 +1040,9 @@
|
||||
{
|
||||
return this.field_85177_Q;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue