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 