<基于1.8 Forge的Minecraft mod制作经验分享>

别被那个Proxy代理吓到,很简单的。

  1. 我们先讨论为什么要用Proxy代理:

    像打开新的UI这种操作,比如打开一个背包,每个玩家都有各自的背包,这个操作仅仅应该发生在客户端,服务端通常是不做图形上的操作的。而像发送一个消息广播之类的事件,则应该在服务端处理,客户端只负责接收。因此,我们有了区分当前运行的是客户端还是服务端的需求,以分别处理不同的事件。诚然,我们可以粗暴的每次用if来判定,但这样效率无疑是很低的。所以Proxy就派上用场了。

  2. 接下来讨论什么是Proxy,它是怎么解决上述问题的:

    Proxy的含义就是双面代理,通过为不同的运行端实例化不同的类,来使得不同端执行不同操作。这两个面、即两个类,通常分别叫做ClientProxy和CommonProxy,这个实例通常这么申明:public static CommonProxy proxy,并且ClientProxy必须继承自CommonProxy,这样才能用clientProxy初始化proxy实例。但这里有个疑问,就是ClientProxy里的方法是否需要Override并且super父类CommonProxy的方法。不过现在貌似没遇到过问题,那就先往后走吧。

  3. 好,现在上代码,看看实际中Proxy的用法:

    @SidedProxy(clientSide = "com.zhengxiaoyao0716.douromod.ClientProxy", serverSide = "com.zhengxiaoyao0716.douromod.CommonProxy")

    public static CommonProxy proxy;

    上面代码的含义:@SideProxy注释是用来标识代理器的,对下面的proxy实例加上了这个标识后,Forge开始时就会自动根据clientSide、serverSide指定的类(是的,要写上完整的包路径)来为其做不同的初始化。所以请注意:1、proxy不可为final(否则你让人家怎么初始化)2、不需要再手动将其初始化。

接下来的使用就很简单了,你可以把proxy当成一个接口,放心大胆的在其上调用方法,执行时会自动调用ClientProxy或CommonProxy类里面的方法。也不知道我说明白没有

老规矩Github:https://github.com/zhengxiaoyao0716/DouroMod,快来一起做啊!!!好吧我承认我写那么认真就是为了如果有一天我弃坑了,能有好心人把斗罗大坑填上。之前在贴吧里面遇到了一个曾经挖过这个坑的前辈,感慨良多啊

第四章:使用Proxy代理让客户端服务端分工合作。的更多相关文章

  1. nginx&http 第四章 ngx http代理 && 转载

    Nginx访问上游服务器的流程大致分以下几个阶段:启动upstream.连接上游服务器.向上游发送请求.接收上游响应(包头/包体).结束请求. upstream相关的两个重要数据结构ngx_http_ ...

  2. nginx&http 第四章 ngx http代理 upstream流程图

  3. 第四章 SSL和Proxy高级选项

    在前一章,我们已经学习了HTTP消息如何通过Burp Proxy进行拦截和处理,本章我们将继续学习HTTPS协议消息的拦截和处理. HTTPS协议是为了数据传输安全的需要,在HTTP原有的基础上,加入 ...

  4. 第四章SignalR自托管主机

    第四章SignalR自托管主机 SignalR服务器通常在IIS的Asp.Net应用程序上承载,但它也可以使用自托管库来作为自托管的主机来运行(就像控制台应用程序或Windows服务那样)与Signa ...

  5. (转)iOS Wow体验 - 第四章 - 为应用的上下文环境而设计

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第四章译文精选,其余章节将陆续放出.上一篇:Wow ...

  6. JAVA: httpclient 详细说明——第四章;

    httpclient 具体解释--第一章. httpclient 具体解释--第二章: httpclient 具体解释--第三章: httpclient 具体解释--第四章: httpclient 具 ...

  7. 豌豆夹Redis解决方式Codis源代码剖析:Proxy代理

    豌豆夹Redis解决方式Codis源代码剖析:Proxy代理 1.预备知识 1.1 Codis Codis就不详细说了,摘抄一下GitHub上的一些项目描写叙述: Codis is a proxy b ...

  8. 豌豆夹Redis解决方案Codis源码剖析:Proxy代理

    豌豆夹Redis解决方案Codis源码剖析:Proxy代理 1.预备知识 1.1 Codis Codis就不详细说了,摘抄一下GitHub上的一些项目描述: Codis is a proxy base ...

  9. Python--Redis实战:第四章:数据安全与性能保障:第7节:非事务型流水线

    之前章节首次介绍multi和exec的时候讨论过它们的”事务“性质:被multi和exec包裹的命令在执行时不会被其他客户端打扰.而使用事务的其中一个好处就是底层的客户端会通过使用流水线来提高事务执行 ...

随机推荐

  1. [个人原创]关于java中对象排序的一些探讨(二)

    2.  使用Collections.sort()方法 Collections类中提供了诸多静态方法,诸如addAll(),max()等等.当自己相对Collection接口下的类处理的时候,可以看看这 ...

  2. 【USACO 1.1.2】贪婪的送礼者

    [题目描述] 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少. 在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人. 然而,在任何一 ...

  3. Ipad亚麻布纹背景-最终效果_学习教程

  4. arp断网攻击解决办法

    局域网中有这个提示arp断网攻击是正常的,说明防火墙已经拦截了,是有人用P2P工具控制你的网速,或者是局域网有机器中病毒了也会有这样的提示,不过不用担心,今天给大家带来几个防止arp断网攻击的办法,希 ...

  5. SxsTrace工具使用方法(转)

    http://blog.sina.com.cn/s/blog_494e45fe0102dtt3.html Windows7平台上有一个强大的SxsTrace工具,可以跟踪调试应用程序运行时需要的动态库 ...

  6. 页面d初始化加载

    1.$(document).ready(function () { alert("Hello Word!"); }); 或简写为 2.$(function(){ alert(&qu ...

  7. ASP.NET WEB API 2 框架揭秘 读书笔记(一)

    第一章 概述 主要内容是介绍Web的基本概念,Restfull的基本概念及特性.最后介绍创建简单WebApi程序的步骤. Web的基本概念 IP/TCP协议簇分层,分为两种 链路层->网络层-& ...

  8. 深入Java虚拟机读书笔记第三章安全

    为什么需要安全性 Java的安全模型是其多个重要结构特点之一,它使Java成为适于网络环境的技术.Java安全模型侧重于保护终端用户免受从网络下载的.来自不可靠来源的.恶意程序(以及善于程序中的bug ...

  9. PhotoShop 移动工具详解

    自动选择工具 勾选后  可以随意移动任意图层     不勾选  只适用于移动当前所选图层 Ctrl+Z 还原移动Ctrl+Alt+Z 后退一步 复制图像 Alt键+拖动 Shift+Alt+拖动   ...

  10. Struts2 DMI的使用

    Struts2的Action类中可以放置多个方法并在struts.xml中配置供页面调用.只要方法符合execute()方法的标准即返回类型是String就可以了. 同一个Action多个方法调用的方 ...