Skip to content

Commit

Permalink
logo; make an interface to change tileEntity's property;sort codes
Browse files Browse the repository at this point in the history
  • Loading branch information
kuzuanpa committed Apr 14, 2024
1 parent 7103ddf commit 2eda4d6
Show file tree
Hide file tree
Showing 17 changed files with 115 additions and 86 deletions.
52 changes: 31 additions & 21 deletions src/main/java/blockrenderer6343/client/WorldSceneRenderer.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,7 @@
import java.util.function.Consumer;

import cn.kuzuanpa.thinker.Thinker;
import cn.kuzuanpa.thinker.client.render.dummyWorld.anime.DummyBlockAnimeOutlineGlowth;
import cn.kuzuanpa.thinker.client.render.dummyWorld.anime.IDummyBlockAnime;
import cn.kuzuanpa.thinker.client.render.dummyWorld.anime.IDummyBlockAnimeDrawAdditionalQuads;
import cn.kuzuanpa.thinker.client.render.dummyWorld.anime.*;
import cn.kuzuanpa.thinker.client.render.dummyWorld.dummyWorldHandler;
import cn.kuzuanpa.thinker.client.render.dummyWorld.dummyWorldTileEntity;
import cn.kuzuanpa.thinker.client.render.gui.anime.IGuiAnime;
Expand Down Expand Up @@ -118,10 +116,10 @@ public void render(int x, int y, int width, int height, int mouseX, int mouseY,
int mouseY1=mouseY;
dummyWorldHandler.dummyWorldBlocksHashMap.forEach((pos,blockDummy)->{
GL11.glPushMatrix();
if(blockDummy!=null&&!blockDummy.animeList.isEmpty())blockDummy.animeList.forEach(anime-> {
if(anime instanceof IDummyBlockAnimeDrawAdditionalQuads)return;
if(blockDummy!=null&&!blockDummy.animeList.isEmpty())blockDummy.animeList.forEach(gAnime-> {
if(!(gAnime instanceof IDummyWorldGraphicAnime))return;
GL11.glTranslatef(pos.x,pos.y,pos.z);
anime.animeDraw(initTime);
((IDummyWorldGraphicAnime)gAnime).animeDraw(initTime);
GL11.glTranslatef(-pos.x,-pos.y,-pos.z);
});
Vector3f hitPos = ProjectionUtils.unProject(mouseX1, mouseY1);
Expand Down Expand Up @@ -270,14 +268,16 @@ protected void drawWorld() {
mc.gameSettings.ambientOcclusion = 0;
dummyWorldHandler.dummyWorldBlocksHashMap.forEach((pos,block)->{
GL11.glPushMatrix();
List<IDummyBlockAnime> anime = dummyWorldHandler.dummyWorldBlocksHashMap.get(pos).animeList;
List<IDummyWorldAnimes> anime = dummyWorldHandler.dummyWorldBlocksHashMap.get(pos).animeList;
if(anime!=null&&!anime.isEmpty())anime.forEach(a->{
if(a instanceof IDummyBlockAnimeDrawAdditionalQuads) {
((IDummyBlockAnimeDrawAdditionalQuads) a).drawAdditionalQuads(initTime,this);
if(a instanceof IDummyBlockAnimeDrawAdditionalQuads) ((IDummyBlockAnimeDrawAdditionalQuads) a).drawAdditionalQuads(initTime,this);
if(a instanceof IDummyWorldGraphicAnime){
GL11.glTranslatef(pos.x, pos.y, pos.z);
((IDummyWorldGraphicAnime)a).animeDraw(initTime);
GL11.glTranslatef(-pos.x, -pos.y, -pos.z);
}
if(a instanceof IDummyWorldTilePropertiesAnime){
}
GL11.glTranslatef(pos.x, pos.y, pos.z);
a.animeDraw(initTime);
GL11.glTranslatef(-pos.x, -pos.y, -pos.z);
});
Tessellator.instance.startDrawingQuads();
try {
Expand All @@ -292,7 +292,7 @@ protected void drawWorld() {
} finally {
Tessellator.instance.draw();
Tessellator.instance.setTranslation(0, 0, 0);
if(pointedBlock!=null&&pointedBlock.equals(pos)) DummyBlockAnimeOutlineGlowth.renderBlockOutlineAt(pointedBlock, 0xCCCCCC, 1F);
if(pointedBlock!=null&&pointedBlock.equals(pos)) DummyWorldGraphicAnimeOutlineGlowth.renderBlockOutlineAt(pointedBlock, 0xCCCCCC, 1F);
GL11.glPopMatrix();
}

Expand All @@ -312,16 +312,26 @@ protected void drawWorld() {
setDefaultPassRenderState(finalPass);
if(t.tile.shouldRenderInPass(finalPass)){
GL11.glTranslatef(pos.x, pos.y, pos.z);
List<IDummyBlockAnime> anime = dummyWorldHandler.dummyWorldTileEntityHashMap.get(pos).animeList;
if(anime!=null&&!anime.isEmpty())anime.forEach(a->a.animeDraw(initTime));
List<IDummyWorldAnimes> anime = dummyWorldHandler.dummyWorldTileEntityHashMap.get(pos).animeList;
if(anime!=null&&!anime.isEmpty())anime.forEach(a->{
if(a instanceof IDummyBlockAnimeDrawAdditionalQuads) ((IDummyBlockAnimeDrawAdditionalQuads) a).drawAdditionalQuads(initTime,this);
if(a instanceof IDummyWorldGraphicAnime){
GL11.glTranslatef(pos.x, pos.y, pos.z);
((IDummyWorldGraphicAnime)a).animeDraw(initTime);
GL11.glTranslatef(-pos.x, -pos.y, -pos.z);
}
if(a instanceof IDummyWorldTilePropertiesAnime){
((IDummyWorldTilePropertiesAnime) a).doAnime(t.tile);
}
});
GL11.glTranslatef(-pos.x, -pos.y, -pos.z);
int i = world.getLightBrightnessForSkyBlocks(pos.x,pos.y,pos.z, 0);
float j = i % 65536;
float k = i / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, j, k);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
TileEntityRendererDispatcher.instance.renderTileEntityAt(t.tile, pos.x,pos.y,pos.z, 0);
if(pointedBlock!=null&&pointedBlock.equals(pos)) DummyBlockAnimeOutlineGlowth.renderBlockOutlineAt(pointedBlock, 0xCCCCCC, 1F);
if(pointedBlock!=null&&pointedBlock.equals(pos)) DummyWorldGraphicAnimeOutlineGlowth.renderBlockOutlineAt(pointedBlock, 0xCCCCCC, 1F);

}
GL11.glPopMatrix();
Expand Down Expand Up @@ -378,11 +388,11 @@ protected MovingObjectPosition screenPos2BlockPosFace(int mouseX, int mouseY, in
dummyWorldHandler.dummyWorldBlocksHashMap.forEach((pos,blockDummy)->{

GL11.glPushMatrix();
if(blockDummy!=null&&!blockDummy.animeList.isEmpty())blockDummy.animeList.forEach(anime-> {
if(anime instanceof IDummyBlockAnimeDrawAdditionalQuads)return;
GL11.glTranslatef(pos.x,pos.y,pos.z);
anime.animeDraw(initTime);
GL11.glTranslatef(-pos.x,-pos.y,-pos.z);
if(blockDummy!=null&&!blockDummy.animeList.isEmpty())blockDummy.animeList.forEach(gAnime->{
if(!(gAnime instanceof IDummyWorldGraphicAnime))return;
GL11.glTranslatef(pos.x, pos.y, pos.z);
((IDummyWorldGraphicAnime)gAnime).animeDraw(initTime);
GL11.glTranslatef(-pos.x, -pos.y, -pos.z);
});
Vector3f hitPos = ProjectionUtils.unProject(mouseX, mouseY);
result.set(rayTrace(hitPos, pos));
Expand Down
29 changes: 16 additions & 13 deletions src/main/java/cn/kuzuanpa/thinker/client/json/jsonReader.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

import blockrenderer6343.api.utils.BlockPosition;
import cn.kuzuanpa.thinker.client.profileHandler;
import cn.kuzuanpa.thinker.client.render.dummyWorld.anime.IDummyBlockAnime;
import cn.kuzuanpa.thinker.client.render.dummyWorld.anime.IDummyWorldAnimes;
import cn.kuzuanpa.thinker.client.render.dummyWorld.anime.IDummyWorldGraphicAnime;
import cn.kuzuanpa.thinker.client.render.dummyWorld.dummyWorldBlock;
import cn.kuzuanpa.thinker.client.render.dummyWorld.dummyWorldTileEntity;
import cn.kuzuanpa.thinker.client.render.gui.anime.IGuiAnime;
Expand Down Expand Up @@ -157,6 +158,7 @@ public static Object readThinkerObject(JsonReader json, String fileName)throws J
int height=0;
int color=0;
int meta=0;
boolean renderAllFaces=false;
ItemStack blockFromItemStack = null;
ArrayList<Object> unsortedAnimes=new ArrayList<>();
json.beginObject();
Expand Down Expand Up @@ -189,8 +191,9 @@ public static Object readThinkerObject(JsonReader json, String fileName)throws J
unsortedAnimes=readAllAnime(json,fileName);
}else if (jsonName.equalsIgnoreCase("blockFromItem")) {
blockFromItemStack=getItemStack(json.nextString(),json,fileName);
}else if (jsonName.equalsIgnoreCase("path")) {
path = json.nextString();
}else if (jsonName.equalsIgnoreCase("renderAllFaces")||
jsonName.equalsIgnoreCase("renderAllFace")) {
renderAllFaces = json.nextBoolean();
}else if (jsonName.equalsIgnoreCase("path")) {
path = json.nextString();
} else if(jsonName.equalsIgnoreCase("comment")){
Expand All @@ -203,15 +206,15 @@ public static Object readThinkerObject(JsonReader json, String fileName)throws J
if(type==null){json.endObject();logMissing(json,fileName,"Type");return null;}
Object out=null;
ArrayList<IGuiAnime> guiAnimes=new ArrayList<>();
ArrayList<IDummyBlockAnime> dummyWorldAnimes=new ArrayList<>();
unsortedAnimes.forEach(anime->{if(anime instanceof IGuiAnime)guiAnimes.add((IGuiAnime) anime);else dummyWorldAnimes.add((IDummyBlockAnime) anime);});
ArrayList<IDummyWorldAnimes> dummyWorldAnimes=new ArrayList<>();
unsortedAnimes.forEach(anime->{if(anime instanceof IGuiAnime)guiAnimes.add((IGuiAnime) anime);else dummyWorldAnimes.add((IDummyWorldAnimes) anime);});
switch (type){
case "image":
case "Image": out= getImage(json,fileName,posX,posY,width,height,path,guiAnimes,dummyWorldAnimes);break;
case "text":
case "Text": out= getText(json,fileName,posX,posY,text,color,guiAnimes,dummyWorldAnimes);break;
case "block":
case "Block": out= blockFromItemStack==null?getBlock(json,fileName,posX,posY,posZ,name,meta,guiAnimes,dummyWorldAnimes):getBlockFromItem(json,fileName,posX,posY,posZ,blockFromItemStack,meta,guiAnimes,dummyWorldAnimes);break;
case "Block": out= blockFromItemStack==null?getBlock(json,fileName,posX,posY,posZ,name,meta,guiAnimes,dummyWorldAnimes,renderAllFaces):getBlockFromItem(json,fileName,posX,posY,posZ,blockFromItemStack,meta,guiAnimes,dummyWorldAnimes,renderAllFaces);break;
case "tile":
case "Tile":
case "tileEntity":
Expand Down Expand Up @@ -293,7 +296,7 @@ public static Object readAnime(JsonReader json, String fileName)throws JsonParse
json.endObject();
return out;
}
public static customImage getImage(JsonReader jsonReader, String fileName,int posX,int posY,int width,int height,String path,ArrayList<IGuiAnime> guiAnimes,ArrayList<IDummyBlockAnime> blockAnimes) {
public static customImage getImage(JsonReader jsonReader, String fileName,int posX,int posY,int width,int height,String path,ArrayList<IGuiAnime> guiAnimes,ArrayList<IDummyWorldAnimes> blockAnimes) {
if(!blockAnimes.isEmpty())blockAnimes.forEach(anime->logError(jsonReader,fileName,"Invaild anime type: "+anime.jsonName()+"for block"));

if(path==null){logMissing(jsonReader,fileName,"path");return null;}
Expand All @@ -303,33 +306,33 @@ public static customImage getImage(JsonReader jsonReader, String fileName,int po
if(height==0){logMissing(jsonReader,fileName,"Height");return null;}
return new customImage(10,path,posX,posY,width,height);
}
public static customText getText(JsonReader jsonReader, String fileName,int posX,int posY,String text,int color,ArrayList<IGuiAnime> guiAnimes,ArrayList<IDummyBlockAnime> blockAnimes) {
public static customText getText(JsonReader jsonReader, String fileName,int posX,int posY,String text,int color,ArrayList<IGuiAnime> guiAnimes,ArrayList<IDummyWorldAnimes> blockAnimes) {
if(!blockAnimes.isEmpty())blockAnimes.forEach(anime->logError(jsonReader,fileName,"Invaild anime type: "+anime.jsonName()+"for block"));

if(text==null){logMissing(jsonReader,fileName,"text");return null;}
if(posX==-2147483647){logMissing(jsonReader,fileName,"posX");return null;}
if(posY==-2147483647){logMissing(jsonReader,fileName,"posY");return null;}
return new customText(10,text,posX,posY,color);
}
public static dummyBlockWithCoord getBlock(JsonReader jsonReader, String fileName,int posX,int posY,int posZ,String blockName,int meta,ArrayList<IGuiAnime> guiAnimes,ArrayList<IDummyBlockAnime> blockAnimes) {
public static dummyBlockWithCoord getBlock(JsonReader jsonReader, String fileName,int posX,int posY,int posZ,String blockName,int meta,ArrayList<IGuiAnime> guiAnimes,ArrayList<IDummyWorldAnimes> blockAnimes, boolean renderAllFace) {
if(!guiAnimes.isEmpty())guiAnimes.forEach(anime->logError(jsonReader,fileName,"Invaild anime type: "+anime.jsonName()+"for block"));
if(blockName==null){logMissing(jsonReader,fileName,"Name");return null;}
if(posX==-2147483647){logMissing(jsonReader,fileName,"posX");return null;}
if(posY==-2147483647){logMissing(jsonReader,fileName,"posY");return null;}
if(posZ==-2147483647){logMissing(jsonReader,fileName,"posZ");return null;}
return new dummyBlockWithCoord(new BlockPosition(posX,posY,posZ),new dummyWorldBlock(Block.getBlockFromName(blockName),blockAnimes));
return new dummyBlockWithCoord(new BlockPosition(posX,posY,posZ),new dummyWorldBlock(Block.getBlockFromName(blockName),blockAnimes).setRenderAllFace(renderAllFace));
}
public static dummyBlockWithCoord getBlockFromItem(JsonReader jsonReader, String fileName, int posX, int posY, int posZ, ItemStack itemStack, int meta, ArrayList<IGuiAnime> guiAnimes, ArrayList<IDummyBlockAnime> blockAnimes) {
public static dummyBlockWithCoord getBlockFromItem(JsonReader jsonReader, String fileName, int posX, int posY, int posZ, ItemStack itemStack, int meta, ArrayList<IGuiAnime> guiAnimes, ArrayList<IDummyWorldAnimes> blockAnimes, boolean renderAllFace) {
if(!guiAnimes.isEmpty())guiAnimes.forEach(anime->logError(jsonReader,fileName,"Invaild anime type: "+anime.jsonName()+"for block"));
if(itemStack==null){logMissing(jsonReader,fileName,"fromItem");return null;}
if(meta!=0) { logError(jsonReader,fileName,"Useless Element: meta in blockFromItem");return null;}
if(posX==-2147483647){logMissing(jsonReader,fileName,"posX");return null;}
if(posY==-2147483647){logMissing(jsonReader,fileName,"posY");return null;}
if(posZ==-2147483647){logMissing(jsonReader,fileName,"posZ");return null;}
return new dummyBlockWithCoord(new BlockPosition(posX,posY,posZ),new dummyWorldBlock(itemStack,blockAnimes));
return new dummyBlockWithCoord(new BlockPosition(posX,posY,posZ),new dummyWorldBlock(itemStack,blockAnimes).setRenderAllFace(renderAllFace));
}

public static dummyTileWithCoord getTileEntity(JsonReader jsonReader, String fileName,int posX,int posY,int posZ,String tileEntityNBTString,ArrayList<IGuiAnime> guiAnimes,ArrayList<IDummyBlockAnime> blockAnimes) {
public static dummyTileWithCoord getTileEntity(JsonReader jsonReader, String fileName,int posX,int posY,int posZ,String tileEntityNBTString,ArrayList<IGuiAnime> guiAnimes,ArrayList<IDummyWorldAnimes> blockAnimes) {
if(!guiAnimes.isEmpty())guiAnimes.forEach(anime->logError(jsonReader,fileName,"Invaild anime type: "+anime.jsonName()+" for tileEntity"));
NBTTagCompound tileEntityNBT= new NBTTagCompound();
if(posX!=-2147483647)tileEntityNBT.setInteger("x",posX);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import org.lwjgl.opengl.GL11;

public class DummyBlockAnimeMoveLinear implements IDummyBlockAnime {
public DummyBlockAnimeMoveLinear(int startTime, int endTime, float dX, float dY,float dZ){
public class DummyWorldGraphicAnimeMoveLinear implements IDummyWorldGraphicAnime {
public DummyWorldGraphicAnimeMoveLinear(int startTime, int endTime, float dX, float dY, float dZ){
this.startTime=startTime;
this.endTime=endTime;
this.dX =dX;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@

import java.awt.*;

public class DummyBlockAnimeOutlineGlowth implements IDummyBlockAnime,IDummyBlockAnimeDrawAdditionalQuads{
public DummyBlockAnimeOutlineGlowth(int startTime,int endTime,BlockPosition pos,int color,float thickness){
public class DummyWorldGraphicAnimeOutlineGlowth implements IDummyBlockAnimeDrawAdditionalQuads{
public DummyWorldGraphicAnimeOutlineGlowth(int startTime, int endTime, BlockPosition pos, int color, float thickness){
this.startTime=startTime;
this.endTime=endTime;
this.pos=pos;
Expand All @@ -20,13 +20,6 @@ public DummyBlockAnimeOutlineGlowth(int startTime,int endTime,BlockPosition pos,
public int startTime,endTime, color;
public float thickness;
@Override
public void animeDraw(long initTime) {
}

@Override
public void updateButton(long initTime) {
}
@Override
public String jsonName() {
return "Block.OutlineGlowth";
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import org.lwjgl.opengl.GL11;

public class DummyBlockAnimeRotateSteadily implements IDummyBlockAnime {
public class DummyWorldGraphicAnimeRotateSteadily implements IDummyWorldGraphicAnime {
@Override
public void animeDraw(long initTime) {
GL11.glTranslatef(0.5F,0.5F,0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@

import blockrenderer6343.client.WorldSceneRenderer;

public interface IDummyBlockAnimeDrawAdditionalQuads {
public interface IDummyBlockAnimeDrawAdditionalQuads extends IDummyWorldAnimes {
void drawAdditionalQuads(long initTime, WorldSceneRenderer renderer);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package cn.kuzuanpa.thinker.client.render.dummyWorld.anime;

public interface IDummyWorldAnimes {
String jsonName();
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package cn.kuzuanpa.thinker.client.render.dummyWorld.anime;

public interface IDummyBlockAnime {
public interface IDummyWorldGraphicAnime extends IDummyWorldAnimes {
void animeDraw(long initTime);
/**Some Anime changed Position or Scale of buttons. update them in there to make things perform correctly when clicked on these button**/
void updateButton(long initTime);

String jsonName();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package cn.kuzuanpa.thinker.client.render.dummyWorld.anime;

import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;

public interface IDummyWorldTilePropertiesAnime extends IDummyWorldAnimes{
void doAnime(TileEntity tileEntity);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package cn.kuzuanpa.thinker.client.render.dummyWorld.anime;

import cn.kuzuanpa.thinker.Thinker;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;

public class SetTileNBT implements IDummyWorldTilePropertiesAnime {
public NBTTagCompound tag=new NBTTagCompound();
public SetTileNBT(NBTTagCompound tag){
this.tag=tag;
}
public void doAnime(TileEntity tileEntity){
tileEntity.readFromNBT( tag);
}

@Override
public String jsonName() {
return "Prop.SetTileNBT";
}
}
Loading

0 comments on commit 2eda4d6

Please sign in to comment.