Skip to content

Commit 050a2bd

Browse files
authored
Show previews for multiblocks that contain searched item (#22)
1 parent f0dcd18 commit 050a2bd

27 files changed

+799
-573
lines changed

dependencies.gradle

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
// Add your dependencies here
22

33
dependencies {
4-
api('com.github.GTNewHorizons:StructureLib:1.3.4:dev')
5-
implementation("com.github.GTNewHorizons:GT5-Unofficial:5.09.49.68:dev")
4+
api('com.github.GTNewHorizons:StructureLib:1.3.5:dev')
5+
api('com.github.GTNewHorizons:GTNHLib:0.5.20:dev')
6+
implementation("com.github.GTNewHorizons:GT5-Unofficial:5.09.50.65:dev")
67
compileOnly("com.github.GTNewHorizons:NotEnoughEnergistics:1.6.4:dev")
78

89
runtimeOnlyNonPublishable("com.github.GTNewHorizons:StructureCompat:0.6.5:dev")

settings.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ pluginManagement {
1717
}
1818

1919
plugins {
20-
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.27'
20+
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.29'
2121
}
2222

2323

src/main/java/blockrenderer6343/BlockRenderer6343.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@
1919
version = Tags.VERSION,
2020
name = BlockRenderer6343.MOD_NAME,
2121
acceptedMinecraftVersions = "[1.7.10]",
22-
dependencies = "required-after:NotEnoughItems;required-after:structurelib")
22+
dependencies = "required-after:NotEnoughItems;required-after:structurelib;required-after:gtnhlib;")
2323
public class BlockRenderer6343 {
2424

2525
public static final String MOD_ID = "blockrenderer6343";
2626
public static final String MOD_NAME = "BlockRenderer6343";
27-
public static Logger LOG = LogManager.getLogger(MOD_ID);
27+
public static final Logger LOG = LogManager.getLogger(MOD_ID);
2828

2929
@SidedProxy(clientSide = MOD_ID + ".ClientProxy", serverSide = MOD_ID + ".CommonProxy")
3030
public static CommonProxy proxy;
@@ -37,10 +37,10 @@ public class BlockRenderer6343 {
3737
// preInit "Run before anything else. Read your config, create blocks, items,
3838
// etc, and register them with the GameRegistry."
3939
public void preInit(FMLPreInitializationEvent event) {
40-
proxy.preInit(event);
4140
isGTLoaded = Loader.isModLoaded("gregtech");
4241
isBartworksLoaded = Loader.isModLoaded("bartworks");
4342
isNEELoaded = Loader.isModLoaded("neenergistics");
43+
proxy.preInit(event);
4444
}
4545

4646
@Mod.EventHandler

src/main/java/blockrenderer6343/ClientProxy.java

+3-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package blockrenderer6343;
22

3-
import net.minecraftforge.common.MinecraftForge;
4-
53
import blockrenderer6343.client.world.TrackedDummyWorld;
6-
import blockrenderer6343.integration.nei.IMCForNEI;
74
import blockrenderer6343.integration.nei.InputHandler;
85
import codechicken.nei.guihook.GuiContainerManager;
96
import cpw.mods.fml.common.event.FMLInitializationEvent;
@@ -19,18 +16,18 @@ public void preInit(FMLPreInitializationEvent event) {
1916
super.preInit(event);
2017
GuiContainerManager.addInputHandler(new InputHandler());
2118
GuiContainerManager.addTooltipHandler(new InputHandler());
22-
GregTechAPI.addDummyWorld(TrackedDummyWorld.class);
19+
if (BlockRenderer6343.isGTLoaded) {
20+
GregTechAPI.addDummyWorld(TrackedDummyWorld.class);
21+
}
2322
}
2423

2524
// load "Do your mod setup. Build whatever data structures you care about. Register recipes."
2625
public void init(FMLInitializationEvent event) {
2726
super.init(event);
28-
IMCForNEI.IMCSender();
2927
}
3028

3129
// postInit "Handle interaction with other mods, complete your setup based on this."
3230
public void postInit(FMLPostInitializationEvent event) {
3331
super.postInit(event);
34-
MinecraftForge.EVENT_BUS.register(new EventHandler());
3532
}
3633
}

src/main/java/blockrenderer6343/Config.java

-34
This file was deleted.

src/main/java/blockrenderer6343/EventHandler.java

-22
This file was deleted.

src/main/java/blockrenderer6343/api/utils/BlockPosition.java

-29
This file was deleted.

src/main/java/blockrenderer6343/api/utils/CreativeItemSource.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
public class CreativeItemSource implements IItemSource {
1616

17-
public static CreativeItemSource instance;
17+
public static final CreativeItemSource instance;
1818

1919
static {
2020
instance = new CreativeItemSource();

src/main/java/blockrenderer6343/api/utils/PositionedIStructureElement.java

-19
This file was deleted.

src/main/java/blockrenderer6343/client/renderer/ImmediateWorldSceneRenderer.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
import net.minecraft.client.Minecraft;
44
import net.minecraft.client.gui.ScaledResolution;
5-
import net.minecraft.world.World;
65

76
import org.lwjgl.opengl.GL11;
87

98
import blockrenderer6343.api.utils.PositionedRect;
9+
import blockrenderer6343.client.world.TrackedDummyWorld;
1010
import cpw.mods.fml.relauncher.Side;
1111
import cpw.mods.fml.relauncher.SideOnly;
1212

@@ -21,7 +21,7 @@
2121
@SideOnly(Side.CLIENT)
2222
public class ImmediateWorldSceneRenderer extends WorldSceneRenderer {
2323

24-
public ImmediateWorldSceneRenderer(World world) {
24+
public ImmediateWorldSceneRenderer(TrackedDummyWorld world) {
2525
super(world);
2626
}
2727

src/main/java/blockrenderer6343/client/renderer/WorldSceneRenderer.java

+30-31
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,6 @@
3131
import static org.lwjgl.opengl.GL11.glPushMatrix;
3232
import static org.lwjgl.opengl.GL11.glViewport;
3333

34-
import java.util.Collection;
35-
import java.util.HashSet;
36-
import java.util.Set;
3734
import java.util.function.Consumer;
3835

3936
import net.minecraft.block.Block;
@@ -47,23 +44,25 @@
4744
import net.minecraft.tileentity.TileEntity;
4845
import net.minecraft.util.MovingObjectPosition;
4946
import net.minecraft.util.Vec3;
50-
import net.minecraft.world.World;
5147
import net.minecraftforge.client.ForgeHooksClient;
5248

5349
import org.lwjgl.opengl.GL12;
5450
import org.lwjgl.util.glu.GLU;
5551
import org.lwjgl.util.vector.Vector3f;
5652

53+
import com.gtnewhorizon.gtnhlib.util.CoordinatePacker;
54+
5755
import bartworks.common.blocks.BWBlocksGlass;
5856
import blockrenderer6343.BlockRenderer6343;
59-
import blockrenderer6343.api.utils.BlockPosition;
6057
import blockrenderer6343.api.utils.Position;
6158
import blockrenderer6343.api.utils.PositionedRect;
6259
import blockrenderer6343.api.utils.Size;
6360
import blockrenderer6343.client.utils.ProjectionUtils;
6461
import blockrenderer6343.client.world.TrackedDummyWorld;
6562
import codechicken.lib.vec.Vector3;
6663
import gregtech.common.render.GTRendererBlock;
64+
import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
65+
import it.unimi.dsi.fastutil.longs.LongSet;
6766

6867
/**
6968
* Created with IntelliJ IDEA.
@@ -75,9 +74,9 @@
7574
public abstract class WorldSceneRenderer {
7675

7776
// you have to place blocks in the world before use
78-
public final World world;
77+
public final TrackedDummyWorld world;
7978
// the Blocks which this renderer needs to render
80-
public final Set<BlockPosition> renderedBlocks = new HashSet<>();
79+
public final LongSet renderedBlocks = new LongOpenHashSet();
8180
private Consumer<WorldSceneRenderer> beforeRender;
8281
private Consumer<WorldSceneRenderer> onRender;
8382
private Consumer<MovingObjectPosition> onLookingAt;
@@ -88,7 +87,7 @@ public abstract class WorldSceneRenderer {
8887
private Vector3f worldUp = new Vector3f(0, 1, 0);
8988
private boolean renderAllFaces = false;
9089

91-
public WorldSceneRenderer(World world) {
90+
public WorldSceneRenderer(TrackedDummyWorld world) {
9291
this.world = world;
9392
}
9493

@@ -102,7 +101,7 @@ public WorldSceneRenderer setOnWorldRender(Consumer<WorldSceneRenderer> callback
102101
return this;
103102
}
104103

105-
public WorldSceneRenderer addRenderedBlocks(Collection<BlockPosition> blocks) {
104+
public WorldSceneRenderer addRenderedBlocks(LongSet blocks) {
106105
if (blocks != null) {
107106
this.renderedBlocks.addAll(blocks);
108107
}
@@ -277,8 +276,11 @@ protected void drawWorld() {
277276
tessellator.startDrawingQuads();
278277
try {
279278
tessellator.setBrightness(15 << 20 | 15 << 4);
280-
for (BlockPosition pos : renderedBlocks) {
281-
Block block = world.getBlock(pos.x, pos.y, pos.z);
279+
for (long pos : renderedBlocks) {
280+
int x = CoordinatePacker.unpackX(pos);
281+
int y = CoordinatePacker.unpackY(pos);
282+
int z = CoordinatePacker.unpackZ(pos);
283+
Block block = world.getBlock(x, y, z);
282284
if (block.equals(Blocks.air)) continue;
283285

284286
RenderBlocks bufferBuilder = new RenderBlocks();
@@ -289,25 +291,19 @@ protected void drawWorld() {
289291
// this mod cannot render renderpass = 1 blocks for now
290292
bufferBuilder.renderStandardBlockWithColorMultiplier(
291293
block,
292-
pos.x,
293-
pos.y,
294-
pos.z,
295-
bwGlass.getColor(world.getBlockMetadata(pos.x, pos.y, pos.z))[0] / 255f,
296-
bwGlass.getColor(world.getBlockMetadata(pos.x, pos.y, pos.z))[1] / 255f,
297-
bwGlass.getColor(world.getBlockMetadata(pos.x, pos.y, pos.z))[2] / 255f);
294+
x,
295+
y,
296+
z,
297+
bwGlass.getColor(world.getBlockMetadata(x, y, z))[0] / 255f,
298+
bwGlass.getColor(world.getBlockMetadata(x, y, z))[1] / 255f,
299+
bwGlass.getColor(world.getBlockMetadata(x, y, z))[2] / 255f);
298300
} else if (BlockRenderer6343.isGTLoaded) {
299-
if (!GTRendererBlock.INSTANCE.renderWorldBlock(
300-
world,
301-
pos.x,
302-
pos.y,
303-
pos.z,
304-
block,
305-
block.getRenderType(),
306-
bufferBuilder)) {
307-
bufferBuilder.renderBlockByRenderType(block, pos.x, pos.y, pos.z);
301+
if (!GTRendererBlock.INSTANCE
302+
.renderWorldBlock(world, x, y, z, block, block.getRenderType(), bufferBuilder)) {
303+
bufferBuilder.renderBlockByRenderType(block, x, y, z);
308304
}
309305
} else {
310-
bufferBuilder.renderBlockByRenderType(block, pos.x, pos.y, pos.z);
306+
bufferBuilder.renderBlockByRenderType(block, x, y, z);
311307
}
312308
}
313309
if (onRender != null) {
@@ -327,12 +323,15 @@ protected void drawWorld() {
327323
for (int pass = 0; pass < 2; pass++) {
328324
ForgeHooksClient.setRenderPass(pass);
329325
int finalPass = pass;
330-
renderedBlocks.forEach(blockPosition -> {
326+
renderedBlocks.forEach(pos -> {
327+
int x = CoordinatePacker.unpackX(pos);
328+
int y = CoordinatePacker.unpackY(pos);
329+
int z = CoordinatePacker.unpackZ(pos);
331330
setDefaultPassRenderState(finalPass);
332-
TileEntity tile = world.getTileEntity(blockPosition.x, blockPosition.y, blockPosition.z);
331+
TileEntity tile = world.getTileEntity(x, y, z);
333332
if (tile != null && tesr.hasSpecialRenderer(tile)) {
334333
if (tile.shouldRenderInPass(finalPass)) {
335-
tesr.renderTileEntityAt(tile, blockPosition.x, blockPosition.y, blockPosition.z, 0);
334+
tesr.renderTileEntityAt(tile, x, y, z, 0);
336335
}
337336
}
338337
});
@@ -363,6 +362,6 @@ public MovingObjectPosition rayTrace(Vector3f lookVec) {
363362
(lookVec.x + startPos.xCoord),
364363
(lookVec.y + startPos.yCoord),
365364
(lookVec.z + startPos.zCoord));
366-
return ((TrackedDummyWorld) this.world).rayTraceBlockswithTargetMap(startPos, endPos, renderedBlocks);
365+
return this.world.rayTraceBlocksWithTargetMap(startPos, endPos, renderedBlocks);
367366
}
368367
}

0 commit comments

Comments
 (0)