Skip to content
Open
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 @@ -8,6 +8,8 @@
import com.fouristhenumber.utilitiesinexcess.compat.Mods;
import com.fouristhenumber.utilitiesinexcess.network.PacketHandler;
import com.fouristhenumber.utilitiesinexcess.utils.SoundVolumeChecks;
import com.gtnewhorizon.gtnhlib.datastructs.space.ArrayProximityCheck4D;
import com.gtnewhorizon.gtnhlib.datastructs.space.VolumeShape;
import com.gtnewhorizon.gtnhlib.keybind.SyncedKeybind;

import cpw.mods.fml.common.event.FMLInitializationEvent;
Expand All @@ -18,6 +20,7 @@
public class CommonProxy {

public SoundVolumeChecks soundVolumeChecks;
public ArrayProximityCheck4D mobSpawnBlockChecks = new ArrayProximityCheck4D(VolumeShape.CUBE);

public SyncedKeybind GLOVE_KEYBIND;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,13 @@
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockEnderLotus;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockEtherealGlass;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockFloating;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockGigaTorch;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockInverted;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockLapisAetherius;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockMagicWood;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockMarginallyMaximisedChest;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockPacifistsBench;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockPendantLight;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockPortalEndOfTime;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockPortalUnderWorld;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockPureLove;
Expand Down Expand Up @@ -153,6 +155,8 @@ public enum ModBlocks {
SMART_PUMP(BlockConfig.enableSmartPump, new BlockSmartPump(), "smart_pump"),
TRADING_POST(BlockConfig.enableTradingPost, new BlockTradingPost(), "trading_post"),
DECORATIVE_BLOCKS(BlockConfig.enableDecorativeBlocks, new BlockDecorative(), BlockDecorative.ItemBlockDecorative.class, "decorative_block"),
PENDANT_LIGHT(BlockConfig.pendantLight.enablePendantLight, new BlockPendantLight(), BlockPendantLight.ItemBlockPendantLight.class, "pendant_light"),
GIGA_TORCH(BlockConfig.gigaTorch.enableGigaTorch, new BlockGigaTorch(), BlockGigaTorch.ItemBlockGigaTorch.class, "giga_torch"),
; // leave trailing semicolon
// spotless:on

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,10 @@
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityBlockUpdateDetector;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityConveyor;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityDrum;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityGigaTorch;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityMarginallyMaximisedChest;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityPacifistsBench;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityPendantLight;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityPortalUnderWorld;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityPureLove;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityRadicallyReducedChest;
Expand Down Expand Up @@ -119,6 +121,8 @@ public void init(FMLInitializationEvent event) {
GameRegistry.registerTileEntity(TileEntityRadicallyReducedChest.class, "TileEntityRadicallyReducedChestUIE");
GameRegistry.registerTileEntity(TileEntitySoundMuffler.class, "TileEntitySoundMufflerUIE");
GameRegistry.registerTileEntity(TileEntityRainMuffler.class, "TileEntityRainMufflerUIE");
GameRegistry.registerTileEntity(TileEntityPendantLight.class, "TileEntityPendantLightUIE");
GameRegistry.registerTileEntity(TileEntityGigaTorch.class, "TileEntityGigaTorchUIE");
GameRegistry.registerTileEntity(TileEntityBlockUpdateDetector.class, "TileEntityBlockUpdateDetector");
GameRegistry.registerTileEntity(TileEntityConveyor.class, "TileEntityConveyor");
GameRegistry.registerTileEntity(TileEntityPortalUnderWorld.class, "TileEntityPortalUnderWorld");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,8 @@ public static void IMCSender() {
sendInfoPage("<utilitiesinexcess:underworld_portal>", "nei.infopage.uie.underworld_portal.2");
sendInfoPage("<utilitiesinexcess:underworld_portal>", "nei.infopage.uie.underworld_portal.3");

sendInfoPage("<utilitiesinexcess:pendant_light>", "nei.infopage.uie.pendant_light.1");
sendInfoPage("<utilitiesinexcess:giga_torch>", "nei.infopage.uie.giga_torch.1");
sendInfoPage("<utilitiesinexcess:trading_post>", "nei.infopage.uie.trading_post.1");
}

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

import static net.minecraftforge.common.util.ForgeDirection.*;

import java.util.List;

import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;

import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityGigaTorch;
import com.fouristhenumber.utilitiesinexcess.config.blocks.BlockConfig;
import com.gtnewhorizon.gtnhlib.client.model.ModelISBRH;

public class BlockGigaTorch extends BlockContainer {

public BlockGigaTorch() {
super(Material.circuits);
setBlockName("giga_torch");
setBlockTextureName("utilitiesinexcess:giga_torch");
setHardness(0.0F);
setLightLevel(0.9375F); // 15 light level
setStepSound(soundTypeWood);
}

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

@Override
public boolean isOpaqueCube() {
return false;
}

@Override
public boolean renderAsNormalBlock() {
return false;
}

@Override
public int getRenderType() {
return ModelISBRH.JSON_ISBRH_ID;
}

@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World worldIn, int x, int y, int z) {
return null;
}

@Override
public boolean canPlaceBlockAt(World worldIn, int x, int y, int z) {
if (World.doesBlockHaveSolidTopSurface(worldIn, x, y - 1, z)) {
return true;
} else {
Block block = worldIn.getBlock(x, y - 1, z);
return block.canPlaceTorchOnTop(worldIn, x, y - 1, z);
}
}

@Override
public void onNeighborBlockChange(World worldIn, int x, int y, int z, Block neighbor) {
if (!this.canPlaceBlockAt(worldIn, x, y, z) && worldIn.getBlock(x, y, z) == this) {
this.dropBlockAsItem(worldIn, x, y, z, 0, 0);
worldIn.setBlockToAir(x, y, z);
}
}

public static class ItemBlockGigaTorch extends ItemBlock {

public ItemBlockGigaTorch(Block block) {
super(block);
}

@Override
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean bool) {
tooltip.add(
StatCollector.translateToLocalFormatted("tile.giga_torch.desc", BlockConfig.gigaTorch.gigaTorchRange));
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package com.fouristhenumber.utilitiesinexcess.common.blocks;

import static net.minecraftforge.common.util.ForgeDirection.*;

import java.util.List;

import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;

import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityPendantLight;
import com.fouristhenumber.utilitiesinexcess.config.blocks.BlockConfig;
import com.gtnewhorizon.gtnhlib.client.model.ModelISBRH;

public class BlockPendantLight extends BlockContainer {

public BlockPendantLight() {
super(Material.circuits);
setBlockName("pendant_light");
setBlockTextureName("utilitiesinexcess:pendant_light");
setHardness(0.0F);
setLightLevel(0.9375F); // 15 light level
}

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

@Override
public boolean isOpaqueCube() {
return false;
}

@Override
public boolean renderAsNormalBlock() {
return false;
}

@Override
public int getRenderType() {
return ModelISBRH.JSON_ISBRH_ID;
}

@Override
public boolean canPlaceBlockOnSide(World worldIn, int x, int y, int z, int side) {
return worldIn.isSideSolid(x, y + 1, z, DOWN);
}

@Override
public void onNeighborBlockChange(World worldIn, int x, int y, int z, Block neighbor) {
if (!this.canPlaceBlockAt(worldIn, x, y, z) && worldIn.getBlock(x, y, z) == this) {
this.dropBlockAsItem(worldIn, x, y, z, 0, 0);
worldIn.setBlockToAir(x, y, z);
}
}

public static class ItemBlockPendantLight extends ItemBlock {

public ItemBlockPendantLight(Block block) {
super(block);
}

@Override
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean bool) {
tooltip.add(
StatCollector
.translateToLocalFormatted("tile.pendant_light.desc", BlockConfig.pendantLight.pendantLightRange));
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.fouristhenumber.utilitiesinexcess.common.events;

import net.minecraft.entity.EnumCreatureType;
import net.minecraft.entity.monster.EntitySlime;
import net.minecraftforge.event.entity.living.LivingSpawnEvent;

import com.fouristhenumber.utilitiesinexcess.ModBlocks;
import com.fouristhenumber.utilitiesinexcess.UtilitiesInExcess;
import com.gtnewhorizon.gtnhlib.eventbus.EventBusSubscriber;

import cpw.mods.fml.common.eventhandler.Event;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;

@SuppressWarnings("unused")
@EventBusSubscriber()
public class MobDenySpawnEvents {

@EventBusSubscriber.Condition
public static boolean shouldSubscribe() {
return ModBlocks.GIGA_TORCH.isEnabled();
}

// context https://github.com/GTNewHorizons/GT5-Unofficial/pull/905
@SubscribeEvent
public static void denySpawn(LivingSpawnEvent.CheckSpawn event) {
if (event.getResult() == Event.Result.DENY) return;

if (event.entityLiving instanceof EntitySlime slime && !slime.hasCustomNameTag()
&& event.getResult() == Event.Result.ALLOW) {
event.setResult(Event.Result.DEFAULT);
}

if (event.getResult() == Event.Result.ALLOW) {
return;
}

if (event.entityLiving.isCreatureType(EnumCreatureType.monster, false)) {
if (UtilitiesInExcess.proxy.mobSpawnBlockChecks.isInRange(
event.entity.worldObj.provider.dimensionId,
event.entity.posX,
event.entity.posY,
event.entity.posZ)) {
if (event.entityLiving instanceof EntitySlime slime) {
slime.setCustomNameTag("DoNotSpawnSlimes");
}
event.setResult(Event.Result.DENY);
}
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.fouristhenumber.utilitiesinexcess.common.tileentities;

import net.minecraft.tileentity.TileEntity;

import com.fouristhenumber.utilitiesinexcess.UtilitiesInExcess;
import com.fouristhenumber.utilitiesinexcess.config.blocks.BlockConfig;

public class TileEntityGigaTorch extends TileEntity {

@Override
public boolean canUpdate() {
return false;
}

// placed or loaded from chunk
@Override
public void validate() {
super.validate();
UtilitiesInExcess.proxy.mobSpawnBlockChecks
.put(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, BlockConfig.gigaTorch.gigaTorchRange);
}

// removed or unloaded
@Override
public void invalidate() {
UtilitiesInExcess.proxy.mobSpawnBlockChecks.remove(worldObj.provider.dimensionId, xCoord, yCoord, zCoord);
super.invalidate();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.fouristhenumber.utilitiesinexcess.common.tileentities;

import net.minecraft.tileentity.TileEntity;

import com.fouristhenumber.utilitiesinexcess.UtilitiesInExcess;
import com.fouristhenumber.utilitiesinexcess.config.blocks.BlockConfig;

public class TileEntityPendantLight extends TileEntity {

@Override
public boolean canUpdate() {
return false;
}

// placed or loaded from chunk
@Override
public void validate() {
super.validate();
UtilitiesInExcess.proxy.mobSpawnBlockChecks
.put(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, BlockConfig.pendantLight.pendantLightRange);
}

// removed or unloaded
@Override
public void invalidate() {
UtilitiesInExcess.proxy.mobSpawnBlockChecks.remove(worldObj.provider.dimensionId, xCoord, yCoord, zCoord);
super.invalidate();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,36 @@ public static class RainMuffler {
public int rainMufflerRange;
}

@Config.Comment("Pendant Light Configuration")
public static final PendantLight pendantLight = new PendantLight();

@Config.LangKey("utilitiesinexcess.config.block.pendant_light")
public static class PendantLight {

@Config.DefaultBoolean(true)
public boolean enablePendantLight;

@Config.Comment("The radius a pendant light blocks mob spawns (as a square box)")
@Config.DefaultInt(16)
@Config.RangeInt(min = 1, max = 256)
public int pendantLightRange;
}

@Config.Comment("Giga Torch Configuration")
public static final GigaTorch gigaTorch = new GigaTorch();

@Config.LangKey("utilitiesinexcess.config.block.giga_torch")
public static class GigaTorch {

@Config.DefaultBoolean(true)
public boolean enableGigaTorch;

@Config.Comment("The radius a giga torch blocks mob spawns (as a square box)")
@Config.DefaultInt(64)
@Config.RangeInt(min = 1, max = 256)
public int gigaTorchRange;
}

@Config.Comment("Cursed Earth Configuration")
public static final Spikes spikes = new Spikes();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"variants": {
"": { "model": "utilitiesinexcess:blocks/giga_torch"}
}
}
Loading