Merge branch 'MC1.12' into marx

# Conflicts:
#	build.gradle
#	src/main/java/malte0811/industrialWires/IndustrialWires.java
#	src/main/java/malte0811/industrialWires/blocks/controlpanel/TileEntityPanel.java
#	src/main/java/malte0811/industrialWires/blocks/hv/BlockJacobsLadder.java
#	src/main/java/malte0811/industrialWires/blocks/hv/TileEntityJacobsLadder.java
#	src/main/java/malte0811/industrialWires/client/ClientProxy.java
#	src/main/java/malte0811/industrialWires/client/render/TileRenderJacobsLadder.java
#	src/main/java/malte0811/industrialWires/controlpanel/PanelComponent.java
This commit is contained in:
malte0811 2017-08-07 22:03:07 +02:00
parent c53b09b6ce
commit 5667768420
12 changed files with 71 additions and 57 deletions

View file

@ -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());
}
}
}
}

View file

@ -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;
}
}
}
}

View file

@ -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<AxisAlignedBB> 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);
}
}

View file

@ -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;
}

View file

@ -47,7 +47,7 @@ public class BlockHVMultiblocks extends BlockIWMultiblock {
}
@Override
public void getSubBlocks(@Nonnull Item itemIn, CreativeTabs tab, NonNullList<ItemStack> list) {
public void getSubBlocks(CreativeTabs tab, NonNullList<ItemStack> list) {
// No MB's in the creative inventory!
}

View file

@ -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;

View file

@ -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<Entity> 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);

View file

@ -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);
}

View file

@ -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;

View file

@ -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<TileEntityMarx> {
@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<TileEntityMarx> {
}
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<d.vertices.length-1;i++) {
@ -99,12 +99,12 @@ public class TileRenderMarx extends TileEntitySpecialRenderer<TileEntityMarx> {
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();

View file

@ -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 {

View file

@ -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);
}
}