octopuscraft吧 关注:2,142贴子:44,165

【坑java笔记】方便理清思路的记录贴

只看楼主收藏回复

追踪各种超类,一会就看混了。所以记录一下,也方便自己查阅。另求原码触指点错误,求板砖 QAQ 谁有比较好的源码交流平台也请务必告诉我。。


1楼2014-03-10 23:26回复
    2楼!作业刚刚完QAQ


    IP属地:广东来自手机贴吧2楼2014-03-10 23:30
    收起回复
      今天找出enderpearl的源码来看,想看看小黑眼是怎么工作的。。

      继承item类,构造函数初始化小黑眼stack为16,设置创造标签


      3楼2014-03-10 23:31
      收起回复

        做了下简单的注释,然后就是最关键的语句了。
        par2World.spawnEntityInWorld(new EntityEnderPearl(par2World, par3EntityPlayer));
        这句相当坑爹。。待我慢慢追根溯祖。。


        5楼2014-03-10 23:47
        收起回复
          卧槽大触


          IP属地:广西来自Android客户端6楼2014-03-10 23:54
          收起回复

            看下world类的 spawnEntityInWorld方法,这是一个bool类型的方法,返回值要么是真,要么是假。mcp给出的这个方法的注释是在世界里放置所有实体(没明白啥意思),那就研究下。

            floor_double这个函数出现频率貌似挺高,实现的是取double类型数的底(数学符号└ ┘),就是说返回值是整数,这个整数是小于或者等于par0的最大整数。如par0 = -1.9,则返回值为-2.
            所以 spawnEntityInWorld方法中var2等于entity(玩家)所在x坐标除以16取底,var3z坐标除以16取底,boolean var4 = par1Entity.field_98038_p; 这玩意费解,field_98038_p貌似是判断关于骑乘相关的函数,没有去跟踪。。。(太烦QAQ) 但是后面第一个if语句说明如果这里的entity是entityplayer的对象的话,也就是说这里的entity是玩家的话,var4为true


            7楼2014-03-11 00:14
            收起回复
              直接看world类的spawnEntityInWorld貌似有点烦 0。0
              我先看看在itemenderpearl类中这个函数的传入参数。。 new EntityEnderPearl(par2World, par3EntityPlayer)
              建立了一个EntityEnderPearl的对象。。去看看EntityEnderPearl类的构造函数

              额。。看来是调用了超类的构造函数。。
              找到超类entitythrowable。。
              那么去看看超类的构造函数

              噗。。坑。。明天再看了。。


              8楼2014-03-11 00:25
              回复
                大触QAQ


                9楼2014-03-11 00:57
                回复
                  围观大触QAQ


                  IP属地:广东10楼2014-03-11 07:00
                  回复
                    大触QAQ


                    11楼2014-03-11 11:25
                    回复
                      楼上大触们都喜欢卖萌→_→太讨厌了-.-


                      来自Android客户端12楼2014-03-11 11:50
                      回复
                        看不懂- -


                        IP属地:北京来自Android客户端13楼2014-03-11 12:06
                        回复
                          大触QAQ为什么要伤害我的眼睛0 0


                          IP属地:福建来自Android客户端14楼2014-03-11 12:52
                          收起回复

                            一路往上追踪到超类entity。。涉及到的方法很多。。entity是一个很重要的超类了。先把涉及到的关键的方法理解一下。上面的setPosition方法是设置实体的坐标以及碰撞箱的。
                            传入的参数依次是x坐标,y坐标,z坐标。
                            minX、minY、minZ;maxX、maxY、maxZ是这个立方体碰撞箱的对角坐标。
                            minX=实体所在x坐标-实体宽/2;
                            minY=实体所在y坐标-yOffset+这个实体的ysize; (这里yoffset指的是y的偏移量,根据不同实体而定,有的为0,有的为高度/2,在throwable的构造函数里设为0. 但是ysize有点没搞明白, 求指点!!)
                            minZ=实体所在z坐标-实体宽/2;
                            且满足:
                            maxX=minX+实体宽;
                            maxY=maxY+实体高;
                            maxZ=maxZ+实体宽。
                            看看船的碰撞箱吧。
                            this.setSize(1.5F, 0.6F); 说明船宽为1.5,高为0.6,
                            this.yOffset = this.height / 2.0F; yOffset为0.3
                            不过不知道ysize是怎么定义的。。囧。。 还是算了吧,以后再研究ysize是怎么弄的,貌似和entity的移动有着很大的关系。。


                            15楼2014-03-11 14:28
                            收起回复
                              再回到entitythrowable的构造函数吧。我给加了些注释。回头再看看setThrowableHeading方法。


                              16楼2014-03-11 14:40
                              收起回复