Skip to content

Commit 2f0dceb

Browse files
committed
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.
1 parent 0f3b030 commit 2f0dceb

File tree

3 files changed

+61
-21
lines changed

3 files changed

+61
-21
lines changed

common/net/minecraftforge/common/ForgeVersion.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77

88
public class ForgeVersion
99
{
10-
//This number is incremented every Minecraft version, and never reset
10+
//This number is incremented every time we remove deprecated code/major API changes, never reset
1111
public static final int majorVersion = 6;
12-
//This number is incremented every official release, and reset every Minecraft version
13-
public static final int minorVersion = 0;
12+
//This number is incremented every minecraft release, never reset
13+
public static final int minorVersion = 2;
1414
//This number is incremented every time a interface changes or new major feature is added, and reset every Minecraft version
1515
public static final int revisionVersion = 1;
1616
//This number is incremented every time Jenkins builds Forge, and never reset. Should always be 0 in the repo code.

patches/common/net/minecraft/src/ServerConfigurationManager.java.patch

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,21 +29,40 @@
2929
var7.entityId = par1EntityPlayerMP.entityId;
3030
WorldServer var8 = this.mcServer.worldServerForDimension(par1EntityPlayerMP.dimension);
3131
this.func_72381_a(var7, par1EntityPlayerMP, var8);
32-
@@ -367,6 +375,7 @@
32+
@@ -363,14 +371,20 @@
33+
34+
public void transferPlayerToDimension(EntityPlayerMP par1EntityPlayerMP, int par2)
35+
{
36+
+ transferPlayerToDimension(par1EntityPlayerMP, par2, mcServer.worldServerForDimension(par2).func_85176_s());
37+
+ }
38+
+
39+
+ public void transferPlayerToDimension(EntityPlayerMP par1EntityPlayerMP, int par2, Teleporter teleporter)
40+
+ {
41+
int var3 = par1EntityPlayerMP.dimension;
3342
WorldServer var4 = this.mcServer.worldServerForDimension(par1EntityPlayerMP.dimension);
3443
par1EntityPlayerMP.dimension = par2;
3544
WorldServer var5 = this.mcServer.worldServerForDimension(par1EntityPlayerMP.dimension);
3645
+
3746
par1EntityPlayerMP.playerNetServerHandler.sendPacketToPlayer(new Packet9Respawn(par1EntityPlayerMP.dimension, (byte)par1EntityPlayerMP.worldObj.difficultySetting, var5.getWorldInfo().getTerrainType(), var5.getHeight(), par1EntityPlayerMP.theItemInWorldManager.getGameType()));
3847
var4.removeEntity(par1EntityPlayerMP);
3948
par1EntityPlayerMP.isDead = false;
40-
@@ -391,38 +400,18 @@
49+
- this.transferEntityToWorld(par1EntityPlayerMP, var3, var4, var5);
50+
+ this.transferEntityToWorld(par1EntityPlayerMP, var3, var4, var5, teleporter);
51+
this.func_72375_a(par1EntityPlayerMP, var4);
52+
par1EntityPlayerMP.playerNetServerHandler.setPlayerLocation(par1EntityPlayerMP.posX, par1EntityPlayerMP.posY, par1EntityPlayerMP.posZ, par1EntityPlayerMP.rotationYaw, par1EntityPlayerMP.rotationPitch);
53+
par1EntityPlayerMP.theItemInWorldManager.setWorld(var5);
54+
@@ -391,38 +405,23 @@
4155
*/
4256
public void transferEntityToWorld(Entity par1Entity, int par2, WorldServer par3WorldServer, WorldServer par4WorldServer)
4357
{
4458
- double var5 = par1Entity.posX;
4559
- double var7 = par1Entity.posZ;
4660
- double var9 = 8.0D;
61+
+ transferEntityToWorld(par1Entity, par2, par3WorldServer, par4WorldServer, par4WorldServer.func_85176_s());
62+
+ }
63+
+
64+
+ public void transferEntityToWorld(Entity par1Entity, int par2, WorldServer par3WorldServer, WorldServer par4WorldServer, Teleporter teleporter)
65+
+ {
4766
+ WorldProvider pOld = par3WorldServer.provider;
4867
+ WorldProvider pNew = par4WorldServer.provider;
4968
+ double moveFactor = pOld.getMovementFactor() / pNew.getMovementFactor();
@@ -82,3 +101,12 @@
82101
{
83102
ChunkCoordinates var18;
84103

104+
@@ -459,7 +458,7 @@
105+
par4WorldServer.spawnEntityInWorld(par1Entity);
106+
par1Entity.setLocationAndAngles(var5, par1Entity.posY, var7, par1Entity.rotationYaw, par1Entity.rotationPitch);
107+
par4WorldServer.updateEntityWithOptionalForce(par1Entity, false);
108+
- par4WorldServer.func_85176_s().placeInPortal(par1Entity, var11, var13, var15, var17);
109+
+ teleporter.placeInPortal(par1Entity, var11, var13, var15, var17);
110+
}
111+
112+
par3WorldServer.theProfiler.endSection();

patches/common/net/minecraft/src/WorldServer.java.patch

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,25 +21,37 @@
2121

2222
public class WorldServer extends World
2323
{
24-
@@ -45,6 +52,9 @@
24+
@@ -45,6 +52,10 @@
2525
/** An IntHashMap of entity IDs (integers) to their Entity objects. */
2626
private IntHashMap entityIdMap;
2727

2828
+ /** Stores the recently processed (lighting) chunks */
2929
+ protected Set<ChunkCoordIntPair> doneChunks = new HashSet<ChunkCoordIntPair>();
30+
+ public List<Teleporter> customTeleporters = new ArrayList<Teleporter>();
3031
+
3132
public WorldServer(MinecraftServer par1MinecraftServer, ISaveHandler par2ISaveHandler, String par3Str, int par4, WorldSettings par5WorldSettings, Profiler par6Profiler)
3233
{
3334
super(par2ISaveHandler, par3Str, par5WorldSettings, WorldProvider.getProviderForDimension(par4), par6Profiler);
34-
@@ -68,6 +78,7 @@
35+
@@ -68,6 +79,7 @@
3536
}
3637

3738
this.field_85177_Q = new Teleporter(this);
3839
+ DimensionManager.setWorld(par4, this);
3940
}
4041

4142
/**
42-
@@ -184,10 +195,7 @@
43+
@@ -131,6 +143,10 @@
44+
this.villageSiegeObj.tick();
45+
this.theProfiler.endStartSection("portalForcer");
46+
this.field_85177_Q.func_85189_a(this.getTotalWorldTime());
47+
+ for (Teleporter tele : customTeleporters)
48+
+ {
49+
+ tele.func_85189_a(getTotalWorldTime());
50+
+ }
51+
this.theProfiler.endSection();
52+
this.sendAndApplyBlockEvents();
53+
}
54+
@@ -184,10 +200,7 @@
4355

4456
private void resetRainAndThunder()
4557
{
@@ -51,7 +63,7 @@
5163
}
5264

5365
public boolean areAllPlayersAsleep()
54-
@@ -258,6 +266,14 @@
66+
@@ -258,6 +271,14 @@
5567
int var1 = 0;
5668
int var2 = 0;
5769
Iterator var3 = this.activeChunkSet.iterator();
@@ -66,7 +78,7 @@
6678

6779
while (var3.hasNext())
6880
{
69-
@@ -268,14 +284,16 @@
81+
@@ -268,14 +289,16 @@
7082
Chunk var7 = this.getChunkFromChunkCoords(var4.chunkXPos, var4.chunkZPos);
7183
this.moodSoundAndLightCheck(var5, var6, var7);
7284
this.theProfiler.endStartSection("tickChunk");
@@ -85,7 +97,7 @@
8597
{
8698
this.updateLCG = this.updateLCG * 3 + 1013904223;
8799
var8 = this.updateLCG >> 2;
88-
@@ -293,7 +311,7 @@
100+
@@ -293,7 +316,7 @@
89101
this.theProfiler.endStartSection("iceandsnow");
90102
int var13;
91103

@@ -94,7 +106,7 @@
94106
{
95107
this.updateLCG = this.updateLCG * 3 + 1013904223;
96108
var8 = this.updateLCG >> 2;
97-
@@ -372,7 +390,8 @@
109+
@@ -372,7 +395,8 @@
98110
public void func_82740_a(int par1, int par2, int par3, int par4, int par5, int par6)
99111
{
100112
NextTickListEntry var7 = new NextTickListEntry(par1, par2, par3, par4);
@@ -104,7 +116,7 @@
104116

105117
if (this.scheduledUpdatesAreImmediate && par4 > 0)
106118
{
107-
@@ -434,7 +453,7 @@
119+
@@ -434,7 +458,7 @@
108120
*/
109121
public void updateEntities()
110122
{
@@ -113,7 +125,7 @@
113125
{
114126
if (this.updateEntityTick++ >= 1200)
115127
{
116-
@@ -483,7 +502,8 @@
128+
@@ -483,7 +507,8 @@
117129

118130
this.pendingTickListEntries.remove(var4);
119131
this.field_73064_N.remove(var4);
@@ -123,7 +135,7 @@
123135

124136
if (this.checkChunksExist(var4.xCoord - var5, var4.yCoord - var5, var4.zCoord - var5, var4.xCoord + var5, var4.yCoord + var5, var4.zCoord + var5))
125137
{
126-
@@ -601,15 +621,27 @@
138+
@@ -601,15 +626,27 @@
127139
public List getAllTileEntityInBox(int par1, int par2, int par3, int par4, int par5, int par6)
128140
{
129141
ArrayList var7 = new ArrayList();
@@ -160,7 +172,7 @@
160172
}
161173
}
162174

163-
@@ -620,6 +652,11 @@
175+
@@ -620,6 +657,11 @@
164176
* Called when checking if a certain block can be mined or not. The 'spawn safe zone' check is located here.
165177
*/
166178
public boolean canMineBlock(EntityPlayer par1EntityPlayer, int par2, int par3, int par4)
@@ -172,7 +184,7 @@
172184
{
173185
int var5 = MathHelper.abs_int(par2 - this.worldInfo.getSpawnX());
174186
int var6 = MathHelper.abs_int(par4 - this.worldInfo.getSpawnZ());
175-
@@ -629,7 +666,7 @@
187+
@@ -629,7 +671,7 @@
176188
var6 = var5;
177189
}
178190

@@ -181,7 +193,7 @@
181193
}
182194

183195
protected void initialize(WorldSettings par1WorldSettings)
184-
@@ -712,7 +749,7 @@
196+
@@ -712,7 +754,7 @@
185197
*/
186198
protected void createBonusChest()
187199
{
@@ -190,23 +202,23 @@
190202

191203
for (int var2 = 0; var2 < 10; ++var2)
192204
{
193-
@@ -755,6 +792,7 @@
205+
@@ -755,6 +797,7 @@
194206
}
195207

196208
this.chunkProvider.saveChunks(par1, par2IProgressUpdate);
197209
+ MinecraftForge.EVENT_BUS.post(new WorldEvent.Save(this));
198210
}
199211
}
200212

201-
@@ -766,6 +804,7 @@
213+
@@ -766,6 +809,7 @@
202214
this.checkSessionLock();
203215
this.saveHandler.saveWorldInfoWithPlayer(this.worldInfo, this.mcServer.getConfigurationManager().getTagsFromLastWrite());
204216
this.mapStorage.saveAllData();
205217
+ this.perWorldStorage.saveAllData();
206218
}
207219

208220
/**
209-
@@ -996,4 +1035,9 @@
221+
@@ -996,4 +1040,9 @@
210222
{
211223
return this.field_85177_Q;
212224
}

0 commit comments

Comments
 (0)