minecraft吧 关注:2,542,814贴子:31,797,858
  • 10回复贴,共1

【揭秘】我有特别的Mod制作技巧-用VB编写一个Minecraft Mod

取消只看楼主收藏回复

大家好这里是天天发水帖的KS君,今天呢就造福吧友来发一个技术贴√
昨天我看到一个大触@囧丨EDFAXD忄 的VB制作Mod贴,感觉好屌,就研究了一下
今天我找到了制作的方法,让大家开开眼界恩
前排at人
@winzjjj @DeathWolf96 @LambdaNirvana @KB植物大战僵尸
如果想获得更好的观看效果 欢迎使用“只看楼主”
但如果想获得更真实的观看效果,建议不要使用“只看楼主”哦
技术贴求勿删


IP属地:上海1楼2014-07-15 20:32回复
    本帖分为2大部分
    一、分析还原VB制作过程
    二、分析说明VB编写缺点
    如有遗漏将会在直播结束后补充


    IP属地:上海3楼2014-07-15 20:32
    收起回复
      一、分析并还原制作过程
      由于楼主没有配置Visual Basic 6.0开发环境和编译器,只好使用口述的形式给大家介绍了。
      楼主也曾经学过VB这种语言,第一感觉就是简洁好用易上手
      所以楼主的口述会尽量真实
      首先我们需要一只野生的Visual Basic 6.0,我们需要一个项目
      所以先创建一个Windows窗体项目
      我们可以看到这个窗体现在没有任何的东西,我们要完善它
      首先把窗体调整到一定大小,做好一切的准备
      我们要添加一个新方块,叫做蓝宝石,它可以被镐类工具快速采掘,且会在地底自动生成


      IP属地:上海9楼2014-07-15 20:37
      收起回复
        那么我们把窗体的Name特征设置成“蓝宝石”好了,这样窗体的标题就变成了蓝宝石
        但是这样我们的窗体原名还是没改啊,所以我们更改.frm文件名为LBS.frm
        现在窗体里没有任何内容,我们要尝试添加材质呢
        工具箱->ImageBox 添加一个ImageBox容器用来放置一个Image
        由于我们的材质是标准的图片格式,所以直接将ImageBox的Image特征值设置为图片文件
        呀!这样就有了材质了,很厉害对吧!
        效果图(来自原作者):


        IP属地:上海11楼2014-07-15 20:44
        收起回复
          接着,我们点制作器上的“生成”便结束了这个VBMod的开发
          第一章节到此结束


          IP属地:上海23楼2014-07-15 21:08
          收起回复
            二、分析并说明编写的缺点
            我们来详细地解析一下这些方法的缺点
            1.这个方法太空虚、太装逼
            原楼主一发帖就遇到了很多反对者,其中有新手有大触甚至有追究到进程间通信和JNA JNI的大神
            但是原楼主一一反驳了,虽然没有礼貌地问候家人
            2.制作出来的成品太假
            我们可以尝试分析一下它的结构和源码


            IP属地:上海24楼2014-07-15 21:11
            收起回复
              结构:
              -assets文件夹 存放材质等
              -linkseyi文件夹 存放Mod Maker项目文件
              -BlockLBS类 LBS方块类
              -BlockLBSK类 LBSK方块类
              -Itemlbslzh类 lbslzh物品类
              -LinkseyiForgeAdapter类 Linkseyi制作器的内建注册类
              -ModPlayerReceiver类 目测是Mod获取玩家数据的类
              -mod_lbs 主类


              IP属地:上海25楼2014-07-15 21:17
              收起回复
                import cpw.mods.fml.common.registry.EntityRegistry;
                import cpw.mods.fml.common.registry.GameRegistry;
                import cpw.mods.fml.common.registry.LanguageRegistry;
                import net.minecraftforge.common.EnumHelper;
                import net.minecraftforge.common.MinecraftForge;
                public class LinkseyiForgeAdapter //制作器自建类
                {
                public static yc addToolMaterial(String name, int harvestLevel, int maxUses, float efficiency, int damage, int enchantability) //添加工具材料方法
                {
                return EnumHelper.addToolMaterial(name, harvestLevel, maxUses, efficiency, damage, enchantability);
                }
                public static wi addArmorMaterial(String name, int durability, int[] reductionAmounts, int enchantability) { //添加武器材料方法
                return EnumHelper.addArmorMaterial(name, durability, reductionAmounts, enchantability);
                }
                public static og addCreatureType(String name, Class typeClass, int maxNumber, ajz material, boolean peaceful) {
                return EnumHelper.addCreatureType(name, typeClass, maxNumber, material, peaceful);
                }
                public static void addRegisteredName(Object object, String name) { //注册名称
                LanguageRegistry.addName(object, name);
                }
                public static void registerModEntity(Class<? extends nm> entityClass, String entityName, int id, Object mod, int trackingRange, int updateFrequency, boolean sendsVelocityUpdates) { //注册实体
                EntityRegistry.registerModEntity(entityClass, entityName, id, mod, trackingRange, updateFrequency, sendsVelocityUpdates);
                }
                public static void setBlockHarvestLevel(aqw block, String toolClass, int tier) { //设置方块强度
                MinecraftForge.setBlockHarvestLevel(block, toolClass, tier);
                }
                public static void addSmelting(int inputItemID, yd result, float experience) { //添加冶炼
                GameRegistry.addSmelting(inputItemID, result, experience);
                }
                }


                IP属地:上海29楼2014-07-15 21:26
                回复
                  import java.util.Random;
                  public class BlockLBS extends aqw //LBS方块的类
                  {
                  public BlockLBS(int i, int j)
                  {
                  super(i, ajz.b); //返回ID和材质
                  a(wv.b);
                  }
                  public void a(ms i)
                  {
                  mod_lbs.texLBSSide = i.a("texLBSSide"); //材质设置
                  }
                  public mr a(int i, int c)
                  {
                  return mod_lbs.texLBSSide;
                  }
                  public int a(int i, Random random, int j)
                  {
                  return new yd(mod_lbs.LBS, 1, 0).d;
                  }
                  public int a(int i)
                  {
                  return 0;
                  }
                  public int a(Random random)
                  {
                  return 1;
                  }
                  public boolean c()
                  {
                  return false;
                  }
                  public boolean b()
                  {
                  return false;
                  }
                  }
                  由于混淆过所以可读性很差,只能明显看得懂前面一段


                  IP属地:上海30楼2014-07-15 21:28
                  回复
                    到此,这个大触的作死方法解说完毕
                    可以看得出来他有很多东西没做处理
                    包括他的整合包,我发现了不少他的个人信息,不过我不会公布的
                    我希望这个新人能够改过自新,也提醒一些标题党、菜鸟装逼小心,不要像这样
                    引人注目要注意后果和暴露以后自己要承担的责任
                    我希望中国Minecraft Mod or Bukkit Plugin的开发者或本地化工作者越来越多,中国的Minecraft界越来越强大,可惜这实在太难实现了


                    IP属地:上海32楼2014-07-15 21:32
                    收起回复
                      这里是KS君,我们下回作死见
                      预告:AcademyCraft Mod强势开发中,最快可能8月发布测试版本!


                      IP属地:上海33楼2014-07-15 21:35
                      收起回复