diff --git a/src/main/java/cr0s/warpdrive/block/energy/BlockEnanReactorCore.java b/src/main/java/cr0s/warpdrive/block/energy/BlockEnanReactorCore.java index d4c45709..0432e76a 100644 --- a/src/main/java/cr0s/warpdrive/block/energy/BlockEnanReactorCore.java +++ b/src/main/java/cr0s/warpdrive/block/energy/BlockEnanReactorCore.java @@ -3,6 +3,7 @@ package cr0s.warpdrive.block.energy; import cr0s.warpdrive.block.BlockAbstractContainer; import cr0s.warpdrive.data.ReactorFace; import cr0s.warpdrive.data.EnumTier; +import cr0s.warpdrive.render.TileEntityEnanReactorCoreRenderer; import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyInteger; @@ -14,6 +15,10 @@ import net.minecraft.world.World; import javax.annotation.Nonnull; +import net.minecraftforge.fml.client.registry.ClientRegistry; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + public class BlockEnanReactorCore extends BlockAbstractContainer { public static final PropertyInteger ENERGY = PropertyInteger.create("energy", 0, 3); @@ -56,6 +61,17 @@ public class BlockEnanReactorCore extends BlockAbstractContainer { return new TileEntityEnanReactorCore(); } + @SideOnly(Side.CLIENT) + @Override + public void modelInitialisation() { + super.modelInitialisation(); + + if (enumTier != EnumTier.BASIC) { + // Bind our TESR to our tile entity + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityEnanReactorCore.class, new TileEntityEnanReactorCoreRenderer()); + } + } + @Override public void breakBlock(final World world, @Nonnull final BlockPos blockPos, @Nonnull final IBlockState blockState) { super.breakBlock(world, blockPos, blockState); diff --git a/src/main/java/cr0s/warpdrive/block/energy/TileEntityEnanReactorCore.java b/src/main/java/cr0s/warpdrive/block/energy/TileEntityEnanReactorCore.java index 3b31c8c7..3f1c67c5 100644 --- a/src/main/java/cr0s/warpdrive/block/energy/TileEntityEnanReactorCore.java +++ b/src/main/java/cr0s/warpdrive/block/energy/TileEntityEnanReactorCore.java @@ -67,6 +67,16 @@ public class TileEntityEnanReactorCore extends TileEntityEnanReactorController { private long releasedThisCycle = 0; // amount of energy released during current cycle private long energyReleasedLastCycle = 0; + // client properties + public float client_rotationCore_deg = 0.0F; + public float client_rotationSpeedCore_degPerTick = 2.0F; + public float client_rotationMatter_deg = 0.0F; + public float client_rotationSpeedMatter_degPerTick = 2.0F; + public float client_radiusMatter_m = 0.0F; + public float client_radiusSpeedMatter_mPerTick = 0.0F; + public float client_yCore = 0.0F; + public float client_yCoreSpeed_mPerTick = 0.0F; + @SuppressWarnings("unchecked") private final WeakReference[] weakTileEntityLasers = (WeakReference[]) Array.newInstance(WeakReference.class, ReactorFace.maxInstabilities); @@ -105,11 +115,57 @@ public class TileEntityEnanReactorCore extends TileEntityEnanReactorController { } } + @Override + protected void onFirstUpdateTick() { + super.onFirstUpdateTick(); + + client_rotationCore_deg = world.rand.nextFloat() * 360.0F; + client_rotationSpeedCore_degPerTick = 2.0F * (float) instabilityValues[0]; + + client_rotationMatter_deg = world.rand.nextFloat() * 360.0F; + client_rotationSpeedMatter_degPerTick = client_rotationSpeedCore_degPerTick * 0.98F; + + client_radiusMatter_m = 0.0F; + client_radiusSpeedMatter_mPerTick = 0.0F; + + // we start at 0.5F to have a small animation on block placement + client_yCore = containedEnergy == 0 ? 0.5F : (float) vCenter.y - pos.getY(); + client_yCoreSpeed_mPerTick = 0.0F; + } + @Override public void update() { super.update(); if (world.isRemote) { + float stabilityAverage = 0.0F; + final ReactorFace[] reactorFaces = ReactorFace.getLasers(enumTier); + for (final ReactorFace reactorFace : reactorFaces) { + stabilityAverage += (float) instabilityValues[reactorFace.indexStability]; + } + stabilityAverage /= reactorFaces.length; + final float radiusMatterMax = (float) vCenter.y - pos.getY(); + final float rotationTarget_degPerTick = 0.5F * stabilityAverage; + final float radiusMatterTarget = containedEnergy <= 10000 ? 0.0F : radiusMatterMax * (containedEnergy / (float) energyStored_max); + final float yCoreTarget = containedEnergy == 0 ? 1.0F : radiusMatterMax; + + // elastic rotation + client_rotationCore_deg += client_rotationSpeedCore_degPerTick; + client_rotationSpeedCore_degPerTick = 0.975F * client_rotationSpeedCore_degPerTick + + 0.025F * rotationTarget_degPerTick; + client_rotationMatter_deg += client_rotationSpeedMatter_degPerTick; + client_rotationSpeedMatter_degPerTick = 0.985F * client_rotationSpeedMatter_degPerTick + + 0.015F * rotationTarget_degPerTick; + + // linear radius + client_radiusMatter_m += client_radiusSpeedMatter_mPerTick; + final float radiusDelta = radiusMatterTarget - client_radiusMatter_m; + client_radiusSpeedMatter_mPerTick = Math.signum(radiusDelta) * Math.min(0.05F, Math.abs(radiusDelta)); + + // linear position + client_yCore += client_yCoreSpeed_mPerTick; + final float yDelta = yCoreTarget - client_yCore; + client_yCoreSpeed_mPerTick = Math.signum(yDelta) * Math.min(0.05F, Math.abs(yDelta)); return; } diff --git a/src/main/java/cr0s/warpdrive/render/TileEntityEnanReactorCoreRenderer.java b/src/main/java/cr0s/warpdrive/render/TileEntityEnanReactorCoreRenderer.java new file mode 100644 index 00000000..677830a6 --- /dev/null +++ b/src/main/java/cr0s/warpdrive/render/TileEntityEnanReactorCoreRenderer.java @@ -0,0 +1,144 @@ +package cr0s.warpdrive.render; + +import cr0s.warpdrive.WarpDrive; +import cr0s.warpdrive.block.energy.TileEntityEnanReactorCore; +import cr0s.warpdrive.client.SpriteManager; + +import java.util.List; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.BufferBuilder; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.GlStateManager.DestFactor; +import net.minecraft.client.renderer.GlStateManager.SourceFactor; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.block.model.IBakedModel; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +import net.minecraftforge.client.model.IModel; +import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.common.model.TRSRTransformation; + +public class TileEntityEnanReactorCoreRenderer extends TileEntitySpecialRenderer { + + private IBakedModel bakedModelCrystal; + private IBakedModel bakedModelMatter; + private static List quadsCrystal; + private static List quadsMatter; + + public TileEntityEnanReactorCoreRenderer() { + super(); + SpriteManager.add(new ResourceLocation("warpdrive:blocks/energy/reactor_core-crystal")); + SpriteManager.add(new ResourceLocation("warpdrive:blocks/energy/reactor_core-grip")); + SpriteManager.add(new ResourceLocation("warpdrive:blocks/energy/reactor_matter")); + } + + private List getCrystalQuads() { + // Since we cannot bake in preInit() we do lazy baking of the model as soon as we need it for rendering + if (bakedModelCrystal == null) { + final ResourceLocation resourceLocation = new ResourceLocation(WarpDrive.MODID, "block/energy/reactor_crystal.obj"); + final IModel model = RenderCommons.getModel(resourceLocation); + bakedModelCrystal = model.bake(TRSRTransformation.identity(), DefaultVertexFormats.ITEM, ModelLoader.defaultTextureGetter()); + } + quadsCrystal = bakedModelCrystal.getQuads(null, null, 0L); + return quadsCrystal; + } + + private List getMatterQuads() { + // Since we cannot bake in preInit() we do lazy baking of the model as soon as we need it for rendering + if (bakedModelMatter == null) { + final ResourceLocation resourceLocation = new ResourceLocation(WarpDrive.MODID, "block/energy/reactor_matter.obj"); + final IModel model = RenderCommons.getModel(resourceLocation); + bakedModelMatter = model.bake(TRSRTransformation.identity(), DefaultVertexFormats.ITEM, ModelLoader.defaultTextureGetter()); + } + quadsMatter = bakedModelMatter.getQuads(null, null, 0L); + return quadsMatter; + } + + @Override + public void render(final TileEntityEnanReactorCore tileEntityEnanReactorCore, final double x, final double y, final double z, + final float partialTicks, final int destroyStage, final float alpha) { + if (!tileEntityEnanReactorCore.getWorld().isBlockLoaded(tileEntityEnanReactorCore.getPos(), false)) { + return; + } + if (quadsCrystal == null) { + quadsCrystal = getCrystalQuads(); + } + if (quadsMatter == null) { + quadsMatter = getMatterQuads(); + } + final Tessellator tessellator = Tessellator.getInstance(); + GlStateManager.pushAttrib(); + GlStateManager.pushMatrix(); + + final double yCore = y + tileEntityEnanReactorCore.client_yCore + partialTicks * tileEntityEnanReactorCore.client_yCoreSpeed_mPerTick; + GlStateManager.translate(x + 0.5D, yCore, z + 0.5D); + + GlStateManager.blendFunc(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA); + GlStateManager.enableBlend(); + // GlStateManager.disableCull(); + RenderHelper.disableStandardItemLighting(); + + // render the crystal + GlStateManager.enableLighting(); + Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); + final BufferBuilder worldRenderer = tessellator.getBuffer(); + + final float rotationCrystal = tileEntityEnanReactorCore.client_rotationCore_deg + partialTicks * tileEntityEnanReactorCore.client_rotationSpeedCore_degPerTick; + GlStateManager.rotate(rotationCrystal, 0.0F, 1.0F, 0.0F); + + worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); + RenderCommons.renderModelTESR(quadsCrystal, worldRenderer, tileEntityEnanReactorCore.getWorld().getCombinedLight(tileEntityEnanReactorCore.getPos(), 15)); + tessellator.draw(); + + // render the matter cloud + if (tileEntityEnanReactorCore.client_radiusMatter_m > 0.0F) { + GlStateManager.disableLighting(); + + // main model + final float radiusMatter = tileEntityEnanReactorCore.client_radiusMatter_m + partialTicks * tileEntityEnanReactorCore.client_radiusSpeedMatter_mPerTick; + final float heightMatter = Math.max(0.75F, radiusMatter / 2.0F); + GlStateManager.scale(radiusMatter, heightMatter, radiusMatter); + + final float rotationMatter = tileEntityEnanReactorCore.client_rotationMatter_deg + partialTicks * tileEntityEnanReactorCore.client_rotationSpeedMatter_degPerTick + - rotationCrystal; + GlStateManager.rotate(rotationMatter, 0.0F, 1.0F, 0.0F); + + worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); + RenderCommons.renderModelTESR(quadsMatter, worldRenderer, tileEntityEnanReactorCore.getWorld().getCombinedLight(tileEntityEnanReactorCore.getPos(), 15)); + tessellator.draw(); + + // surface model, slightly bigger + GlStateManager.scale(1.1F, 1.05F, 1.1F); + final float rotationSurface = 0.5F * tileEntityEnanReactorCore.client_rotationSpeedMatter_degPerTick; + GlStateManager.rotate(rotationSurface, 0.0F, 1.0F, 0.0F); + + worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); + RenderCommons.renderModelTESR(quadsMatter, worldRenderer, tileEntityEnanReactorCore.getWorld().getCombinedLight(tileEntityEnanReactorCore.getPos(), 15)); + tessellator.draw(); + + // core model, slightly smaller + GlStateManager.scale(1.1F, 1.05F, 1.1F); + final float rotationCore = -0.75F * tileEntityEnanReactorCore.client_rotationSpeedMatter_degPerTick; + GlStateManager.rotate(rotationCore, 0.0F, 1.0F, 0.0F); + + worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); + RenderCommons.renderModelTESR(quadsMatter, worldRenderer, tileEntityEnanReactorCore.getWorld().getCombinedLight(tileEntityEnanReactorCore.getPos(), 15)); + tessellator.draw(); + } + + worldRenderer.setTranslation(0.0D, 0.0D, 0.0D); + + RenderHelper.enableStandardItemLighting(); + GlStateManager.disableBlend(); + // GlStateManager.enableCull(); + GlStateManager.popMatrix(); + GlStateManager.popAttrib(); + } +} diff --git a/src/main/resources/assets/warpdrive/models/block/energy/reactor_crystal.mtl b/src/main/resources/assets/warpdrive/models/block/energy/reactor_crystal.mtl new file mode 100644 index 00000000..a5fee0d2 --- /dev/null +++ b/src/main/resources/assets/warpdrive/models/block/energy/reactor_crystal.mtl @@ -0,0 +1,24 @@ +# Blender MTL File: 'None' +# Material Count: 2 + +newmtl m_crystal +# Ns 96.078431 +# Ka 1.000000 1.000000 1.000000 +# Kd 0.027200 0.112621 0.800000 +# Ks 0.022863 0.263922 0.500000 +# Ke 0.000000 0.000000 0.000000 +# Ni 1.000000 +d 1.000000 +# illum 2 +map_Kd warpdrive:blocks/energy/reactor_core-crystal + +newmtl m_grip +# Ns 96.078431 +# Ka 1.000000 1.000000 1.000000 +# Kd 0.800000 0.543579 0.404160 +# Ks 0.500000 0.433684 0.327299 +# Ke 0.000000 0.000000 0.000000 +# Ni 1.000000 +d 1.000000 +# illum 2 +map_Kd warpdrive:blocks/energy/reactor_core-grip diff --git a/src/main/resources/assets/warpdrive/models/block/energy/reactor_crystal.obj b/src/main/resources/assets/warpdrive/models/block/energy/reactor_crystal.obj new file mode 100644 index 00000000..0b717d09 --- /dev/null +++ b/src/main/resources/assets/warpdrive/models/block/energy/reactor_crystal.obj @@ -0,0 +1,350 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +mtllib reactor_crystal.mtl +o crystal +v 0.044966 -0.508000 -0.153414 +v -0.000951 -0.508000 -0.053779 +v -0.050220 -0.508000 -0.151799 +v -0.003016 -0.508000 -0.175526 +v 0.159193 0.508000 -0.015059 +v 0.052666 0.508000 0.011164 +v 0.139586 0.508000 0.078100 +v 0.171821 0.508000 0.036242 +v -0.091978 -0.508000 -0.130810 +v -0.042708 -0.508000 -0.032789 +v -0.150063 -0.508000 -0.055384 +v -0.139182 -0.508000 -0.107083 +v 0.087412 0.508000 -0.133853 +v 0.041495 0.508000 -0.034218 +v 0.148022 0.508000 -0.060440 +v 0.135394 0.508000 -0.111741 +v -0.073543 0.508000 0.159572 +v -0.020718 0.508000 0.158676 +v -0.022579 0.508000 0.048985 +v -0.107179 0.508000 0.118831 +v 0.148022 -0.508000 -0.060440 +v 0.041495 -0.508000 -0.034218 +v 0.087412 -0.508000 -0.133853 +v 0.135394 -0.508000 -0.111741 +v -0.073543 -0.508000 0.159572 +v 0.078835 -0.508000 0.156987 +v 0.078835 0.508000 0.156987 +v -0.170569 0.508000 0.042050 +v -0.170569 -0.508000 0.042050 +v -0.139182 0.508000 -0.107083 +v 0.171821 -0.508000 0.036242 +v -0.003016 0.508000 -0.175526 +v -0.020718 -0.508000 0.158676 +v -0.107179 -0.508000 0.118831 +v -0.022579 -0.508000 0.048985 +v 0.026011 -0.508000 0.157883 +v 0.024150 -0.508000 0.048192 +v 0.111070 -0.508000 0.115129 +v -0.050220 0.508000 -0.151799 +v -0.000951 0.508000 -0.053778 +v 0.044966 0.508000 -0.153414 +v -0.136933 0.508000 0.082791 +v -0.052334 0.508000 0.012945 +v -0.159689 0.508000 -0.009650 +v 0.139586 -0.508000 0.078100 +v 0.052666 -0.508000 0.011164 +v 0.159193 -0.508000 -0.015059 +v -0.150063 0.508000 -0.055384 +v -0.042708 0.508000 -0.032789 +v -0.091978 0.508000 -0.130810 +v 0.111070 0.508000 0.115129 +v 0.024150 0.508000 0.048192 +v 0.026011 0.508000 0.157883 +v -0.159689 -0.508000 -0.009650 +v -0.052334 -0.508000 0.012945 +v -0.136933 -0.508000 0.082791 +v -0.207411 0.563880 -0.019694 +v -0.052334 0.563880 0.012945 +v -0.042708 0.563880 -0.032789 +v -0.197786 0.563880 -0.065428 +v 0.149709 0.304800 0.144884 +v 0.111070 0.304800 0.115129 +v 0.139586 0.304800 0.078100 +v 0.178224 0.304800 0.107856 +v 0.026838 0.563880 0.206644 +v 0.024150 0.563880 0.048192 +v -0.022579 0.563880 0.048985 +v -0.019891 0.563880 0.207437 +v 0.178224 0.563880 0.107856 +v 0.052666 0.563880 0.011164 +v 0.149709 0.563880 0.144884 +v -0.072122 0.304800 -0.195373 +v -0.113880 0.304800 -0.174383 +v -0.113880 0.563880 -0.174383 +v -0.072122 0.563880 -0.195373 +v 0.065378 0.563880 -0.197705 +v -0.000951 0.563880 -0.053778 +v 0.041495 0.563880 -0.034218 +v 0.107823 0.563880 -0.178144 +v -0.113880 -0.304800 -0.174383 +v -0.091978 -0.304800 -0.130810 +v -0.050220 -0.304800 -0.151799 +v -0.072122 -0.304800 -0.195373 +v -0.022579 0.970280 0.048986 +v 0.024150 0.970280 0.048193 +v 0.024150 -0.970280 0.048192 +v 0.024150 -0.563880 0.048192 +v -0.022579 -0.563880 0.048985 +v -0.022579 -0.970280 0.048985 +v 0.052666 0.970280 0.011165 +v -0.000951 0.970280 -0.053777 +v -0.042708 0.970280 -0.032788 +v -0.052334 -0.563880 0.012945 +v -0.052334 -0.970280 0.012945 +v 0.107823 0.304800 -0.178144 +v 0.065378 0.304800 -0.197705 +v -0.113880 -0.563880 -0.174383 +v -0.072122 -0.563880 -0.195373 +v -0.000951 -0.563880 -0.053779 +v -0.042708 -0.563880 -0.032789 +v 0.026838 -0.563880 0.206644 +v -0.019891 -0.563880 0.207437 +v -0.042708 -0.970280 -0.032789 +v -0.000951 -0.970280 -0.053779 +v 0.065378 -0.304800 -0.197705 +v 0.044966 -0.304800 -0.153414 +v 0.087412 -0.304800 -0.133853 +v 0.107823 -0.304800 -0.178144 +v 0.178224 -0.304800 0.107856 +v 0.139586 -0.304800 0.078100 +v 0.111070 -0.304800 0.115129 +v 0.149709 -0.304800 0.144884 +v 0.041495 0.970280 -0.034217 +v -0.207411 0.304800 -0.019694 +v -0.159689 0.304800 -0.009650 +v 0.087412 0.304800 -0.133853 +v -0.207411 -0.304800 -0.019694 +v -0.159689 -0.304800 -0.009650 +v -0.150063 -0.304800 -0.055384 +v -0.197786 -0.304800 -0.065428 +v -0.197786 0.304800 -0.065428 +v -0.150063 0.304800 -0.055384 +v -0.052334 0.970280 0.012946 +v -0.174541 0.563880 0.113839 +v 0.195376 0.563880 -0.072097 +v 0.065378 -0.563880 -0.197705 +v 0.107823 -0.563880 -0.178144 +v 0.041495 -0.563880 -0.034218 +v 0.206547 0.563880 -0.026716 +v -0.144786 0.563880 0.149880 +v -0.174541 0.304800 0.113839 +v -0.136933 0.304800 0.082791 +v -0.107179 0.304800 0.118831 +v -0.144786 0.304800 0.149880 +v 0.206547 0.304800 -0.026716 +v 0.159193 0.304800 -0.015059 +v 0.044966 0.304800 -0.153414 +v 0.178224 -0.563880 0.107856 +v 0.149709 -0.563880 0.144884 +v 0.052666 -0.563880 0.011164 +v 0.195376 0.304800 -0.072097 +v 0.148022 0.304800 -0.060440 +v -0.091978 0.304800 -0.130810 +v 0.041495 -0.970280 -0.034218 +v -0.019891 0.304800 0.207437 +v -0.020718 0.304800 0.158676 +v -0.050220 0.304800 -0.151799 +v -0.144786 -0.563880 0.149880 +v -0.174541 -0.563880 0.113839 +v 0.052666 -0.970280 0.011164 +v -0.144786 -0.304800 0.149880 +v -0.174541 -0.304800 0.113839 +v 0.195376 -0.563880 -0.072097 +v 0.206547 -0.563880 -0.026716 +v -0.207411 -0.563880 -0.019694 +v -0.019891 -0.304800 0.207437 +v -0.020718 -0.304800 0.158676 +v 0.195376 -0.304800 -0.072097 +v 0.148022 -0.304800 -0.060440 +v 0.159193 -0.304800 -0.015059 +v 0.206547 -0.304800 -0.026716 +v -0.197786 -0.563880 -0.065428 +v 0.026011 0.304800 0.157883 +v 0.026838 0.304800 0.206644 +v -0.107179 -0.304800 0.118831 +v 0.026838 -0.304800 0.206644 +v 0.026011 -0.304800 0.157883 +v -0.136933 -0.304800 0.082791 +vn 0.0000 1.0000 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vn -0.4491 0.0000 -0.8935 +vn 0.0170 -0.0000 0.9999 +vn 0.7923 -0.0000 0.6102 +vn -0.7711 -0.0000 0.6367 +vn 0.4185 0.0000 -0.9082 +vn -0.2060 -0.0000 0.9786 +vn 0.9082 -0.0000 0.4185 +vn -0.9999 -0.0000 0.0170 +vn 0.2060 0.0000 -0.9786 +vn -0.9082 0.0000 -0.4185 +vn -0.6101 0.0000 0.7923 +vn 0.6102 0.0000 -0.7923 +vn -0.6367 -0.0000 -0.7712 +vn -0.6367 -0.0000 -0.7711 +vn -0.8935 -0.0000 0.4491 +vn -0.2390 -0.0000 -0.9710 +vn 0.2390 0.0000 0.9710 +vn -0.9786 0.0000 -0.2059 +vn 0.6101 0.0000 -0.7923 +vn 0.6367 -0.0000 0.7711 +vn -0.9082 0.0000 -0.4186 +vn 0.9999 0.0000 -0.0170 +vn 0.8935 0.0000 -0.4491 +vn -0.6366 0.0000 -0.7712 +vn 0.7923 -0.0000 0.6101 +vn -0.7712 -0.0000 0.6367 +vn 0.9710 0.0000 -0.2390 +vn -0.9786 0.0000 -0.2060 +vn -0.4185 -0.0000 0.9082 +vn 0.4491 -0.0000 0.8935 +vn -0.9710 -0.0000 0.2390 +vn -0.7923 0.0000 -0.6101 +vn 0.7711 0.0000 -0.6367 +vn -0.0170 0.0000 -0.9999 +usemtl m_grip +s 1 +f 57//1 58//1 59//1 60//1 +f 61//2 62//2 63//2 64//2 +f 65//1 66//1 67//1 68//1 +f 69//1 70//1 66//1 71//1 +f 72//3 73//3 74//3 75//3 +f 76//1 77//1 78//1 79//1 +f 80//1 81//1 82//1 83//1 +f 84//4 67//4 66//4 85//4 +f 86//4 87//4 88//4 89//4 +f 85//5 66//5 70//5 90//5 +f 91//3 77//3 59//3 92//3 +f 89//6 88//6 93//6 94//6 +f 95//7 96//7 76//7 79//7 +f 74//1 59//1 77//1 75//1 +f 97//2 98//2 99//2 100//2 +f 101//2 102//2 88//2 87//2 +f 103//3 100//3 99//3 104//3 +f 105//1 106//1 107//1 108//1 +f 109//1 110//1 111//1 112//1 +f 113//1 84//1 85//1 90//1 +f 57//8 114//8 115//8 44//8 +f 95//9 79//9 13//9 116//9 +f 58//8 57//8 44//8 43//8 +f 68//10 67//10 19//10 18//10 +f 117//1 118//1 119//1 120//1 +f 60//11 59//11 49//11 48//11 +f 121//11 60//11 48//11 122//11 +f 77//12 76//12 41//12 40//12 +f 71//13 66//13 52//13 51//13 +f 84//1 113//1 91//1 123//1 +f 69//14 64//14 63//14 7//14 +f 124//15 58//16 43//16 42//15 +f 59//17 74//17 50//17 49//17 +f 78//18 125//18 15//18 14//18 +f 126//2 127//2 128//2 99//2 +f 61//13 71//13 51//13 62//13 +f 129//19 70//19 6//19 5//19 +f 121//20 114//20 57//20 60//20 +f 70//21 69//21 7//21 6//21 +f 67//22 130//22 20//22 19//22 +f 131//2 132//2 133//2 134//2 +f 135//19 129//19 5//19 136//19 +f 79//9 78//9 14//9 13//9 +f 76//23 96//23 137//23 41//23 +f 66//24 65//24 53//24 52//24 +f 138//2 139//2 87//2 140//2 +f 130//22 134//22 133//22 20//22 +f 125//18 141//18 142//18 15//18 +f 105//7 108//7 127//7 126//7 +f 75//25 77//25 40//25 39//25 +f 74//17 73//17 143//17 50//17 +f 104//7 99//7 128//7 144//7 +f 145//10 68//10 18//10 146//10 +f 131//26 124//15 42//15 132//26 +f 61//27 64//27 69//27 71//27 +f 72//25 75//25 39//25 147//25 +f 130//1 67//1 58//1 124//1 +f 148//2 149//2 93//2 88//2 +f 150//5 140//5 87//5 86//5 +f 151//28 152//28 149//28 148//28 +f 153//2 154//2 140//2 128//2 +f 80//3 83//3 98//3 97//3 +f 131//28 134//28 130//28 124//28 +f 72//2 147//2 143//2 73//2 +f 104//2 89//2 94//2 103//2 +f 92//1 123//1 91//1 +f 89//2 104//2 144//2 86//2 +f 101//24 87//24 37//24 36//24 +f 117//8 155//8 54//8 118//8 +f 144//29 128//29 140//29 150//29 +f 102//10 156//10 157//10 33//10 +f 153//18 128//18 22//18 21//18 +f 158//1 159//1 160//1 161//1 +f 87//13 139//13 38//13 37//13 +f 154//19 161//19 160//19 47//19 +f 109//27 112//27 139//27 138//27 +f 162//11 120//11 119//11 11//11 +f 97//17 100//17 10//17 9//17 +f 145//2 146//2 163//2 164//2 +f 99//25 98//25 3//25 2//25 +f 151//22 148//22 34//22 165//22 +f 117//20 120//20 162//20 155//20 +f 166//24 101//24 36//24 167//24 +f 109//14 138//21 45//21 110//14 +f 166//1 167//1 157//1 156//1 +f 88//10 102//10 33//10 35//10 +f 125//1 78//1 70//1 129//1 +f 105//23 126//12 1//12 106//23 +f 128//9 127//9 23//9 22//9 +f 135//2 136//2 142//2 141//2 +f 155//8 93//8 55//8 54//8 +f 158//18 153//18 21//18 159//18 +f 123//6 58//6 67//6 84//6 +f 98//25 83//25 82//25 3//25 +f 148//22 88//22 35//22 34//22 +f 113//7 78//7 77//7 91//7 +f 126//12 99//12 2//12 1//12 +f 139//13 112//13 111//13 38//13 +f 127//9 108//9 107//9 23//9 +f 138//21 140//21 46//21 45//21 +f 95//2 116//2 137//2 96//2 +f 93//16 149//16 56//16 55//16 +f 149//26 152//26 168//26 56//26 +f 155//2 162//2 100//2 93//2 +f 80//17 97//17 9//17 81//17 +f 100//11 162//11 11//11 10//11 +f 121//2 122//2 115//2 114//2 +f 90//29 70//29 78//29 113//29 +f 166//4 156//4 102//4 101//4 +f 151//1 165//1 168//1 152//1 +f 158//29 161//29 154//29 153//29 +f 135//29 141//29 125//29 129//29 +f 94//30 93//30 100//30 103//30 +f 92//30 59//30 58//30 123//30 +f 150//2 86//2 144//2 +f 145//4 164//4 65//4 68//4 +f 65//24 164//24 163//24 53//24 +f 140//19 154//19 47//19 46//19 +usemtl m_crystal +f 1//2 2//2 3//2 4//2 +f 5//1 6//1 7//1 8//1 +f 9//2 10//2 11//2 12//2 +f 13//1 14//1 15//1 16//1 +f 17//1 18//1 19//1 20//1 +f 21//2 22//2 23//2 24//2 +f 17//31 25//31 26//32 27//32 +f 25//31 17//31 28//33 29//33 +f 12//34 29//33 28//33 30//34 +f 8//27 27//32 26//32 31//27 +f 16//35 8//29 31//29 24//35 +f 4//36 12//34 30//34 32//36 +f 24//35 4//36 32//36 16//35 +f 33//2 25//2 34//2 35//2 +f 36//2 37//2 38//2 26//2 +f 39//1 40//1 41//1 32//1 +f 42//1 43//1 44//1 28//1 +f 45//2 46//2 47//2 31//2 +f 48//1 49//1 50//1 30//1 +f 51//1 52//1 53//1 27//1 +f 54//2 55//2 56//2 29//2 diff --git a/src/main/resources/assets/warpdrive/models/block/energy/reactor_matter.mtl b/src/main/resources/assets/warpdrive/models/block/energy/reactor_matter.mtl new file mode 100644 index 00000000..815bee20 --- /dev/null +++ b/src/main/resources/assets/warpdrive/models/block/energy/reactor_matter.mtl @@ -0,0 +1,11 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl m_matter +# Ns 0 +# Ka 0.000000 0.000000 0.000000 +# Kd 0.8 0.8 0.8 +# Ks 0.8 0.8 0.8 +d 1 +# illum 2 +map_Kd warpdrive:blocks/energy/reactor_matter diff --git a/src/main/resources/assets/warpdrive/models/block/energy/reactor_matter.obj b/src/main/resources/assets/warpdrive/models/block/energy/reactor_matter.obj new file mode 100644 index 00000000..56845a50 --- /dev/null +++ b/src/main/resources/assets/warpdrive/models/block/energy/reactor_matter.obj @@ -0,0 +1,250 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +mtllib reactor_matter.mtl +o matter +v -0.000000 0.287013 -0.692910 +v -0.000000 0.530330 -0.530330 +v 0.327762 0.530330 -0.429046 +v 0.428242 0.287013 -0.560576 +v -0.000000 0.750000 0.000000 +v 0.287013 0.692910 0.088692 +v 0.287013 0.692910 -0.088692 +v 0.177383 0.692910 -0.232198 +v -0.177383 0.692910 0.232198 +v -0.000000 0.692910 0.287012 +v 0.177384 0.692910 0.232198 +v -0.000000 -0.530330 -0.530330 +v -0.000000 -0.287013 -0.692910 +v 0.428242 -0.287013 -0.560576 +v 0.327762 -0.530330 -0.429046 +v -0.000000 0.000000 -0.750000 +v 0.463525 0.000000 -0.606763 +v -0.000000 0.692910 -0.287013 +v -0.000000 -0.692910 -0.287013 +v 0.177383 -0.692910 -0.232198 +v 0.692909 -0.287013 -0.214121 +v 0.530330 -0.530330 -0.163881 +v 0.692909 0.287013 -0.214121 +v 0.750000 0.000000 -0.231763 +v 0.530330 0.530330 -0.163881 +v 0.287013 -0.692910 -0.088692 +v -0.287013 -0.692910 0.088692 +v -0.287013 -0.692910 -0.088692 +v -0.000000 -0.750000 -0.000000 +v -0.177383 -0.692910 0.232198 +v 0.530330 -0.530330 0.163881 +v 0.287013 -0.692910 0.088692 +v 0.750000 -0.000000 0.231763 +v 0.692909 -0.287013 0.214121 +v 0.530330 0.530330 0.163881 +v 0.692909 0.287013 0.214121 +v -0.287013 0.692910 -0.088692 +v -0.287013 0.692910 0.088692 +v 0.463525 -0.000000 0.606763 +v 0.428242 -0.287013 0.560576 +v 0.327762 0.530330 0.429046 +v 0.428242 0.287013 0.560576 +v 0.327762 -0.530330 0.429046 +v 0.177384 -0.692910 0.232198 +v -0.000000 -0.287013 0.692910 +v -0.000000 -0.530330 0.530330 +v -0.000000 0.287013 0.692910 +v -0.000000 -0.000000 0.750000 +v -0.000000 0.530330 0.530330 +v -0.000000 -0.692910 0.287012 +v -0.428242 0.287013 0.560576 +v -0.463525 -0.000000 0.606763 +v -0.327762 0.530330 0.429046 +v -0.327762 -0.530330 0.429046 +v -0.428242 -0.287013 0.560576 +v -0.530330 -0.530330 0.163881 +v -0.750000 -0.000000 0.231763 +v -0.692910 -0.287013 0.214121 +v -0.530330 0.530330 0.163881 +v -0.692910 0.287013 0.214121 +v -0.177384 -0.692910 -0.232198 +v -0.530330 0.530330 -0.163881 +v -0.692910 0.287013 -0.214121 +v -0.692910 -0.287013 -0.214121 +v -0.530330 -0.530330 -0.163881 +v -0.750000 0.000000 -0.231763 +v -0.428242 -0.287013 -0.560576 +v -0.327762 -0.530330 -0.429046 +v -0.428242 0.287013 -0.560576 +v -0.463525 0.000000 -0.606763 +v -0.177384 0.692910 -0.232198 +v -0.327762 0.530330 -0.429046 +vn 0.2489 0.5381 -0.8053 +vn 0.1765 0.9824 -0.0613 +vn 0.1771 0.9824 -0.0591 +vn 0.1577 0.9801 -0.1205 +vn -0.0000 0.9808 0.1951 +vn 0.0602 0.9790 0.1947 +vn 0.2489 -0.5381 -0.8053 +vn 0.2901 0.1867 -0.9386 +vn 0.1692 0.8195 -0.5476 +vn 0.1692 -0.8195 -0.5476 +vn 0.2901 -0.1867 -0.9386 +vn 0.6643 -0.5487 -0.5075 +vn 0.7799 0.1918 -0.5958 +vn 0.4470 0.8268 -0.3414 +vn 0.4470 -0.8268 -0.3414 +vn 0.7799 -0.1918 -0.5958 +vn 0.6643 0.5487 -0.5075 +vn -0.1771 -0.9824 0.0591 +vn -0.1765 -0.9824 0.0613 +vn -0.1577 -0.9801 0.1205 +vn 0.1577 -0.9801 -0.1205 +vn 0.5556 -0.8315 0.0000 +vn 0.9808 -0.1951 -0.0000 +vn 0.8315 0.5556 0.0000 +vn -0.1765 0.9824 0.0613 +vn -0.1771 0.9824 0.0591 +vn -0.1577 0.9801 0.1205 +vn 0.8315 -0.5556 0.0000 +vn 0.9808 0.1951 0.0000 +vn 0.5556 0.8315 0.0000 +vn 0.7799 -0.1918 0.5958 +vn 0.6643 0.5487 0.5075 +vn 0.1577 0.9801 0.1205 +vn 0.6643 -0.5487 0.5075 +vn 0.7799 0.1918 0.5958 +vn 0.4470 0.8268 0.3414 +vn 0.4470 -0.8268 0.3414 +vn 0.2489 -0.5381 0.8053 +vn 0.2901 0.1867 0.9386 +vn 0.1692 0.8195 0.5476 +vn 0.1692 -0.8195 0.5476 +vn 0.2901 -0.1867 0.9386 +vn 0.2489 0.5381 0.8053 +vn -0.0000 -0.9808 0.1951 +vn 0.0602 -0.9790 0.1947 +vn -0.2901 0.1867 0.9386 +vn -0.1692 0.8195 0.5476 +vn -0.1692 -0.8195 0.5476 +vn -0.2901 -0.1867 0.9386 +vn -0.2489 0.5381 0.8053 +vn -0.2489 -0.5381 0.8053 +vn -0.4470 -0.8268 0.3414 +vn -0.7799 -0.1918 0.5958 +vn -0.6643 0.5487 0.5075 +vn 0.0000 -0.9808 -0.1951 +vn 0.0602 -0.9790 -0.1947 +vn 0.1771 -0.9824 0.0591 +vn 0.1765 -0.9824 0.0613 +vn 0.1951 -0.9808 0.0000 +vn -0.6643 -0.5487 0.5075 +vn -0.7799 0.1918 0.5958 +vn -0.4470 0.8268 0.3414 +vn -0.8315 0.5556 0.0000 +vn -0.8315 -0.5556 0.0000 +vn -0.9808 0.1951 0.0000 +vn -0.5556 0.8315 0.0000 +vn -0.5556 -0.8315 0.0000 +vn -0.9808 -0.1951 -0.0000 +vn -0.1577 -0.9801 -0.1205 +vn -0.6643 -0.5487 -0.5075 +vn -0.7799 0.1918 -0.5958 +vn -0.4470 0.8268 -0.3414 +vn -0.4470 -0.8268 -0.3414 +vn -0.7799 -0.1918 -0.5958 +vn -0.6643 0.5487 -0.5075 +vn -0.1577 0.9801 -0.1205 +vn -0.1692 0.8195 -0.5476 +vn -0.1692 -0.8195 -0.5476 +vn -0.2901 -0.1867 -0.9386 +vn -0.2489 0.5381 -0.8053 +vn -0.2489 -0.5381 -0.8053 +vn -0.2901 0.1867 -0.9386 +vn 0.0000 0.9808 -0.1951 +vn -0.0602 0.9790 -0.1947 +vn 0.1951 0.9808 0.0000 +vn 0.0602 0.9790 -0.1947 +vn -0.1951 0.9808 0.0000 +vn -0.0602 0.9790 0.1947 +vn -0.1951 -0.9808 0.0000 +vn -0.0602 -0.9790 0.1947 +vn -0.0602 -0.9790 -0.1947 +vn 0.1577 -0.9801 0.1205 +usemtl m_matter +s 1 +f 1//1 2//1 3//1 4//1 +f 5//2 7//3 8//4 +f 5//5 10//5 11//6 +f 12//7 13//7 14//7 15//7 +f 16//8 1//8 4//8 17//8 +f 2//9 18//9 8//9 3//9 +f 19//10 12//10 15//10 20//10 +f 13//11 16//11 17//11 14//11 +f 15//12 14//12 21//12 22//12 +f 17//13 4//13 23//13 24//13 +f 3//14 8//14 7//14 25//14 +f 20//15 15//15 22//15 26//15 +f 14//16 17//16 24//16 21//16 +f 4//17 3//17 25//17 23//17 +f 27//18 29//19 30//20 +f 29//21 20//21 26//21 +f 26//22 22//22 31//22 32//22 +f 21//23 24//23 33//23 34//23 +f 23//24 25//24 35//24 36//24 +f 5//25 38//26 9//27 +f 22//28 21//28 34//28 31//28 +f 24//29 23//29 36//29 33//29 +f 25//30 7//30 6//30 35//30 +f 34//31 33//31 39//31 40//31 +f 36//32 35//32 41//32 42//32 +f 6//33 5//33 11//33 +f 31//34 34//34 40//34 43//34 +f 33//35 36//35 42//35 39//35 +f 35//36 6//36 11//36 41//36 +f 32//37 31//37 43//37 44//37 +f 43//38 40//38 45//38 46//38 +f 39//39 42//39 47//39 48//39 +f 41//40 11//40 10//40 49//40 +f 44//41 43//41 46//41 50//41 +f 40//42 39//42 48//42 45//42 +f 42//43 41//43 49//43 47//43 +f 50//44 29//44 44//45 +f 48//46 47//46 51//46 52//46 +f 49//47 10//47 9//47 53//47 +f 50//48 46//48 54//48 30//48 +f 45//49 48//49 52//49 55//49 +f 47//50 49//50 53//50 51//50 +f 46//51 45//51 55//51 54//51 +f 30//52 54//52 56//52 27//52 +f 55//53 52//53 57//53 58//53 +f 51//54 53//54 59//54 60//54 +f 29//55 19//55 20//56 +f 32//57 29//58 26//59 +f 54//60 55//60 58//60 56//60 +f 52//61 51//61 60//61 57//61 +f 53//62 9//62 38//62 59//62 +f 60//63 59//63 62//63 63//63 +f 56//64 58//64 64//64 65//64 +f 57//65 60//65 63//65 66//65 +f 59//66 38//66 37//66 62//66 +f 27//67 56//67 65//67 28//67 +f 58//68 57//68 66//68 64//68 +f 29//69 28//69 61//69 +f 65//70 64//70 67//70 68//70 +f 66//71 63//71 69//71 70//71 +f 62//72 37//72 71//72 72//72 +f 28//73 65//73 68//73 61//73 +f 64//74 66//74 70//74 67//74 +f 63//75 62//75 72//75 69//75 +f 37//76 5//76 71//76 +f 72//77 71//77 18//77 2//77 +f 61//78 68//78 12//78 19//78 +f 67//79 70//79 16//79 13//79 +f 69//80 72//80 2//80 1//80 +f 68//81 67//81 13//81 12//81 +f 70//82 69//82 1//82 16//82 +f 5//83 18//83 71//84 +f 5//2 6//85 7//3 +f 5//83 8//86 18//83 +f 5//25 37//87 38//26 +f 5//5 9//88 10//5 +f 27//18 28//89 29//19 +f 50//44 30//90 29//44 +f 29//55 61//91 19//55 +f 32//57 44//92 29//58 diff --git a/src/main/resources/assets/warpdrive/textures/blocks/energy/reactor_core-crystal.png b/src/main/resources/assets/warpdrive/textures/blocks/energy/reactor_core-crystal.png new file mode 100644 index 00000000..54e56bd5 Binary files /dev/null and b/src/main/resources/assets/warpdrive/textures/blocks/energy/reactor_core-crystal.png differ diff --git a/src/main/resources/assets/warpdrive/textures/blocks/energy/reactor_core-grip.png b/src/main/resources/assets/warpdrive/textures/blocks/energy/reactor_core-grip.png new file mode 100644 index 00000000..c273f491 Binary files /dev/null and b/src/main/resources/assets/warpdrive/textures/blocks/energy/reactor_core-grip.png differ diff --git a/src/main/resources/assets/warpdrive/textures/blocks/energy/reactor_matter.png b/src/main/resources/assets/warpdrive/textures/blocks/energy/reactor_matter.png new file mode 100644 index 00000000..f7c0c5dc Binary files /dev/null and b/src/main/resources/assets/warpdrive/textures/blocks/energy/reactor_matter.png differ