diff --git a/src/main/java/malte0811/industrialWires/IWSaveData.java b/src/main/java/malte0811/industrialWires/IWSaveData.java index a0117d3..0c063c9 100644 --- a/src/main/java/malte0811/industrialWires/IWSaveData.java +++ b/src/main/java/malte0811/industrialWires/IWSaveData.java @@ -20,13 +20,18 @@ package malte0811.industrialWires; import malte0811.industrialWires.hv.MarxOreHandler; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.WorldSavedData; +import net.minecraft.world.World; +import net.minecraft.world.storage.WorldSavedData; +import net.minecraftforge.event.world.WorldEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import javax.annotation.Nonnull; -//TODO register +@Mod.EventBusSubscriber public class IWSaveData extends WorldSavedData { private final static String MARX_ORES = "marxOres"; + public static IWSaveData INSTANCE = new IWSaveData(); public IWSaveData() { super(IndustrialWires.MODID); @@ -44,4 +49,18 @@ public class IWSaveData extends WorldSavedData { compound.setTag(MARX_ORES, MarxOreHandler.save()); return compound; } + + @SubscribeEvent + public static void onWorldLoad(WorldEvent.Load event) { + World w = event.getWorld(); + if (!w.isRemote) { + MarxOreHandler.reset(); + INSTANCE = (IWSaveData) w.loadData(IWSaveData.class, IndustrialWires.MODID); + if (INSTANCE==null) { + INSTANCE = new IWSaveData(); + w.setData(IndustrialWires.MODID, INSTANCE); + MarxOreHandler.load(new NBTTagCompound()); + } + } + } } diff --git a/src/main/java/malte0811/industrialWires/IndustrialWires.java b/src/main/java/malte0811/industrialWires/IndustrialWires.java index 2e54394..b236f06 100644 --- a/src/main/java/malte0811/industrialWires/IndustrialWires.java +++ b/src/main/java/malte0811/industrialWires/IndustrialWires.java @@ -18,13 +18,7 @@ package malte0811.industrialWires; import blusunrize.immersiveengineering.api.MultiblockHandler; -import malte0811.industrialWires.blocks.controlpanel.BlockPanel; -import malte0811.industrialWires.blocks.controlpanel.TileEntityPanel; -import malte0811.industrialWires.blocks.controlpanel.TileEntityPanelCreator; -import malte0811.industrialWires.blocks.controlpanel.TileEntityRSPanelConn; import malte0811.industrialWires.blocks.BlockIWBase; -import malte0811.industrialWires.blocks.BlockJacobsLadder; -import malte0811.industrialWires.blocks.TileEntityJacobsLadder; import malte0811.industrialWires.blocks.controlpanel.*; import malte0811.industrialWires.blocks.converter.BlockMechanicalConverter; import malte0811.industrialWires.blocks.converter.TileEntityIEMotor; @@ -51,7 +45,6 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.event.FMLInitializationEvent; -import net.minecraftforge.fml.common.event.FMLMissingMappingsEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -132,7 +125,6 @@ public class IndustrialWires { GameRegistry.registerTileEntity(TileEntityMechIEtoIC.class, MODID + ":mechIeToIc"); } MultiblockHandler.registerMultiblock(new MultiblockMarx()); - IWPotions.init(); proxy.preInit(); } @@ -177,23 +169,4 @@ public class IndustrialWires { PanelUtils.PANEL_ITEM = Item.getItemFromBlock(panel); proxy.postInit(); } - - @EventHandler - public void remap(FMLMissingMappingsEvent ev) { - for (FMLMissingMappingsEvent.MissingMapping miss : ev.get()) { - String name = miss.resourceLocation.getResourcePath(); - switch (name) { - case "ic2connector": - if (miss.type == GameRegistry.Type.ITEM) { - miss.remap(Item.getItemFromBlock(IndustrialWires.ic2conn)); - } else { - miss.remap(IndustrialWires.ic2conn); - } - break; - case "ic2wirecoil": - miss.remap(IndustrialWires.coil); - break; - } - } - } } diff --git a/src/main/java/malte0811/industrialWires/blocks/BlockIWBase.java b/src/main/java/malte0811/industrialWires/blocks/BlockIWBase.java index 8c67b90..ddb3bad 100644 --- a/src/main/java/malte0811/industrialWires/blocks/BlockIWBase.java +++ b/src/main/java/malte0811/industrialWires/blocks/BlockIWBase.java @@ -148,7 +148,7 @@ public abstract class BlockIWBase extends Block { public void addCollisionBoxToList(IBlockState state, @Nonnull World worldIn, @Nonnull BlockPos pos, @Nonnull AxisAlignedBB entityBox, @Nonnull List collidingBoxes, @Nullable Entity entityIn, boolean p_185477_7_) { AxisAlignedBB aabb = getBoundingBox(state, worldIn, pos).offset(pos); - if (entityBox.intersectsWith(aabb)) { + if (entityBox.intersects(aabb)) { collidingBoxes.add(aabb); } } diff --git a/src/main/java/malte0811/industrialWires/blocks/BlockIWMultiblock.java b/src/main/java/malte0811/industrialWires/blocks/BlockIWMultiblock.java index 9d7bf80..a4a5568 100644 --- a/src/main/java/malte0811/industrialWires/blocks/BlockIWMultiblock.java +++ b/src/main/java/malte0811/industrialWires/blocks/BlockIWMultiblock.java @@ -38,8 +38,9 @@ public abstract class BlockIWMultiblock extends BlockIWBase { super.breakBlock(world, pos, state); } + @Override - public boolean isFullyOpaque(IBlockState state) { + public boolean isTopSolid(IBlockState state) { return false; } diff --git a/src/main/java/malte0811/industrialWires/blocks/hv/BlockHVMultiblocks.java b/src/main/java/malte0811/industrialWires/blocks/hv/BlockHVMultiblocks.java index 042eeda..4c2e0b3 100644 --- a/src/main/java/malte0811/industrialWires/blocks/hv/BlockHVMultiblocks.java +++ b/src/main/java/malte0811/industrialWires/blocks/hv/BlockHVMultiblocks.java @@ -47,7 +47,7 @@ public class BlockHVMultiblocks extends BlockIWMultiblock { } @Override - public void getSubBlocks(@Nonnull Item itemIn, CreativeTabs tab, NonNullList list) { + public void getSubBlocks(CreativeTabs tab, NonNullList list) { // No MB's in the creative inventory! } diff --git a/src/main/java/malte0811/industrialWires/blocks/hv/BlockJacobsLadder.java b/src/main/java/malte0811/industrialWires/blocks/hv/BlockJacobsLadder.java index de44678..0ee4312 100644 --- a/src/main/java/malte0811/industrialWires/blocks/hv/BlockJacobsLadder.java +++ b/src/main/java/malte0811/industrialWires/blocks/hv/BlockJacobsLadder.java @@ -22,8 +22,7 @@ import blusunrize.immersiveengineering.api.IEProperties; import malte0811.industrialWires.blocks.BlockIWBase; import malte0811.industrialWires.blocks.IMetaEnum; import malte0811.industrialWires.blocks.IPlacementCheck; -import malte0811.industrialWires.IndustrialWires; -import malte0811.industrialWires.blocks.TileEntityJacobsLadder.LadderSize; +import malte0811.industrialWires.blocks.hv.TileEntityJacobsLadder.LadderSize; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyEnum; @@ -32,7 +31,6 @@ import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; diff --git a/src/main/java/malte0811/industrialWires/blocks/hv/TileEntityMarx.java b/src/main/java/malte0811/industrialWires/blocks/hv/TileEntityMarx.java index 0e55743..1bfc390 100644 --- a/src/main/java/malte0811/industrialWires/blocks/hv/TileEntityMarx.java +++ b/src/main/java/malte0811/industrialWires/blocks/hv/TileEntityMarx.java @@ -36,6 +36,7 @@ import malte0811.industrialWires.blocks.ISyncReceiver; import malte0811.industrialWires.blocks.IWProperties; import malte0811.industrialWires.blocks.TileEntityIWMultiblock; import malte0811.industrialWires.client.render.TileRenderMarx; +import malte0811.industrialWires.hv.MarxOreHandler; import malte0811.industrialWires.network.MessageTileSyncIW; import malte0811.industrialWires.util.DualEnergyStorage; import malte0811.industrialWires.util.MiscUtils; @@ -45,6 +46,7 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagDouble; @@ -246,6 +248,7 @@ public class TileEntityMarx extends TileEntityIWMultiblock implements ITickable, } private void fire() { + IndustrialWires.logger.info(MarxOreHandler.getYield(new ItemStack(Blocks.IRON_ORE), 37_500)); if (!world.isRemote) { //calculate energy double energyStored = 0; @@ -261,7 +264,7 @@ public class TileEntityMarx extends TileEntityIWMultiblock implements ITickable, AxisAlignedBB aabb = new AxisAlignedBB(v0, v0); aabb = aabb.expand(0, stageCount/2-1,0); final double sqrtStages = Math.sqrt(stageCount); - aabb = aabb.expandXyz(5*sqrtStages); + aabb = aabb.grow(5*sqrtStages); List fools = world.getEntitiesWithinAABB(Entity.class, aabb); double energyNormed = energyStored/(stageCount*250*250); double damageDistSqu = energyNormed * sqrtStages; @@ -281,7 +284,7 @@ public class TileEntityMarx extends TileEntityIWMultiblock implements ITickable, } else { y = entity.posY; } - double distSqu = entity.getDistanceSq(v0.xCoord, y, v0.zCoord); + double distSqu = entity.getDistanceSq(v0.x, y, v0.z); if (distSqu<=damageDistSqu) { float dmg = (float) (10*stageCount*(1-distSqu/damageDistSqu)); entity.attackEntityFrom(IWDamageSources.dmg_marx, dmg); diff --git a/src/main/java/malte0811/industrialWires/client/ClientProxy.java b/src/main/java/malte0811/industrialWires/client/ClientProxy.java index b50de5d..ed69343 100644 --- a/src/main/java/malte0811/industrialWires/client/ClientProxy.java +++ b/src/main/java/malte0811/industrialWires/client/ClientProxy.java @@ -310,7 +310,7 @@ public class ClientProxy extends CommonProxy { @Override public void playMarxBang(TileEntityMarx te, Vec3d pos, float energy) { - PositionedSoundRecord sound = new PositionedSoundRecord(marxBang, SoundCategory.BLOCKS, 5*energy, 1, false, 0, ISound.AttenuationType.LINEAR, (float) pos.xCoord, (float) pos.yCoord, (float) pos.zCoord); + PositionedSoundRecord sound = new PositionedSoundRecord(marxBang, SoundCategory.BLOCKS, 5*energy, 1, false, 0, ISound.AttenuationType.LINEAR, (float) pos.x, (float) pos.y, (float) pos.z); ClientUtils.mc().getSoundHandler().playSound(sound); playingSounds.put(te.getPos(), sound); } diff --git a/src/main/java/malte0811/industrialWires/client/render/TileRenderJacobsLadder.java b/src/main/java/malte0811/industrialWires/client/render/TileRenderJacobsLadder.java index 7065f07..1c5fde3 100644 --- a/src/main/java/malte0811/industrialWires/client/render/TileRenderJacobsLadder.java +++ b/src/main/java/malte0811/industrialWires/client/render/TileRenderJacobsLadder.java @@ -23,9 +23,7 @@ import malte0811.industrialWires.blocks.hv.TileEntityJacobsLadder.LadderSize; import malte0811.industrialWires.util.Beziers; import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.VertexBuffer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.util.math.Vec3d; diff --git a/src/main/java/malte0811/industrialWires/client/render/TileRenderMarx.java b/src/main/java/malte0811/industrialWires/client/render/TileRenderMarx.java index d8ca4d7..7ba296f 100644 --- a/src/main/java/malte0811/industrialWires/client/render/TileRenderMarx.java +++ b/src/main/java/malte0811/industrialWires/client/render/TileRenderMarx.java @@ -23,9 +23,9 @@ import malte0811.industrialWires.blocks.IWProperties; import malte0811.industrialWires.blocks.hv.TileEntityMarx; import malte0811.industrialWires.util.MiscUtils; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.VertexBuffer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.util.math.BlockPos; @@ -36,13 +36,13 @@ import org.lwjgl.util.vector.Vector3f; public class TileRenderMarx extends TileEntitySpecialRenderer { @Override - public void renderTileEntityAt(TileEntityMarx te, double x, double y, double z, float partialTicks, int destroyStage) { + public void render(TileEntityMarx te, double x, double y, double z, float partialTicks, int destroyStage, float alpha) { final boolean debug = false; //noinspection ConstantConditions,PointlessBooleanExpression if (te.type== IWProperties.MarxType.BOTTOM&&(debug||te.state== TileEntityMarx.FiringState.FIRE)) { prepare(x, y, z, te); Tessellator tes = Tessellator.getInstance(); - VertexBuffer vb = tes.getBuffer(); + BufferBuilder vb = tes.getBuffer(); drawDischarge(te.dischargeData, vb, tes); GlStateManager.popMatrix(); @@ -90,7 +90,7 @@ public class TileRenderMarx extends TileEntitySpecialRenderer { } private static final float[] WHITE = {1, 1, 1, 1}; private static final float[] WHITE_TRANSPARENT = {1, 1, 1, 0}; - private void drawDischarge(Discharge d, VertexBuffer vb, Tessellator tes) { + private void drawDischarge(Discharge d, BufferBuilder vb, Tessellator tes) { if (d!=null&&d.vertices!=null) { vb.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR); for (int i = 0;i { tes.draw(); } } - private void drawDischargeSection(Vector3f start, Vector3f end, float diameter, VertexBuffer vb) { + private void drawDischargeSection(Vector3f start, Vector3f end, float diameter, BufferBuilder vb) { drawPart(start, end, diameter/3, diameter/3, WHITE_TRANSPARENT, WHITE, vb); drawPart(start, end, 0, diameter/3, WHITE, WHITE, vb); drawPart(start, end, -diameter/3, diameter/3, WHITE, WHITE_TRANSPARENT, vb); } - private void drawPart(Vector3f start, Vector3f end, float offset, float width, float[] color1, float[] color2, VertexBuffer vb) { + private void drawPart(Vector3f start, Vector3f end, float offset, float width, float[] color1, float[] color2, BufferBuilder vb) { vb.setTranslation(-offset-width/2, 0, 0); vb.pos(start.x, start.y, start.z).color(color1[0], color1[1], color1[2], color1[3]).endVertex(); vb.pos(start.x+width, start.y, start.z).color(color2[0], color2[1], color2[2], color2[3]).endVertex(); diff --git a/src/main/java/malte0811/industrialWires/hv/MarxOreHandler.java b/src/main/java/malte0811/industrialWires/hv/MarxOreHandler.java index 931ef6e..ad74ada 100644 --- a/src/main/java/malte0811/industrialWires/hv/MarxOreHandler.java +++ b/src/main/java/malte0811/industrialWires/hv/MarxOreHandler.java @@ -55,6 +55,10 @@ public class MarxOreHandler { // TODO Uranium: IC2 output since IE has no useful ones } + public static void reset() { + oreEnergies.clear(); + } + public static void load(NBTTagCompound nbt) { if (!defaultOreData.containsKey("oreIron")) { init(); @@ -65,23 +69,27 @@ public class MarxOreHandler { } } for (String ore : OreDictionary.getOreNames()) { + if (oreEnergies.containsKey(ore)) { + continue; + } double energy = 0; if (defaultOreData.containsKey(ore)) { energy = defaultOreData.get(ore).avgEnergy; - }//TODO auto-add other ores? + } + //TODO auto-add other ores? if (energy > 0) { double sigma = defaultEnergy * energy / 4; double mu = defaultEnergy * energy; - double basicGauss = new Random().nextGaussian(); - basicGauss *= sigma; - basicGauss = MathHelper.clamp(basicGauss, -sigma, sigma); - basicGauss += mu; - oreEnergies.put(ore, basicGauss); + double avg = new Random().nextGaussian(); + avg *= sigma; + avg = MathHelper.clamp(avg, -sigma, sigma); + avg += mu; + oreEnergies.put(ore, avg); } } } - public ItemStack getYield(ItemStack in, double energy) { + public static ItemStack getYield(ItemStack in, double energy) { int[] ores = OreDictionary.getOreIDs(in); for (int id : ores) { String name = OreDictionary.getOreName(id); @@ -92,18 +100,32 @@ public class MarxOreHandler { double sigma = idealE / 6; double dist = getNormalizedNormalDist(ln, sigma, idealE); int yield = (int) Math.round(dist * info.maxYield); + //TODO } } return ItemStack.EMPTY; } - private double getNormalizedNormalDist(double x, double sigma, double mu) { + private static double getNormalizedNormalDist(double x, double sigma, double mu) { return Math.exp(-(x - mu) * (x - mu) / (2 * sigma * sigma)); } +/* + for (String ore : nbt.getKeySet()) { + if (defaultOreData.containsKey(ore)) { + oreEnergies.put(ore, nbt.getDouble(ore)); + } + } + */ public static NBTBase save() { - //TODO - return null; + NBTTagCompound ret = new NBTTagCompound(); + if (oreEnergies.isEmpty()) { + load(new NBTTagCompound()); + } + for (String name:oreEnergies.keySet()) { + ret.setDouble(name, oreEnergies.get(name)); + } + return ret; } public static class OreInfo { diff --git a/src/main/java/malte0811/industrialWires/util/MiscUtils.java b/src/main/java/malte0811/industrialWires/util/MiscUtils.java index 3a1fb65..2919da9 100644 --- a/src/main/java/malte0811/industrialWires/util/MiscUtils.java +++ b/src/main/java/malte0811/industrialWires/util/MiscUtils.java @@ -104,6 +104,6 @@ public final class MiscUtils { Vec3d max = new Vec3d(in.maxX, in.maxY, in.maxZ); min = mat.apply(min); max = mat.apply(max); - return new AxisAlignedBB(min.xCoord, min.yCoord, min.zCoord, max.xCoord, max.yCoord, max.zCoord); + return new AxisAlignedBB(min.x, min.y, min.z, max.x, max.y, max.z); } }