Skip to content

Commit

Permalink
Add support for creating drawables with custom sized textures
Browse files Browse the repository at this point in the history
  • Loading branch information
mezz committed Nov 16, 2016
1 parent 1949954 commit b85fd73
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 11 deletions.
4 changes: 2 additions & 2 deletions gradle.properties
@@ -1,8 +1,8 @@
mcversion=1.11
forgeversion=13.19.0.2127-1.11.x
forgeversion=13.19.0.2130
mcp_mappings=snapshot_20161115
curse_project_id=238222

version_major=4
version_minor=0
version_patch=0
version_patch=1
8 changes: 8 additions & 0 deletions src/main/java/mezz/jei/api/IGuiHelper.java
Expand Up @@ -12,8 +12,16 @@
*/
public interface IGuiHelper {

/**
* Create a drawable from part of a standard 256x256 gui texture.
*/
IDrawableStatic createDrawable(ResourceLocation resourceLocation, int u, int v, int width, int height);

/**
* Create a drawable from part of an arbitrary sized texture.
*/
IDrawableStatic createDrawable(ResourceLocation resourceLocation, int u, int v, int width, int height, int textureWidth, int textureHeight);

IDrawableStatic createDrawable(ResourceLocation resourceLocation, int u, int v, int width, int height, int paddingTop, int paddingBottom, int paddingLeft, int paddingRight);

/**
Expand Down
15 changes: 8 additions & 7 deletions src/main/java/mezz/jei/gui/DrawableResource.java
Expand Up @@ -2,12 +2,15 @@

import mezz.jei.api.gui.IDrawableStatic;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.client.config.GuiUtils;

public class DrawableResource implements IDrawableStatic {

private final ResourceLocation resourceLocation;
private final int textureWidth;
private final int textureHeight;

private final int u;
private final int v;
private final int width;
Expand All @@ -17,12 +20,10 @@ public class DrawableResource implements IDrawableStatic {
private final int paddingLeft;
private final int paddingRight;

public DrawableResource(ResourceLocation resourceLocation, int u, int v, int width, int height) {
this(resourceLocation, u, v, width, height, 0, 0, 0, 0);
}

public DrawableResource(ResourceLocation resourceLocation, int u, int v, int width, int height, int paddingTop, int paddingBottom, int paddingLeft, int paddingRight) {
public DrawableResource(ResourceLocation resourceLocation, int u, int v, int width, int height, int paddingTop, int paddingBottom, int paddingLeft, int paddingRight, int textureWidth, int textureHeight) {
this.resourceLocation = resourceLocation;
this.textureWidth = textureWidth;
this.textureHeight = textureHeight;

this.u = u;
this.v = v;
Expand Down Expand Up @@ -65,6 +66,6 @@ public void draw(Minecraft minecraft, int xOffset, int yOffset, int maskTop, int
int v = this.v + maskTop;
int width = this.width - maskRight - maskLeft;
int height = this.height - maskBottom - maskTop;
GuiUtils.drawTexturedModalRect(x, y, u, v, width, height, 0);
Gui.drawModalRectWithCustomSizedTexture(x, y, u, v, width, height, textureWidth, textureHeight);
}
}
13 changes: 11 additions & 2 deletions src/main/java/mezz/jei/gui/GuiHelper.java
Expand Up @@ -37,7 +37,16 @@ public IDrawableStatic createDrawable(@Nullable ResourceLocation resourceLocatio
Log.error("Null resourceLocation, returning blank drawable", new NullPointerException());
return createBlankDrawable(width, height);
}
return new DrawableResource(resourceLocation, u, v, width, height);
return new DrawableResource(resourceLocation, u, v, width, height, 0, 0, 0, 0, 256, 256);
}

@Override
public IDrawableStatic createDrawable(@Nullable ResourceLocation resourceLocation, int u, int v, int width, int height, int textureWidth, int textureHeight) {
if (resourceLocation == null) {
Log.error("Null resourceLocation, returning blank drawable", new NullPointerException());
return createBlankDrawable(width, height);
}
return new DrawableResource(resourceLocation, u, v, width, height, 0, 0, 0, 0, textureWidth, textureHeight);
}

@Override
Expand All @@ -46,7 +55,7 @@ public IDrawableStatic createDrawable(@Nullable ResourceLocation resourceLocatio
Log.error("Null resourceLocation, returning blank drawable", new NullPointerException());
return createBlankDrawable(width, height);
}
return new DrawableResource(resourceLocation, u, v, width, height, paddingTop, paddingBottom, paddingLeft, paddingRight);
return new DrawableResource(resourceLocation, u, v, width, height, paddingTop, paddingBottom, paddingLeft, paddingRight, 256, 256);
}

@Override
Expand Down

0 comments on commit b85fd73

Please sign in to comment.