Блок коллизии

Блок коллизии 2020-04-20

Нет прав для скачивания
Версия(и) Minecraft
1.7.10
BlockCollider:
public class BlockCollider extends BlockContainer
{

   public TileEntityCollider tile;


   public BlockCollider()
   {
      super(Material.grass);
      this.setBlockName("serverCollider");
      this.setCreativeTab(CreativeTabs.tabTools);
   }

   public AxisAlignedBB getCollisionBoundingBoxFromPool(World w, int x, int y, int z)
   {
      TileEntityCollider tile = (TileEntityCollider)w.getTileEntity(x, y, z);
      if(w.isRemote)
      {
         if(!Minecraft.getMinecraft().thePlayer.capabilities.isCreativeMode)
         {
            this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F);
         }
         else
         {
            this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
         }
      } else
      {
         this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F);
      }

      return tile != null?AxisAlignedBB.getBoundingBox((double)x + tile.minX, (double)y + tile.minY, (double)z + tile.minZ, (double)x + tile.maxX, (double)y + tile.maxY, (double)z + tile.maxZ):AxisAlignedBB.getBoundingBox((double)x + super.minX, (double)y + super.minY, (double)z + super.minZ, (double)x + super.maxX, (double)y + super.maxY, (double)z + super.maxZ);
   }

   public ItemStack getPickBlock(MovingObjectPosition target, World w, int x, int y, int z, EntityPlayer player)
   {
      ItemStack is = new ItemStack(Core.instance._iColliderPlacer);
      NBTTagCompound tag = new NBTTagCompound();
      TileEntityCollider tile = (TileEntityCollider)w.getTileEntity(x, y, z);
      tile.safeWrite(tag);
      is.setTagCompound(tag);
      return is;
   }

   public boolean onBlockActivated(World w, int x, int y, int z, EntityPlayer p, int side, float sx, float sy, float sz)
   {
      if(!p.capabilities.isCreativeMode)
      {
         return false;
      }
      else if(p.getCurrentEquippedItem() != null)
      {
         return false;
      }
      else
      {
         
         double mode = 0.0625D;
       
         if(!p.isSneaking())
         {
            mode = -mode;
         }

         TileEntityCollider tile = (TileEntityCollider)w.getTileEntity(x, y, z);
         if(side == 0 && tile.minY + mode >= 0.0D && tile.minY + mode <= 1.0D)
         {
            tile.minY += mode;
         }
         else if(side == 1 && tile.maxY + mode <= 1.0D && tile.maxY + mode >= 0.0D)
         {
            tile.maxY += mode;
         }
         else if(side == 2 && tile.minZ + mode >= 0.0D && tile.minZ + mode <= 1.0D)
         {
            tile.minZ += mode;
         }
         else if(side == 3 && tile.maxZ + mode <= 1.0D && tile.maxZ + mode >= 0.0D)
         {
            tile.maxZ += mode;
         }
         else if(side == 4 && tile.minX + mode >= 0.0D && tile.minX + mode <= 1.0D)
         {
            tile.minX += mode;
         }
         else if(side == 5 && tile.maxX + mode <= 1.0D && tile.maxX + mode >= 0.0D)
         {
            tile.maxX += mode;
         }

         tile.markDirty();
         return false;
      }
   }

   public boolean isNormalCube()
   {
      return false;
   }

   public boolean renderAsNormalBlock()
   {
      return false;
   }

   public int getRenderType()
   {
      return -1;
   }

   public boolean isOpaqueCube()
   {
      return false;
   }

   public TileEntity createNewTileEntity(World w, int i)
   {
      return this.tile != null?this.tile:new TileEntityCollider();
   }
}
ClientProxy:
public class ClientProxy
{

   public static void Init(FMLInitializationEvent e)
   {
      ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCollider.class, new TileEntityColliderRender());
   }

}
Core:
@Mod(
   modid = "collider",
   name = "collider",
   version = "1.0"
)
public class Core
{


   @Instance("collider")
   public static Core instance;

   public Item _iColliderPlacer;
   public Block _bModelCollider;

   public Core()
   {
      this._iColliderPlacer = new ItemCollider();
      this._bModelCollider = new BlockCollider();
   }


   @EventHandler
   public void PreInit(FMLPreInitializationEvent e)
   {
     
      this.registerItem(this._iColliderPlacer);
      this.registerBlock(this._bModelCollider);
     
      GameRegistry.registerTileEntity(TileEntityCollider.class, "serverCollider");

   }

   public void registerItem(Item item)
   {
      GameRegistry.registerItem(item, item.getUnlocalizedName());
   }

   public void registerBlock(Block block)
   {
      GameRegistry.registerBlock(block, block.getUnlocalizedName());
   }
 
   @EventHandler
   public void Init(FMLInitializationEvent e)
   {
      if(e.getSide().isClient())
      {
         ClientProxy.Init(e);
      }
   }



}
ItemCollider:
public class ItemCollider extends Item
{

   public ItemCollider()
   {
      this.setMaxStackSize(1);
      this.setCreativeTab(CreativeTabs.tabTools);
   }

   public boolean onItemUse(ItemStack i, EntityPlayer p, World w, int x, int y, int z, int side, float sx, float sy, float sz)
   {
      TileEntityCollider tile = new TileEntityCollider();
      if(i.getTagCompound() != null)
      {
         tile.safeRead(i.getTagCompound());
      }

      if(side == 0)
      {
         --y;
      }
      else if(side == 1)
      {
         ++y;
      }
      else if(side == 2)
      {
         --z;
      }
      else if(side == 3)
      {
         ++z;
      }
      else if(side == 4)
      {
         --x;
      }
      else if(side == 5)
      {
         ++x;
      }

      w.setBlock(x, y, z, Core.instance._bModelCollider);
      w.setTileEntity(x, y, z, tile);
      return true;
   }
}
TileEntityCollider:
public class TileEntityCollider extends TileEntity
{

   public double minX = 0.0D;
   public double maxX = 1.0D;
   public double minZ = 0.0D;
   public double maxZ = 1.0D;
   public double minY = 0.0D;
   public double maxY = 1.0D;


   public void readFromNBT(NBTTagCompound tag)
   {
      super.readFromNBT(tag);
      this.safeRead(tag);
   }

   public void safeRead(NBTTagCompound tag)
   {
      this.minX = tag.getDouble("minX");
      this.maxX = tag.getDouble("maxX");
      this.minZ = tag.getDouble("minZ");
      this.maxZ = tag.getDouble("maxZ");
      this.minY = tag.getDouble("minY");
      this.maxY = tag.getDouble("maxY");
   }

   public void writeToNBT(NBTTagCompound tag)
   {
      super.writeToNBT(tag);
      this.safeWrite(tag);
   }

   public void safeWrite(NBTTagCompound tag)
   {
      tag.setDouble("minX", this.minX);
      tag.setDouble("maxX", this.maxX);
      tag.setDouble("minZ", this.minZ);
      tag.setDouble("maxZ", this.maxZ);
      tag.setDouble("maxY", this.maxY);
      tag.setDouble("minY", this.minY);
   }

   public Packet getDescriptionPacket()
   {
      NBTTagCompound nbttagcompound = new NBTTagCompound();
      this.writeToNBT(nbttagcompound);
      return new S35PacketUpdateTileEntity(super.xCoord, super.yCoord, super.zCoord, 5, nbttagcompound);
   }

   public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet)
   {
      this.readFromNBT(packet.func_148857_g());
   }
}
TileEntityColliderRender:
public class TileEntityColliderRender extends TileEntitySpecialRenderer
{

   public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float t)
   {
      this.render((TileEntityCollider)tile, x, y, z, t);
   }

   private void render(TileEntityCollider tile, double x, double y, double z, float t)
   {
      if(Minecraft.getMinecraft().thePlayer.capabilities.isCreativeMode)
      {
         GL11.glPushMatrix();
         GL11.glTranslated(x, y, z);
         GL11.glEnable(3042);
         GL11.glColor4f(0.0F, 1.0F, 0.0F, 0.4F);
         GL11.glDisable(3553);
         Vec3 min = Vec3.createVectorHelper(tile.minX, tile.minY, tile.minZ);
         Vec3 max = Vec3.createVectorHelper(tile.maxX - 1.0D, tile.maxY - 1.0D, tile.maxZ - 1.0D);
         Util.drawWorldBounds(Tessellator.instance, min, max, false);
         GL11.glDisable(3042);
         GL11.glEnable(3553);
         GL11.glPopMatrix();
      }
   }
}
Util:
public class Util
{

   

   public static void drawWorldBounds(Tessellator t, AxisAlignedBB aabb)
   {
      Vec3 fr = Vec3.createVectorHelper(aabb.minX, aabb.minY, aabb.minZ);
      Vec3 fr2 = Vec3.createVectorHelper(aabb.maxX, aabb.maxY, aabb.maxZ);
      drawWorldBounds(t, fr, fr2, true);
   }
 
   public static void drawWorldBounds(Tessellator t, Vec3 firstEdge, Vec3 secondEdge, boolean check)
   {
      t.startDrawingQuads();
      double yMinPos = Double.min(firstEdge.yCoord, secondEdge.yCoord);
      double yMaxPos = Double.max(firstEdge.yCoord, secondEdge.yCoord);
      double xMinPos = Double.min(firstEdge.xCoord, secondEdge.xCoord);
      double xMaxPos = Double.max(firstEdge.xCoord, secondEdge.xCoord);
      double zMinPos = Double.min(firstEdge.zCoord, secondEdge.zCoord);
      double zMaxPos = Double.max(firstEdge.zCoord, secondEdge.zCoord);
      if(!check)
      {
         yMinPos = firstEdge.yCoord;
         yMaxPos = secondEdge.yCoord;
         xMinPos = firstEdge.xCoord;
         xMaxPos = secondEdge.xCoord;
         zMinPos = firstEdge.zCoord;
         zMaxPos = secondEdge.zCoord;
      }

      t.addVertex(xMaxPos + 1.0D, yMaxPos + 1.0D, zMaxPos + 0.0010000000474974513D + 1.0D);
      t.addVertex(xMaxPos + 1.0D, yMaxPos + 1.0D, zMinPos + 0.0010000000474974513D);
      t.addVertex(xMinPos, yMaxPos + 1.0D, zMinPos + 0.0010000000474974513D);
      t.addVertex(xMinPos, yMaxPos + 1.0D, zMaxPos + 0.0010000000474974513D + 1.0D);
      t.addVertex(xMinPos, yMaxPos + 1.0D, zMaxPos + 0.0010000000474974513D + 1.0D);
      t.addVertex(xMinPos, yMaxPos + 1.0D, zMinPos + 0.0010000000474974513D);
      t.addVertex(xMaxPos + 1.0D, yMaxPos + 1.0D, zMinPos + 0.0010000000474974513D);
      t.addVertex(xMaxPos + 1.0D, yMaxPos + 1.0D, zMaxPos + 0.0010000000474974513D + 1.0D);
      t.addVertex(xMaxPos + 1.0D, yMinPos, zMaxPos + 0.0010000000474974513D + 1.0D);
      t.addVertex(xMaxPos + 1.0D, yMinPos, zMinPos + 0.0010000000474974513D);
      t.addVertex(xMinPos, yMinPos, zMinPos + 0.0010000000474974513D);
      t.addVertex(xMinPos, yMinPos, zMaxPos + 0.0010000000474974513D + 1.0D);
      t.addVertex(xMaxPos + 1.0D, yMinPos, zMinPos + 0.0010000000474974513D);
      t.addVertex(xMaxPos + 1.0D, yMaxPos + 1.0D, zMinPos + 0.0010000000474974513D);
      t.addVertex(xMinPos, yMaxPos + 1.0D, zMinPos + 0.0010000000474974513D);
      t.addVertex(xMinPos, yMinPos, zMinPos + 0.0010000000474974513D);
      t.addVertex(xMaxPos + 1.0D - 0.0010000000474974513D, yMinPos, zMaxPos + 1.0D);
      t.addVertex(xMaxPos + 1.0D - 0.0010000000474974513D, yMaxPos + 1.0D, zMaxPos + 1.0D);
      t.addVertex(xMaxPos + 1.0D - 0.0010000000474974513D, yMaxPos + 1.0D, zMinPos);
      t.addVertex(xMaxPos + 1.0D - 0.0010000000474974513D, yMinPos, zMinPos);
      t.addVertex(xMinPos, yMinPos, zMaxPos + 1.0D - 0.0010000000474974513D);
      t.addVertex(xMinPos, yMaxPos + 1.0D, zMaxPos + 1.0D - 0.0010000000474974513D);
      t.addVertex(xMaxPos + 1.0D, yMaxPos + 1.0D, zMaxPos + 1.0D - 0.0010000000474974513D);
      t.addVertex(xMaxPos + 1.0D, yMinPos, zMaxPos + 1.0D - 0.0010000000474974513D);
      t.addVertex(xMinPos, yMinPos, zMaxPos + 1.0D);
      t.addVertex(xMinPos, yMaxPos + 1.0D, zMaxPos + 1.0D);
      t.addVertex(xMinPos, yMaxPos + 1.0D, zMinPos);
      t.addVertex(xMinPos, yMinPos, zMinPos);
      t.addVertex(xMinPos + 0.0010000000474974513D, yMinPos, zMinPos);
      t.addVertex(xMinPos + 0.0010000000474974513D, yMaxPos + 1.0D, zMinPos);
      t.addVertex(xMinPos + 0.0010000000474974513D, yMaxPos + 1.0D, zMaxPos + 1.0D);
      t.addVertex(xMinPos + 0.0010000000474974513D, yMinPos, zMaxPos + 1.0D);
      t.addVertex(xMaxPos + 1.0D, yMinPos, zMinPos);
      t.addVertex(xMaxPos + 1.0D, yMaxPos + 1.0D, zMinPos);
      t.addVertex(xMaxPos + 1.0D, yMaxPos + 1.0D, zMaxPos + 1.0D);
      t.addVertex(xMaxPos + 1.0D, yMinPos, zMaxPos + 1.0D);
      t.addVertex(xMaxPos + 1.0D, yMinPos, zMaxPos + 1.0D);
      t.addVertex(xMaxPos + 1.0D, yMaxPos + 1.0D, zMaxPos + 1.0D);
      t.addVertex(xMinPos, yMaxPos + 1.0D, zMaxPos + 1.0D);
      t.addVertex(xMinPos, yMinPos, zMaxPos + 1.0D);
      t.addVertex(xMinPos, yMinPos, zMinPos);
      t.addVertex(xMinPos, yMaxPos + 1.0D, zMinPos);
      t.addVertex(xMaxPos + 1.0D, yMaxPos + 1.0D, zMinPos);
      t.addVertex(xMaxPos + 1.0D, yMinPos, zMinPos);
      t.addVertex(xMinPos, yMinPos, zMaxPos + 0.0010000000474974513D + 1.0D);
      t.addVertex(xMinPos, yMinPos, zMinPos + 0.0010000000474974513D);
      t.addVertex(xMaxPos + 1.0D, yMinPos, zMinPos + 0.0010000000474974513D);
      t.addVertex(xMaxPos + 1.0D, yMinPos, zMaxPos + 0.0010000000474974513D + 1.0D);
      t.draw();
      t.startDrawing(1);
      t.setColorRGBA(0, 0, 0, 255);
      GL11.glLineWidth(1.0F);

      t.addVertex(xMinPos, yMinPos, zMaxPos + 1.0D);
      t.addVertex(xMinPos, yMinPos, zMinPos);
      t.addVertex(xMinPos, yMaxPos + 1.0D, zMaxPos + 1.0D);
      t.addVertex(xMinPos, yMaxPos + 1.0D, zMinPos);
      t.addVertex(xMinPos, yMinPos, zMinPos);
      t.addVertex(xMinPos, yMaxPos + 1.0D, zMinPos);
      t.addVertex(xMinPos, yMinPos, zMaxPos + 1.0D);
      t.addVertex(xMinPos, yMaxPos + 1.0D, zMaxPos + 1.0D);
      t.addVertex(xMaxPos + 1.0D, yMinPos, zMaxPos + 1.0D);
      t.addVertex(xMaxPos + 1.0D, yMinPos, zMinPos);
      t.addVertex(xMaxPos + 1.0D, yMaxPos + 1.0D, zMaxPos + 1.0D);
      t.addVertex(xMaxPos + 1.0D, yMaxPos + 1.0D, zMinPos);
      t.addVertex(xMaxPos + 1.0D, yMinPos, zMinPos);
      t.addVertex(xMaxPos + 1.0D, yMaxPos + 1.0D, zMinPos);
      t.addVertex(xMaxPos + 1.0D, yMinPos, zMaxPos + 1.0D);
      t.addVertex(xMaxPos + 1.0D, yMaxPos + 1.0D, zMaxPos + 1.0D);
      t.addVertex(xMinPos, yMaxPos + 1.0D, zMaxPos + 1.0D);
      t.addVertex(xMaxPos + 1.0D, yMaxPos + 1.0D, zMaxPos + 1.0D);
      t.addVertex(xMinPos, yMinPos, zMaxPos + 1.0D);
      t.addVertex(xMaxPos + 1.0D, yMinPos, zMaxPos + 1.0D);
      t.addVertex(xMinPos, yMaxPos + 1.0D, zMinPos);
      t.addVertex(xMaxPos + 1.0D, yMaxPos + 1.0D, zMinPos);
      t.addVertex(xMinPos, yMinPos, zMinPos);
      t.addVertex(xMaxPos + 1.0D, yMinPos, zMinPos);
      t.draw();
   }

}
  • 2020-04-20_12.54.41.png
    2020-04-20_12.54.41.png
    137.8 KB · Просмотры: 407
  • 2020-04-20_12.54.52.png
    2020-04-20_12.54.52.png
    158.8 KB · Просмотры: 400
  • 2020-04-20_12.55.59.png
    2020-04-20_12.55.59.png
    71.3 KB · Просмотры: 376
Автор
JKLEM
Скачивания
3
Просмотры
1,206
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок
Сверху