[1.7.10] Game Plus Mod

212
0
Да, я полностью составил этот код из компилированного или взятого с форума,да я его читал.Но до всего этого мусора игра выдавала мне туже ошибку(
 
212
0
Решил сделать все без гуи, так даже интереснее в плане игрового процесса.
Можно закрывать тему.
 
212
0
Итак, обновление 0.0.2!Совсем скоро я допилю локализацию и заделаю все неровности, как только закончу, выложу новые скрины и описание к блокам.
 
1,087
2
Вообще без гуи плохи дела. Н е у д о б н о. Однако для новичка пусть будет другим, без гуи. Просто вряд ли ты смог бы сделать нормальную крафтовую систему со своим опи.
 
212
0
FanKar написал(а):
Вообще без гуи плохи дела. Н е у д о б н о. Однако для новичка пусть будет другим, без гуи. Просто вряд ли ты смог бы сделать нормальную крафтовую систему со своим опи.
Ну, оцени сам - 
1.Материалы для крафта можно ставить напрямую в дробилку или дропать как предмет.(Возможность автоматизации через ванильные дропер и воронки)
2.Если кинуть предметы не участвующие в крафтах - они будут выброшены(не исчезают и не дюпаются)
3.При крафте не возникают фантомных итемов(с чем я неоднократно боролся)
4.Довольно простая система добавления новых рецептов(для добавления простого рецепта нужно прописать 2 строчки)
 
212
0
Вот тебе кусок кода моей дробилки:
Код:
//CRAFT SYSTEM
        public void onNeighborBlockChange(World p_149695_1_, int x, int y, int z, Block p_149695_5_)
        {     
            if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z))
                    {
             if (p_149695_1_.getBlockMetadata(x, y, z) == 1)
                {                 
            Block B = p_149695_1_.getBlock(x, y + 1, z);                
              EntityItem entityitem = new EntityItem(p_149695_1_, (double)x + 2.5D, (double)y, (double)z, new ItemStack(this.ProductB(B),this.CountB(B, 1)));
              entityitem.setVelocity(0., 0, 0);
              entityitem.delayBeforeCanPickup = 10;
              p_149695_1_.spawnEntityInWorld(entityitem); 
              p_149695_1_.setBlock(x, y + 1, z, Blocks.air);              
              if (p_149695_1_.isAirBlock(x, y + 1, z))
                 {
                         double d0 = 0.0625D;
                      AxisAlignedBB axisalignedbb = AxisAlignedBB.getBoundingBox((double)x, (double)y, (double)z, (double)(x + 1), (double)(y + 1), (double)(z + 1)).expand(d0, d0, d0);
                      List list = p_149695_1_.getEntitiesWithinAABB(Entity.class, axisalignedbb);
                      Iterator iterator = list.iterator();
                      Entity MATERIAL;

                      while(iterator.hasNext())
                      {
                          MATERIAL = (Entity)iterator.next();

                    if (MATERIAL instanceof EntityItem) 
                    {
                        EntityItem MATERIAL_ITEM = (EntityItem)MATERIAL;
                        ItemStack IS_MATERIAL = MATERIAL_ITEM.getEntityItem();
                        Item I = IS_MATERIAL.getItem();
                        
                      EntityItem entityitem_1 = new EntityItem(p_149695_1_, (double)x + 2.5D, (double)y, (double)z, new ItemStack(this.ProductI(I),this.CountI(I, 1)));
                      entityitem_1.setVelocity(0.3, 0, 0);
                      entityitem_1.delayBeforeCanPickup = 10;
                          p_149695_1_.spawnEntityInWorld(entityitem_1); 
                          if (IS_MATERIAL.stackSize == 1) MATERIAL_ITEM.setDead(); else IS_MATERIAL.stackSize -= 1;
                    }
                    }
                 } 
              }
        }
        }
        //BLOCKS RECIPES
        public Item ProductB(Block B)
        {
            if(B == Blocks.gold_ore){return Items.gold_nugget;}            
            else if (B == Blocks.iron_ore){return MainGMP.Iron_Nugget;}
            else if (B == Blocks.stone){return Item.getItemFromBlock(Blocks.sand);}    
            else if (B == Blocks.cobblestone){return Item.getItemFromBlock(Blocks.sand);}    
            else if (B == Blocks.stonebrick){return Item.getItemFromBlock(Blocks.sand);}    
            else if (B == Blocks.gravel)
            {
                int Random = (int) (Math.random()*10);
                switch(Random)
                {
                case 1: return MainGMP.Iron_Nugget;
                case 2: return MainGMP.Copper_Nugget;
                case 3:  return MainGMP.Cobalt_Nugget;
                case 4:  return MainGMP.Magnetite_Nugget;
                case 5:  return MainGMP.Adamantite_Nugget;
                case 6:  return MainGMP.Silver_Nugget;
                case 7:  return MainGMP.Tin_Nugget;
                case 8:  return Items.gold_nugget;
                default: return Item.getItemFromBlock(Blocks.sand);
                }
            }            
            return Item.getItemFromBlock(B);
        }
        public int CountB(Block B,int BASIC)
        {      
            int R;
            int Random = (int) (Math.random()*10);
            if(Random <= 5){R = Random;}else{R = Random/2;}
            if(B == Blocks.gold_ore)
            {
                return 16;
            }            
            else if (B == Blocks.iron_ore){return 16;}
            else if (B == Blocks.gravel){System.out.println(R); return R;}

            return BASIC;
        }
        //ITEMS RECIPES
        public Item ProductI(Item I)
        {
            if(I == Item.getItemFromBlock(Blocks.gold_ore)){return Items.gold_nugget;}
            else if (I == Item.getItemFromBlock(Blocks.stone)){return Item.getItemFromBlock(Blocks.sand);}    
            else if (I == Item.getItemFromBlock(Blocks.cobblestone)){return Item.getItemFromBlock(Blocks.sand);}    
            else if (I == Item.getItemFromBlock(Blocks.stonebrick)){return Item.getItemFromBlock(Blocks.sand);}    
            else if (I == Item.getItemFromBlock(Blocks.iron_ore)){return MainGMP.Iron_Nugget;}    
            else if (I == Item.getItemFromBlock(Blocks.gravel))
            {
                int Random = (int) (Math.random()*10);
                switch(Random)
                {
                case 1: return MainGMP.Iron_Nugget;
                case 2: return MainGMP.Copper_Nugget;
                case 3:  return MainGMP.Cobalt_Nugget;
                case 4:  return MainGMP.Magnetite_Nugget;
                case 5:  return MainGMP.Adamantite_Nugget;
                case 6:  return MainGMP.Silver_Nugget;
                case 7:  return MainGMP.Tin_Nugget;
                case 8:  return Items.gold_nugget;
                default: return Item.getItemFromBlock(Blocks.sand);
                }
            }

            return I;
        }
        public int CountI(Item I,int BASIC)
        {
            int R;
            int Random = (int) (Math.random()*10);
            if(Random <= 5){R = Random;}else{R = Random/2;}
            if(I == Item.getItemFromBlock(Blocks.gold_ore))
            {
                return 16;
            }            
            else if (I == Item.getItemFromBlock(Blocks.iron_ore)){return 16;}
            else if (I == Item.getItemFromBlock(Blocks.gravel)){return R;}
            return BASIC;
        }
}
[merge_posts_bbcode]Добавлено: 23.12.2015 18:19:50[/merge_posts_bbcode]

Можно заметить, что гравий дает разные результаты дробления с шансом.Шанс сбалансирован - тестил, со стака гравия - по 1 слитку каждого вида + куча песка
 
1,087
2
Ох, для начала поправь переменные, ибо это:
Код:
p_149695_1_
Читать неудобно. Но это не изменит толком твой код к лучшей стороне. Пока я еле понимаю этот код, поправь как сможешь и тогда смогу сказать где можно "сократить" код. Вообще я использую GUI & IRecipe :))
 
212
0
Код:
public void onNeighborBlockChange(World world, int x, int y, int z, Block p_149695_5_)
{    
    if (world.isBlockIndirectlyGettingPowered(x, y, z))
    {
      double d0 = 0.0625D;
      AxisAlignedBB Zone = AxisAlignedBB.getBoundingBox((double)x, (double)y, (double)z, (double)(x + 1), (double)(y + 1), (double)(z + 1)).expand(d0, d0, d0);
      List list = world.getEntitiesWithinAABB(Entity.class, Zone);
      Iterator iterator = list.iterator();
      Entity MATERIAL;

      while(iterator.hasNext())
      {
          MATERIAL = (Entity)iterator.next();

    if (MATERIAL instanceof EntityItem) 
    {        
        EntityItem MATERIAL_ITEM = (EntityItem)MATERIAL;
        ItemStack MATERIALStack = MATERIAL_ITEM.getEntityItem();
        Item I = MATERIALStack.getItem();
        if(MATERIALStack.stackSize >= this.CountI(I, 9)){
      EntityItem entityitem_1 = new EntityItem(world, (double)x + 2.5D, (double)y, (double)z, new ItemStack(this.ProductI(I)));
      entityitem_1.setVelocity(0.3, 0, 0);
      entityitem_1.delayBeforeCanPickup = 10;
      world.spawnEntityInWorld(entityitem_1); 
          if (MATERIALStack.stackSize == 9) MATERIAL_ITEM.setDead(); else MATERIALStack.stackSize -= 9;
        }
    }
    else
    {
        MATERIAL.setFire(10);
        MATERIAL.attackEntityFrom(DamageSource.lava, 30.0F);
    }
}
}
}
public Item ProductI(Item I)
{
    if(I == MainGMP.Adamantite_Nugget){return MainGMP.Adamantite_Ingot;}
    else if(I == MainGMP.Cobalt_Nugget){return MainGMP.Cobalt_Ingot;}
    else if (I == Item.getItemFromBlock(Blocks.sand)){return Item.getItemFromBlock(Blocks.glass);}    
    return I;
}
public int CountI(Item I,int BASIC)
{
    int R;
    int Random = (int) (Math.random()*10);
    if(Random <= 5){R = Random;}else{R = Random/2;}
    if(I == MainGMP.Adamantite_Nugget){return 9;}
    else if (I == Item.getItemFromBlock(Blocks.sand)){return 1;}
    return BASIC;
}
}
 
1,087
2
А теперь жди)
P.S. Накидай больше скринов, мне хочется очень сильно увидеть ещё больше инфы о твоём моде (Ну почему бы и нет?)
 
212
0
Agravaine написал(а):
Только что у меня из глаз пошла кровь из-за твоего кода.
Он плохой или сложный?
[merge_posts_bbcode]Добавлено: 23.12.2015 19:22:16[/merge_posts_bbcode]

FanKar написал(а):
А теперь жди)
P.S. Накидай больше скринов, мне хочется очень сильно увидеть ещё больше инфы о твоём моде (Ну почему бы и нет?)
Как раз этим занимаюсь(локализация, скрины, редактирование темы)
 
1,087
2
Он плохой, он испорченный, не обращай внимания, Agravaine всем так говорит, хотя да, сейчас он прав, код ужасен, впринципе я пытаюсь сделать лучше для других.
 
1,087
2
MinecraftForum для простолюдин? Или надо использовать нарушающие правила сайты?)
[merge_posts_bbcode]Добавлено: 23.12.2015 19:45:27[/merge_posts_bbcode]

Всё равно этот EvilMinecraft мне не нравится. TC & IC те же и то лучше в те времена были.
 
1,990
18
105
Сложный код == плохой код.
За исключением случаев, когда это касается хитрой алгоритмики или низкоуровневых трюков, оптимизаций.
 
Сверху