Автовставка блоков по 3д модели

Версия Minecraft
1.7.10
1,202
31
185
Есть такой 3д блок - тоннель метро
Нужно чтобы когда ставишь этот блок, где есть 3д модель ставить блоки
Кто не понял чек скриншоты, это 1.5.2 насколько помню (особые люди догадаются что за мод))0))
Чекните как стоят инвиз блоки по модельке (или как это еще обьяснить)
Как это провернуть на 1.7.10?

Если есть тема уже, то прошу скинуть плез)
 

Вложения

  • 2018-06-23_16.01.35.png
    2018-06-23_16.01.35.png
    221.2 KB · Просмотры: 22
  • 2018-06-23_16.01.39.png
    2018-06-23_16.01.39.png
    289.5 KB · Просмотры: 21
214
11
59
Делай новый прозрачный блок, но непроходимый блок. В каждый такой блок записывай информацию о родительском(главном) блоке и постоянно проверяй, стоит ли он еще. Если нет, уничтожай прозрачный. При установке гл блока циклом ставь прозрачный блок по границам модели. Ничего сложного.
 
1,202
31
185
МНОГО КОДА АХТУНГ!!!

Java:
public void onBlockPlacedBy(World var1, int var2, int var3, int var4, EntityLiving var5, ItemStack var6) {
      int var7 = MathHelper.floor_double((double)(var5.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
      int var8 = var1.getBlockMetadata(var2, var3, var4) >> 2;
      ++var7;
      var7 %= 4;
      if(var7 == 0) {
         var1.setBlockMetadataWithNotify(var2, var3, var4, 2 | var8 << 2, 2);
         var1.setBlock(var2, var3 - 6, var4 + 3, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 5, var4 + 4, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 4, var4 + 4, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 3, var4 + 4, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 2, var4 + 4, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 1, var4 + 3, ModBase.Empty.blockID);
         var1.setBlock(var2, var3, var4 + 2, ModBase.Empty.blockID);
         var1.setBlock(var2, var3, var4 + 1, ModBase.Empty.blockID);
         var1.setBlock(var2, var3, var4 - 1, ModBase.Empty.blockID);
         var1.setBlock(var2, var3, var4 - 2, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 1, var4 - 3, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 2, var4 - 4, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 3, var4 - 4, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 4, var4 - 4, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 5, var4 - 4, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 6, var4 - 3, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 6, var4 - 2, ModBase.Empty.blockID);
      }

      if(var7 == 1) {
         var1.setBlockMetadataWithNotify(var2, var3, var4, 3 | var8 << 2, 2);
         var1.setBlock(var2 - 3, var3 - 6, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 - 4, var3 - 5, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 - 4, var3 - 4, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 - 4, var3 - 3, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 - 4, var3 - 2, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 - 3, var3 - 1, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 - 2, var3, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 - 1, var3, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 + 1, var3, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 + 2, var3, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 + 3, var3 - 1, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 + 4, var3 - 2, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 + 4, var3 - 3, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 + 4, var3 - 4, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 + 4, var3 - 5, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 + 3, var3 - 6, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 + 2, var3 - 6, var4, ModBase.Empty.blockID);
      }

      if(var7 == 2) {
         var1.setBlockMetadataWithNotify(var2, var3, var4, 0 | var8 << 2, 2);
         var1.setBlock(var2, var3 - 6, var4 - 3, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 5, var4 - 4, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 4, var4 - 4, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 3, var4 - 4, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 2, var4 - 4, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 1, var4 - 3, ModBase.Empty.blockID);
         var1.setBlock(var2, var3, var4 - 2, ModBase.Empty.blockID);
         var1.setBlock(var2, var3, var4 - 1, ModBase.Empty.blockID);
         var1.setBlock(var2, var3, var4 + 1, ModBase.Empty.blockID);
         var1.setBlock(var2, var3, var4 + 2, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 1, var4 + 3, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 2, var4 + 4, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 3, var4 + 4, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 4, var4 + 4, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 5, var4 + 4, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 6, var4 + 3, ModBase.Empty.blockID);
         var1.setBlock(var2, var3 - 6, var4 + 2, ModBase.Empty.blockID);
      }

      if(var7 == 3) {
         var1.setBlockMetadataWithNotify(var2, var3, var4, 1 | var8 << 2, 2);
         var1.setBlock(var2 + 3, var3 - 6, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 + 4, var3 - 5, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 + 4, var3 - 4, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 + 4, var3 - 3, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 + 4, var3 - 2, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 + 3, var3 - 1, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 + 2, var3, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 + 1, var3, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 - 1, var3, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 - 2, var3, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 - 3, var3 - 1, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 - 4, var3 - 2, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 - 4, var3 - 3, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 - 4, var3 - 4, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 - 4, var3 - 5, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 - 3, var3 - 6, var4, ModBase.Empty.blockID);
         var1.setBlock(var2 - 2, var3 - 6, var4, ModBase.Empty.blockID);
      }

   }

   public int onBlockPlaced(World var1, int var2, int var3, int var4, int var5, float var6, float var7, float var8, int var9) {
      return var9;
   }

   public void onBlockDestroyedByPlayer(World var1, int var2, int var3, int var4, int var5) {
      if(var5 == 0) {
         var1.setBlockToAir(var2, var3 - 6, var4 - 3);
         var1.setBlockToAir(var2, var3 - 5, var4 - 4);
         var1.setBlockToAir(var2, var3 - 4, var4 - 4);
         var1.setBlockToAir(var2, var3 - 3, var4 - 4);
         var1.setBlockToAir(var2, var3 - 2, var4 - 4);
         var1.setBlockToAir(var2, var3 - 1, var4 - 3);
         var1.setBlockToAir(var2, var3, var4 - 2);
         var1.setBlockToAir(var2, var3, var4 - 1);
         var1.setBlockToAir(var2, var3, var4 + 1);
         var1.setBlockToAir(var2, var3, var4 + 2);
         var1.setBlockToAir(var2, var3 - 1, var4 + 3);
         var1.setBlockToAir(var2, var3 - 2, var4 + 4);
         var1.setBlockToAir(var2, var3 - 3, var4 + 4);
         var1.setBlockToAir(var2, var3 - 4, var4 + 4);
         var1.setBlockToAir(var2, var3 - 5, var4 + 4);
         var1.setBlockToAir(var2, var3 - 6, var4 + 3);
         var1.setBlockToAir(var2, var3 - 6, var4 + 2);
      }

      if(var5 == 1) {
         var1.setBlockToAir(var2 + 3, var3 - 6, var4);
         var1.setBlockToAir(var2 + 4, var3 - 5, var4);
         var1.setBlockToAir(var2 + 4, var3 - 4, var4);
         var1.setBlockToAir(var2 + 4, var3 - 3, var4);
         var1.setBlockToAir(var2 + 4, var3 - 2, var4);
         var1.setBlockToAir(var2 + 3, var3 - 1, var4);
         var1.setBlockToAir(var2 + 2, var3, var4);
         var1.setBlockToAir(var2 + 1, var3, var4);
         var1.setBlockToAir(var2 - 1, var3, var4);
         var1.setBlockToAir(var2 - 2, var3, var4);
         var1.setBlockToAir(var2 - 3, var3 - 1, var4);
         var1.setBlockToAir(var2 - 4, var3 - 2, var4);
         var1.setBlockToAir(var2 - 4, var3 - 3, var4);
         var1.setBlockToAir(var2 - 4, var3 - 4, var4);
         var1.setBlockToAir(var2 - 4, var3 - 5, var4);
         var1.setBlockToAir(var2 - 3, var3 - 6, var4);
         var1.setBlockToAir(var2 - 2, var3 - 6, var4);
      }

      if(var5 == 2) {
         var1.setBlockToAir(var2, var3 - 6, var4 + 3);
         var1.setBlockToAir(var2, var3 - 5, var4 + 4);
         var1.setBlockToAir(var2, var3 - 4, var4 + 4);
         var1.setBlockToAir(var2, var3 - 3, var4 + 4);
         var1.setBlockToAir(var2, var3 - 2, var4 + 4);
         var1.setBlockToAir(var2, var3 - 1, var4 + 3);
         var1.setBlockToAir(var2, var3, var4 + 2);
         var1.setBlockToAir(var2, var3, var4 + 1);
         var1.setBlockToAir(var2, var3, var4 - 1);
         var1.setBlockToAir(var2, var3, var4 - 2);
         var1.setBlockToAir(var2, var3 - 1, var4 - 3);
         var1.setBlockToAir(var2, var3 - 2, var4 - 4);
         var1.setBlockToAir(var2, var3 - 3, var4 - 4);
         var1.setBlockToAir(var2, var3 - 4, var4 - 4);
         var1.setBlockToAir(var2, var3 - 5, var4 - 4);
         var1.setBlockToAir(var2, var3 - 6, var4 - 3);
         var1.setBlockToAir(var2, var3 - 6, var4 - 2);
      }

      if(var5 == 3) {
         var1.setBlockToAir(var2 - 3, var3 - 6, var4);
         var1.setBlockToAir(var2 - 4, var3 - 5, var4);
         var1.setBlockToAir(var2 - 4, var3 - 4, var4);
         var1.setBlockToAir(var2 - 4, var3 - 3, var4);
         var1.setBlockToAir(var2 - 4, var3 - 2, var4);
         var1.setBlockToAir(var2 - 3, var3 - 1, var4);
         var1.setBlockToAir(var2 - 2, var3, var4);
         var1.setBlockToAir(var2 - 1, var3, var4);
         var1.setBlockToAir(var2 + 1, var3, var4);
         var1.setBlockToAir(var2 + 2, var3, var4);
         var1.setBlockToAir(var2 + 3, var3 - 1, var4);
         var1.setBlockToAir(var2 + 4, var3 - 2, var4);
         var1.setBlockToAir(var2 + 4, var3 - 3, var4);
         var1.setBlockToAir(var2 + 4, var3 - 4, var4);
         var1.setBlockToAir(var2 + 4, var3 - 5, var4);
         var1.setBlockToAir(var2 + 3, var3 - 6, var4);
         var1.setBlockToAir(var2 + 2, var3 - 6, var4);
      }

   }
Откопал, кому то мб пригодится такая штука.
Вопрос, это на 1.7.10 будет робить?
 
Сверху