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
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ version = "1.8.9-2.0.0-b6"
group= "practicalities" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "practicalities"

sourceCompatibility = 1.7
targetCompatibility = 1.7
sourceCompatibility = 1.8
targetCompatibility = 1.8

minecraft {
version = "1.8.9-11.15.0.1694"
Expand Down
13 changes: 13 additions & 0 deletions src/main/java/practicalities/Logger.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

import org.apache.logging.log4j.Level;

import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.FMLLog;
import net.minecraftforge.fml.relauncher.Side;
import practicalities.lib.util.track.TrackerManager;

public class Logger {

Expand Down Expand Up @@ -34,4 +37,14 @@ public static void debug(String format, Object... data) {
public static void trace(String format, Object... data) {
log(Level.TRACE, format, data);
}

public static void track(String name, String format, Object... data) {
if(!ConfigMan.isDev)
throw new UnsupportedOperationException("Practicalities: Tried to call Logger.track outside of a dev environment! This is just plain bad!");
if(FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) {
TrackerManager.server.track(name, String.format(format, data));
} else {
TrackerManager.client.track(name, String.format(format, data));
}
}
}
6 changes: 5 additions & 1 deletion src/main/java/practicalities/PracticalitiesMod.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
import net.minecraftforge.fml.common.network.NetworkRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import practicalities.lib.util.track.TrackerManager;
import practicalities.network.NetHandler;
import practicalities.registers.GuiHandler;
import practicalities.registers.ItemRegister;

Expand All @@ -34,8 +36,10 @@ public class PracticalitiesMod {

@EventHandler
public void preInit(FMLPreInitializationEvent event) {
proxy.preInit();
ConfigMan.init(new Configuration(event.getSuggestedConfigurationFile()));
TrackerManager.init();
proxy.preInit();
NetHandler.init();
}

@EventHandler
Expand Down
21 changes: 19 additions & 2 deletions src/main/java/practicalities/ProxyClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@
import net.minecraft.client.resources.IResourceManagerReloadListener;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StringTranslate;
import net.minecraftforge.client.event.ModelBakeEvent;
import net.minecraftforge.client.model.obj.OBJLoader;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import practicalities.lib.util.AdvancedLangLoader;
import org.apache.commons.io.Charsets;
import org.apache.commons.io.IOUtils;
import practicalities.registers.BlockRegister;
import practicalities.registers.GuideRegister;
import practicalities.registers.ItemRegister;
Expand All @@ -22,6 +23,12 @@ public class ProxyClient extends ProxyCommon implements IResourceManagerReloadLi
public void preInit() {
super.preInit();
registerRenders();

}

@Override
public void registerTickHandlers() {
super.registerTickHandlers();
}

@Override
Expand All @@ -33,9 +40,19 @@ public void init() {

@Override
public void registerRenders() {
OBJLoader.instance.addDomain(PracticalitiesMod.MODID);
ItemRegister.registerRenders();
BlockRegister.registerRenders();
}

// @SubscribeEvent
// public void onModelBakeEvent(ModelBakeEvent event) {
// Object object = event.modelRegistry.getObject(LaserModel.resourceLocation);
// if (object != null) {
// ExampleISBM customModel = new ExampleISBM();
// event.modelRegistry.putObject(ExampleISBM.modelResourceLocation, customModel);
// }
// }

@Override
public void onResourceManagerReload(IResourceManager resourceManager) {
Expand Down
5 changes: 1 addition & 4 deletions src/main/java/practicalities/ProxyCommon.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,17 @@
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.item.ItemTossEvent;
import net.minecraftforge.event.entity.living.LivingDropsEvent;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import practicalities.items.netherbane.EntityNetherbane;
import practicalities.registers.BlockRegister;
import practicalities.registers.ItemRegister;
import practicalities.registers.RecipeRegister;

public class ProxyCommon {

public void preInit() {
ItemRegister.init();
BlockRegister.init();

}

public void init() {
Expand Down Expand Up @@ -81,5 +79,4 @@ public void onItemToss(ItemTossEvent event) {
}
}
}

}
169 changes: 169 additions & 0 deletions src/main/java/practicalities/blocks/BlockLaser.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
package practicalities.blocks;

import net.minecraft.block.Block;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumWorldBlockLayer;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import practicalities.lib.util.Util;

public class BlockLaser extends BlockBase implements ITileEntityProvider, ILaserReciver {

public static final PropertyDirection FACING = PropertyDirection.create("facing");
public static final PropertyDirection ATTACHED = PropertyDirection.create("attached");
public static final PropertyBool POWERED = PropertyBool.create("powered");

public BlockLaser() {
super(Material.glass, "laser");
}

@Override
protected BlockState createBlockState() {
return new BlockState(this, POWERED, FACING, ATTACHED);
}

@SideOnly(Side.CLIENT)
public IBlockState getStateForEntityRender(IBlockState state) {
return this.getDefaultState().withProperty(FACING, EnumFacing.UP);
}

@Override
public void breakBlock(World worldIn, BlockPos pos, IBlockState state) {
TileLaser tile = (TileLaser) worldIn.getTileEntity(pos);
tile.onBreak();
}

@Override
public void onNeighborBlockChange(World worldIn, BlockPos pos, IBlockState state, Block neighborBlock) {
if(worldIn.isRemote)
return;

updateLaser(worldIn, pos);
}

@Override
public void laserHit(World world, BlockPos pos, EnumFacing sideHit, BlockPos laserPos, boolean powered) {
if(world.isRemote)
return;

TileLaser tile = (TileLaser) world.getTileEntity(pos);
tile.laserHit(powered);

updateLaser(world, pos);
}

public void updateLaser(World world, BlockPos pos) {
TileLaser tile = (TileLaser) world.getTileEntity(pos);

boolean wasPowered = tile.powered;
boolean isPowered = world.isBlockPowered(pos) || tile.isPoweredByLaser();

if(wasPowered != isPowered) {
tile.updatePower(isPowered);
world.setBlockState(pos, world.getBlockState(pos).withProperty(POWERED, isPowered));
}
}

@Override
public boolean canConnectRedstone(IBlockAccess world, BlockPos pos, EnumFacing side) {
return false;
}

@Override
public boolean hasTileEntity() {
return true;
}

@Override
public EnumWorldBlockLayer getBlockLayer() {
return EnumWorldBlockLayer.TRANSLUCENT;
}

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

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

// DIRECTIONAL PLACING

@Override
public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ,
int meta, EntityLivingBase placer) {
return super.onBlockPlaced(worldIn, pos, facing, hitX, hitY, hitZ, meta, placer).withProperty(ATTACHED, facing.getOpposite());
}

@Override
public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) {
TileLaser laser = (TileLaser) worldIn.getTileEntity(pos);

laser.attached = state.getValue(ATTACHED);
laser.facing = placer.getHorizontalFacing().getOpposite();

updateLaser(worldIn, pos);
super.onBlockPlacedBy(worldIn, pos, state, placer, stack);
}

@Override
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn,
EnumFacing side, float hitX, float hitY, float hitZ) {
boolean somethingHappened = false;

if(Util.isHoldingWrench(playerIn)) {
somethingHappened = true;
TileLaser te = (TileLaser)worldIn.getTileEntity(pos);
if(te.facing == te.attached.getOpposite()) {
te.facing = side;
} else {
te.facing = te.attached.getOpposite();
}
}

return somethingHappened;
}

@Override
public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) {
TileLaser laser = (TileLaser) worldIn.getTileEntity(pos);

state = state.withProperty(FACING, laser.facing);
state = state.withProperty(ATTACHED, laser.attached);
return state;
}

@Override
public int getMetaFromState(IBlockState state) {
int i = 0;
i = i | ((EnumFacing)state.getValue(ATTACHED)).getIndex();

if (((Boolean)state.getValue(POWERED)).booleanValue())
{
i |= 8;
}

return i;
}


@Override
public IBlockState getStateFromMeta(int meta) {
return getDefaultState().withProperty(ATTACHED, EnumFacing.VALUES[meta & 7]).withProperty(POWERED, Boolean.valueOf((meta & 8) > 0));
}
}
31 changes: 31 additions & 0 deletions src/main/java/practicalities/blocks/BlockLaserReciver.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package practicalities.blocks;

import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.state.BlockState;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;

public class BlockLaserReciver extends BlockBase implements ILaserReciver {

public static final PropertyDirection ATTACHED = PropertyDirection.create("attached");
public static final PropertyBool POWERED = PropertyBool.create("powered");

public BlockLaserReciver() {
super(Material.glass, "laserReciver");
}

@Override
protected BlockState createBlockState() {
return new BlockState(this, POWERED, ATTACHED);
}

@Override
public void laserHit(World world, BlockPos pos, EnumFacing sideHit, BlockPos laserPos, boolean powered) {
// TODO Auto-generated method stub

}

}
11 changes: 11 additions & 0 deletions src/main/java/practicalities/blocks/ILaserReciver.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package practicalities.blocks;

import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;

public interface ILaserReciver {

public void laserHit(World world, BlockPos pos, EnumFacing sideHit, BlockPos laserPos, boolean powered);

}
Loading