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:
parent
c53b09b6ce
commit
5667768420
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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!
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue