promotional bannermobile promotional banner

NearlyDefault

Less Edgy Default Textures
item image
item image
Coal ore

Coal ore

item image
item image
item image
item image
item image
item image
item image
item image
item image
item image

Description

Check out the port to newer Versions by meed223: https://www.curseforge.com/minecraft/texture-packs/almostdefault

Less Edgy Default Textures

 

Downloads under "Files"

 

Algorithm Implementation

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.util.Arrays;

import javax.imageio.ImageIO;

public class NDP2b {

public static void main(String[] args) throws Exception {
base=new File("M:/texdev/v2/vanilla/in");
o64=new File("M:/texdev/v2/vanilla/to64");
o128=new File("M:/texdev/v2/vanilla/to128");
o256=new File("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) throws Exception {
File[] farr=dir.listFiles();
for(File f : farr){
if(f.isDirectory()) {
iter(f,sub+'/'+f.getName());
}else{
String sup=sub+'/'+f.getName();
//System.out.println(sup);
File inf=new File(base,sup);
Transo o=new Transo(sup);
byte[] ii=new byte[(int) inf.length()];
FileInputStream is=new FileInputStream(inf);
int po=0,poe;
while(po<ii.length) {
poe=is.read(ii, po, ii.length-po);
if(poe==-1) {
is.close();
throw new EOFException("Baum");
}
po+=poe;
}
is.close();
o.ii=ii;
read.put(o);
}
}
}

static Object wlok=new Object();

static Taskor read=new Taskor(1) {

@Override
public Object work(Object trans) {try {
Transo o=(Transo)trans;
//System.out.println(o.sup);
o.bimg=ImageIO.read(new ByteArrayInputStream(o.ii));
return o;
}catch(Exception ex) {ex.printStackTrace();return null;}}

};

static Taskor write=new Taskor(1) {

@Override
public Object work(Object trans) {try {
WTr o=(WTr)trans;
ImageIO.write(o.out, "png", o.o);
return null;
}catch(Exception ex) {ex.printStackTrace();return null;}}

};

static class WTr {
File o;BufferedImage out;
public WTr(File a,BufferedImage b) {o=a;out=b;}
}

static Taskor proc=new Taskor(0) {

@Override
public Object work(Object trans) {try {
Transo o=(Transo)trans;
System.out.println(getName()+" "+o.sup);
boolean ipar=o.sup.contains("items/");
deo(o.bimg,ipar,new File(o64,o.sup),4,3,0);
deo(o.bimg,ipar,new File(o128,o.sup),8,5,1);
deo(o.bimg,ipar,new File(o256,o.sup),16,9,2);
return null;
}catch(Exception ex) {ex.printStackTrace();return null;}}

public void deo(BufferedImage bimg, boolean ipar, File o, int scal, int cust, int obid) throws Exception {
o.getParentFile().mkdirs();
BufferedImage out=ipar?parse(bimg,scal,cust,obid):parsenb(bimg,scal,cust,obid);
write.put(new WTr(o,out));
}

int[][] oR=new int[3][],oG=new int[3][],oB=new int[3][],oA=new int[3][];

/**
* generate median-upscaled image
* @param in ARGB-array
* @param outbuf @Nullable pass a array for output. Can be null. PLEASE USE RETURNED ARRAY AS OUTPUT
* @param iw in width
* @param ih in height
* @param scal scale factor
* @param cust median factor
* @return output array
*/
public byte[] parse(byte[] in, byte[] out, int iw, int ih, int scal, int cust, int obid) {
assert(in.length==(iw*ih*4));
int[] R=oR[obid],G=oG[obid],B=oB[obid],A=oA[obid];
int oh=ih*scal,ow=iw*scal,ymow,ydscalmiw,oxy,ixy;
if(out==null||out.length!=ow*oh*4) {out=new byte[ow*oh*4];}
for(int y=0;y<oh;y++) {
ymow=y*ow;
ydscalmiw=(y/scal)*iw;
for(int x=0;x<ow;x++) {
oxy=(ymow+x)*4;
ixy=(ydscalmiw+(x/scal))*4;
out[oxy]=in[ixy];out[oxy+1]=in[ixy+1];out[oxy+2]=in[ixy+2];out[oxy+3]=in[ixy+3];
}
}
int custq=cust*cust;
int wb=((cust-1)/2);
int wd=((custq-1)/2);
int m=0,dpx=0,dpy=0,pps;
if(A==null||A.length!=custq) {
//opixel[obid]=pixel=new int[custq];
oR[obid]=R=new int[custq];
oG[obid]=G=new int[custq];
oB[obid]=B=new int[custq];
oA[obid]=A=new int[custq];
}
for(int i=wb;i<ow-wb;i++){
for(int j=wb;j<oh-wb;j++){
//int ma=(img.getRGB(i, j) >> 24) & 0xff;
m=0;
pps=((j*ow)+i)*4;
for(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]&0xFF;
R[m]=out[dpx+1]&0xFF;
G[m]=out[dpx+2]&0xFF;
B[m]=out[dpx+3]&0xFF;
m++;
}
}
/*for(int k=0;k<pixel.length;k++){
R[k]=(pixel[k] >> 16) & 0xFF;
G[k]=(pixel[k] >> 8) & 0xFF;
B[k]=(pixel[k] >> 0) & 0xFF;
A[k]=(pixel[k] >> 24) & 0xff;
}*/
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]=(byte) A[wd];
out[pps+1]=(byte) R[wd];
out[pps+2]=(byte) G[wd];
out[pps+3]=(byte) B[wd];
}
}
return out;
}

byte[][] ozwbuf=new byte[3][],ozwobuf=new byte[3][];

BufferedImage[] bei=new 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, byte a, byte r, byte g, byte 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[] sA=new byte[8192];
byte[] sR=new byte[8192];
byte[] sG=new byte[8192];
byte[] sB=new byte[8192];
byte[][] odA=new byte[3][];
byte[][] odR=new byte[3][];
byte[][] odG=new byte[3][];
byte[][] odB=new byte[3][];

public BufferedImage parsenb(BufferedImage in, int scal, int cust, int obid) {
int iw=in.getWidth(),ih=in.getHeight();
//int iwp1=iw+1,ihp1=ih+1,iwp2=iwp1+1,ihp2=ihp1+1;
int zwbufs=iw*ih*4;
byte[] zwbuf=ozwbuf[obid];byte[] zwobuf=ozwobuf[obid];
if(zwbuf==null||zwbuf.length!=zwbufs) {ozwobuf[obid]=zwbuf=new byte[zwbufs];}
int scany,pipo,cc;
for(int y=0;y<ih;y++) {
scany=y*iw;
for(int x=0;x<iw;x++) {
pipo=(scany+x)*4;
cc=in.getRGB(x, y);
zwbuf[pipo]=(byte) (cc >> 24);
zwbuf[pipo+1]=(byte) (cc >> 16);
zwbuf[pipo+2]=(byte) (cc >> 8);
zwbuf[pipo+3]=(byte) cc;
}
}
/*for(int y=0;y<ihp2;y++) {
scany=y*iwp2;
for(int x=0;x<iwp2;x++) {
pipo=(scany+x)*4;
if(y==0||y==ihp1||x==0||x==iwp1) {
zwbuf[pipo]=(byte) (dca/ccc);
zwbuf[pipo+1]=(byte) (dcr/ccc);
zwbuf[pipo+2]=(byte) (dcg/ccc);
zwbuf[pipo+3]=(byte) (dcb/ccc);
}
if(x<=1) {
if(y<=1&&(x==0||y==0)) {
zwbuf[pipo]=zwbuf[0];
zwbuf[pipo+1]=zwbuf[1];
zwbuf[pipo+2]=zwbuf[2];
zwbuf[pipo+3]=zwbuf[3];
} else if(y>=ihp1-1&&(x==0||y==ihp1)) {
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&&(x==iwp1||y==0)) {
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&&(x==iwp1||y==ihp1)) {
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];
}
}
}
}*/
zwobuf=parse(zwbuf,zwobuf,iw,ih,scal,cust,obid);
int ow=iw*scal,oh=ih*scal;//,owp1=iwp1*scal,ohp1=ihp1*scal,owp2=iwp2*scal;
BufferedImage o=bei[obid];
if(o==null||o.getWidth()!=ow||o.getHeight()!=oh) {
o=bei[obid]=new BufferedImage(ow,oh,BufferedImage.TYPE_INT_ARGB);
}
int minsc,pen;
for(int y=0;y<oh;y++) {
scany=y*ow;
minsc=((y/scal)*iw);
for(int x=0;x<ow;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];
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 iw=in.getWidth(),ih=in.getHeight();
int iwp1=iw+1,ihp1=ih+1,iwp2=iwp1+1,ihp2=ihp1+1;
int zwbufs=iwp2*ihp2*4;
byte[] zwbuf=ozwbuf[obid];byte[] zwobuf=ozwobuf[obid];
if(zwbuf==null||zwbuf.length!=zwbufs) {ozwobuf[obid]=zwbuf=new byte[zwbufs];}
int scany,pipo,cc;
int ccc=0,ym1;

for(int y=1;y<ihp1;y++) {
scany=y*iwp2;ym1=y-1;
for(int x=1;x<iwp1;x++) {
pipo=(scany+x)*4;
cc=in.getRGB(x-1, ym1);
zwbuf[pipo]=(byte) (cc >> 24);
zwbuf[pipo+1]=(byte) (cc >> 16);
zwbuf[pipo+2]=(byte) (cc >> 8);
zwbuf[pipo+3]=(byte) cc;
if(y==1||y==ih||x==1||x==iw) {
sA[ccc]=zwbuf[pipo];
sR[ccc]=zwbuf[pipo+1];
sG[ccc]=zwbuf[pipo+2];
sB[ccc]=zwbuf[pipo+3];
ccc++;
}
}
}
byte[] dA=odA[obid];if(dA==null||dA.length!=ccc) {odA[obid]=dA=new byte[ccc];}
System.arraycopy(sA, 0, dA, 0, ccc);Arrays.sort(dA);
byte[] dR=odR[obid];if(dR==null||dR.length!=ccc) {odR[obid]=dR=new byte[ccc];}
System.arraycopy(sR, 0, dR, 0, ccc);Arrays.sort(dR);
byte[] dG=odG[obid];if(dG==null||dG.length!=ccc) {odG[obid]=dG=new byte[ccc];}
System.arraycopy(sG, 0, dG, 0, ccc);Arrays.sort(dG);
byte[] dB=odB[obid];if(dB==null||dB.length!=ccc) {odB[obid]=dB=new byte[ccc];}
System.arraycopy(sB, 0, dB, 0, ccc);Arrays.sort(dB);
/*for(int y=0;y<ihp2;y++) {
scany=y*iwp2;
for(int x=0;x<iwp2;x++) {
pipo=(scany+x)*4;
if(y==0||y==ihp1||x==0||x==iwp1) {
zwbuf[pipo]=(byte) (dca/ccc);
zwbuf[pipo+1]=(byte) (dcr/ccc);
zwbuf[pipo+2]=(byte) (dcg/ccc);
zwbuf[pipo+3]=(byte) (dcb/ccc);
}
if(x<=1) {
if(y<=1&&(x==0||y==0)) {
zwbuf[pipo]=zwbuf[0];
zwbuf[pipo+1]=zwbuf[1];
zwbuf[pipo+2]=zwbuf[2];
zwbuf[pipo+3]=zwbuf[3];
} else if(y>=ihp1-1&&(x==0||y==ihp1)) {
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&&(x==iwp1||y==0)) {
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&&(x==iwp1||y==ihp1)) {
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 dcca=dA[ccc/2],dccr=dR[ccc/2],dccg=dG[ccc/2],dccb=dB[ccc/2];
for(int x=0;x<iwp2;x++) {
etchCol(zwbuf,iwp2,dcca,dccr,dccg,dccb,x,0);
etchCol(zwbuf,iwp2,dcca,dccr,dccg,dccb,x,ihp1);
}
for(int y=0;y<ihp2;y++) {
etchCol(zwbuf,iwp2,dcca,dccr,dccg,dccb,0,y);
etchCol(zwbuf,iwp2,dcca,dccr,dccg,dccb,iwp1,y);
}
zwobuf=parse(zwbuf,zwobuf,iwp2,ihp2,scal,cust,obid);
int ow=iw*scal,oh=ih*scal,owp1=iwp1*scal,ohp1=ihp1*scal,owp2=iwp2*scal;
BufferedImage o=bei[obid];
if(o==null||o.getWidth()!=ow||o.getHeight()!=oh) {
o=bei[obid]=new BufferedImage(ow,oh,BufferedImage.TYPE_INT_ARGB);
}
int minsc,pen;
for(int y=scal;y<ohp1;y++) {
scany=y*owp2;ym1=y-scal;
minsc=((y/scal)*iwp2);
for(int x=scal;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];
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) << 8) |
(zwobuf[pipo+3] & 0xFF));
}
}
return o;
}
};

static class Transo {
String sup;BufferedImage bimg;byte[] ii;
public Transo(String a) {sup=a;}
}


public static boolean beh=false;

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,true,true,true,true,true,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,true,true,true,true,true,true,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,false,false,false,false,false},
{false,false,false,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,true,false,false},
{false,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,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,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,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,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,false},
{false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false},
{false,false,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,false,false,false},
{false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false}}
};
}

 

The NearlyDefault Team

profile avatar
  • 2
    Followers
  • 1
    Projects
  • 55.7K
    Downloads