Update some patches- more network work
This commit is contained in:
parent
f4b9055171
commit
84efb72e46
|
@ -1,6 +1,6 @@
|
|||
--- commands.py
|
||||
+++ commands.py
|
||||
@@ -582,6 +582,9 @@
|
||||
@@ -584,6 +584,9 @@
|
||||
self.has_astyle_cfg = False
|
||||
if os.path.isfile(self.astyleconf):
|
||||
self.has_astyle_cfg = True
|
||||
|
@ -10,15 +10,7 @@
|
|||
|
||||
def creatergcfg(self, reobf=False, keep_lvt=False, keep_generics=False, rg_update=False):
|
||||
"""Create the files necessary for RetroGuard"""
|
||||
@@ -1039,6 +1042,7 @@
|
||||
all_files = True
|
||||
append_pattern = False
|
||||
pkglist = filterdirs(pathsrclk[side], '*.java', append_pattern=append_pattern, all_files=all_files)
|
||||
+ pkglist = pkglist + filterdirs(self.srcshared, '*.java', append_pattern=append_pattern, all_files=all_files) #FML, Add Common folder
|
||||
dirs = ' '.join(pkglist)
|
||||
classpath = os.pathsep.join(cplk[side])
|
||||
forkcmd = self.cmdrecomp.format(classpath=classpath, sourcepath=pathsrclk[side], outpath=pathbinlk[side],
|
||||
@@ -1195,20 +1199,20 @@
|
||||
@@ -1198,20 +1201,20 @@
|
||||
with open(self.csvmethods, 'rb') as fh:
|
||||
methodsreader = csv.DictReader(fh)
|
||||
for row in methodsreader:
|
||||
|
@ -42,7 +34,7 @@
|
|||
names['params'][row['param']] = row['name']
|
||||
|
||||
regexps = {
|
||||
@@ -1238,6 +1242,11 @@
|
||||
@@ -1309,6 +1312,11 @@
|
||||
|
||||
# HINT: We pathwalk the sources
|
||||
for path, _, filelist in os.walk(pathsrclk[side], followlinks=True):
|
||||
|
@ -54,24 +46,9 @@
|
|||
for cur_file in fnmatch.filter(filelist, '*.java'):
|
||||
updatefile(os.path.normpath(os.path.join(path, cur_file)))
|
||||
return True
|
||||
@@ -1320,12 +1329,14 @@
|
||||
pathsrclk = {CLIENT: self.srcclient, SERVER: self.srcserver}
|
||||
|
||||
strip_comments(pathsrclk[side])
|
||||
+ strip_comments(self.srcshared)
|
||||
|
||||
def process_cleanup(self, side):
|
||||
"""Do lots of random cleanups including stripping comments, trailing whitespace and extra blank lines"""
|
||||
pathsrclk = {CLIENT: self.srcclient, SERVER: self.srcserver}
|
||||
|
||||
src_cleanup(pathsrclk[side], fix_imports=True, fix_unicode=True, fix_charval=True, fix_pi=True, fix_round=False)
|
||||
+ src_cleanup(self.srcshared, fix_imports=True, fix_unicode=True, fix_charval=True, fix_pi=True, fix_round=False)
|
||||
|
||||
def process_javadoc(self, side):
|
||||
"""Add CSV descriptions to methods and fields as javadoc"""
|
||||
@@ -1334,6 +1345,21 @@
|
||||
if not self.has_doc_csv:
|
||||
self.logger.warning('!! javadoc disabled due to no csvs !!')
|
||||
@@ -1442,6 +1450,21 @@
|
||||
if not self.has_astyle_cfg:
|
||||
self.logger.warning('!! reformatting disabled due to no config !!')
|
||||
return False
|
||||
+
|
||||
+ #FML Recall this function on the common folder
|
||||
|
@ -89,39 +66,15 @@
|
|||
+ self.srcserver = tmp
|
||||
+
|
||||
|
||||
#HINT: We read the relevant CSVs
|
||||
methodsreader = csv.DictReader(open(self.csvmethods, 'r'))
|
||||
@@ -1342,13 +1368,13 @@
|
||||
methods = {}
|
||||
for row in methodsreader:
|
||||
#HINT: Only include methods that have a non-empty description
|
||||
- if int(row['side']) == side and row['desc']:
|
||||
+ if (int(row['side']) == side or int(row['side']) == 2) and row['desc']:
|
||||
methods[row['searge']] = row['desc'].replace('*/', '* /')
|
||||
|
||||
fields = {}
|
||||
for row in fieldsreader:
|
||||
#HINT: Only include fields that have a non-empty description
|
||||
- if int(row['side']) == side and row['desc']:
|
||||
+ if (int(row['side']) == side or int(row['side']) == 2) and row['desc']:
|
||||
fields[row['searge']] = row['desc'].replace('*/', '* /')
|
||||
|
||||
regexps = {
|
||||
@@ -1420,6 +1446,7 @@
|
||||
|
||||
# HINT: We create the list of source directories based on the list of packages
|
||||
pkglist = filterdirs(pathsrclk[side], '*.java', append_pattern=True)
|
||||
+ pkglist = pkglist + filterdirs(self.srcshared, '*.java', append_pattern=True) #FML, Add Common folder
|
||||
dirs = ' '.join(pkglist)
|
||||
forkcmd = self.cmdastyle.format(classes=dirs, conffile=self.astyleconf)
|
||||
self.runcmd(forkcmd)
|
||||
@@ -1592,6 +1619,9 @@
|
||||
sys.exit(1)
|
||||
@@ -1591,6 +1614,9 @@
|
||||
return
|
||||
|
||||
for entry in newfiles:
|
||||
+ if 'commands.py' in entry[0]: #FML, Disable updating of Commands.py
|
||||
+ print 'Update to runtime/commands.py found, but disbled due to using fml'
|
||||
+ continue
|
||||
if entry[3] == 'U':
|
||||
self.logger.info('Retrieving file from server : %s', entry[0])
|
||||
cur_file = os.path.normpath(entry[0])
|
||||
self.logger.info('New version found for : %s', entry[0])
|
||||
elif entry[3] == 'D':
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package cpw.mods.fml.common.modloader;
|
||||
|
||||
import net.minecraft.src.NetHandler;
|
||||
import net.minecraft.src.NetLoginHandler;
|
||||
import net.minecraft.src.NetworkManager;
|
||||
import cpw.mods.fml.common.network.IConnectionHandler;
|
||||
import cpw.mods.fml.common.network.Player;
|
||||
|
@ -14,4 +15,10 @@ public class ModLoaderConnectionHandler implements IConnectionHandler
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String connectionReceived(NetLoginHandler netHandler, NetworkManager manager)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -18,6 +18,8 @@ import com.google.common.collect.Sets;
|
|||
import com.google.common.hash.Hashing;
|
||||
import com.google.common.io.ByteStreams;
|
||||
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.common.ModContainer;
|
||||
import cpw.mods.fml.common.discovery.ASMDataTable;
|
||||
|
@ -71,10 +73,19 @@ public class FMLNetworkHandler
|
|||
private void handleFMLPacket(Packet250CustomPayload packet, NetworkManager network, NetHandler netHandler)
|
||||
{
|
||||
FMLPacket pkt = FMLPacket.readPacket(packet.field_73629_c);
|
||||
pkt.execute(network, this, netHandler);
|
||||
String userName = null;
|
||||
if (netHandler instanceof NetLoginHandler)
|
||||
{
|
||||
userName = ((NetLoginHandler)netHandler).field_72543_h;
|
||||
}
|
||||
else
|
||||
{
|
||||
userName = netHandler.getPlayer().func_70005_c_();
|
||||
}
|
||||
pkt.execute(network, this, netHandler, userName);
|
||||
}
|
||||
|
||||
public static void onClientConnectToServer(NetLoginHandler netLoginHandler, MinecraftServer server, SocketAddress address, String userName)
|
||||
public static void onConnectionReceivedFromClient(NetLoginHandler netLoginHandler, MinecraftServer server, SocketAddress address, String userName)
|
||||
{
|
||||
instance().handleClientConnection(netLoginHandler, server, address, userName);
|
||||
}
|
||||
|
@ -90,10 +101,19 @@ public class FMLNetworkHandler
|
|||
netLoginHandler.completeConnection("You don't have FML installed, or your installation is too old");
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
// Are we ready to negotiate with the client?
|
||||
if (loginStates.get(netLoginHandler) == 1)
|
||||
{
|
||||
// mods can try and kick undesireables here
|
||||
String modKick = NetworkRegistry.instance().connectionReceived(netLoginHandler, netLoginHandler.field_72538_b);
|
||||
if (modKick != null)
|
||||
{
|
||||
netLoginHandler.completeConnection(modKick);
|
||||
loginStates.remove(netLoginHandler);
|
||||
return;
|
||||
}
|
||||
// The vanilla side wanted to kick
|
||||
if (!handleVanillaLoginKick(netLoginHandler, server, address, userName))
|
||||
{
|
||||
|
@ -190,10 +210,20 @@ public class FMLNetworkHandler
|
|||
return handler.isNetworkMod();
|
||||
}
|
||||
|
||||
|
||||
public NetworkModHandler findNetworkModHandler(ModContainer mc)
|
||||
public NetworkModHandler findNetworkModHandler(Object mc)
|
||||
{
|
||||
return networkModHandlers.get(mc);
|
||||
if (mc instanceof ModContainer)
|
||||
{
|
||||
return networkModHandlers.get(mc);
|
||||
}
|
||||
else if (mc instanceof Integer)
|
||||
{
|
||||
return networkIdLookup.get(mc);
|
||||
}
|
||||
else
|
||||
{
|
||||
return networkModHandlers.get(FMLCommonHandler.instance().findContainerFor(mc));
|
||||
}
|
||||
}
|
||||
|
||||
public Set<ModContainer> getNetworkModList()
|
||||
|
@ -202,11 +232,6 @@ public class FMLNetworkHandler
|
|||
}
|
||||
|
||||
public static void handlePlayerLogin(EntityPlayerMP player, NetServerHandler netHandler, NetworkManager manager)
|
||||
{
|
||||
instance().playerLoggedIn(player, netHandler, manager);
|
||||
}
|
||||
|
||||
private void playerLoggedIn(EntityPlayerMP player, NetServerHandler netHandler, NetworkManager manager)
|
||||
{
|
||||
NetworkRegistry.instance().playerLoggedIn(player, netHandler, manager);
|
||||
}
|
||||
|
|
|
@ -82,7 +82,7 @@ public abstract class FMLPacket
|
|||
|
||||
public abstract FMLPacket consumePacket(byte[] data);
|
||||
|
||||
public abstract void execute(NetworkManager network, FMLNetworkHandler handler, NetHandler netHandler);
|
||||
public abstract void execute(NetworkManager network, FMLNetworkHandler handler, NetHandler netHandler, String userName);
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
|
|
|
@ -3,11 +3,30 @@ package cpw.mods.fml.common.network;
|
|||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.EntityPlayerMP;
|
||||
import net.minecraft.src.NetHandler;
|
||||
import net.minecraft.src.NetLoginHandler;
|
||||
import net.minecraft.src.NetServerHandler;
|
||||
import net.minecraft.src.NetworkManager;
|
||||
|
||||
public interface IConnectionHandler
|
||||
{
|
||||
/**
|
||||
* Called when a player logs into the server
|
||||
*
|
||||
* @param player
|
||||
* @param netHandler
|
||||
* @param manager
|
||||
*/
|
||||
void playerLoggedIn(Player player, NetHandler netHandler, NetworkManager manager);
|
||||
|
||||
/**
|
||||
* If you don't want the connection to continue, return a non-empty string here
|
||||
* If you do, you can do other stuff here- note no FML negotiation has occured yet
|
||||
* though the client is verified as having FML installed
|
||||
*
|
||||
* @param netHandler
|
||||
* @param manager
|
||||
* @return
|
||||
*/
|
||||
String connectionReceived(NetLoginHandler netHandler, NetworkManager manager);
|
||||
|
||||
}
|
||||
|
|
|
@ -12,7 +12,10 @@ import com.google.common.io.ByteArrayDataInput;
|
|||
import com.google.common.io.ByteArrayDataOutput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
|
||||
import net.minecraft.src.NetHandler;
|
||||
import net.minecraft.src.NetLoginHandler;
|
||||
import net.minecraft.src.NetworkManager;
|
||||
|
||||
public class ModIdentifiersPacket extends FMLPacket
|
||||
|
@ -57,7 +60,7 @@ public class ModIdentifiersPacket extends FMLPacket
|
|||
}
|
||||
|
||||
@Override
|
||||
public void execute(NetworkManager network, FMLNetworkHandler handler, NetHandler netHandler)
|
||||
public void execute(NetworkManager network, FMLNetworkHandler handler, NetHandler netHandler, String userName)
|
||||
{
|
||||
for (Entry<String,Integer> idEntry : modIds.entrySet())
|
||||
{
|
||||
|
|
|
@ -64,7 +64,7 @@ public class ModListRequestPacket extends FMLPacket
|
|||
* @see cpw.mods.fml.common.network.FMLPacket#execute()
|
||||
*/
|
||||
@Override
|
||||
public void execute(NetworkManager mgr, FMLNetworkHandler handler, NetHandler netHandler)
|
||||
public void execute(NetworkManager mgr, FMLNetworkHandler handler, NetHandler netHandler, String userName)
|
||||
{
|
||||
List<String> missingMods = Lists.newArrayList();
|
||||
Map<String,String> modVersions = Maps.newHashMap();
|
||||
|
|
|
@ -12,6 +12,7 @@ import com.google.common.io.ByteArrayDataInput;
|
|||
import com.google.common.io.ByteArrayDataOutput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.common.ModContainer;
|
||||
|
||||
|
@ -74,7 +75,7 @@ public class ModListResponsePacket extends FMLPacket
|
|||
}
|
||||
|
||||
@Override
|
||||
public void execute(NetworkManager network, FMLNetworkHandler handler, NetHandler netHandler)
|
||||
public void execute(NetworkManager network, FMLNetworkHandler handler, NetHandler netHandler, String userName)
|
||||
{
|
||||
Map<String, ModContainer> indexedModList = Maps.newHashMap(Loader.instance().getIndexedModList());
|
||||
List<String> missingClientMods = Lists.newArrayList();
|
||||
|
@ -105,10 +106,12 @@ public class ModListResponsePacket extends FMLPacket
|
|||
if (missingClientMods.size()>0 || versionIncorrectMods.size() > 0)
|
||||
{
|
||||
pkt.field_73629_c = FMLPacket.makePacket(MOD_MISSING, missingClientMods, versionIncorrectMods);
|
||||
FMLLog.fine("User %s connection failed: missing %s, bad versions %s", userName, missingClientMods, versionIncorrectMods);
|
||||
}
|
||||
else
|
||||
{
|
||||
pkt.field_73629_c = FMLPacket.makePacket(MOD_IDENTIFIERS);
|
||||
pkt.field_73629_c = FMLPacket.makePacket(MOD_IDENTIFIERS, netHandler);
|
||||
FMLLog.fine("User %s connecting with mods %s", userName, modVersions.keySet());
|
||||
}
|
||||
|
||||
pkt.field_73628_b = pkt.field_73629_c.length;
|
||||
|
|
|
@ -26,7 +26,7 @@ public class ModMissingPacket extends FMLPacket
|
|||
}
|
||||
|
||||
@Override
|
||||
public void execute(NetworkManager network, FMLNetworkHandler handler, NetHandler netHandler)
|
||||
public void execute(NetworkManager network, FMLNetworkHandler handler, NetHandler netHandler, String userName)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
|
|
|
@ -35,18 +35,21 @@ public class NetworkModHandler
|
|||
|
||||
private VersionRange acceptableRange;
|
||||
|
||||
public NetworkModHandler(ModContainer container, Class<?> networkModClass, ASMDataTable table)
|
||||
public NetworkModHandler(ModContainer container, NetworkMod modAnnotation)
|
||||
{
|
||||
this.container = container;
|
||||
this.mod = networkModClass.getAnnotation(NetworkMod.class);
|
||||
this.mod = modAnnotation;
|
||||
this.localId = assignedIds++;
|
||||
this.networkId = this.localId;
|
||||
}
|
||||
public NetworkModHandler(ModContainer container, Class<?> networkModClass, ASMDataTable table)
|
||||
{
|
||||
this(container, networkModClass.getAnnotation(NetworkMod.class));
|
||||
if (this.mod == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
this.localId = assignedIds++;
|
||||
this.networkId = this.localId;
|
||||
|
||||
Set<ASMData> versionCheckHandlers = table.getAnnotationsFor(container).get(NetworkMod.VersionCheckHandler.class.getName());
|
||||
String versionCheckHandlerMethod = null;
|
||||
for (ASMData vch : versionCheckHandlers)
|
||||
|
|
|
@ -11,6 +11,7 @@ import java.util.logging.Level;
|
|||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.EntityPlayerMP;
|
||||
import net.minecraft.src.NetHandler;
|
||||
import net.minecraft.src.NetLoginHandler;
|
||||
import net.minecraft.src.NetServerHandler;
|
||||
import net.minecraft.src.NetworkManager;
|
||||
import net.minecraft.src.Packet250CustomPayload;
|
||||
|
@ -18,6 +19,7 @@ import net.minecraft.src.Packet250CustomPayload;
|
|||
import com.google.common.base.Charsets;
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.base.Splitter;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.collect.ArrayListMultimap;
|
||||
import com.google.common.collect.LinkedHashMultimap;
|
||||
import com.google.common.collect.Lists;
|
||||
|
@ -76,14 +78,7 @@ public class NetworkRegistry
|
|||
*/
|
||||
public void registerChannel(IPacketHandler handler, String channelName)
|
||||
{
|
||||
if ("FML".equals(channelName) || (channelName != null && channelName.startsWith("MC|")))
|
||||
{
|
||||
FMLLog.severe("Illegal attempt to register a special channel %s", channelName);
|
||||
throw new FMLNetworkException();
|
||||
}
|
||||
|
||||
packetHandlers.put(channelName, handler);
|
||||
// invertedChannelList = Multimaps.invertFrom(channelList, ArrayListMultimap.<String, ModContainer>create());
|
||||
}
|
||||
/**
|
||||
* Activate the channel for the player
|
||||
|
@ -121,6 +116,19 @@ public class NetworkRegistry
|
|||
generateChannelRegistration(player, netHandler, manager);
|
||||
}
|
||||
|
||||
String connectionReceived(NetLoginHandler netHandler, NetworkManager manager)
|
||||
{
|
||||
for (IConnectionHandler handler : connectionHandlers)
|
||||
{
|
||||
String kick = handler.connectionReceived(netHandler, manager);
|
||||
if (!Strings.isNullOrEmpty(kick))
|
||||
{
|
||||
return kick;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
void generateChannelRegistration(EntityPlayer player, NetHandler netHandler, NetworkManager manager)
|
||||
{
|
||||
Packet250CustomPayload pkt = new Packet250CustomPayload();
|
||||
|
|
|
@ -177,4 +177,6 @@ public ir.a
|
|||
public ho.a
|
||||
# NetLoginHandler make the "complete connection" callback public so I can reset it during FML negotiation
|
||||
public gw.a(Lgw;Z)Z
|
||||
# NetLoginHandler userName field
|
||||
public gw.h
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
{
|
||||
- String var1 = this.field_72534_f.func_71203_ab().func_72399_a(this.field_72538_b.func_74430_c(), this.field_72543_h);
|
||||
-
|
||||
+ FMLNetworkHandler.onClientConnectToServer(this, this.field_72534_f, this.field_72538_b.func_74430_c(), this.field_72543_h);
|
||||
+ FMLNetworkHandler.onConnectionReceivedFromClient(this, this.field_72534_f, this.field_72538_b.func_74430_c(), this.field_72543_h);
|
||||
+ }
|
||||
+
|
||||
+ public void completeConnection(String var1)
|
||||
|
|
|
@ -1,19 +1,20 @@
|
|||
--- ../src-base/minecraft/net/minecraft/src/ServerConfigurationManager.java
|
||||
+++ ../src-work/minecraft/net/minecraft/src/ServerConfigurationManager.java
|
||||
@@ -9,6 +9,8 @@
|
||||
@@ -9,6 +9,9 @@
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Logger;
|
||||
+
|
||||
+import cpw.mods.fml.common.network.FMLNetworkHandler;
|
||||
+import cpw.mods.fml.common.network.NetworkRegistry;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
|
||||
public abstract class ServerConfigurationManager
|
||||
@@ -54,6 +56,7 @@
|
||||
ChunkCoordinates var5 = var4.func_72861_E();
|
||||
this.func_72381_a(p_72355_2_, (EntityPlayerMP)null, var4);
|
||||
NetServerHandler var6 = new NetServerHandler(this.field_72400_f, p_72355_1_, p_72355_2_);
|
||||
@@ -78,6 +81,7 @@
|
||||
}
|
||||
|
||||
p_72355_2_.func_71116_b();
|
||||
+ FMLNetworkHandler.handlePlayerLogin(p_72355_2_, var6, p_72355_1_);
|
||||
var6.func_72567_b(new Packet1Login(p_72355_2_.field_70157_k, var4.func_72912_H().func_76067_t(), p_72355_2_.field_71134_c.func_73081_b(), var4.func_72912_H().func_76093_s(), var4.field_73011_w.field_76574_g, var4.field_73013_u, var4.func_72800_K(), this.func_72352_l()));
|
||||
var6.func_72567_b(new Packet6SpawnPosition(var5.field_71574_a, var5.field_71572_b, var5.field_71573_c));
|
||||
var6.func_72567_b(new Packet202PlayerAbilities(p_72355_2_.field_71075_bZ));
|
||||
}
|
||||
|
||||
public void func_72364_a(WorldServer[] p_72364_1_)
|
||||
|
|
Loading…
Reference in New Issue