Поднятие лимита ID блоков в beta 1.7.3

Собственно, вопрос.

Есть модифицированый сервер и клиент на базе Beta 1.7.3. Цель - расширить число допустимых блоков, что и было успешно сделано, сдвинуто до 1024.
Таким образом, блоки смогли иметь ID 0-1023, а предметы были сдвинуты выше, 1024+

Например, из Block.java:
Java:
      Item.itemsList[cloth.blockID] = (new ItemCloth(cloth.blockID - 1024)).setItemName("cloth");
        Item.itemsList[planks.blockID] = (new ItemPlanks(planks.blockID - 1024)).setItemName("planks");
        Item.itemsList[wood.blockID] = (new ItemLog(wood.blockID - 1024)).setItemName("log");
        Item.itemsList[stairSingle.blockID] = (new ItemSlab(stairSingle.blockID - 1024)).setItemName("stoneSlab");
        Item.itemsList[sapling.blockID] = (new ItemSapling(sapling.blockID - 1024)).setItemName("sapling");
        Item.itemsList[leaves.blockID] = (new ItemLeaves(leaves.blockID - 1024)).setItemName("leaves");
        Item.itemsList[pistonBase.blockID] = new ItemPiston(pistonBase.blockID - 1024);
        Item.itemsList[pistonStickyBase.blockID] = new ItemPiston(pistonStickyBase.blockID - 1024);
        for(int i = 0; i < 1024; i++)
        {
            if(blocksList[i] != null && Item.itemsList[i] == null)
            {
                Item.itemsList[i] = new ItemBlock(i - 1024);
                blocksList[i].initializeBlock();
            }
        }

ItemBlock:
Java:
    public ItemBlock(int i)
    {
        super(i);
        blockID = i + 1024;
        setIconIndex(Block.blocksList[i + 1024].getBlockTextureFromSide(2));
    }

Item

Java:
protected Item(int i)
    {
        maxStackSize = 64;
        maxDamage = 0;
        bFull3D = false;
        hasSubtypes = false;
        containerItem = null;
        shiftedIndex = 1024 + i;
        if(itemsList[1024 + i] != null)
        {
            System.out.println((new StringBuilder()).append("CONFLICT @ ").append(i).toString());
        }
        itemsList[1024 + i] = this;
    }

StatList
Java:
    private static StatBase[] func_25153_a(String s, int i)
    {
        StatBase astatbase[] = new StatBase[1024];
        for(int j = 0; j < 1024; j++)
        {
            if(Block.blocksList[j] != null && Block.blocksList[j].getEnableStats())
            {
                String s1 = StatCollector.translateToLocalFormatted(s, new Object[] {
                    Block.blocksList[j].translateBlockName()
                });
                astatbase[j] = (new StatCrafting(i + j, s1, j)).registerStat();
                field_25185_d.add((StatCrafting)astatbase[j]);
            }
        }

ItemRender

Java:
    public void renderItem(EntityLiving entityliving, ItemStack itemstack)
    {
        GL11.glPushMatrix();
        if(itemstack.itemID < 1024 && RenderBlocks.renderItemIn3d(Block.blocksList[itemstack.itemID].getRenderType()))
        {
            GL11.glBindTexture(3553 /[I]GL_TEXTURE_2D[/I]/, mc.renderEngine.getTexture("/terrain.png"));
            renderBlocksInstance.renderBlockOnInventory(Block.blocksList[itemstack.itemID], itemstack.getItemDamage(), entityliving.getEntityBrightness(1.0F));
        } else
        {
            if(itemstack.itemID < 1024)
            {
                GL11.glBindTexture(3553 /[I]GL_TEXTURE_2D[/I]/, mc.renderEngine.getTexture("/terrain.png"));
            } else
            {
                GL11.glBindTexture(3553 /[I]GL_TEXTURE_2D[/I]/, mc.renderEngine.getTexture("/gui/items.png"));
            }

На новой карте всё ОК - отлично играем, блоки с ID выше 256 крафтятся и сохраняются.
Но при входе на старую карту клиент и сервер падают из-за несовпадения ID предметов (было 256, стало 1280).

Вопрос: имеются ли инструменты для конвертации юзерского инвертаря/сундуков, или как можно сохранить ID предметов, но при этом разрешить использовать ID для блока свыше 256, не задевая предметы?
 
Последнее редактирование:
Назад
Сверху