Compatibility of "GTOres" and "Astrominer" from "Galacticraft 3". Need help with NBT

Thank you!
It was exactly what we needed!

I also tried to use your code “getDrops” and after a little adjustment I got the desired result:

Here's what happened
    public static final OreDictMaterial[] aMaterial = {MT.CertusQuartz, MT.OREMATS.Cooperite, MT.Dolamide, MT.Ir, MT.Nq, MT.Pyrite, MT.OREMATS.Scheelite, MT.OREMATS.Sperrylite, MT.Ke, MT.NULL, MT.NULL, MT.NULL, MT.NULL, MT.NULL, MT.NULL, MT.NULL};

    public ArrayList<ItemStack> getDrops(World World, int aX, int aY, int aZ, int aMetaData, int aFortune) {
        ArrayList<ItemStack> rList = new ArrayList<ItemStack>();
        OreDictMaterial mSecondaryDrop = MT.STONES.SpaceRock;
        if (aMaterial[aMetaData] != null) aMaterial[aMetaData] = aMaterial[aMetaData].mTargetCrushing.mMaterial;

        if (aMaterial[aMetaData] != null) {
            Random tRandom = new Random(aX ^ aY ^ aZ);
            for (int i = 0; i < 16; i++) tRandom.nextInt(10000);
            if (aMaterial[aMetaData] == MT.STONES.Gneiss || aMaterial[aMetaData] == MT.PetrifiedWood) {
                ItemStack tStack = OP.rockGt.mat(aMaterial[aMetaData], 1);
                for (int i = 0, j = Math.max(1, aMaterial[aMetaData].mOreMultiplier*aMaterial[aMetaData].mOreProcessingMultiplier+(aFortune>0?(tRandom.nextInt((1+aFortune)*aMaterial[aMetaData].mOreMultiplier*aMaterial[aMetaData].mOreProcessingMultiplier)):0)/2+tRandom.nextInt(2)); i < j; i++) {
                    rList.add(ST.update(ST.copy(tStack)));
                }
            } else {
                ItemStack tStack = OP.gemLegendary.mat(aMaterial[aMetaData], 1);
                if (tStack != null && tRandom.nextInt(10000) <= aFortune) {
                    rList.add(ST.update(tStack));
                } else {
                    ArrayList<ItemStack> tSelector = new ArrayList<ItemStack>();
                    tStack = OP.gemExquisite.mat(aMaterial[aMetaData], OP.gem.mat(aMaterial[aMetaData], 4), 1);
                    if (tStack != null) for (int i = 0, j = 1; i < j; i++) tSelector.add(tStack);
                    tStack = OP.gemFlawless.mat(aMaterial[aMetaData], OP.gem.mat(aMaterial[aMetaData], 2), 1);
                    if (tStack != null) for (int i = 0, j = 2; i < j; i++) tSelector.add(tStack);
                    tStack = OP.gem.mat(aMaterial[aMetaData], 1);
                    if (tStack != null) for (int i = 0, j = 12; i < j; i++) tSelector.add(tStack);

                    tStack = OP.gemFlawed.mat(aMaterial[aMetaData], 2);
                    if (tStack != null){for (int i = 0, j = 5; i < j; i++) tSelector.add(tStack);
                        tStack = OP.crushed.mat(aMaterial[aMetaData], 1);
                        if (tStack != null) for (int i = 0, j = 10; i < j; i++) tSelector.add(tStack);
                    } else {
                        tStack = OP.crushed.mat(aMaterial[aMetaData], 1);
                        if (tStack != null) for (int i = 0, j = 15; i < j; i++) tSelector.add(tStack);
                    }

                    tStack = OP.gemChipped.mat(aMaterial[aMetaData], 4);
                    if (tStack != null){for (int i = 0, j = 5; i < j; i++) tSelector.add(tStack);
                        tStack = OP.crushed.mat(aMaterial[aMetaData], OP.dust.mat(aMaterial[aMetaData], 1), 1);
                        if (tStack != null) for (int i = 0, j = 10; i < j; i++) tSelector.add(tStack);
                    } else {
                        tStack = OP.crushed.mat(aMaterial[aMetaData], 1);
                        if (tStack != null) for (int i = 0, j = 15; i < j; i++) tSelector.add(tStack);
                    }

                    if (tSelector.size() > 0) {
                        for (int i = 0, j = Math.max(1, aMaterial[aMetaData].mOreMultiplier*aMaterial[aMetaData].mOreProcessingMultiplier+(aFortune>0?(tRandom.nextInt((1+aFortune)*aMaterial[aMetaData].mOreMultiplier*aMaterial[aMetaData].mOreProcessingMultiplier)):0)/2); i < j; i++) {
                            rList.add(ST.update(ST.copy(tSelector.get(tRandom.nextInt(tSelector.size())))));
                        }
                    }
                }
            }
            if (tRandom.nextInt(3+aFortune)>1) rList.add(ST.update(OP.dust.mat(mSecondaryDrop.mTargetCrushing.mMaterial, 1)));
        }
        return rList;
    }

I don’t know if it’s right or not, but it works :slightly_smiling_face:

1 Like