Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,13 @@
import com.fouristhenumber.utilitiesinexcess.common.renderers.FireBatteryRenderer;
import com.fouristhenumber.utilitiesinexcess.common.renderers.GloveRenderer;
import com.fouristhenumber.utilitiesinexcess.common.renderers.InvertedIngotRenderer;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityCollector;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityPortalUnderWorld;
import com.fouristhenumber.utilitiesinexcess.compat.ForgeMultipart.FMPItems;
import com.fouristhenumber.utilitiesinexcess.compat.ForgeMultipart.render.item.ItemUEMultiPartRenderer;
import com.fouristhenumber.utilitiesinexcess.compat.Mods;
import com.fouristhenumber.utilitiesinexcess.compat.findit.FindItHelper;
import com.fouristhenumber.utilitiesinexcess.render.CollectorRangeBox;
import com.fouristhenumber.utilitiesinexcess.render.ISBRHUnderworldPortal;
import com.fouristhenumber.utilitiesinexcess.render.TESRUnderworldPortal;
import com.gtnewhorizon.gtnhlib.client.model.loading.ModelRegistry;
Expand Down Expand Up @@ -55,6 +57,10 @@ public void init(FMLInitializationEvent event) {
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPortalUnderWorld.class, new TESRUnderworldPortal());
RenderingRegistry.registerBlockHandler(ISBRHUnderworldPortal.INSTANCE);
}
if (ModBlocks.COLLECTOR.isEnabled()) {
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCollector.class, new CollectorRangeBox());

}
if (ModItems.GLOVE.isEnabled()) {
MinecraftForgeClient.registerItemRenderer(ModItems.GLOVE.get(), new GloveRenderer());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockBedrockium;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockBlackoutCurtains;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockChandelier;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockCollector;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockColored;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockCompressed;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockConveyor;
Expand Down Expand Up @@ -159,6 +160,7 @@ public enum ModBlocks {
DECORATIVE_BLOCKS(BlockConfig.enableDecorativeBlocks, new BlockDecorative(), BlockDecorative.ItemBlockDecorative.class, "decorative_block"),
CHANDELIER(BlockConfig.chandelier.enableChandelier, new BlockChandelier(), BlockChandelier.ItemBlockChandelier.class, "chandelier"),
GIGA_TORCH(BlockConfig.gigaTorch.enableGigaTorch, new BlockGigaTorch(), BlockGigaTorch.ItemBlockGigaTorch.class, "giga_torch"),
COLLECTOR(BlockConfig.enableCollector, new BlockCollector(), "collector"),
; // leave trailing semicolon
// spotless:on

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityAdvancedBlockUpdateDetector;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityBlockUpdateDetector;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityChandelier;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityCollector;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityConveyor;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityDrum;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityGigaTorch;
Expand Down Expand Up @@ -106,7 +107,6 @@ public void preInit(FMLPreInitializationEvent event) {
@Mod.EventHandler
public void init(FMLInitializationEvent event) {
proxy.init(event);

RecipeLoader.run();

MinecraftForge.EVENT_BUS.register(new ForgeEventHandler());
Expand Down Expand Up @@ -139,6 +139,7 @@ public void init(FMLInitializationEvent event) {
GameRegistry.registerTileEntity(TileEntityConveyor.class, "TileEntityConveyorUIE");
GameRegistry.registerTileEntity(TileEntityPortalUnderWorld.class, "TileEntityPortalUnderWorldUIE");
GameRegistry.registerTileEntity(TileEntitySmartPump.class, "TileEntitySmartPumpUIE");
GameRegistry.registerTileEntity(TileEntityCollector.class, "TileEntityCollectorUIE");
GameRegistry.registerTileEntity(
TileEntityLowTemperatureFurnaceGenerator.class,
"TileEntityLowTemperatureFurnaceGeneratorUIE");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,8 @@ public static void IMCSender() {

sendInfoPage("utilitiesinexcess:lapis_aetherius", "nei.infopage.uie.lapis_aetherius.1");

sendInfoPage("utilitiesinexcess:collector", "nei.infopage.uie.collector.1");

sendInfoPage("<utilitiesinexcess:blackout_curtains>", "nei.infopage.uie.blackout_curtains.1");

sendInfoPage("<utilitiesinexcess:underworld_portal>", "nei.infopage.uie.underworld_portal.1");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.fouristhenumber.utilitiesinexcess.common.blocks;

import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.world.World;

import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityCollector;

public class BlockCollector extends BlockContainer {

public BlockCollector() {
super(Material.rock);
setBlockName("collector");
setBlockTextureName("utilitiesinexcess:collector");
}

// So you can open chests under it
@Override
public boolean renderAsNormalBlock() {
return false;
}

@Override
public TileEntity createNewTileEntity(World worldIn, int meta) {
return new TileEntityCollector();
}

@Override
public boolean onBlockActivated(World worldIn, int x, int y, int z, EntityPlayer player, int side, float subX,
float subY, float subZ) {
TileEntity tile = worldIn.getTileEntity(x, y, z);
if (!(tile instanceof TileEntityCollector collector)) {
return true;
}

collector.incrementSize(player);
if (!worldIn.isRemote)
player.addChatMessage(new ChatComponentTranslation("uie.chat.collector_size", collector.getSize()));
collector.showBorderFor(40);
worldIn.markBlockForUpdate(x, y, z);
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ public class BlockConveyor extends BlockContainer {

public BlockConveyor() {
super(Material.piston);

setBlockName("conveyor");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,19 @@ public static void run() {
loadDecorativeBlocksRecipes();
loadColoredBlockRecipes();

// Collector
addShapedRecipe(
ModBlocks.COLLECTOR,
"eie",
" i ",
"ooo",
'e',
Items.ender_pearl,
'i',
ModBlocks.DECORATIVE_BLOCKS.newItemStack(1, 5),
'o',
Blocks.obsidian);

// Pacifist's Bench
addShapedRecipe(
ModBlocks.PACIFISTS_BENCH,
Expand Down Expand Up @@ -742,7 +755,7 @@ private static void loadWateringCanRecipes() {
private static void loadDecorativeBlocksRecipes() {
// Ender-Infused Obsidian
addShapedRecipe(
new DisableableItemStack(ModBlocks.DECORATIVE_BLOCKS, 1, 5),
new DisableableItemStack(ModBlocks.DECORATIVE_BLOCKS, 4, 5),
" o ",
"oeo",
" o ",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
package com.fouristhenumber.utilitiesinexcess.common.tileentities;

import java.util.ArrayList;
import java.util.List;

import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.Vec3;
import net.minecraftforge.common.util.ForgeDirection;

import com.gtnewhorizon.gtnhlib.capability.item.ItemSink;
import com.gtnewhorizon.gtnhlib.item.InsertionItemStack;
import com.gtnewhorizon.gtnhlib.util.ItemUtil;

public class TileEntityCollector extends TileEntity {

private boolean showBorder = false;
public int borderTimer = 0;
public List<Vec3> itemPositions = new ArrayList<>();
private float size = 4f;

public float getSize() {
return size;
}

public void incrementSize(EntityPlayer player) {
if (player.isSneaking()) {

size -= 0.5f;
if (size == 0f) size = 4f;
} else {
size += 0.5f;
if (size > 4f) size = 0.5f;
}
}

public void showBorderFor(int ticks) {
this.showBorder = true;
this.borderTimer = ticks;
}

@Override
public void updateEntity() {
AxisAlignedBB area = getRadiusAABB();

if (worldObj.isRemote) {
updateClientEffects(area);
return;
}

updateServerItemInsertion(area);
}

private void updateClientEffects(AxisAlignedBB area) {
if (borderTimer > 0 && --borderTimer <= 0) {
showBorder = false;
}

itemPositions.clear();

for (EntityItem item : worldObj.getEntitiesWithinAABB(EntityItem.class, area)) {

if (item.isDead || !item.onGround) {
continue;
}

itemPositions.add(Vec3.createVectorHelper(item.posX, item.posY + 0.25, item.posZ));
}
}

private void updateServerItemInsertion(AxisAlignedBB area) {
TileEntity te = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord);
if (!(te instanceof IInventory chest)) {
return;
}

ItemSink sink = ItemUtil.getItemSink(chest, ForgeDirection.UP);
if (sink == null) {
return;
}

for (EntityItem item : worldObj.getEntitiesWithinAABB(EntityItem.class, area)) {

if (item.isDead || !item.onGround || item.delayBeforeCanPickup > 0) {
continue;
}

ItemStack stack = item.getEntityItem();
if (stack == null) {
continue;
}

int leftover = sink.store(new InsertionItemStack(stack));

if (leftover <= 0) {
item.setDead();
} else {
stack.stackSize = leftover;
}
}
}

private AxisAlignedBB getRadiusAABB() {
return AxisAlignedBB.getBoundingBox(
xCoord - size,
yCoord - size,
zCoord - size,
xCoord + size + 1,
yCoord + size + 1,
zCoord + size + 1);
}

public boolean showBorder() {
return showBorder;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,9 @@ public static void registerConfig() throws ConfigException {
@Config.DefaultBoolean(true)
public static boolean enableConveyor;

@Config.DefaultBoolean(true)
public static boolean enableCollector;

@Config.DefaultBoolean(true)
public static boolean enableUnderWorldPortal;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package com.fouristhenumber.utilitiesinexcess.render;

import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;

import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Vec3;

import org.lwjgl.opengl.GL11;

import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityCollector;

public class CollectorRangeBox extends TileEntitySpecialRenderer {

private final Map<Vec3, Integer> lines = new LinkedHashMap<>();

@Override
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float partialTicks) {
if (!(te instanceof TileEntityCollector collector)) return;

if (collector.itemPositions != null) {
for (Vec3 pos : collector.itemPositions) {
lines.put(pos, 20);
}
}

// WHATEVER GO MY OPENGL STATE FLAGS
// how to write open gl a fundamental guide \/
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glEnable(GL11.GL_LINE_SMOOTH);
GL11.glHint(GL11.GL_LINE_SMOOTH_HINT, GL11.GL_NICEST);
GL11.glLineWidth(6.0f);
GL11.glTranslated(x, y, z);

// force fullbright (fun fact this is what night vision does so i didn't realize that this needed to be set
// UNTIL AFTER IT WORE OFF)
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240f, 240f);

GL11.glBegin(GL11.GL_LINES);
Iterator<Map.Entry<Vec3, Integer>> it = lines.entrySet()
.iterator();
while (it.hasNext()) {
Map.Entry<Vec3, Integer> entry = it.next();
Vec3 target = entry.getKey();
int life = entry.getValue();

float alpha = Math.max(0f, life / 20.0f);
GL11.glColor4f(1.0f, 0f, 0f, alpha);

double dx = target.xCoord - (te.xCoord);
double dy = target.yCoord - (te.yCoord);
double dz = target.zCoord - (te.zCoord);

GL11.glVertex3d(.5, .5, .5);
GL11.glVertex3d(dx, dy, dz);

entry.setValue(life - 1);
if (life <= 0) it.remove();
}
GL11.glEnd();

if (collector.showBorder()) {
float r = collector.getSize();
GL11.glLineWidth(3.0f);
GL11.glBegin(GL11.GL_LINES);

double[][] edges = { { -r, -r, -r }, { r + 1, -r, -r }, { -r, -r, -r }, { -r, r + 1, -r }, { -r, -r, -r },
{ -r, -r, r + 1 }, { r + 1, r + 1, r + 1 }, { -r, r + 1, r + 1 }, { r + 1, r + 1, r + 1 },
{ r + 1, -r, r + 1 }, { r + 1, r + 1, r + 1 }, { r + 1, r + 1, -r }, { r + 1, -r, -r },
{ r + 1, r + 1, -r }, { r + 1, -r, -r }, { r + 1, -r, r + 1 }, { -r, r + 1, -r }, { -r, r + 1, r + 1 },
{ -r, r + 1, -r }, { r + 1, r + 1, -r }, { -r, -r, r + 1 }, { r + 1, -r, r + 1 }, { -r, -r, r + 1 },
{ -r, r + 1, r + 1 } };

long time = System.currentTimeMillis();
for (int i = 0; i < edges.length; i += 2) {
// wainbow :3
float hue = (float) ((time * 0.001 + i * 0.1) % 1.0);
float[] rgb = java.awt.Color.getHSBColor(hue, 1.0f, 1.0f)
.getRGBColorComponents(null);
GL11.glColor4f(rgb[0], rgb[1], rgb[2], 0.8f);

GL11.glVertex3d(edges[i][0], edges[i][1], edges[i][2]);
GL11.glVertex3d(edges[i + 1][0], edges[i + 1][1], edges[i + 1][2]);
}

GL11.glEnd();
}

GL11.glDisable(GL11.GL_LINE_SMOOTH);
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glPopMatrix();

// clear only new item positions
if (collector.itemPositions != null) collector.itemPositions.clear();
}
}
Loading
Loading