Менее острые текстуры по умолчанию.
Скриншоты мода (кликабельны):
Загрузки в разделе «Файлы»
Реализация алгоритма
import java.awt.image.BufferedImage, import java.io.ByteArrayInputStream, import java.io .EOFException, импорт java.io.File, импорт java.io.FileInputStream, импорт java.util.Arrays,
import javax.imageio.ImageIO
открытый класс NDP2b {
открытый статический void main (String [] args) генерирует исключительную ситуацию {
basenew file (M:/texdev/v2/vanilla/in) ), файл o64new (M:/texdev/v2/vanilla/to64), файл o128new (M:/texdev/v2/vanilla/to128), файл o256new (M :/texdev/v2/vanilla/to256 ), read.setOut (proc), proc.setOut (write), read.start (), proc.start (), write.start (), iter (base, ), read.fillDeath (),}
public static void iter (File dir, String sub) выдает исключение {
Файл [] farrdir.listFiles (), для (Файл f: farr) {
if (f.isDirectory ()) {
iter (f, sub + / + f.getName () ),} else {
Строка supsub + / + f.getName (),//System.out.println(sup), Файл infn ew File (base, sup), Transo onew Transo (sup), byte [] iinew byte [(int) inf.length ()], FileInputStream является новым FileInputStream (inf), int po0, poe, while (po ii.length) {
poeis.read (ii, po, ii.length-po), if (poe-1) {
is. close (), выбросить новое исключение EOFException (Baum), po + poe,} is.close (), o.iiii, read.put (o),}} статический объект wloknew Object (),
статический Taskor readnew Taskor (1) {
@Override public Object work (Object trans) {try {
Transo o (Transo) trans,//System.out.println(o.sup), o. bimgImageIO.read (new ByteArrayInputStream (o.ii)), return o,} catch (Exception ex) {ex.printStackTrace (), return null,}} },
static Taskor writenew Taskor (1) {
@Override public Object work (Объект trans) {try {
WTr o (WTr) trans, ImageIO.write (o.out, png, oo), return null,} catch (Exception ex) {ex.printStackTrace (), return null,}} }, статические классы s WTr {
Файл o, BufferedImage out, общедоступный WTr (Файл a, BufferedImage b) {oa, outb,}} статический Taskor procnew Taskor (0) {
@Override public Object work (Object trans) {try {
Transo o (Transo) trans, System.out.println (getName () + + o.sup) , логическое iparo.sup.contains (items/), deo (o.bimg, ipar, новый файл (o64, o.sup), 4,3,0), deo ( o.bimg, ipar, новый файл (o128, o.sup), 8,5,1), deo (o.bimg, ipar, новый файл (o256, o.sup), 16,9,2) , return null,} catch (Exception ex) {ex.printStackTrace (), return null,}} public void deo (BufferedImage bimg, логический ipar, файл o, int scal, int cust, int obid) создает исключение {
o.getParentFile (). mkdirs (), BufferedImage outipar? parse (bimg, scal, cust, obid): parsenb (bimg, scal, cust, obid), write.put (новый WTr (o, out)),}
int [] [] oRnew int [3] [], oGnew int [3] [ ], oBnew int [3] [], oAnew int [3] [],
/** * сгенерировать медиано-увеличенное изображение * @param в массиве ARGB * @param outbuf @ Nullable pass aa луч за выход. Может быть нулевым ПОЖАЛУЙСТА, ИСПОЛЬЗУЙТЕ ВОЗВРАЩЕННУЮ Массив в качестве выхода * @param iw по ширине * @param ih по высоте * @param ih по масштабному коэффициенту * @param cust медианный коэффициент * @return выходной массив */
public byte [] parse (byte [] in, byte [] out, int iw, int ih, int scal, int cust, int obid) {
assert (in.length (iw * ih * 4)), int [] RoR [obid], GoG [obid], BoB [obid], AoA [obid], int ohih * scal, owiw * scal, ymow, ydscalmiw, oxy , ixy, if (outnull || out.length! ow * oh * 4) {outnew byte [ow * oh * 4],} для (int y0, y oh, y ++) {
ymowy * ow, ydscalmiw (y/scal) * iw, for (int x0, x ow, x ++) {
oxy (ymow + x) * 4, ixy (ydscalmiw + (x/scal)) * 4, выход [окси] в [ixy], выход [окси + 1] в [ixy + 1], выход [окси + 2] в [ixy + 2], выход [окси +3] в [ixy + 3],}} int custqcust * cust, int wb ((cust-1)/2), int wd ((custq- 1)/2), int m0, dpx0, dpy0, pps, if (Anull || A.length! Custq) {
//opixel [obid] pixelnew int [custq],
oR [obid] Rnew int [custq], oG [obid] Gnew int [custq], oB [obid] Bnew int [custq], oA [obid] Anew int [custq ],} для (int iwb, i ow-wb, i ++) {
for (int jwb, j oh-wb, j ++) {
//int ma (img. getRGB (i, j) 24) m0, pps ((j * ow) + i) * 4, для (int k-wb, k wb, k ++) { dpy (k + j) * ow, for (int l-wb, l wb, l ++) {
//pixel[m]img.getRGB(i+k, j + l) , dpx (dpy + i + l) * 4, A [m] out [dpx] R [m] out [dpx + 1] G [m] out [dpx + 2] B [m] out [dpx + 3] m ++,}}/* для (int k0, k pixel.length, k ++) {
R [k] (пиксель [k] 16) G [k] (пиксель [k] 8) B [k] (пиксель [k] 0 ) A [k] (pixel [k] 24)} */
Arrays.sort (R), Arrays.sort (G), Arrays. sort (B), Arrays.sort (A),/*img.setRGB(i,j, ((A [wd] 0xFF) 24) | ((R [wd] 0xFF) 16) | ((G [wd] 0xFF) 8) | ((B [wd] 0xFF) 0) ), */
out [pps] (байт) A [wd], out [pps + 1] (байт) R [wd], out [pps + 2] (байт) G [ wd], out [pps + 3] (байт) B [wd],}} return out,}
байт [] [] ozwbufnew байт e [3] [], ozwobufnew byte [3] [],
BufferedImage [] beinew BufferedImage [3],
/* public void etchCol (byte [] zwbuf, int w, int sx, int sy, int dx, int dy) {
int sp ((sy * w) + sx) * 4, dp ((dy * w) + dx) * 4, zwbuf [ dp] zwbuf [sp], zwbuf [dp + 1] zwbuf [sp + 1], zwbuf [dp + 2] zwbuf [sp + 2], zwbuf [dp + 3] zwbuf [ sp + 3],} */ public void etchCol (byte [] zwbuf, int w, байт a, байт r, байт g, байт b, int dx, int dy) {
int dp ((dy * w) + dx) * 4, zwbuf [dp] a, zwbuf [dp + 1] r, zwbuf [dp + 2] g, zwbuf [dp + 3] b,} byte [] sAnew byte [8192], byte [] sRnew byte [8192], byte [] sGnew byte [8192], byte [] sBnew byte [8192], byte [] [] odAnew byte [3] [], byte [] [] odRnew byte [3] [], byte [] [] odGnew byte [3] [], byte [] [] odBnew byte [3] [], public BufferedImage parsenb (BufferedImage in, int scal, int cust, int obid) {< br=''> int iwin.getWidth (), ihin.getHeight (),//int iwp1iw + 1, ihp1ih + 1, iwp2iwp1 + 1, ihp2ihp1 + 1, int zwbufsiw * ih * 4, byte [] zwbufozwbuf [obid], byt e [] zwobufozwobuf [obid], if (zwbufnull || zwbuf.length! zwbufs) {ozwobuf [obid] zwbufnew байт [zwbufs],} int scany, pipo, cc, for (int) y0, y ih, y ++) {
scanyy * iw, for (int x0, x iw, x ++) {
pipo (scany + x) * 4, ccin.getRGB ( x, y), zwbuf [pipo] (байт) (cc 24), zwbuf [pipo + 1] (байт) (cc 16), zwbuf [ pipo + 2] (byte) (cc 8), zwbuf [pipo + 3] (byte) cc,}}/* for (int y0, y ihp2, y ++) {
scanyy * iwp2, для (int x0, x iwp2, x ++) {
pipo (scany + x) * 4, if (y0 || yihp1 || x0 || xiwp1) {
zwbuf [pipo] (байт) (dca/ccc), zwbuf [pipo + 1] (байт) (dcr/ccc), zwbuf [pipo + 2] ( байт) (dcg/ccc), zwbuf [pipo + 3] (byte) (dcb/ccc),} if (x 1) {
if (y 1 (x0) || y0)) {
zwbuf [pipo] zwbuf [0], zwbuf [pipo + 1] zwbuf [1], zwbuf [pipo + 2] zwbuf [2], zwbuf [pipo + 3] zwbuf [3],} else if (y ihp1-1 (x0 || yihp1)) {
zwbuf [pipo] zwbuf [zwbuf.length- (iwp2 * 4)], zwbuf [pipo + 1] zwbuf [zwbuf.length- (iwp2 * 4) +1], zwbuf [pipo + 2] zwbuf [zwbuf .length- (iwp2 * 4) +2], zwbuf [pipo + 3] zwbuf [zwbuf.length- (iwp2 * 4) +3],}} else if (x iwp1 -1) {
if (y 1 (xiwp1 || y0)) {
zwbuf [pipo] zwbuf [(iwp2 * 4)], zwbuf [pipo + 1] zwbuf [(iwp2 *) 4) +1], zwbuf [pipo + 2] zwbuf [(iwp2 * 4) +2], zwbuf [pipo + 3] zwbuf [(iwp2 * 4) +3],} иначе if (y ihp1-1 (xiwp1 || yihp1)) {
zwbuf [pipo] zwbuf [zwbuf.length-4], zwbuf [pipo + 1] zwbuf [zwbuf.length-3], zwbuf [pipo + 2] zwbuf [zwbuf.length-2], zwbuf [pipo + 3] zwbuf [zwbuf.length-1],}}}
} */
zwobufparse (zwbuf, zwobuf, iw, ih, scal, cust, obid), int owiw * scal, ohih * scal,//, owp1iwp1 * scal, ohp1ihp1 * scal, owp2iwp2 * scal , BufferedImage obei [obid], if (onull || o.getWidth ()! ow || o.getHeight ()! oh) {
obei [obid] new BufferedImage (ow, о, BufferedImage.TYPE_INT_ARGB),} int minsc, pen, for (int y0, y oh, y ++) {
scanyy * ow, minsc ((y/scal) * iw), для (int x0, x ow, x ++) {
pipo (scany + x) * 4, if (sssse [scal] [y% scal] [x% scal]) {
ручка (minsc + (x/scal)) * 4, zwobuf [ pipo] zwbuf [pen], zwobuf [pipo + 1] zwbuf [pen + 1], zwobuf [pipo + 2] zwbuf [pen + 2], zwobuf [pipo + 3] zwbuf [ pen + 3],} o.setRGB (x, y, ((zwobuf [pipo] 0xFF) 24) | ((zwobuf [pipo + 1] 0xFF)) 16) | ((zwobuf [pipo + 2] 0xFF) 8) | (zwobuf [pipo + 3] 0xFF)),} } return o,} public BufferedImage parse (BufferedImage in, int scal, int cust, int obid) {
int iwin.getWidth (), ihin.getHeight (), int iwp1iw + 1, ihp1ih + 1, iwp2iwp1 + 1, ihp2ihp1 + 1, int zwbufsiwp2 * ihp2 * 4, byte [] zwbufozwbuf [obid], байт [] zwobufozwobuf [obid] br> if (zwbufnull || zwbuf.length! zwbufs) {ozwobuf [obid] zwbufnew байт [zwbufs],} int scany, pipo, cc, int ccc0, ym1, for (int y1, y ihp1, y ++) {
scanyy * iwp2, ym1y-1, для (int x1, x iwp1, x ++) {
pipo (scany + x) * 4, < br=''> ccin.getRGB (x-1, ym1), zwbuf [pipo] (байт) (cc 24), zwbuf [pipo + 1] (байт) (cc 16), zwbuf [pipo + 2] (byte) (cc 8), zwbuf [pipo + 3] (byte) cc, if (y1 || yih || x1 || xiw) {
sA [ccc] zwbuf [pipo], sR [ccc] zwbuf [pipo + 1], sG [ccc] zwbuf [pipo +2], sB [ccc] zwbuf [pipo + 3], ccc ++,}}} byte [] dAodA [obid], if (dAnull | | dA.length! ccc) {odA [obid] dAnew byte [ccc],} System.arraycopy (sA, 0, dA, 0, ccc), Arrays.sort (dA), byte [] dRodR [obid], if (dRnull || dR.length! ccc) {odR [obid] dRnew byte [ccc],} System.arraycopy (sR, 0, dR, 0, ccc), Arrays.sort ( dR), byte [] dGodG [obid], if (dGnull || dG.length! ccc) {odG [obid] dGnew byte [ccc],} System.arraycopy (sG, 0, dG, 0, ccc), Arrays.sort (dG), byte [] dBodB [obid], if (dBnull || dB.length! Ccc) {odB [obid] dBnew byte [ccc],} Система .arraycopy (sB, 0, дБ, 0, ccc), Arrays.sort (дБ),/* для (int y0, y ihp2, y ++) {
scanyy * iwp2, для ( int x0, x iwp2, x ++) {
pipo (scany + x) * 4, if (y0 || yihp1 || x0 || xiwp1) {
zwbuf [pipo] (byte) ( dca/ccc), zwbuf [pipo + 1] (байт) (dcr/ccc), zwbuf [pipo + 2] (байт) (dcg/ccc), zwbuf [pipo + 3] (байт) (dcb/ccc),} if (x 1) {
if (y 1 (x0 || y0)) {
zwbuf [pipo] zwbuf [0], zwbuf [pipo + 1] zwbuf [1], zwbuf [pipo + 2] zwbuf [2], < br=''> zwbuf [pipo + 3] zwbuf [3],} else if (y ihp1-1 (x0 || yihp1)) {
zwbuf [pipo] zwbuf [zwbuf.length- (iwp2 * 4) )], zwbuf [pipo + 1] zwbuf [zwbuf.length- (iwp2 * 4) +1], zwbuf [pipo + 2] zwbuf [zwbuf.length- (iwp2 * 4) +2] , zwbuf [pipo + 3] zwbuf [zwbuf.length- (iwp2 * 4) +3],}} else if (x iwp1-1) {
if (y 1 (xiwp1 || y0)) {
zwbuf [pipo] zwbuf [(iwp2 * 4)], zwbuf [pipo + 1] zwbuf [(iwp2 * 4) +1], zwbuf [ pipo + 2] zwbuf [(iwp2 * 4) +2], zwbuf [pipo + 3] zwbuf [(iwp2 * 4) +3],} else if (y ihp1-1 (xiwp1 | | yihp1)) {
zwbuf [pipo] zwbuf [zwbuf.length-4], zwbuf [pipo + 1] zwbuf [zwbuf.length-3], zwbuf [pipo + 2] zwbuf [ zwbuf.length-2], zwbuf [pipo + 3] zwbuf [zwbuf.length-1],}}}} */
byte dccadA [ccc/2], dccrdR [ccc/2], dccgdG [ccc/2], dccbdB [ccc/2], для (int x0, x iwp2, x ++) {
etchCol (zwbuf, iwp2, dcca) , dccr, dccg, dccb, x, 0), etchCol (zwbuf, iwp2, dcca, dccr, dccg, dccb, x, ihp1),} для ( int y0, y ihp2, y ++) {
etchCol (zwbuf, iwp2, dcca, dccr, dccg, dccb, 0, y), etchCol (zwbuf, iwp2, dcca, dccr, dccg, dccb, iwp1 , y),} zwobufparse (zwbuf, zwobuf, iwp2, ihp2, scal, cust, obid), int owiw * scal, ohih * scal, owp1iwp1 * scal, ohp1ihp1 * scal, owp2iwp2 * scal, BufferedImage obei [obid], if (onull || o.getWidth ()! ow || o.getHeight ()! oh) {
obei [obid] new BufferedImage (ow, oh , BufferedImage.TYPE_INT_ARGB),} int minsc, pen, for (int yscal, y ohp1, y ++) {
scanyy * owp2, ym1y-scal, minsc (( y/scal) * iwp2), for (int xscal, x owp1, x ++) {
pipo (scany + x) * 4, if (sssse [scal] [y% scal] [ x% scal]) {
pen (minsc + (x/scal)) * 4, zwobuf [pipo] zwbuf [pen], zwobuf [pipo + 1] zwbuf [pen + 1], < br=''> zwobuf [pipo + 2] zwbuf [pen + 2], zwobuf [pipo + 3] zwbuf [pen + 3],} o.setRGB (x-scal, ym1, (( zwobuf [pipo] 0xFF) 24) | ((zwobuf [pipo + 1] 0xFF) 16) | ((zwobuf [pipo + 2] 0xFF) lt , 8) | (zwobuf [pipo + 3] 0xFF)),}} return o,}}, статический класс Transo {
String sup, BufferedImage bimg, byte [] ii, общедоступный Transo (String a) {supa,}} общедоступный статический логический behfalse, < br=''> public static File base, o64, o128, o256,
static boolean [] [] [] sssse new boolean [] [] [] {null, null, {{true, true }, {true, true}}, null, {{false, true, true, false}, {true, true, true, true}, {true, true, true, true} , {false, true, true, false}}, null, null, null, {{false, false, true, true, true, true, false, false,}}, {false, true , правда, правда, правда, правда, правда, правда, ложь}, {правда, правда, правда, правда, правда, правда, правда, правда, правда}, {правда, правда, правда, правда, правда, правда, правда , правда, правда}, {правда, правда, правда, правда, правда, правда, правда, правда, правда}, {правда, правда, правда, правда, правда, правда, правда, правда, правда},
{false, true, true, true, true, true, true, false}, {false, false, true, true, true, true, false, false},}, null, null, null, null, null, null, null, {{false, false, false, false, false, true, true, true, true, true, true, true, false, false, false, false, false}}, {false, ложь, ложь, правда, правда, правда, правда, правда, тр и, правда, правда, правда, правда, правда, ложь, ложь, ложь}, {ложь, ложь, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, ложь , false}, {false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false}}, {false, true, true , правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, ложно}, {правда, правда, правда, правда, правда, правда, правда, правда, правда, истина, правда, правда, правда, правда, правда, правда, правда}, {правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда }, {true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true}, {true, true, true, true , правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда}, {правда, правда, правда, правда, правда, прав а, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда}, {правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда, правда}, {false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false}, {false, true, true, true, true, true , правда, правда, правда, правда, правда, правда, правда, правда, правда, т rue, false}, {false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false}, {false, false, false, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false}, {false, false, false, false, false, true, true, true, true , true, true, false, false, false, false, false}}},}
Как установить NearlyDefault текстуру на Майнкрафт:
- Скачать текстурпак и кинуть в папку resourcepacks
- В игре зайти в Настройки - Ресурспаки. Кинуть текстурпак NearlyDefault в начало списка справа.
- Подробнее.
Скачать NearlyDefault текстуры на Майнкрафт:
На 1.13.2
- v2.0.1 64x 1.13 (25.01.2020)
На 1.12.2
- v2 128x 1.11-1.12 (25.01.2020)
На 1.11.2
- v2 128x 1.11-1.12 (25.01.2020)