Initial comment to start using Blood Utils' book
This commit is contained in:
parent
d1fa088923
commit
51346b5638
90 changed files with 2272 additions and 21 deletions
4
src/api/java/bloodutils/api/BUApi.java
Normal file
4
src/api/java/bloodutils/api/BUApi.java
Normal file
|
@ -0,0 +1,4 @@
|
|||
package bloodutils.api;
|
||||
|
||||
public class BUApi {
|
||||
}
|
83
src/api/java/bloodutils/api/classes/guide/GuiCategories.java
Normal file
83
src/api/java/bloodutils/api/classes/guide/GuiCategories.java
Normal file
|
@ -0,0 +1,83 @@
|
|||
package bloodutils.api.classes.guide;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import bloodutils.api.classes.guide.elements.ElementCategory;
|
||||
import bloodutils.api.compact.Category;
|
||||
import bloodutils.api.registries.EntryRegistry;
|
||||
|
||||
public class GuiCategories extends GuiScreen{
|
||||
public GuiCategories(EntityPlayer player){
|
||||
this.player = player;
|
||||
}
|
||||
private static final ResourceLocation gui = new ResourceLocation("bloodutils:textures/gui/front.png");
|
||||
|
||||
int gwidth = 192;
|
||||
int gheight = 192;
|
||||
int x, y;
|
||||
ElementCategory[] categories = new ElementCategory[EntryRegistry.categories.size()];
|
||||
EntityPlayer player;
|
||||
|
||||
@Override
|
||||
public void initGui(){
|
||||
super.initGui();
|
||||
x = (this.width/2) - (gwidth/2);
|
||||
y = (this.height/2) - (gheight/2);
|
||||
this.buttonList.clear();
|
||||
|
||||
int pX = x - 1;
|
||||
int pY = y + 12;
|
||||
|
||||
int iWidth = 20;
|
||||
int iHeight = 20;
|
||||
for(int i = 0; i < EntryRegistry.categories.size(); i++){
|
||||
Category category = EntryRegistry.categories.get(i);
|
||||
this.categories[i] = new ElementCategory(category, pX, pY + (i*iHeight) - 2, iWidth, iHeight, this.player);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mX, int mY, float f1){
|
||||
super.drawScreen(mX, mY, f1);
|
||||
int fHeight = Minecraft.getMinecraft().fontRenderer.FONT_HEIGHT;
|
||||
|
||||
GL11.glColor4f(1F, 1F, 1F, 1F);
|
||||
this.mc.renderEngine.bindTexture(gui);
|
||||
drawTexturedModalRect(x, y, 0, 0, gwidth, gheight);
|
||||
|
||||
/** Title */
|
||||
String str = "Categories";
|
||||
this.drawCenteredString(fontRendererObj, str, this.x + gwidth / 2, y - 15, 0x336666);
|
||||
|
||||
for(int i = 0; i < EntryRegistry.categories.size(); i++){
|
||||
ElementCategory category = this.categories[i];
|
||||
category.drawElement();
|
||||
|
||||
if(category.isMouseInElement(mX, mY)){
|
||||
category.onMouseEnter(mX, mY);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseClicked(int mX, int mY, int type){
|
||||
super.mouseClicked(mX, mY, type);
|
||||
|
||||
for(int i = 0; i < EntryRegistry.categories.size(); i++){
|
||||
ElementCategory category = this.categories[i];
|
||||
if(category.isMouseInElement(mX, mY)){
|
||||
category.onMouseClick(mX, mY, type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doesGuiPauseGame(){
|
||||
return false;
|
||||
}
|
||||
}
|
150
src/api/java/bloodutils/api/classes/guide/GuiEntry.java
Normal file
150
src/api/java/bloodutils/api/classes/guide/GuiEntry.java
Normal file
|
@ -0,0 +1,150 @@
|
|||
package bloodutils.api.classes.guide;
|
||||
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import bloodutils.api.classes.guide.buttons.ButtonNext;
|
||||
import bloodutils.api.compact.Category;
|
||||
import bloodutils.api.compact.Entry;
|
||||
import bloodutils.api.entries.IEntry;
|
||||
import bloodutils.api.registries.EntryRegistry;
|
||||
|
||||
public class GuiEntry extends GuiScreen{
|
||||
public GuiEntry(String key, EntityPlayer player, Category category){
|
||||
this.key = key;
|
||||
this.player = player;
|
||||
this.category = category;
|
||||
}
|
||||
|
||||
public GuiEntry(String key, EntityPlayer player, Category category, int currPage){
|
||||
this.key = key;
|
||||
this.player = player;
|
||||
this.category = category;
|
||||
this.currPage = currPage;
|
||||
}
|
||||
|
||||
private static final ResourceLocation gui = new ResourceLocation("bloodutils:textures/gui/guide.png");
|
||||
int gwidth = 192;
|
||||
int gheight = 192;
|
||||
int prevPage;
|
||||
int left, top;
|
||||
|
||||
String key;
|
||||
|
||||
int currPage = 1;
|
||||
GuiButton next, prev, back;
|
||||
EntityPlayer player;
|
||||
Category category;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void initGui(){
|
||||
super.initGui();
|
||||
left = (this.width/2) - (gwidth/2);
|
||||
top = (this.height/2) - (gheight/2);
|
||||
this.buttonList.clear();
|
||||
int k = (this.width - this.gwidth) / 2;
|
||||
|
||||
this.buttonList.add(next = new ButtonNext(500, k + 120, top + 160, true));
|
||||
this.buttonList.add(prev = new ButtonNext(501, k + 38, top + 160, false));
|
||||
|
||||
Entry e = EntryRegistry.entries.get(this.category).get(this.key);
|
||||
if(e != null){
|
||||
IEntry entry = e.entry[this.currPage - 1];
|
||||
if(entry != null)
|
||||
entry.initGui(gwidth, gheight, left, top, player, this.buttonList);
|
||||
}else{
|
||||
mc.displayGuiScreen(new GuiCategories(this.player));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mX, int mY, float f1){
|
||||
GL11.glColor4f(1F, 1F, 1F, 1F);
|
||||
this.mc.renderEngine.bindTexture(gui);
|
||||
drawTexturedModalRect(left, top, 0, 0, gwidth, gheight);
|
||||
Entry e = EntryRegistry.entries.get(this.category).get(this.key);
|
||||
|
||||
/** Title */
|
||||
String str = e.name;
|
||||
this.drawCenteredString(fontRendererObj, str, this.left + gwidth / 2, top - 15, 0x336666);
|
||||
|
||||
/** Current Page */
|
||||
this.drawCenteredString(fontRendererObj, (currPage) + "/" + (e.entry.length), this.left + gwidth / 2, top + 160, 0x336666);
|
||||
|
||||
IEntry entry = e.entry[currPage - 1];
|
||||
if(entry != null){
|
||||
entry.draw(this, gwidth, gheight, left, top, player, e.name, currPage, mX, mY);
|
||||
}
|
||||
super.drawScreen(mX, mY, f1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseClicked(int mX, int mY, int type){
|
||||
super.mouseClicked(mX, mY, type);
|
||||
|
||||
if(type == 1)
|
||||
mc.displayGuiScreen(new GuiIndex(this.category, this.player));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void keyTyped(char c, int i){
|
||||
super.keyTyped(c, i);
|
||||
|
||||
if(Keyboard.getEventKeyState()){
|
||||
if(i == 14){
|
||||
mc.displayGuiScreen(new GuiIndex(this.category, this.player));
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doesGuiPauseGame(){
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void actionPerformed(GuiButton button){
|
||||
int id = button.id;
|
||||
int maxPages = EntryRegistry.entries.get(this.category).get(this.key).entry.length;
|
||||
|
||||
if(id == 500){
|
||||
if(currPage < maxPages){
|
||||
currPage++;
|
||||
initGui();
|
||||
}
|
||||
}else if(id == 501){
|
||||
if(currPage > 1){
|
||||
currPage--;
|
||||
initGui();
|
||||
}
|
||||
}else{
|
||||
Entry e = EntryRegistry.entries.get(this.category).get(this.key);
|
||||
if(e != null){
|
||||
IEntry entry = e.entry[this.currPage];
|
||||
if(entry != null)
|
||||
entry.actionPerformed(button);
|
||||
}else{
|
||||
mc.displayGuiScreen(new GuiCategories(this.player));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGuiClosed(){
|
||||
ItemStack held = player.getHeldItem();
|
||||
if(held.hasTagCompound()){
|
||||
held.getTagCompound().setString("CATEGORY", this.category.name);
|
||||
held.getTagCompound().setString("KEY", this.key);
|
||||
held.getTagCompound().setInteger("PAGE", this.currPage);
|
||||
}
|
||||
}
|
||||
}
|
213
src/api/java/bloodutils/api/classes/guide/GuiIndex.java
Normal file
213
src/api/java/bloodutils/api/classes/guide/GuiIndex.java
Normal file
|
@ -0,0 +1,213 @@
|
|||
package bloodutils.api.classes.guide;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import bloodutils.api.classes.guide.buttons.ButtonNext;
|
||||
import bloodutils.api.classes.guide.buttons.ButtonPage;
|
||||
import bloodutils.api.classes.guide.elements.ElementCategory;
|
||||
import bloodutils.api.compact.Category;
|
||||
import bloodutils.api.compact.Entry;
|
||||
import bloodutils.api.registries.EntryRegistry;
|
||||
|
||||
public class GuiIndex extends GuiScreen{
|
||||
public GuiIndex(Category category, EntityPlayer player){
|
||||
this.category = category;
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
public GuiIndex(Category category, EntityPlayer player, int currPage){
|
||||
this.category = category;
|
||||
this.player = player;
|
||||
this.currPage = currPage;
|
||||
}
|
||||
private static final ResourceLocation gui = new ResourceLocation("bloodutils:textures/gui/guide.png");
|
||||
GuiButton prev, next, back;
|
||||
|
||||
Category category;
|
||||
EntityPlayer player;
|
||||
|
||||
ElementCategory[] categories = new ElementCategory[EntryRegistry.categories.size()];
|
||||
|
||||
int gwidth = 192;
|
||||
int gheight = 192;
|
||||
int left, top;
|
||||
int currPage = 0;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void initGui(){
|
||||
super.initGui();
|
||||
left = (this.width/2) - (gwidth/2);
|
||||
top = (this.height/2) - (gheight/2);
|
||||
this.buttonList.clear();
|
||||
|
||||
populate();
|
||||
drawCategories();
|
||||
|
||||
int k = (this.width - this.gwidth) / 2;
|
||||
this.buttonList.add(next = new ButtonNext(500, k + 120, top + 160, true));
|
||||
this.buttonList.add(prev = new ButtonNext(501, k + 38, top + 160, false));
|
||||
}
|
||||
|
||||
public void drawCategories(){
|
||||
int pX = left - 1;
|
||||
int pY = top + 12;
|
||||
|
||||
int iWidth = 20;
|
||||
int iHeight = 20;
|
||||
for(int i = 0; i < EntryRegistry.categories.size(); i++){
|
||||
Category category = EntryRegistry.categories.get(i);
|
||||
this.categories[i] = new ElementCategory(category, pX, pY + (i*iHeight) - 2, iWidth, iHeight, this.player);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public void populate(){
|
||||
this.buttonList.clear();
|
||||
|
||||
HashMap<String, Entry> entries = EntryRegistry.entries.get(this.category);
|
||||
int x, y;
|
||||
|
||||
if(entries != null && !entries.isEmpty()){
|
||||
int j = 0;
|
||||
for(int i = 0; i < entries.size(); i++){
|
||||
Entry entry = (Entry)entries.values().toArray()[i];
|
||||
if(entry != null && entry.indexPage == this.currPage){
|
||||
x = this.left + gwidth / 2 - 75;
|
||||
y = (top + 15) + (10*j);
|
||||
buttonList.add(new ButtonPage(j, x, y, 110, 10, ""));
|
||||
j++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int k = (this.width - this.gwidth) / 2;
|
||||
|
||||
this.buttonList.add(next = new ButtonNext(500, k + 120, top + 160, true));
|
||||
this.buttonList.add(prev = new ButtonNext(501, k + 38, top + 160, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mX, int mY, float f1){
|
||||
GL11.glColor4f(1F, 1F, 1F, 1F);
|
||||
this.mc.renderEngine.bindTexture(gui);
|
||||
drawTexturedModalRect(left, top, 0, 0, gwidth, gheight);
|
||||
|
||||
/** Title */
|
||||
String str = category.name;
|
||||
this.drawCenteredString(fontRendererObj, str, this.left + gwidth / 2, top - 15, 0x336666);
|
||||
|
||||
/** Current Page */
|
||||
if(this.category != null && EntryRegistry.maxEntries.containsKey(this.category)){
|
||||
int size = EntryRegistry.maxEntries.get(this.category);
|
||||
this.drawCenteredString(fontRendererObj, (currPage + 1) + "/" + (size + 1), this.left + gwidth / 2, top + 160, 0x336666);
|
||||
registerButtons();
|
||||
}
|
||||
|
||||
for(int i = 0; i < EntryRegistry.categories.size(); i++){
|
||||
ElementCategory category = this.categories[i];
|
||||
category.drawElement();
|
||||
|
||||
if(category.isMouseInElement(mX, mY)){
|
||||
category.onMouseEnter(mX, mY);
|
||||
}
|
||||
}
|
||||
super.drawScreen(mX, mY, f1);
|
||||
}
|
||||
|
||||
public void registerButtons(){
|
||||
HashMap<String, Entry> entries = EntryRegistry.entries.get(this.category);
|
||||
if(entries != null && !entries.isEmpty()){
|
||||
int j = 0;
|
||||
for(int i = 0; i < entries.size(); i++){
|
||||
Entry entry = (Entry)entries.values().toArray()[i];
|
||||
|
||||
if(entry != null && entry.indexPage == this.currPage){
|
||||
String title = entry.name;
|
||||
if(title != null && buttonList.get(j) != null && buttonList.get(j) instanceof ButtonPage){
|
||||
ButtonPage button = (ButtonPage) buttonList.get(j);
|
||||
button.displayString = title;
|
||||
j++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseClicked(int mX, int mY, int type){
|
||||
super.mouseClicked(mX, mY, type);
|
||||
|
||||
if(type == 1)
|
||||
mc.displayGuiScreen(new GuiCategories(this.player));
|
||||
|
||||
for(int i = 0; i < EntryRegistry.categories.size(); i++){
|
||||
ElementCategory category = this.categories[i];
|
||||
if(category.isMouseInElement(mX, mY)){
|
||||
category.onMouseClick(mX, mY, type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doesGuiPauseGame(){
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void actionPerformed(GuiButton button){
|
||||
int id = button.id;
|
||||
int size;
|
||||
if(EntryRegistry.maxEntries.containsKey(this.category))
|
||||
size = EntryRegistry.maxEntries.get(this.category);
|
||||
else
|
||||
size = 1;
|
||||
if(id == 500){
|
||||
if(currPage + 1 < size + 1){
|
||||
currPage++;
|
||||
populate();
|
||||
registerButtons();
|
||||
}
|
||||
}else if(id == 501){
|
||||
if(currPage > 0){
|
||||
currPage--;
|
||||
populate();
|
||||
registerButtons();
|
||||
}
|
||||
}else{
|
||||
mc.displayGuiScreen(new GuiEntry(button.displayString, player, category));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void keyTyped(char c, int i){
|
||||
super.keyTyped(c, i);
|
||||
|
||||
if(Keyboard.getEventKeyState()){
|
||||
if(i == 14){
|
||||
mc.displayGuiScreen(new GuiCategories(this.player));
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGuiClosed(){
|
||||
ItemStack held = player.getHeldItem();
|
||||
if(held.hasTagCompound()){
|
||||
held.getTagCompound().setString("CATEGORY", this.category.name);
|
||||
held.getTagCompound().setString("KEY", "0");
|
||||
held.getTagCompound().setInteger("PAGE", this.currPage);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
package bloodutils.api.classes.guide.buttons;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class ButtonNext extends GuiButton {
|
||||
private final boolean field_146151_o;
|
||||
|
||||
public ButtonNext(int id, int x, int y, boolean p_i1079_4_){
|
||||
super(id, x, y, 23, 13, "");
|
||||
this.field_146151_o = p_i1079_4_;
|
||||
}
|
||||
|
||||
public void drawButton(Minecraft mc, int p_146112_2_, int p_146112_3_){
|
||||
if (this.visible){
|
||||
boolean flag = p_146112_2_ >= this.xPosition && p_146112_3_ >= this.yPosition && p_146112_2_ < this.xPosition + this.width && p_146112_3_ < this.yPosition + this.height;
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
mc.getTextureManager().bindTexture(new ResourceLocation("bloodutils:textures/gui/guide.png"));
|
||||
int k = 0;
|
||||
int l = 192;
|
||||
|
||||
if (flag){
|
||||
k += 23;
|
||||
}
|
||||
|
||||
if (!this.field_146151_o){
|
||||
l += 13;
|
||||
}
|
||||
|
||||
this.drawTexturedModalRect(this.xPosition, this.yPosition, k, l, 23, 13);
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
package bloodutils.api.classes.guide.buttons;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
|
||||
public class ButtonPage extends GuiButton {
|
||||
|
||||
public ButtonPage(int id, int xPos, int yPos, int width, int height, String string) {
|
||||
super(id, xPos, yPos, width, height, string);
|
||||
}
|
||||
int gwidth = 170;
|
||||
int gheight = 180;
|
||||
|
||||
@Override
|
||||
public void drawButton(Minecraft mc, int x, int y) {
|
||||
field_146123_n = x >= xPosition && y >= yPosition && x < xPosition + width && y < yPosition + height;
|
||||
int state = getHoverState(field_146123_n);
|
||||
x = this.xPosition + width / 2 - 30;
|
||||
y = this.yPosition + (height - 6) / 2;
|
||||
mc.fontRenderer.setUnicodeFlag(true);
|
||||
mc.fontRenderer.drawString(displayString, x + (state == 2 ? 5 : 0), y, calcColor(state));
|
||||
mc.fontRenderer.setUnicodeFlag(false);
|
||||
}
|
||||
|
||||
public int calcColor(int state){
|
||||
if(state == 2)
|
||||
return new Color(155, 155, 155).getRGB();
|
||||
else
|
||||
return new Color(55, 55, 55).getRGB();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
package bloodutils.api.classes.guide.elements;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import bloodutils.api.classes.guide.GuiIndex;
|
||||
import bloodutils.api.compact.Category;
|
||||
import bloodutils.api.helpers.GuiHelper;
|
||||
import bloodutils.api.interfaces.IEntryElement;
|
||||
|
||||
public class ElementCategory extends GuiScreen implements IEntryElement{
|
||||
public ElementCategory(Category category, int x, int y, int width, int height, EntityPlayer player) {
|
||||
this.category = category;
|
||||
this.player = player;
|
||||
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
}
|
||||
public Category category;
|
||||
public EntityPlayer player;
|
||||
|
||||
public int x;
|
||||
public int y;
|
||||
public int width;
|
||||
public int height;
|
||||
|
||||
|
||||
@Override
|
||||
public void drawElement() {
|
||||
IIcon icon = category.iconStack.getIconIndex();
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(new ResourceLocation("bloodutils:textures/misc/tab.png"));
|
||||
GuiHelper.drawIconWithoutColor(x - 1, y - 1, width + 2 , height + 2, 0);
|
||||
|
||||
GuiHelper.renderIcon(x + 3, y + 2, 16, 16, icon, this.category.type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMouseInElement(int mX, int mY) {
|
||||
return GuiHelper.isMouseBetween(mX, mY, x, y, width, height);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMouseEnter(int mX, int mY) {
|
||||
Minecraft.getMinecraft().fontRenderer.drawString(this.category.name, mX + 6, mY, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMouseClick(int mX, int mY, int type){
|
||||
Minecraft.getMinecraft().displayGuiScreen(new GuiIndex(this.category, this.player));
|
||||
}
|
||||
}
|
18
src/api/java/bloodutils/api/compact/Category.java
Normal file
18
src/api/java/bloodutils/api/compact/Category.java
Normal file
|
@ -0,0 +1,18 @@
|
|||
package bloodutils.api.compact;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import bloodutils.api.enums.EnumType;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class Category {
|
||||
public Category(String name, ItemStack iconStack, EnumType type){
|
||||
this.name = name;
|
||||
this.iconStack = iconStack;
|
||||
this.type = type;
|
||||
}
|
||||
public String name;
|
||||
public ItemStack iconStack;
|
||||
|
||||
public EnumType type;
|
||||
}
|
21
src/api/java/bloodutils/api/compact/CompactItem.java
Normal file
21
src/api/java/bloodutils/api/compact/CompactItem.java
Normal file
|
@ -0,0 +1,21 @@
|
|||
package bloodutils.api.compact;
|
||||
|
||||
import net.minecraft.item.Item;
|
||||
|
||||
public class CompactItem {
|
||||
public CompactItem(Item item1, Item item2){
|
||||
this.item1 = item1;
|
||||
this.item2 = item2;
|
||||
}
|
||||
public Item item1;
|
||||
public Item item2;
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj){
|
||||
if(obj instanceof CompactItem){
|
||||
CompactItem ci = (CompactItem)obj;
|
||||
return ci.item1 == this.item1 && ci.item2 == this.item2;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
14
src/api/java/bloodutils/api/compact/Entry.java
Normal file
14
src/api/java/bloodutils/api/compact/Entry.java
Normal file
|
@ -0,0 +1,14 @@
|
|||
package bloodutils.api.compact;
|
||||
|
||||
import bloodutils.api.entries.IEntry;
|
||||
|
||||
public class Entry {
|
||||
public Entry(IEntry[] entry, String name, int indexPage){
|
||||
this.entry = entry;
|
||||
this.name = name;
|
||||
this.indexPage = indexPage - 1;
|
||||
}
|
||||
public IEntry[] entry;
|
||||
public String name;
|
||||
public int indexPage;
|
||||
}
|
127
src/api/java/bloodutils/api/entries/EntryAltarRecipe.java
Normal file
127
src/api/java/bloodutils/api/entries/EntryAltarRecipe.java
Normal file
|
@ -0,0 +1,127 @@
|
|||
package bloodutils.api.entries;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.client.renderer.entity.RenderItem;
|
||||
import net.minecraft.client.renderer.texture.TextureManager;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.IRecipe;
|
||||
import net.minecraft.item.crafting.ShapedRecipes;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.oredict.ShapedOreRecipe;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GL12;
|
||||
|
||||
import WayofTime.alchemicalWizardry.api.altarRecipeRegistry.AltarRecipe;
|
||||
import bloodutils.api.classes.guide.GuiEntry;
|
||||
|
||||
public class EntryAltarRecipe implements IEntry{
|
||||
public EntryAltarRecipe(AltarRecipe recipes){
|
||||
this.recipes = recipes;
|
||||
populate(recipes);
|
||||
}
|
||||
public AltarRecipe recipes;
|
||||
|
||||
public ItemStack input;
|
||||
public ItemStack output;
|
||||
public int essence;
|
||||
|
||||
public ArrayList<ItemIcon> icons = new ArrayList<ItemIcon>();
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public void populate(AltarRecipe recipe){
|
||||
this.input = recipe.requiredItem;
|
||||
this.output = recipe.result;
|
||||
this.essence = recipe.liquidRequired;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(GuiEntry entry, int width, int height, int left, int top, EntityPlayer player, String key, int page, int mX, int mY){
|
||||
int x, y;
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
GL11.glColor4f(1F, 1F, 1F, 1F);
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
|
||||
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
||||
renderOverlay(entry, width, height, left, top);
|
||||
|
||||
x = left + width / 2 - (65-45);
|
||||
y = (height/2 - 36) + (18*(4-3));
|
||||
drawIcon(this.input, x, y);
|
||||
|
||||
/** Result */
|
||||
x = left + width / 2 - (65-(48+48)-5);
|
||||
y = (height/2 - 36) + (18*(4-3));
|
||||
drawIcon(this.output, x, y);
|
||||
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
|
||||
for(ItemIcon icon : icons){
|
||||
if(icon.stack != null)
|
||||
icon.onMouseBetween(mX, mY);
|
||||
}
|
||||
}
|
||||
|
||||
public void drawIcon(ItemStack stack, int x, int y){
|
||||
RenderItem ri = new RenderItem();
|
||||
ri.renderItemAndEffectIntoGUI(Minecraft.getMinecraft().fontRenderer, Minecraft.getMinecraft().getTextureManager(), stack, x, y);
|
||||
ri.renderItemOverlayIntoGUI(Minecraft.getMinecraft().fontRenderer, Minecraft.getMinecraft().getTextureManager(), stack, x, y);
|
||||
|
||||
icons.add(new ItemIcon(stack, x, y));
|
||||
}
|
||||
|
||||
public void renderOverlay(GuiEntry entry, int width, int height, int left, int top){
|
||||
TextureManager tm = Minecraft.getMinecraft().getTextureManager();
|
||||
tm.bindTexture(new ResourceLocation("bloodutils:textures/gui/altar.png"));
|
||||
entry.drawTexturedModalRect(left, (height/2 - 36) + (18*0) - 17, 0, 0, width, height);
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
@Override
|
||||
public void initGui(int width, int height, int left, int top,
|
||||
EntityPlayer player, List buttonList){
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(GuiButton button){
|
||||
|
||||
}
|
||||
|
||||
static class ItemIcon {
|
||||
public ItemIcon(ItemStack stack, int x, int y){
|
||||
this.stack = stack;
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
public ItemStack stack;
|
||||
public int x, y;
|
||||
|
||||
public void onMouseBetween(int mX, int mY){
|
||||
int xSize = x + 16;
|
||||
int ySize = y + 16;
|
||||
|
||||
|
||||
if(mX > x && mX < xSize && mY > y && mY < ySize){
|
||||
GL11.glDisable(GL11.GL_DEPTH_TEST);
|
||||
if(stack != null && stack.getDisplayName() != null)
|
||||
Minecraft.getMinecraft().fontRenderer.drawString(stack.getDisplayName(), mX + 6, mY, new Color(139, 137, 137).getRGB());
|
||||
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
204
src/api/java/bloodutils/api/entries/EntryCraftingRecipe.java
Normal file
204
src/api/java/bloodutils/api/entries/EntryCraftingRecipe.java
Normal file
|
@ -0,0 +1,204 @@
|
|||
package bloodutils.api.entries;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.client.renderer.entity.RenderItem;
|
||||
import net.minecraft.client.renderer.texture.TextureManager;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.IRecipe;
|
||||
import net.minecraft.item.crafting.ShapedRecipes;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.oredict.ShapedOreRecipe;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GL12;
|
||||
|
||||
import WayofTime.alchemicalWizardry.ModItems;
|
||||
import WayofTime.alchemicalWizardry.api.items.ShapedBloodOrbRecipe;
|
||||
import bloodutils.api.classes.guide.GuiEntry;
|
||||
|
||||
public class EntryCraftingRecipe implements IEntry{
|
||||
public EntryCraftingRecipe(IRecipe recipes){
|
||||
this.recipes = recipes;
|
||||
populate(recipes);
|
||||
}
|
||||
public IRecipe recipes;
|
||||
|
||||
public ItemStack[] recipe;
|
||||
public ItemStack output;
|
||||
|
||||
public ArrayList<ItemIcon> icons = new ArrayList<ItemIcon>();
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public void populate(IRecipe recipe){
|
||||
if(recipe instanceof ShapedRecipes){
|
||||
ShapedRecipes rec = (ShapedRecipes)recipe;
|
||||
if(rec != null && rec.recipeItems != null && rec.recipeItems.length > 0){
|
||||
this.recipe = rec.recipeItems;
|
||||
this.output = rec.getRecipeOutput();
|
||||
}
|
||||
}else if(recipe instanceof ShapedOreRecipe){
|
||||
ShapedOreRecipe rec = (ShapedOreRecipe)recipe;
|
||||
this.recipe = new ItemStack[rec.getInput().length];;
|
||||
for(int i = 0; i < rec.getInput().length; i++){
|
||||
ItemStack s = null;
|
||||
if(rec.getInput()[i] instanceof ItemStack){
|
||||
s = (ItemStack)rec.getInput()[i];
|
||||
}else{
|
||||
s = ((ArrayList<ItemStack>)rec.getInput()[i]).get(0);
|
||||
}
|
||||
this.recipe[i] = s;
|
||||
this.output = rec.getRecipeOutput();
|
||||
}
|
||||
}else if(recipe instanceof ShapedBloodOrbRecipe){
|
||||
ShapedBloodOrbRecipe rec = (ShapedBloodOrbRecipe)recipe;
|
||||
this.recipe = new ItemStack[rec.getInput().length];;
|
||||
for(int i = 0; i < rec.getInput().length; i++){
|
||||
ItemStack s = null;
|
||||
if(rec.getInput()[i] instanceof ItemStack){
|
||||
s = (ItemStack)rec.getInput()[i];
|
||||
}else if(rec.getInput()[i] instanceof Object){
|
||||
s = new ItemStack(ModItems.masterBloodOrb);
|
||||
}else{
|
||||
s = ((ArrayList<ItemStack>)rec.getInput()[i]).get(0);
|
||||
}
|
||||
this.recipe[i] = s;
|
||||
this.output = rec.getRecipeOutput();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(GuiEntry entry, int width, int height, int left, int top, EntityPlayer player, String key, int page, int mX, int mY){
|
||||
int x, y;
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
GL11.glColor4f(1F, 1F, 1F, 1F);
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
|
||||
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
||||
renderOverlay(entry, width, height, left, top);
|
||||
|
||||
/** Row 1 */
|
||||
x = (left + width / 2) - (65-31);
|
||||
y = (height/2 - 18) + (18*0);
|
||||
drawIcon(0, x, y);
|
||||
|
||||
x = left + width / 2 - (65-48) + 1;
|
||||
y = (height/2 - 18) + (18*(3-3));
|
||||
drawIcon(1, x, y);
|
||||
|
||||
x = left + width / 2 - (65-(48+16)-3);
|
||||
y = (height/2 - 18) + (18*(6-6));
|
||||
drawIcon(2, x, y);
|
||||
|
||||
/** Row 2 */
|
||||
x = (left + width / 2) - (65-31);
|
||||
y = (height/2 - 18) + (18*1);
|
||||
drawIcon(3, x, y);
|
||||
|
||||
x = left + width / 2 - (65-48) + 1;
|
||||
y = (height/2 - 18) + (18*(4-3));
|
||||
drawIcon(4, x, y);
|
||||
|
||||
x = left + width / 2 - (65-(48+16)-3);
|
||||
y = (height/2 - 18) + (18*(7-6));
|
||||
drawIcon(5, x, y);
|
||||
|
||||
/** Row 3 */
|
||||
x = (left + width / 2) - (65-31);
|
||||
y = (height/2 - 18) + (18*2);
|
||||
drawIcon(6, x, y);
|
||||
|
||||
x = left + width / 2 - (65-48) + 1;
|
||||
y = (height/2 - 18) + (18*(5-3));
|
||||
drawIcon(7, x, y);
|
||||
|
||||
x = left + width / 2 - (65-(48+16)-3);
|
||||
y = (height/2 - 18) + (18*(8-6));
|
||||
drawIcon(8, x, y);
|
||||
|
||||
/** Result */
|
||||
x = left + width / 2 - (65-(48+48)-5);
|
||||
y = (height/2 - 18) + (18*(4-3));
|
||||
drawIcon(this.output, x, y);
|
||||
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
|
||||
for(ItemIcon icon : icons){
|
||||
if(icon.stack != null)
|
||||
icon.onMouseBetween(mX, mY);
|
||||
}
|
||||
}
|
||||
|
||||
public void drawIcon(int entry, int x, int y){
|
||||
RenderItem ri = new RenderItem();
|
||||
if(recipe != null && recipe.length > 0 && recipe[entry] != null){
|
||||
ri.renderItemAndEffectIntoGUI(Minecraft.getMinecraft().fontRenderer, Minecraft.getMinecraft().getTextureManager(), recipe[entry], x, y);
|
||||
ri.renderItemOverlayIntoGUI(Minecraft.getMinecraft().fontRenderer, Minecraft.getMinecraft().getTextureManager(), recipe[entry], x, y);
|
||||
|
||||
icons.add(new ItemIcon(recipe[entry], x, y));
|
||||
}
|
||||
}
|
||||
|
||||
public void drawIcon(ItemStack stack, int x, int y){
|
||||
RenderItem ri = new RenderItem();
|
||||
ri.renderItemAndEffectIntoGUI(Minecraft.getMinecraft().fontRenderer, Minecraft.getMinecraft().getTextureManager(), stack, x, y);
|
||||
ri.renderItemOverlayIntoGUI(Minecraft.getMinecraft().fontRenderer, Minecraft.getMinecraft().getTextureManager(), stack, x, y);
|
||||
|
||||
icons.add(new ItemIcon(stack, x, y));
|
||||
}
|
||||
|
||||
public void renderOverlay(GuiEntry entry, int width, int height, int left, int top){
|
||||
TextureManager tm = Minecraft.getMinecraft().getTextureManager();
|
||||
tm.bindTexture(new ResourceLocation("bloodutils:textures/gui/crafting.png"));
|
||||
entry.drawTexturedModalRect(left, (height/2 - 18) + (18*0) - 17, 0, 0, width, height);
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
@Override
|
||||
public void initGui(int width, int height, int left, int top,
|
||||
EntityPlayer player, List buttonList){
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(GuiButton button){
|
||||
|
||||
}
|
||||
|
||||
static class ItemIcon {
|
||||
public ItemIcon(ItemStack stack, int x, int y){
|
||||
this.stack = stack;
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
public ItemStack stack;
|
||||
public int x, y;
|
||||
|
||||
public void onMouseBetween(int mX, int mY){
|
||||
int xSize = x + 16;
|
||||
int ySize = y + 16;
|
||||
|
||||
|
||||
if(mX > x && mX < xSize && mY > y && mY < ySize){
|
||||
GL11.glDisable(GL11.GL_DEPTH_TEST);
|
||||
if(stack != null && stack.getDisplayName() != null)
|
||||
Minecraft.getMinecraft().fontRenderer.drawString(stack.getDisplayName(), mX + 6, mY, new Color(139, 137, 137).getRGB());
|
||||
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
73
src/api/java/bloodutils/api/entries/EntryImage.java
Normal file
73
src/api/java/bloodutils/api/entries/EntryImage.java
Normal file
|
@ -0,0 +1,73 @@
|
|||
package bloodutils.api.entries;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.StatCollector;
|
||||
import bloodutils.api.classes.guide.GuiEntry;
|
||||
import bloodutils.api.helpers.GuiHelper;
|
||||
|
||||
public class EntryImage implements IEntry{
|
||||
public EntryImage(String resource, int iconWidth, int iconHeight){
|
||||
this.resource = new ResourceLocation(resource);
|
||||
this.iconWidth = iconWidth;
|
||||
this.iconHeight = iconHeight;
|
||||
}
|
||||
public ResourceLocation resource;
|
||||
public int iconWidth;
|
||||
public int iconHeight;
|
||||
|
||||
public EntryImage(String resource, int iconWidth, int iconHeight, String entryName){
|
||||
this.resource = new ResourceLocation(resource);
|
||||
this.iconWidth = iconWidth;
|
||||
this.iconHeight = iconHeight;
|
||||
this.entryName = entryName;
|
||||
}
|
||||
public String entryName;
|
||||
|
||||
|
||||
@Override
|
||||
public void draw(GuiEntry entry, int width, int height, int left, int top, EntityPlayer player, String key, int page, int mX, int mY){
|
||||
drawImage(entry, width, height, left, top, player, key, page, mX, mY);
|
||||
drawText(entry, width, height, left, top, player, key, page, mX, mY);
|
||||
}
|
||||
|
||||
public void drawImage(GuiEntry entry, int width, int height, int left, int top, EntityPlayer player, String key, int page, int mX, int mY){
|
||||
int x = left + 32;
|
||||
int y = top + 10;
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(this.resource);
|
||||
|
||||
GuiHelper.drawScaledIconWithoutColor(x, y, this.iconWidth, this.iconHeight, 0);
|
||||
}
|
||||
|
||||
public void drawText(GuiEntry entry, int width, int height, int left, int top, EntityPlayer player, String key, int page, int mX, int mY){
|
||||
int x, y;
|
||||
|
||||
if(this.entryName == null)
|
||||
this.entryName = key;
|
||||
|
||||
String s = StatCollector.translateToLocal("bu.entry." + this.entryName + "." + page);
|
||||
x = left + width / 2 - 58;
|
||||
y = (top + 15) + 65;
|
||||
|
||||
Minecraft.getMinecraft().fontRenderer.setUnicodeFlag(true);
|
||||
Minecraft.getMinecraft().fontRenderer.drawSplitString(s, x, y, 110, 0);
|
||||
Minecraft.getMinecraft().fontRenderer.setUnicodeFlag(false);
|
||||
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
@Override
|
||||
public void initGui(int width, int height, int left, int top,
|
||||
EntityPlayer player, List buttonList) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(GuiButton button){
|
||||
|
||||
}
|
||||
}
|
90
src/api/java/bloodutils/api/entries/EntryItemText.java
Normal file
90
src/api/java/bloodutils/api/entries/EntryItemText.java
Normal file
|
@ -0,0 +1,90 @@
|
|||
package bloodutils.api.entries;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.client.renderer.entity.RenderItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.StatCollector;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GL12;
|
||||
|
||||
import bloodutils.api.classes.guide.GuiEntry;
|
||||
|
||||
public class EntryItemText implements IEntry{
|
||||
public EntryItemText(ItemStack stack){
|
||||
this.stack = stack;
|
||||
}
|
||||
public ItemStack stack;
|
||||
|
||||
public EntryItemText(ItemStack stack, String entryName){
|
||||
this.stack = stack;
|
||||
this.entryName = entryName;
|
||||
}
|
||||
public String entryName;
|
||||
|
||||
@Override
|
||||
public void draw(GuiEntry entry, int width, int height, int left, int top, EntityPlayer player, String key, int page, int mX, int mY){
|
||||
drawText(entry, width, height, left, top, player, key, page, mX, mY);
|
||||
drawBlock(entry, width, height, left, top, player, key, page, mX, mY);
|
||||
}
|
||||
|
||||
public void drawText(GuiEntry entry, int width, int height, int left, int top, EntityPlayer player, String key, int page, int mX, int mY){
|
||||
int x, y;
|
||||
|
||||
if(this.entryName == null)
|
||||
this.entryName = key;
|
||||
|
||||
String s = StatCollector.translateToLocal("bu.entry." + this.entryName + "." + page);
|
||||
x = left + width / 2 - 58;
|
||||
y = (top + 15);
|
||||
|
||||
Minecraft.getMinecraft().fontRenderer.setUnicodeFlag(true);
|
||||
Minecraft.getMinecraft().fontRenderer.drawSplitString(s, x, y, 110, 0);
|
||||
Minecraft.getMinecraft().fontRenderer.setUnicodeFlag(false);
|
||||
|
||||
}
|
||||
|
||||
public void drawBlock(GuiEntry entry, int width, int height, int left, int top, EntityPlayer player, String key, int page, int mX, int mY){
|
||||
|
||||
RenderItem ri = new RenderItem();
|
||||
GL11.glPushMatrix();
|
||||
|
||||
GL11.glScaled(3, 3, 1);
|
||||
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
GL11.glColor4f(1F, 1F, 1F, 1F);
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
|
||||
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
||||
|
||||
ri.renderItemAndEffectIntoGUI(Minecraft.getMinecraft().fontRenderer, Minecraft.getMinecraft().getTextureManager(), stack, left - (left/2) + 2, top + 20);
|
||||
ri.renderItemOverlayIntoGUI(Minecraft.getMinecraft().fontRenderer, Minecraft.getMinecraft().getTextureManager(), stack, left - (left/2) + 2, top + 20);
|
||||
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
@Override
|
||||
public void initGui(int width, int height, int left, int top,
|
||||
EntityPlayer player, List buttonList) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(GuiButton button){
|
||||
|
||||
}
|
||||
}
|
38
src/api/java/bloodutils/api/entries/EntryRitualInfo.java
Normal file
38
src/api/java/bloodutils/api/entries/EntryRitualInfo.java
Normal file
|
@ -0,0 +1,38 @@
|
|||
package bloodutils.api.entries;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import bloodutils.api.classes.guide.GuiEntry;
|
||||
|
||||
public class EntryRitualInfo implements IEntry{
|
||||
public EntryRitualInfo(int cost){
|
||||
|
||||
this.cost = cost;
|
||||
}
|
||||
public int cost;
|
||||
|
||||
@Override
|
||||
public void draw(GuiEntry entry, int width, int height, int left, int top, EntityPlayer player, String key, int page, int mX, int mY){
|
||||
int x, y;
|
||||
x = left + width / 2 - 58;
|
||||
y = (top + 15);
|
||||
Minecraft.getMinecraft().fontRenderer.setUnicodeFlag(true);
|
||||
Minecraft.getMinecraft().fontRenderer.drawString("Cost: " + this.cost + " LP", x, y, 0);
|
||||
Minecraft.getMinecraft().fontRenderer.setUnicodeFlag(false);
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
@Override
|
||||
public void initGui(int width, int height, int left, int top,
|
||||
EntityPlayer player, List buttonList){
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(GuiButton button){
|
||||
|
||||
}
|
||||
}
|
48
src/api/java/bloodutils/api/entries/EntryText.java
Normal file
48
src/api/java/bloodutils/api/entries/EntryText.java
Normal file
|
@ -0,0 +1,48 @@
|
|||
package bloodutils.api.entries;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.StatCollector;
|
||||
import bloodutils.api.classes.guide.GuiEntry;
|
||||
|
||||
public class EntryText implements IEntry{
|
||||
public EntryText(){
|
||||
|
||||
}
|
||||
|
||||
public EntryText(String entryName){
|
||||
this.entryName = entryName;
|
||||
}
|
||||
public String entryName;
|
||||
|
||||
@Override
|
||||
public void draw(GuiEntry entry, int width, int height, int left, int top, EntityPlayer player, String key, int page, int mX, int mY){
|
||||
int x, y;
|
||||
|
||||
if(this.entryName == null)
|
||||
this.entryName = key;
|
||||
|
||||
String s = StatCollector.translateToLocal("bu.entry." + this.entryName + "." + page);
|
||||
x = left + width / 2 - 58;
|
||||
y = (top + 15);
|
||||
|
||||
Minecraft.getMinecraft().fontRenderer.setUnicodeFlag(true);
|
||||
Minecraft.getMinecraft().fontRenderer.drawSplitString(s, x, y, 110, 0);
|
||||
Minecraft.getMinecraft().fontRenderer.setUnicodeFlag(false);
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
@Override
|
||||
public void initGui(int width, int height, int left, int top,
|
||||
EntityPlayer player, List buttonList){
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(GuiButton button){
|
||||
|
||||
}
|
||||
}
|
25
src/api/java/bloodutils/api/entries/IEntry.java
Normal file
25
src/api/java/bloodutils/api/entries/IEntry.java
Normal file
|
@ -0,0 +1,25 @@
|
|||
package bloodutils.api.entries;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import bloodutils.api.classes.guide.GuiEntry;
|
||||
|
||||
public interface IEntry {
|
||||
/**
|
||||
* This get's called in GuiEntry, you can do whatever you want here (images, recipes, icons, text, combination of them)
|
||||
* @param width
|
||||
* @param height
|
||||
* @param left
|
||||
* @param top
|
||||
* @param player
|
||||
* The player who has the book open
|
||||
*/
|
||||
public void draw(GuiEntry entry, int width, int height, int left, int top, EntityPlayer player, String key, int page, int mX, int mY);
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
public void initGui(int width, int height, int left, int top, EntityPlayer player, List buttonList);
|
||||
|
||||
public void actionPerformed(GuiButton button);
|
||||
}
|
5
src/api/java/bloodutils/api/enums/EnumType.java
Normal file
5
src/api/java/bloodutils/api/enums/EnumType.java
Normal file
|
@ -0,0 +1,5 @@
|
|||
package bloodutils.api.enums;
|
||||
|
||||
public enum EnumType {
|
||||
BLOCK, ITEM;
|
||||
}
|
102
src/api/java/bloodutils/api/helpers/GuiHelper.java
Normal file
102
src/api/java/bloodutils/api/helpers/GuiHelper.java
Normal file
|
@ -0,0 +1,102 @@
|
|||
package bloodutils.api.helpers;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.texture.TextureMap;
|
||||
import net.minecraft.util.IIcon;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GL12;
|
||||
|
||||
import bloodutils.api.enums.EnumType;
|
||||
|
||||
public class GuiHelper {
|
||||
public static boolean isMouseBetween(int mouseX, int mouseY, int x, int y, int width, int height) {
|
||||
int xSize = x + width;
|
||||
int ySize = y + height;
|
||||
|
||||
return (mouseX > x && mouseX < xSize && mouseY > y && mouseY < ySize);
|
||||
}
|
||||
|
||||
public static void renderIcon(int x, int y, int width, int height, IIcon icon, EnumType type){
|
||||
if(type == EnumType.BLOCK)
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.locationBlocksTexture);
|
||||
else if(type == EnumType.ITEM)
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.locationItemsTexture);
|
||||
|
||||
int zLevel = 0;
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
GL11.glColor4f(1F, 1F, 1F, 1F);
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
|
||||
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
||||
|
||||
Tessellator t = Tessellator.instance;
|
||||
t.startDrawingQuads();
|
||||
t.addVertexWithUV((double)(x + 0), (double)(y + height), (double)zLevel, (double)icon.getMinU(), (double)icon.getMaxV());
|
||||
t.addVertexWithUV((double)(x + width), (double)(y + height), (double)zLevel, (double)icon.getMaxU(), (double)icon.getMaxV());
|
||||
t.addVertexWithUV((double)(x + width), (double)(y + 0), (double)zLevel, (double)icon.getMaxU(), (double)icon.getMinV());
|
||||
t.addVertexWithUV((double)(x + 0), (double)(y + 0), (double)zLevel, (double)icon.getMinU(), (double)icon.getMinV());
|
||||
t.draw();
|
||||
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
public static void drawScaledIconWithoutColor(int x, int y, int width, int height, float zLevel){
|
||||
GL11.glPushMatrix();
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
GL11.glColor4f(1F, 1F, 1F, 1F);
|
||||
GL11.glScaled(0.13D, 0.13D, 0.13D);
|
||||
GL11.glTranslated(x + 900, y + 250, 0);
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
|
||||
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
||||
|
||||
Tessellator t = Tessellator.instance;
|
||||
t.startDrawingQuads();
|
||||
t.addVertexWithUV(x + 0, y + height, zLevel, 0D, 1D);
|
||||
t.addVertexWithUV(x + width, y + height, zLevel, 1D, 1D);
|
||||
t.addVertexWithUV(x + width, y + 0, zLevel, 1D, 0D);
|
||||
t.addVertexWithUV(x + 0, y + 0, zLevel, 0D, 0D);
|
||||
t.draw();
|
||||
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
public static void drawIconWithoutColor(int x, int y, int width, int height, float zLevel){
|
||||
GL11.glPushMatrix();
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
GL11.glColor4f(1F, 1F, 1F, 1F);
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
|
||||
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
||||
|
||||
Tessellator t = Tessellator.instance;
|
||||
t.startDrawingQuads();
|
||||
t.addVertexWithUV(x + 0, y + height, zLevel, 0D, 1D);
|
||||
t.addVertexWithUV(x + width, y + height, zLevel, 1D, 1D);
|
||||
t.addVertexWithUV(x + width, y + 0, zLevel, 1D, 0D);
|
||||
t.addVertexWithUV(x + 0, y + 0, zLevel, 0D, 0D);
|
||||
t.draw();
|
||||
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
16
src/api/java/bloodutils/api/helpers/OreDictionaryHelper.java
Normal file
16
src/api/java/bloodutils/api/helpers/OreDictionaryHelper.java
Normal file
|
@ -0,0 +1,16 @@
|
|||
package bloodutils.api.helpers;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
|
||||
public class OreDictionaryHelper {
|
||||
public static boolean entryExists(String material){
|
||||
return OreDictionary.getOres(material).size() > 0;
|
||||
}
|
||||
|
||||
public static ItemStack getItemStack(String material, int entry){
|
||||
if(entryExists(material))
|
||||
return OreDictionary.getOres(material).get(entry);
|
||||
return null;
|
||||
}
|
||||
}
|
41
src/api/java/bloodutils/api/interfaces/IEntryElement.java
Normal file
41
src/api/java/bloodutils/api/interfaces/IEntryElement.java
Normal file
|
@ -0,0 +1,41 @@
|
|||
package bloodutils.api.interfaces;
|
||||
|
||||
/**
|
||||
* Copied from WaslieCore, to make it no longer require it in the API. (https://github.com/wasliebob/WaslieCore/blob/master/src/main/java/wasliecore/interfaces/IElement.java)
|
||||
*/
|
||||
public interface IEntryElement{
|
||||
/**
|
||||
* In here you need to draw the element
|
||||
*/
|
||||
public void drawElement();
|
||||
|
||||
/**
|
||||
* @param mX
|
||||
* Mouse X Position
|
||||
* @param mY
|
||||
* Mouse Y Position
|
||||
* @return is the mouse in a element
|
||||
*/
|
||||
public boolean isMouseInElement(int mX, int mY);
|
||||
|
||||
/**
|
||||
* This get's called when you enter the element
|
||||
* @param mX
|
||||
* Mouse X Position
|
||||
* @param mY
|
||||
* Mouse Y Position
|
||||
*/
|
||||
|
||||
public void onMouseEnter(int mX, int mY);
|
||||
|
||||
/**
|
||||
* This get's called when you click within the element
|
||||
* @param mX
|
||||
* Mouse X Position
|
||||
* @param mY
|
||||
* Mouse Y Position
|
||||
* @param type
|
||||
* Type of click (right, left, scroll)
|
||||
*/
|
||||
public void onMouseClick(int mX, int mY, int type);
|
||||
}
|
7
src/api/java/bloodutils/api/interfaces/IReviving.java
Normal file
7
src/api/java/bloodutils/api/interfaces/IReviving.java
Normal file
|
@ -0,0 +1,7 @@
|
|||
package bloodutils.api.interfaces;
|
||||
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public interface IReviving {
|
||||
public void spawnEntity(World world, int x, int y, int z);
|
||||
}
|
3
src/api/java/bloodutils/api/package-info.java
Normal file
3
src/api/java/bloodutils/api/package-info.java
Normal file
|
@ -0,0 +1,3 @@
|
|||
@API(owner = "BloodUtils", apiVersion = "1.0c", provides = "BloodUtils|API")
|
||||
package bloodutils.api;
|
||||
import cpw.mods.fml.common.API;
|
40
src/api/java/bloodutils/api/registries/EntryRegistry.java
Normal file
40
src/api/java/bloodutils/api/registries/EntryRegistry.java
Normal file
|
@ -0,0 +1,40 @@
|
|||
package bloodutils.api.registries;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
import bloodutils.api.compact.Category;
|
||||
import bloodutils.api.compact.Entry;
|
||||
import bloodutils.api.entries.IEntry;
|
||||
|
||||
public class EntryRegistry {
|
||||
public static void registerCategories(Category category){
|
||||
categories.add(category);
|
||||
categoryMap.put(category.name, category);
|
||||
categoryCount++;
|
||||
}
|
||||
public static ArrayList<Category> categories = new ArrayList<Category>();
|
||||
public static HashMap<String, Category> categoryMap = new HashMap<String, Category>();
|
||||
|
||||
public static int categoryCount = 0;
|
||||
|
||||
public static void registerEntry(Category category, HashMap<String, Entry> entryMap, Entry entry){
|
||||
entryMap.put(entry.name, entry);
|
||||
entries.put(category, entryMap);
|
||||
|
||||
if(maxEntries.containsKey(category) && entry.indexPage > maxEntries.get(category))
|
||||
maxEntries.put(category, entry.indexPage);
|
||||
else if(!maxEntries.containsKey(category))
|
||||
maxEntries.put(category, 0);
|
||||
|
||||
}
|
||||
public static HashMap<Category, HashMap<String, Entry>> entries = new HashMap<Category, HashMap<String, Entry>>();
|
||||
|
||||
public static HashMap<Category, Integer> maxEntries = new HashMap<Category, Integer>();
|
||||
|
||||
|
||||
public static HashMap<String, Entry> basics = new HashMap<String, Entry>();
|
||||
public static HashMap<String, Entry> rituals = new HashMap<String, Entry>();
|
||||
public static HashMap<String, Entry> bloodUtils = new HashMap<String, Entry>();
|
||||
|
||||
}
|
47
src/api/java/bloodutils/api/registries/RecipeRegistry.java
Normal file
47
src/api/java/bloodutils/api/registries/RecipeRegistry.java
Normal file
|
@ -0,0 +1,47 @@
|
|||
package bloodutils.api.registries;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.CraftingManager;
|
||||
import net.minecraft.item.crafting.IRecipe;
|
||||
import net.minecraftforge.oredict.ShapedOreRecipe;
|
||||
import WayofTime.alchemicalWizardry.api.altarRecipeRegistry.AltarRecipe;
|
||||
import WayofTime.alchemicalWizardry.api.altarRecipeRegistry.AltarRecipeRegistry;
|
||||
import WayofTime.alchemicalWizardry.api.items.ShapedBloodOrbRecipe;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
|
||||
public class RecipeRegistry {
|
||||
public static ArrayList<IRecipe> craftingRecipes = new ArrayList<IRecipe>();
|
||||
public static ArrayList<AltarRecipe> altarRecipes = new ArrayList<AltarRecipe>();
|
||||
|
||||
/** Used to register crafting recipes to the guide */
|
||||
public static IRecipe getLatestCraftingRecipe(){
|
||||
IRecipe rec = (IRecipe)CraftingManager.getInstance().getRecipeList().get(CraftingManager.getInstance().getRecipeList().size() -1);
|
||||
craftingRecipes.add(rec);
|
||||
return craftingRecipes.get(craftingRecipes.size() - 1);
|
||||
}
|
||||
|
||||
/** Used to register items to the guide */
|
||||
public static AltarRecipe getLatestAltarRecipe(){
|
||||
AltarRecipe rec = (AltarRecipe)AltarRecipeRegistry.altarRecipes.get(AltarRecipeRegistry.altarRecipes.size() - 1);
|
||||
altarRecipes.add(rec);
|
||||
return altarRecipes.get(altarRecipes.size() - 1);
|
||||
}
|
||||
|
||||
public static void addAltarRecipe(ItemStack result, ItemStack requiredItem, int minTier, int liquidRequired, int consumptionRate, int drainRate, boolean canBeFilled){
|
||||
AltarRecipeRegistry.registerAltarRecipe(result, requiredItem, minTier, liquidRequired, consumptionRate, drainRate, canBeFilled);
|
||||
}
|
||||
|
||||
public static void addShapedRecipe(ItemStack output, Object[] obj){
|
||||
GameRegistry.addShapedRecipe(output, obj);
|
||||
}
|
||||
|
||||
public static void addShapedOrbRecipe(ItemStack output, Object[] obj){
|
||||
GameRegistry.addRecipe(new ShapedBloodOrbRecipe(output, obj));
|
||||
}
|
||||
|
||||
public static void addShapedOreRecipe(ItemStack output, Object[] obj){
|
||||
GameRegistry.addRecipe(new ShapedOreRecipe(output, obj));
|
||||
}
|
||||
}
|
13
src/api/java/bloodutils/api/registries/RevivingRegistry.java
Normal file
13
src/api/java/bloodutils/api/registries/RevivingRegistry.java
Normal file
|
@ -0,0 +1,13 @@
|
|||
package bloodutils.api.registries;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import bloodutils.api.compact.CompactItem;
|
||||
import bloodutils.api.interfaces.IReviving;
|
||||
|
||||
public class RevivingRegistry {
|
||||
public static void registerReviving(CompactItem ingredients, IReviving reviving){
|
||||
recipes.put(ingredients, reviving);
|
||||
}
|
||||
public static HashMap<CompactItem, IReviving> recipes = new HashMap<CompactItem, IReviving>();
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue