mirror of
https://github.com/Sollace/Unicopia.git
synced 2024-11-27 07:17:58 +01:00
Rework the sourcesets slightly so I can include the parts of MineLP I need
This commit is contained in:
parent
f45dbf08e2
commit
842770d940
19 changed files with 15 additions and 552 deletions
|
@ -48,7 +48,10 @@ sourceCompatibility = 1.8
|
|||
targetCompatibility = 1.8
|
||||
|
||||
sourceSets {
|
||||
external {
|
||||
}
|
||||
main {
|
||||
compileClasspath += external.output
|
||||
refMap = project.refCore
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,8 +4,8 @@ import net.minecraftforge.fml.relauncher.Side;
|
|||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class MineLittlePony {
|
||||
public abstract class MineLittlePony {
|
||||
public static Object getConfig() {
|
||||
return null;
|
||||
throw new RuntimeException();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
package com.minelittlepony.model.anim;
|
||||
|
||||
/**
|
||||
* Interpolator function for handling transitions between animation states.
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface IInterpolator {
|
||||
/**
|
||||
* Interpolates a value between the requested final destination and what it was last.
|
||||
*
|
||||
* @param key Identifier to track previous values
|
||||
* @param to The new values
|
||||
* @param scalingFactor Scaling factor to control how quickly values change
|
||||
*/
|
||||
float interpolate(String key, float to, float scalingFactor);
|
||||
}
|
|
@ -1,53 +0,0 @@
|
|||
package com.minelittlepony.render.model;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.model.ModelBase;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.minelittlepony.util.render.AbstractBoxRenderer;
|
||||
import com.minelittlepony.util.render.Color;
|
||||
|
||||
public class GlowRenderer extends AbstractBoxRenderer<GlowRenderer> {
|
||||
|
||||
int tint;
|
||||
float alpha = 1;
|
||||
|
||||
public GlowRenderer(ModelBase model, int x, int y) {
|
||||
super(model, x, y);
|
||||
}
|
||||
|
||||
public GlowRenderer setAlpha(float alpha) {
|
||||
this.alpha = alpha;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public GlowRenderer setTint(int tint) {
|
||||
this.tint = tint;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public void applyTint(float alpha) {
|
||||
Color.glColor(tint, alpha);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createBox(float offX, float offY, float offZ, int width, int height, int depth, float scaleFactor, boolean mirrored) {
|
||||
cubeList.add(new ModelGlow(this, textureOffsetX, textureOffsetY, offX, offY, offZ, width, height, depth, scaleFactor, alpha));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(float scale) {
|
||||
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
|
||||
Minecraft.getMinecraft().entityRenderer.disableLightmap();
|
||||
super.render(scale);
|
||||
GL11.glPopAttrib();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected GlowRenderer copySelf() {
|
||||
return new GlowRenderer(baseModel, textureOffsetX, textureOffsetY);
|
||||
}
|
||||
}
|
|
@ -1,78 +0,0 @@
|
|||
package com.minelittlepony.render.model;
|
||||
|
||||
import net.minecraft.client.renderer.BufferBuilder;
|
||||
|
||||
import com.minelittlepony.util.render.Box;
|
||||
import com.minelittlepony.util.render.Quad;
|
||||
import com.minelittlepony.util.render.Vertex;
|
||||
|
||||
/**
|
||||
* Like a normal box, but with the top narrowed a bit.
|
||||
*/
|
||||
public class ModelGlow extends Box<GlowRenderer> {
|
||||
|
||||
private final float alpha;
|
||||
|
||||
private Quad[] quadList;
|
||||
|
||||
public ModelGlow(GlowRenderer renderer, int texX, int texY, float xMin, float yMin, float zMin, int w, int h, int d, float scale, float alpha) {
|
||||
super(renderer, texX, texY, xMin, yMin, zMin, w, h, d, scale);
|
||||
|
||||
this.alpha = alpha;
|
||||
|
||||
float xMax = xMin + w + scale;
|
||||
float yMax = yMin + h + scale;
|
||||
float zMax = zMin + d + scale;
|
||||
|
||||
xMin -= scale;
|
||||
yMin -= scale;
|
||||
zMin -= scale;
|
||||
|
||||
if (renderer.mirror) {
|
||||
float v = xMax;
|
||||
xMax = xMin;
|
||||
xMin = v;
|
||||
}
|
||||
|
||||
float tipInset = 0.4f;
|
||||
|
||||
float tipXmin = xMin + w * tipInset;
|
||||
float tipZmin = zMin + d * tipInset;
|
||||
float tipXMax = xMax - w * tipInset;
|
||||
float tipZMax = zMax - d * tipInset;
|
||||
|
||||
// w:west e:east d:down u:up s:south n:north
|
||||
Vertex wds = vert(tipXmin, yMin, tipZmin, 0, 0);
|
||||
Vertex eds = vert(tipXMax, yMin, tipZmin, 0, 8);
|
||||
Vertex eus = vert(xMax, yMax, zMin, 8, 8);
|
||||
Vertex wus = vert(xMin, yMax, zMin, 8, 0);
|
||||
Vertex wdn = vert(tipXmin, yMin, tipZMax, 0, 0);
|
||||
Vertex edn = vert(tipXMax, yMin, tipZMax, 0, 8);
|
||||
Vertex eun = vert(xMax, yMax, zMax, 8, 8);
|
||||
Vertex wun = vert(xMin, yMax, zMax, 8, 0);
|
||||
|
||||
quadList = new Quad[] {
|
||||
quad(texX + d + w, d, texY + d, h, edn, eds, eus, eun),
|
||||
quad(texX, d, texY + d, h, wds, wdn, wun, wus),
|
||||
quad(texX + d, w, texY, d, edn, wdn, wds, eds),
|
||||
quad(texX + d + w, w, texY + d, -d, eus, wus, wun, eun),
|
||||
quad(texX + d, w, texY + d, h, eds, wds, wus, eus),
|
||||
quad(texX + d + w + d, w, texY + d, h, wdn, edn, eun, wun)
|
||||
};
|
||||
|
||||
if (renderer.mirror) {
|
||||
for (Quad i : quadList) {
|
||||
i.flipFace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(BufferBuilder buffer, float scale) {
|
||||
parent.applyTint(alpha);
|
||||
|
||||
for (Quad i : quadList) {
|
||||
i.draw(buffer, scale);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,84 +0,0 @@
|
|||
package com.minelittlepony.render.model;
|
||||
|
||||
import net.minecraft.client.renderer.BufferBuilder;
|
||||
|
||||
import com.minelittlepony.util.render.Box;
|
||||
import com.minelittlepony.util.render.Quad;
|
||||
import com.minelittlepony.util.render.Vertex;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class ModelPlane extends Box<PlaneRenderer> {
|
||||
|
||||
private Quad quad;
|
||||
|
||||
public boolean hidden = false;
|
||||
|
||||
public ModelPlane(PlaneRenderer renderer, int textureX, int textureY, float xMin, float yMin, float zMin, int w, int h, int d, float scale, Plane face) {
|
||||
super(renderer, textureX, textureY, xMin, yMin, zMin, w, h, d, scale, false);
|
||||
|
||||
float xMax = xMin + w + scale;
|
||||
float yMax = yMin + h + scale;
|
||||
float zMax = zMin + d + scale;
|
||||
|
||||
xMin -= scale;
|
||||
yMin -= scale;
|
||||
zMin -= scale;
|
||||
|
||||
if (renderer.mirror) {
|
||||
float v = xMax;
|
||||
xMax = xMin;
|
||||
xMin = v;
|
||||
}
|
||||
|
||||
if (renderer.mirrory) {
|
||||
float v = yMax;
|
||||
yMax = yMin;
|
||||
yMin = v;
|
||||
}
|
||||
|
||||
if (renderer.mirrorz) {
|
||||
float v = zMax;
|
||||
zMax = zMin;
|
||||
zMin = v;
|
||||
}
|
||||
|
||||
// w:west e:east d:down u:up s:south n:north
|
||||
Vertex wds = vert(xMin, yMin, zMin, 0, 0);
|
||||
Vertex eds = vert(xMax, yMin, zMin, 0, 8);
|
||||
Vertex eus = vert(xMax, yMax, zMin, 8, 8);
|
||||
Vertex wus = vert(xMin, yMax, zMin, 8, 0);
|
||||
Vertex wdn = vert(xMin, yMin, zMax, 0, 0);
|
||||
Vertex edn = vert(xMax, yMin, zMax, 0, 8);
|
||||
Vertex eun = vert(xMax, yMax, zMax, 8, 8);
|
||||
Vertex wun = vert(xMin, yMax, zMax, 8, 0);
|
||||
|
||||
if (face == Plane.EAST) {
|
||||
quad = quad(textureX, d, textureY, h, edn, eds, eus, eun);
|
||||
}
|
||||
if (face == Plane.WEST) {
|
||||
quad = quad(textureX, d, textureY, h, wds, wdn, wun, wus);
|
||||
}
|
||||
if (face == Plane.UP) {
|
||||
quad = quad(textureX, w, textureY, d, edn, wdn, wds, eds);
|
||||
}
|
||||
if (face == Plane.DOWN) {
|
||||
quad = quad(textureX, w, textureY, d, eus, wus, wun, eun);
|
||||
}
|
||||
if (face == Plane.SOUTH) {
|
||||
quad = quad(textureX, w, textureY, h, eds, wds, wus, eus);
|
||||
}
|
||||
if (face == Plane.NORTH) {
|
||||
quad = quad(textureX, w, textureY, h, wdn, edn, eun, wun);
|
||||
}
|
||||
|
||||
if (renderer.mirror || renderer.mirrory || renderer.mirrorz) {
|
||||
quad.flipFace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(@Nonnull BufferBuilder buffer, float scale) {
|
||||
if (!hidden) quad.draw(buffer, scale);
|
||||
}
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
package com.minelittlepony.render.model;
|
||||
|
||||
enum Plane {
|
||||
NORTH,
|
||||
SOUTH,
|
||||
UP,
|
||||
DOWN,
|
||||
EAST,
|
||||
WEST
|
||||
}
|
|
@ -1,69 +0,0 @@
|
|||
package com.minelittlepony.render.model;
|
||||
|
||||
import net.minecraft.client.model.ModelBase;
|
||||
|
||||
import com.minelittlepony.util.render.AbstractBoxRenderer;
|
||||
|
||||
public class PlaneRenderer extends AbstractBoxRenderer<PlaneRenderer> {
|
||||
|
||||
public boolean mirrory, mirrorz;
|
||||
|
||||
public PlaneRenderer(ModelBase model) {
|
||||
super(model);
|
||||
}
|
||||
|
||||
public PlaneRenderer(ModelBase model, int x, int y) {
|
||||
super(model, x, y);
|
||||
}
|
||||
|
||||
/**
|
||||
* Flips the Z bit. Any calls to add a plane will be mirrored until this is called again.
|
||||
*/
|
||||
public PlaneRenderer flipZ() {
|
||||
mirrorz = !mirrorz;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Flips the Y bit. Any calls to add a plane will be mirrored until this is called again.
|
||||
*/
|
||||
public PlaneRenderer flipY() {
|
||||
mirrory = !mirrory;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PlaneRenderer copySelf() {
|
||||
return new PlaneRenderer(baseModel, textureOffsetX, textureOffsetY);
|
||||
}
|
||||
|
||||
private PlaneRenderer addPlane(float offX, float offY, float offZ, int width, int height, int depth, float scale, Plane face) {
|
||||
cubeList.add(new ModelPlane(this, textureOffsetX, textureOffsetY, modelOffsetX + offX, modelOffsetY + offY, modelOffsetZ + offZ, width, height, depth, scale, face));
|
||||
return this;
|
||||
}
|
||||
|
||||
public PlaneRenderer top(float offX, float offY, float offZ, int width, int depth, float scale) {
|
||||
return addPlane(offX, offY, offZ, width, 0, depth, scale, Plane.UP);
|
||||
}
|
||||
|
||||
public PlaneRenderer bottom(float offX, float offY, float offZ, int width, int depth, float scale) {
|
||||
return addPlane(offX, offY, offZ, width, 0, depth, scale, Plane.DOWN);
|
||||
}
|
||||
|
||||
public PlaneRenderer west(float offX, float offY, float offZ, int height, int depth, float scale) {
|
||||
return addPlane(offX, offY, offZ, 0, height, depth, scale, Plane.WEST);
|
||||
}
|
||||
|
||||
public PlaneRenderer east(float offX, float offY, float offZ, int height, int depth, float scale) {
|
||||
return addPlane(offX, offY, offZ, 0, height, depth, scale, Plane.EAST);
|
||||
}
|
||||
|
||||
public PlaneRenderer north(float offX, float offY, float offZ, int width, int height, float scale) {
|
||||
return addPlane(offX, offY, offZ - scale * 2, width, height, 0, scale, Plane.NORTH);
|
||||
}
|
||||
|
||||
public PlaneRenderer south(float offX, float offY, float offZ, int width, int height, float scale) {
|
||||
return addPlane(offX, offY, offZ + scale * 2, width, height, 0, scale, Plane.SOUTH);
|
||||
}
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
package com.minelittlepony.render.model;
|
||||
|
||||
import net.minecraft.client.model.ModelBase;
|
||||
|
||||
import com.minelittlepony.util.render.AbstractBoxRenderer;
|
||||
|
||||
public class PonyRenderer extends AbstractBoxRenderer<PonyRenderer> {
|
||||
|
||||
public PonyRenderer(ModelBase model) {
|
||||
super(model);
|
||||
}
|
||||
|
||||
public PonyRenderer(ModelBase model, int texX, int texY) {
|
||||
super(model, texX, texY);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PonyRenderer copySelf() {
|
||||
return new PonyRenderer(baseModel, textureOffsetX, textureOffsetY);
|
||||
}
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
@MethodsReturnNonnullByDefault
|
||||
@ParametersAreNonnullByDefault
|
||||
package com.minelittlepony.render.model;
|
||||
|
||||
import mcp.MethodsReturnNonnullByDefault;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
|
@ -1,212 +0,0 @@
|
|||
package com.minelittlepony.util.render;
|
||||
|
||||
import net.minecraft.client.model.ModelBase;
|
||||
import net.minecraft.client.model.ModelBox;
|
||||
import net.minecraft.client.model.ModelRenderer;
|
||||
import net.minecraft.client.model.TextureOffset;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public abstract class AbstractBoxRenderer<T extends AbstractBoxRenderer<T>> extends ModelRenderer {
|
||||
|
||||
protected final ModelBase baseModel;
|
||||
|
||||
protected int textureOffsetX;
|
||||
protected int textureOffsetY;
|
||||
|
||||
protected float modelOffsetX;
|
||||
protected float modelOffsetY;
|
||||
protected float modelOffsetZ;
|
||||
|
||||
public AbstractBoxRenderer(ModelBase model) {
|
||||
super(model);
|
||||
baseModel = model;
|
||||
}
|
||||
|
||||
public AbstractBoxRenderer(ModelBase model, int texX, int texY) {
|
||||
super(model, texX, texY);
|
||||
baseModel = model;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called to create a new instance of this renderer (used for child renderers)
|
||||
*/
|
||||
protected abstract T copySelf();
|
||||
|
||||
@Override
|
||||
public T setTextureOffset(int x, int y) {
|
||||
this.textureOffsetX = x;
|
||||
this.textureOffsetY = y;
|
||||
super.setTextureOffset(x, y);
|
||||
return (T) this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Flips the mirror flag. All faces are mirrored until this is called again.
|
||||
*/
|
||||
public T flip() {
|
||||
return mirror(!mirror);
|
||||
}
|
||||
|
||||
public T mirror(boolean m) {
|
||||
mirror = m;
|
||||
return (T) this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the texture offset
|
||||
*/
|
||||
public T tex(int x, int y) {
|
||||
return setTextureOffset(x, y);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the texture size for this renderer.
|
||||
*/
|
||||
public T size(int w, int h) {
|
||||
return (T) setTextureSize(w, h);
|
||||
}
|
||||
|
||||
/**
|
||||
* Positions this model in space.
|
||||
*/
|
||||
public T at(float x, float y, float z) {
|
||||
return (T)at(this, x, y, z);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets an offset to be used on all shapes and children created through this renderer.
|
||||
*/
|
||||
public T offset(float x, float y, float z) {
|
||||
modelOffsetX = x;
|
||||
modelOffsetY = y;
|
||||
modelOffsetZ = z;
|
||||
return (T) this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adjusts the rotation center of the given renderer by the given amounts in each direction.
|
||||
*/
|
||||
public static void shiftRotationPoint(ModelRenderer renderer, float x, float y, float z) {
|
||||
renderer.rotationPointX += x;
|
||||
renderer.rotationPointY += y;
|
||||
renderer.rotationPointZ += z;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets this renderer's rotation angles.
|
||||
*/
|
||||
public T rotate(float x, float y, float z) {
|
||||
rotateAngleX = x;
|
||||
rotateAngleY = y;
|
||||
rotateAngleZ = z;
|
||||
return (T) this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Positions a given model in space by setting its offset values divided
|
||||
* by 16 to account for scaling applied inside the model.
|
||||
*/
|
||||
public static <T extends ModelRenderer> T at(T renderer, float x, float y, float z) {
|
||||
renderer.offsetX = x / 16;
|
||||
renderer.offsetY = y / 16;
|
||||
renderer.offsetZ = z / 16;
|
||||
return renderer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rotates this model to align itself with the angles of another.
|
||||
*/
|
||||
public void rotateTo(ModelRenderer other) {
|
||||
rotate(other.rotateAngleX, other.rotateAngleY, other.rotateAngleZ);
|
||||
}
|
||||
|
||||
/**
|
||||
* Shifts this model to align its center with the center of another.
|
||||
*/
|
||||
public T rotateAt(ModelRenderer other) {
|
||||
return around(other.rotationPointX, other.rotationPointY, other.rotationPointZ);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the rotation point.
|
||||
*/
|
||||
public T around(float x, float y, float z) {
|
||||
setRotationPoint(x, y, z);
|
||||
return (T) this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets or creates a new child model based on its unique index.
|
||||
* New children will be of the same type and inherit the same textures and offsets of the original.
|
||||
*/
|
||||
public T child(int index) {
|
||||
if (childModels == null || index >= childModels.size()) {
|
||||
return child();
|
||||
}
|
||||
return (T)childModels.get(index);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a brand new child under this renderer.
|
||||
*/
|
||||
public T child() {
|
||||
T copy = copySelf();
|
||||
child(copy.offset(modelOffsetX, modelOffsetY, modelOffsetZ));
|
||||
copy.textureHeight = textureHeight;
|
||||
copy.textureWidth = textureWidth;
|
||||
return copy;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a new child renderer and returns itself for chaining.
|
||||
*/
|
||||
public <K extends ModelRenderer> T child(K child) {
|
||||
addChild(child);
|
||||
return (T)this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public T addBox(String partName, float offX, float offY, float offZ, int width, int height, int depth) {
|
||||
partName = boxName + "." + partName;
|
||||
|
||||
TextureOffset tex = baseModel.getTextureOffset(partName);
|
||||
|
||||
setTextureOffset(tex.textureOffsetX, tex.textureOffsetY).addBox(offX, offY, offZ, width, height, depth);
|
||||
cubeList.get(cubeList.size() - 1).setBoxName(partName);
|
||||
|
||||
return (T) this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public T addBox(float offX, float offY, float offZ, int width, int height, int depth) {
|
||||
addBox(offX, offY, offZ, width, height, depth, 0);
|
||||
return (T) this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public T addBox(float offX, float offY, float offZ, int width, int height, int depth, boolean mirrored) {
|
||||
addBox(offX, offY, offZ, width, height, depth, 0, mirrored);
|
||||
return (T)this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBox(float offX, float offY, float offZ, int width, int height, int depth, float scaleFactor) {
|
||||
addBox(offX, offY, offZ, width, height, depth, scaleFactor, mirror);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a textured box.
|
||||
*/
|
||||
public T box(float offX, float offY, float offZ, int width, int height, int depth, float scaleFactor) {
|
||||
return addBox(offX, offY, offZ, width, height, depth, scaleFactor, mirror);
|
||||
}
|
||||
|
||||
private T addBox(float offX, float offY, float offZ, int width, int height, int depth, float scaleFactor, boolean mirrored) {
|
||||
createBox(modelOffsetX + offX, modelOffsetY + offY, modelOffsetZ + offZ, width, height, depth, scaleFactor, mirrored);
|
||||
return (T)this;
|
||||
}
|
||||
|
||||
protected void createBox(float offX, float offY, float offZ, int width, int height, int depth, float scaleFactor, boolean mirrored) {
|
||||
cubeList.add(new ModelBox(this, textureOffsetX, textureOffsetY, offX, offY, offZ, width, height, depth, scaleFactor, mirrored));
|
||||
}
|
||||
}
|
|
@ -3,6 +3,7 @@ package com.minelittlepony.model.anim;
|
|||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
//#MineLittlePony#
|
||||
public class BasicEasingInterpolator implements IInterpolator {
|
||||
|
||||
private final Map<String, Float> properties = new HashMap<String, Float>();
|
7
src/external/java/com/minelittlepony/model/anim/IInterpolator.java
vendored
Normal file
7
src/external/java/com/minelittlepony/model/anim/IInterpolator.java
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
package com.minelittlepony.model.anim;
|
||||
|
||||
// #MineLittlePony#
|
||||
@FunctionalInterface
|
||||
public interface IInterpolator {
|
||||
float interpolate(String key, float to, float scalingFactor);
|
||||
}
|
|
@ -5,6 +5,7 @@ import net.minecraft.util.math.MathHelper;
|
|||
|
||||
import com.minelittlepony.util.math.MathUtil;
|
||||
|
||||
//#MineLittlePony#
|
||||
public abstract class MotionCompositor {
|
||||
|
||||
protected double calculateRoll(EntityPlayer player, double motionX, double motionY, double motionZ) {
|
|
@ -2,6 +2,7 @@ package com.minelittlepony.util.math;
|
|||
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
|
||||
//#MineLittlePony#
|
||||
public class MathUtil {
|
||||
|
||||
public static double clampLimit(double num, double limit) {
|
Loading…
Reference in a new issue