This commit is contained in:
Ellpeck 2015-12-01 19:48:09 +01:00
parent 722b634f5f
commit 00766c48d8
57 changed files with 967 additions and 992 deletions

View file

@ -70,40 +70,11 @@ public class BlockAtomicReconstructor extends BlockContainerBase implements IAct
return this.blockIcon;
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister iconReg){
this.blockIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER+":"+this.getName());
this.frontIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER+":"+this.getName()+"Front");
this.topIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER+":"+this.getName()+"Top");
}
@Override
public String getName(){
return "blockAtomicReconstructor";
}
@Override
public EnumRarity getRarity(ItemStack stack){
return EnumRarity.epic;
}
@Override
public TileEntity createNewTileEntity(World world, int i){
return new TileEntityAtomicReconstructor();
}
@Override
public boolean isOpaqueCube(){
return false;
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack){
int rotation = BlockPistonBase.determineOrientation(world, x, y, z, player);
world.setBlockMetadataWithNotify(x, y, z, rotation, 2);
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9){
if(!world.isRemote){
@ -134,6 +105,35 @@ public class BlockAtomicReconstructor extends BlockContainerBase implements IAct
return true;
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack){
int rotation = BlockPistonBase.determineOrientation(world, x, y, z, player);
world.setBlockMetadataWithNotify(x, y, z, rotation, 2);
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister iconReg){
this.blockIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER+":"+this.getName());
this.frontIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER+":"+this.getName()+"Front");
this.topIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER+":"+this.getName()+"Top");
}
@Override
public String getName(){
return "blockAtomicReconstructor";
}
@Override
public EnumRarity getRarity(ItemStack stack){
return EnumRarity.epic;
}
@Override
public TileEntity createNewTileEntity(World world, int i){
return new TileEntityAtomicReconstructor();
}
@Override
public void breakBlock(World world, int x, int y, int z, Block block, int par6){
this.dropInventory(world, x, y, z);

View file

@ -26,16 +26,6 @@ public class BlockBlackLotus extends BlockBush implements IActAddItemOrBlock{
this.setStepSound(soundTypeGrass);
}
@Override
public String getName(){
return "blockBlackLotus";
}
@Override
public EnumRarity getRarity(ItemStack stack){
return EnumRarity.epic;
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta){
@ -47,4 +37,14 @@ public class BlockBlackLotus extends BlockBush implements IActAddItemOrBlock{
public void registerBlockIcons(IIconRegister iconReg){
this.blockIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER+":"+this.getName());
}
@Override
public String getName(){
return "blockBlackLotus";
}
@Override
public EnumRarity getRarity(ItemStack stack){
return EnumRarity.epic;
}
}

View file

@ -47,14 +47,14 @@ public class BlockCrystal extends Block implements IActAddItemOrBlock{
}
@Override
@SideOnly(Side.CLIENT)
public int getRenderColor(int meta){
return meta >= allCrystals.length ? super.getRenderColor(meta) : allCrystals[meta].color;
public int damageDropped(int meta){
return meta;
}
@Override
public int damageDropped(int meta){
return meta;
@SideOnly(Side.CLIENT)
public int getRenderColor(int meta){
return meta >= allCrystals.length ? super.getRenderColor(meta) : allCrystals[meta].color;
}
@Override

View file

@ -111,17 +111,6 @@ public class BlockSlabs extends Block implements IActAddItemOrBlock{
this.setMaxDamage(0);
}
@Override
public int getMetadata(int meta){
return meta;
}
@Override
public EnumRarity getRarity(ItemStack stack){
EnumRarity rarity = ((IActAddItemOrBlock)this.field_150939_a).getRarity(stack);
return rarity == null ? EnumRarity.common : rarity;
}
@Override
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ){
if(world.getBlock(x, y, z) == this.field_150939_a && ((side == 1 && world.getBlockMetadata(x, y, z) == 0) || (side == 0 && world.getBlockMetadata(x, y, z) == 1))){
@ -138,5 +127,16 @@ public class BlockSlabs extends Block implements IActAddItemOrBlock{
public String getUnlocalizedName(ItemStack stack){
return this.getUnlocalizedName();
}
@Override
public int getMetadata(int meta){
return meta;
}
@Override
public EnumRarity getRarity(ItemStack stack){
EnumRarity rarity = ((IActAddItemOrBlock)this.field_150939_a).getRarity(stack);
return rarity == null ? EnumRarity.common : rarity;
}
}
}

View file

@ -40,16 +40,6 @@ public class BlockWallAA extends BlockWall implements IActAddItemOrBlock{
return this.baseBlock.getBlockTextureFromSide(side);
}
@Override
public String getName(){
return this.name;
}
@Override
public EnumRarity getRarity(ItemStack stack){
return EnumRarity.common;
}
@SuppressWarnings("unchecked")
@Override
@SideOnly(Side.CLIENT)
@ -61,4 +51,14 @@ public class BlockWallAA extends BlockWall implements IActAddItemOrBlock{
public int damageDropped(int meta){
return meta;
}
@Override
public String getName(){
return this.name;
}
@Override
public EnumRarity getRarity(ItemStack stack){
return EnumRarity.common;
}
}

View file

@ -84,6 +84,12 @@ public class ModelBookletStand extends ModelBaseAA{
setRotation(book4, -0.837758F, 0F, 0F);
}
private void setRotation(ModelRenderer model, float x, float y, float z){
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
@Override
public void render(float f){
body1.render(f);
@ -106,10 +112,4 @@ public class ModelBookletStand extends ModelBaseAA{
public boolean doesRotate(){
return true;
}
private void setRotation(ModelRenderer model, float x, float y, float z){
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
}

View file

@ -37,7 +37,15 @@ public class BookletUtils{
/**
* Tries to open a URL in the Browser
* @param url The URL
*/
public static void openBrowser(String url){
openBrowser(url, url);
}
/**
* Tries to open a URL in the Browser
*
* @param url The URL
* @param shiftUrl The URL to open when Shift is held
*/
public static void openBrowser(String url, String shiftUrl){
@ -56,13 +64,6 @@ public class BookletUtils{
}
}
/**
* Tries to open a URL in the Browser
*/
public static void openBrowser(String url){
openBrowser(url, url);
}
/**
* Draws the Title of the current chapter, current index entry or just "Actually Additions" if neither is present
*/
@ -78,6 +79,7 @@ public class BookletUtils{
/**
* Draws an Achievement Info if the page has items that trigger achievements
*
* @param pre If the hover info texts or the icon should be drawn
*/
public static void drawAchievementInfo(GuiBooklet booklet, boolean pre, int mouseX, int mouseY){
@ -215,135 +217,9 @@ public class BookletUtils{
}
}
/**
* Called when one of the buttons to open an index or a chapter is pressed
*/
public static void handleChapterButtonClick(GuiBooklet booklet, GuiButton button){
int place = Util.arrayContains(booklet.chapterButtons, button);
if(place >= 0){
if(booklet.currentIndexEntry != null){
if(booklet.currentChapter == null){
if(place < booklet.currentIndexEntry.chapters.size()){
BookletChapter chap = booklet.currentIndexEntry.chapters.get(place+(booklet.chapterButtons.length*booklet.pageOpenInIndex-booklet.chapterButtons.length));
openChapter(booklet, chap, chap.pages[0]);
}
}
}
else{
if(place < InitBooklet.entries.size()){
openIndexEntry(booklet, InitBooklet.entries.get(place), 1, true);
}
}
}
}
/**
* Called when the "next page"-button is pressed
*/
public static void handleNextPage(GuiBooklet booklet){
if(booklet.currentIndexEntry != null){
if(booklet.currentPage != null){
BookletPage page = getNextPage(booklet.currentChapter, booklet.currentPage);
if(page != null){
booklet.currentPage = page;
}
booklet.buttonForward.visible = getNextPage(booklet.currentChapter, booklet.currentPage) != null;
booklet.buttonBackward.visible = getPrevPage(booklet.currentChapter, booklet.currentPage) != null;
}
else{
openIndexEntry(booklet, booklet.currentIndexEntry, booklet.pageOpenInIndex+1, !(booklet.currentIndexEntry instanceof BookletEntryAllSearch));
}
}
}
/**
* Called when the "previous page"-button is pressed
*/
public static void handlePreviousPage(GuiBooklet booklet){
if(booklet.currentIndexEntry != null){
if(booklet.currentPage != null){
BookletPage page = getPrevPage(booklet.currentChapter, booklet.currentPage);
if(page != null){
booklet.currentPage = page;
}
booklet.buttonForward.visible = getNextPage(booklet.currentChapter, booklet.currentPage) != null;
booklet.buttonBackward.visible = getPrevPage(booklet.currentChapter, booklet.currentPage) != null;
}
else{
openIndexEntry(booklet, booklet.currentIndexEntry, booklet.pageOpenInIndex-1, !(booklet.currentIndexEntry instanceof BookletEntryAllSearch));
}
}
}
/**
* Gets the next available page in the booklet (or null if there is none)
*/
private static BookletPage getNextPage(BookletChapter chapter, BookletPage currentPage){
for(int i = 0; i < chapter.pages.length; i++){
if(chapter.pages[i] == currentPage){
if(i+1 < chapter.pages.length){
return chapter.pages[i+1];
}
}
}
return null;
}
/**
* Gets the previous available page in the booklet (or null if there is none)
*/
private static BookletPage getPrevPage(BookletChapter chapter, BookletPage currentPage){
for(int i = 0; i < chapter.pages.length; i++){
if(chapter.pages[i] == currentPage){
if(i-1 >= 0){
return chapter.pages[i-1];
}
}
}
return null;
}
/**
* Opens a chapter in the booklet.
* Can only be done when the chapter is not null and an index entry is opened in the booklet
*/
public static void openChapter(GuiBooklet booklet, BookletChapter chapter, BookletPage page){
if(chapter == null || booklet.currentIndexEntry == null){
return;
}
booklet.searchField.setVisible(false);
booklet.searchField.setFocused(false);
booklet.searchField.setText("");
booklet.currentChapter = chapter;
booklet.currentPage = page != null && doesChapterHavePage(chapter, page) ? page : chapter.pages[0];
booklet.buttonForward.visible = getNextPage(chapter, booklet.currentPage) != null;
booklet.buttonBackward.visible = getPrevPage(chapter, booklet.currentPage) != null;
booklet.buttonPreviousScreen.visible = true;
for(GuiButton chapterButton : booklet.chapterButtons){
chapterButton.visible = false;
}
}
/**
* Checks if a chapter has a certain page
*/
private static boolean doesChapterHavePage(BookletChapter chapter, BookletPage page){
for(BookletPage aPage : chapter.pages){
if(aPage == page){
return true;
}
}
return false;
}
/**
* Opens an index entry in the booklet.
*
* @param resetTextField will clear the text in the searchField and reset the search entry's data
*/
@SuppressWarnings("unchecked")
@ -390,6 +266,148 @@ public class BookletUtils{
}
}
/**
* Called when one of the buttons to open an index or a chapter is pressed
*/
public static void handleChapterButtonClick(GuiBooklet booklet, GuiButton button){
int place = Util.arrayContains(booklet.chapterButtons, button);
if(place >= 0){
if(booklet.currentIndexEntry != null){
if(booklet.currentChapter == null){
if(place < booklet.currentIndexEntry.chapters.size()){
BookletChapter chap = booklet.currentIndexEntry.chapters.get(place+(booklet.chapterButtons.length*booklet.pageOpenInIndex-booklet.chapterButtons.length));
openChapter(booklet, chap, chap.pages[0]);
}
}
}
else{
if(place < InitBooklet.entries.size()){
openIndexEntry(booklet, InitBooklet.entries.get(place), 1, true);
}
}
}
}
/**
* Opens a chapter in the booklet.
* Can only be done when the chapter is not null and an index entry is opened in the booklet
*/
public static void openChapter(GuiBooklet booklet, BookletChapter chapter, BookletPage page){
if(chapter == null || booklet.currentIndexEntry == null){
return;
}
booklet.searchField.setVisible(false);
booklet.searchField.setFocused(false);
booklet.searchField.setText("");
booklet.currentChapter = chapter;
booklet.currentPage = page != null && doesChapterHavePage(chapter, page) ? page : chapter.pages[0];
booklet.buttonForward.visible = getNextPage(chapter, booklet.currentPage) != null;
booklet.buttonBackward.visible = getPrevPage(chapter, booklet.currentPage) != null;
booklet.buttonPreviousScreen.visible = true;
for(GuiButton chapterButton : booklet.chapterButtons){
chapterButton.visible = false;
}
}
/**
* Checks if a chapter has a certain page
*/
private static boolean doesChapterHavePage(BookletChapter chapter, BookletPage page){
for(BookletPage aPage : chapter.pages){
if(aPage == page){
return true;
}
}
return false;
}
/**
* Gets the next available page in the booklet (or null if there is none)
*/
private static BookletPage getNextPage(BookletChapter chapter, BookletPage currentPage){
for(int i = 0; i < chapter.pages.length; i++){
if(chapter.pages[i] == currentPage){
if(i+1 < chapter.pages.length){
return chapter.pages[i+1];
}
}
}
return null;
}
/**
* Gets the previous available page in the booklet (or null if there is none)
*/
private static BookletPage getPrevPage(BookletChapter chapter, BookletPage currentPage){
for(int i = 0; i < chapter.pages.length; i++){
if(chapter.pages[i] == currentPage){
if(i-1 >= 0){
return chapter.pages[i-1];
}
}
}
return null;
}
/**
* Called when the "next page"-button is pressed
*/
public static void handleNextPage(GuiBooklet booklet){
if(booklet.currentIndexEntry != null){
if(booklet.currentPage != null){
BookletPage page = getNextPage(booklet.currentChapter, booklet.currentPage);
if(page != null){
booklet.currentPage = page;
}
booklet.buttonForward.visible = getNextPage(booklet.currentChapter, booklet.currentPage) != null;
booklet.buttonBackward.visible = getPrevPage(booklet.currentChapter, booklet.currentPage) != null;
}
else{
openIndexEntry(booklet, booklet.currentIndexEntry, booklet.pageOpenInIndex+1, !(booklet.currentIndexEntry instanceof BookletEntryAllSearch));
}
}
}
/**
* Called when the "previous page"-button is pressed
*/
public static void handlePreviousPage(GuiBooklet booklet){
if(booklet.currentIndexEntry != null){
if(booklet.currentPage != null){
BookletPage page = getPrevPage(booklet.currentChapter, booklet.currentPage);
if(page != null){
booklet.currentPage = page;
}
booklet.buttonForward.visible = getNextPage(booklet.currentChapter, booklet.currentPage) != null;
booklet.buttonBackward.visible = getPrevPage(booklet.currentChapter, booklet.currentPage) != null;
}
else{
openIndexEntry(booklet, booklet.currentIndexEntry, booklet.pageOpenInIndex-1, !(booklet.currentIndexEntry instanceof BookletEntryAllSearch));
}
}
}
public static BookletPage getFirstPageForStack(ItemStack stack){
ArrayList<BookletPage> pages = getPagesForStack(stack);
return pages.isEmpty() ? null : pages.get(0);
}
public static ArrayList<BookletPage> getPagesForStack(ItemStack stack){
ArrayList<BookletPage> possiblePages = new ArrayList<BookletPage>();
for(BookletPage page : InitBooklet.pagesWithItemStackData){
if(ItemUtil.contains(page.getItemStacksForPage(), stack, true)){
possiblePages.add(page);
}
}
return possiblePages;
}
public static class IndexButton extends GuiButton{
public BookletChapter chap;
@ -431,21 +449,6 @@ public class BookletUtils{
}
}
public static ArrayList<BookletPage> getPagesForStack(ItemStack stack){
ArrayList<BookletPage> possiblePages = new ArrayList<BookletPage>();
for(BookletPage page : InitBooklet.pagesWithItemStackData){
if(ItemUtil.contains(page.getItemStacksForPage(), stack, true)){
possiblePages.add(page);
}
}
return possiblePages;
}
public static BookletPage getFirstPageForStack(ItemStack stack){
ArrayList<BookletPage> pages = getPagesForStack(stack);
return pages.isEmpty() ? null : pages.get(0);
}
public static class TexturedButton extends GuiButton{
public int texturePosX;
@ -495,7 +498,28 @@ public class BookletUtils{
this.booklet = booklet;
}
@Override
public void onPressed(){
if(this.assignedEntry != null){
if(KeyUtil.isShiftPressed()){
this.assignedEntry = null;
this.assignedChapter = null;
this.assignedPage = null;
this.assignedPageInIndex = 1;
}
else{
openIndexEntry(this.booklet, this.assignedEntry, this.assignedPageInIndex, true);
openChapter(this.booklet, this.assignedChapter, this.assignedPage);
}
}
else{
if(this.booklet.currentIndexEntry != null){
this.assignedEntry = this.booklet.currentIndexEntry;
this.assignedChapter = this.booklet.currentChapter;
this.assignedPage = this.booklet.currentPage;
this.assignedPageInIndex = this.booklet.pageOpenInIndex;
}
}
} @Override
public void drawButton(Minecraft minecraft, int x, int y){
if(this.visible){
minecraft.getTextureManager().bindTexture(GuiBooklet.resLoc);
@ -520,29 +544,6 @@ public class BookletUtils{
}
}
public void onPressed(){
if(this.assignedEntry != null){
if(KeyUtil.isShiftPressed()){
this.assignedEntry = null;
this.assignedChapter = null;
this.assignedPage = null;
this.assignedPageInIndex = 1;
}
else{
openIndexEntry(this.booklet, this.assignedEntry, this.assignedPageInIndex, true);
openChapter(this.booklet, this.assignedChapter, this.assignedPage);
}
}
else{
if(this.booklet.currentIndexEntry != null){
this.assignedEntry = this.booklet.currentIndexEntry;
this.assignedChapter = this.booklet.currentChapter;
this.assignedPage = this.booklet.currentPage;
this.assignedPageInIndex = this.booklet.pageOpenInIndex;
}
}
}
@SuppressWarnings("unchecked")
public void drawHover(int mouseX, int mouseY){
ArrayList list = new ArrayList();
@ -562,5 +563,7 @@ public class BookletUtils{
}
this.booklet.drawHoveringText(list, mouseX, mouseY);
}
}
}

View file

@ -67,11 +67,9 @@ public class GuiBooklet extends GuiScreen{
public GuiButton[] bookmarkButtons = new GuiButton[8];
public GuiTextField searchField;
public GuiScreen parentScreen;
private int ticksElapsed;
private boolean mousePressed;
public GuiScreen parentScreen;
private boolean tryOpenMainPage;
private boolean saveOnClose;

View file

@ -33,6 +33,14 @@ public class GuiBookletStand extends GuiBooklet{
this.theStand = (TileEntityBookletStand)theStand;
}
@Override
public void actionPerformed(GuiButton button){
if(button == this.buttonSetPage){
PacketHandler.theNetwork.sendToServer(new PacketBookletStandButton(this.theStand.xCoord, this.theStand.yCoord, this.theStand.zCoord, this.theStand.getWorldObj(), Minecraft.getMinecraft().thePlayer, this.currentIndexEntry, this.currentChapter, this.currentPage, this.pageOpenInIndex));
}
super.actionPerformed(button);
}
@SuppressWarnings("unchecked")
@Override
public void initGui(){
@ -60,12 +68,4 @@ public class GuiBookletStand extends GuiBooklet{
BookletUtils.openIndexEntry(this, this.theStand.assignedEntry, this.theStand.assignedPageInIndex, true);
BookletUtils.openChapter(this, this.theStand.assignedChapter, this.theStand.assignedPage);
}
@Override
public void actionPerformed(GuiButton button){
if(button == this.buttonSetPage){
PacketHandler.theNetwork.sendToServer(new PacketBookletStandButton(this.theStand.xCoord, this.theStand.yCoord, this.theStand.zCoord, this.theStand.getWorldObj(), Minecraft.getMinecraft().thePlayer, this.currentIndexEntry, this.currentChapter, this.currentPage, this.pageOpenInIndex));
}
super.actionPerformed(button);
}
}

View file

@ -53,6 +53,11 @@ public class InitBooklet{
public static BookletEntry entryMisc = new BookletEntry("misc");
public static BookletEntry allAndSearch = new BookletEntryAllSearch("allAndSearch").setSpecial();
public static void init(){
initChapters();
countWords();
}
private static void initChapters(){
//Getting Started
chapterIntro = new BookletChapter("intro", entryGettingStarted, new ItemStack(InitItems.itemLexicon), new PageTextOnly(1), new PageTextOnly(2), new PageTextOnly(3));
@ -139,11 +144,6 @@ public class InitBooklet{
new BookletChapter("batteries", entryItemsRF, new ItemStack(InitItems.itemBatteryTriple), new PageTextOnly(1), new PageCrafting(2, ItemCrafting.recipeBattery).setNoText(), new PageCrafting(3, ItemCrafting.recipeBatteryDouble).setNoText(), new PageCrafting(4, ItemCrafting.recipeBatteryTriple).setNoText(), new PageCrafting(5, ItemCrafting.recipeBatteryQuadruple).setNoText(), new PageCrafting(6, ItemCrafting.recipeBatteryQuintuple).setNoText());
}
public static void init(){
initChapters();
countWords();
}
private static void countWords(){
for(BookletEntry entry : entries){
for(BookletChapter chapter : entry.chapters){

View file

@ -35,31 +35,16 @@ import java.util.Map;
public class BookletPage{
public boolean arePageStacksWildcard;
protected int id;
protected BookletChapter chapter;
private HashMap<String, String> textReplacements = new HashMap<String, String>();
private boolean hasNoText;
public boolean arePageStacksWildcard;
public BookletPage(int id){
this.id = id;
}
public void addToPagesWithItemStackData(){
if(!InitBooklet.pagesWithItemStackData.contains(this)){
ItemStack[] stacks = this.getItemStacksForPage();
if(stacks != null && stacks.length > 0){
//Ensure that there is at least one ItemStack
for(ItemStack stack : stacks){
if(stack != null){
InitBooklet.pagesWithItemStackData.add(this);
break;
}
}
}
}
}
@SideOnly(Side.CLIENT)
public static void renderItem(GuiScreen gui, ItemStack stack, int x, int y, float scale){
GL11.glPushMatrix();
@ -85,6 +70,25 @@ public class BookletPage{
}
public void addToPagesWithItemStackData(){
if(!InitBooklet.pagesWithItemStackData.contains(this)){
ItemStack[] stacks = this.getItemStacksForPage();
if(stacks != null && stacks.length > 0){
//Ensure that there is at least one ItemStack
for(ItemStack stack : stacks){
if(stack != null){
InitBooklet.pagesWithItemStackData.add(this);
break;
}
}
}
}
}
public ItemStack[] getItemStacksForPage(){
return null;
}
public BookletPage setNoText(){
this.hasNoText = true;
return this;
@ -166,10 +170,6 @@ public class BookletPage{
gui.mc.fontRenderer.setUnicodeFlag(flagBefore);
}
public ItemStack[] getItemStacksForPage(){
return null;
}
public BookletChapter getChapter(){
return this.chapter;
}

View file

@ -44,6 +44,28 @@ public class PageCrafting extends BookletPage{
this.addToPagesWithItemStackData();
}
@Override
public ItemStack[] getItemStacksForPage(){
if(this.recipes != null){
ItemStack[] stacks = new ItemStack[this.recipes.length];
for(int i = 0; i < this.recipes.length; i++){
ItemStack output = this.recipes[i].getRecipeOutput();
if(output != null){
if(!this.arePageStacksWildcard){
stacks[i] = output;
}
else{
ItemStack wildcardOutput = output.copy();
wildcardOutput.setItemDamage(Util.WILDCARD);
stacks[i] = wildcardOutput;
}
}
}
return stacks;
}
return null;
}
@Override
@SideOnly(Side.CLIENT)
public void renderPre(GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed){
@ -154,26 +176,4 @@ public class PageCrafting extends BookletPage{
}
}
}
@Override
public ItemStack[] getItemStacksForPage(){
if(this.recipes != null){
ItemStack[] stacks = new ItemStack[this.recipes.length];
for(int i = 0; i < this.recipes.length; i++){
ItemStack output = this.recipes[i].getRecipeOutput();
if(output != null){
if(!this.arePageStacksWildcard){
stacks[i] = output;
}
else{
ItemStack wildcardOutput = output.copy();
wildcardOutput.setItemDamage(Util.WILDCARD);
stacks[i] = wildcardOutput;
}
}
}
return stacks;
}
return null;
}
}

View file

@ -36,6 +36,11 @@ public class PageCrusherRecipe extends BookletPage{
this.addToPagesWithItemStackData();
}
@Override
public ItemStack[] getItemStacksForPage(){
return this.recipe == null ? new ItemStack[0] : this.recipe.getRecipeOutputOnes().toArray(new ItemStack[this.recipe.getRecipeOutputOnes().size()]);
}
@Override
@SideOnly(Side.CLIENT)
public void renderPre(GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed){
@ -121,9 +126,4 @@ public class PageCrusherRecipe extends BookletPage{
}
}
}
@Override
public ItemStack[] getItemStacksForPage(){
return this.recipe == null ? new ItemStack[0] : this.recipe.getRecipeOutputOnes().toArray(new ItemStack[this.recipe.getRecipeOutputOnes().size()]);
}
}

View file

@ -39,6 +39,11 @@ public class PageFurnace extends BookletPage{
this.addToPagesWithItemStackData();
}
@Override
public ItemStack[] getItemStacksForPage(){
return this.result == null ? new ItemStack[0] : new ItemStack[]{this.result};
}
@Override
@SideOnly(Side.CLIENT)
public void renderPre(GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed){
@ -90,11 +95,6 @@ public class PageFurnace extends BookletPage{
}
}
@Override
public ItemStack[] getItemStacksForPage(){
return this.result == null ? new ItemStack[0] : new ItemStack[]{this.result};
}
private ItemStack getInputForOutput(ItemStack output){
for(Object o : FurnaceRecipes.smelting().getSmeltingList().entrySet()){
ItemStack stack = (ItemStack)((Map.Entry)o).getValue();

View file

@ -31,27 +31,28 @@ public class PageReconstructor extends BookletPage{
private ReconstructorRecipeHandler.Recipe[] recipes;
private int recipePos;
public PageReconstructor(int id, ArrayList<ReconstructorRecipeHandler.Recipe> recipes){
this(id, recipes.toArray(new ReconstructorRecipeHandler.Recipe[recipes.size()]));
}
public PageReconstructor(int id, ReconstructorRecipeHandler.Recipe... recipes){
super(id);
this.recipes = recipes;
this.addToPagesWithItemStackData();
}
public PageReconstructor(int id, ArrayList<ReconstructorRecipeHandler.Recipe> recipes){
this(id, recipes.toArray(new ReconstructorRecipeHandler.Recipe[recipes.size()]));
}
@Override
@SideOnly(Side.CLIENT)
public void updateScreen(int ticksElapsed){
if(ticksElapsed%15 == 0){
if(this.recipePos+1 >= this.recipes.length){
this.recipePos = 0;
}
else{
this.recipePos++;
public ItemStack[] getItemStacksForPage(){
if(this.recipes != null){
ItemStack[] stacks = new ItemStack[this.recipes.length];
for(int i = 0; i < this.recipes.length; i++){
if(this.recipes[i] != null){
stacks[i] = this.recipes[i].getFirstOutput();
}
}
return stacks;
}
return null;
}
@Override
@ -112,17 +113,16 @@ public class PageReconstructor extends BookletPage{
}
@Override
public ItemStack[] getItemStacksForPage(){
if(this.recipes != null){
ItemStack[] stacks = new ItemStack[this.recipes.length];
for(int i = 0; i < this.recipes.length; i++){
if(this.recipes[i] != null){
stacks[i] = this.recipes[i].getFirstOutput();
}
@SideOnly(Side.CLIENT)
public void updateScreen(int ticksElapsed){
if(ticksElapsed%15 == 0){
if(this.recipePos+1 >= this.recipes.length){
this.recipePos = 0;
}
else{
this.recipePos++;
}
return stacks;
}
return null;
}
private ItemStack getInputForRecipe(ReconstructorRecipeHandler.Recipe recipe){

View file

@ -29,6 +29,11 @@ public class PageTextOnly extends BookletPage{
return this;
}
@Override
public ItemStack[] getItemStacksForPage(){
return this.stack == null ? new ItemStack[0] : new ItemStack[]{this.stack};
}
@Override
@SideOnly(Side.CLIENT)
public void renderPre(GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed){
@ -37,9 +42,4 @@ public class PageTextOnly extends BookletPage{
gui.mc.fontRenderer.drawSplitString(text, gui.guiLeft+14, gui.guiTop+9, 115, 0);
}
}
@Override
public ItemStack[] getItemStacksForPage(){
return this.stack == null ? new ItemStack[0] : new ItemStack[]{this.stack};
}
}

View file

@ -88,7 +88,7 @@ public class ItemCrafting{
'B', new ItemStack(InitItems.itemMisc, 1, TheMiscItems.QUARTZ.ordinal())));
recipeLens = Util.GetRecipes.lastIRecipe();
//Black Dye
//Black Dye
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.itemMisc, 2, TheMiscItems.BLACK_DYE.ordinal()), new ItemStack(InitBlocks.blockBlackLotus)));
recipeBlackDye = Util.GetRecipes.lastIRecipe();

View file

@ -46,16 +46,6 @@ public class PlayerObtainEvents{
}
}
@SubscribeEvent
public void onSmeltedEvent(PlayerEvent.ItemSmeltedEvent event){
checkAchievements(event.smelting, event.player, InitAchievements.SMELTING_ACH);
}
@SubscribeEvent
public void onPickupEvent(PlayerEvent.ItemPickupEvent event){
checkAchievements(event.pickedUp.getEntityItem(), event.player, InitAchievements.PICKUP_ACH);
}
public static void checkAchievements(ItemStack gotten, EntityPlayer player, int type){
for(int i = 0; i < TheAchievements.values().length; i++){
TheAchievements ach = TheAchievements.values()[i];
@ -68,4 +58,14 @@ public class PlayerObtainEvents{
}
}
}
@SubscribeEvent
public void onSmeltedEvent(PlayerEvent.ItemSmeltedEvent event){
checkAchievements(event.smelting, event.player, InitAchievements.SMELTING_ACH);
}
@SubscribeEvent
public void onPickupEvent(PlayerEvent.ItemPickupEvent event){
checkAchievements(event.pickedUp.getEntityItem(), event.player, InitAchievements.PICKUP_ACH);
}
}

View file

@ -45,6 +45,12 @@ public class ItemBooklet extends Item implements IActAddItemOrBlock{
return stack;
}
@SuppressWarnings("unchecked")
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool){
list.add(StringUtil.localize("tooltip."+ModUtil.MOD_ID_LOWER+"."+this.getName()+".desc"));
}
@Override
public EnumRarity getRarity(ItemStack stack){
return EnumRarity.epic;
@ -56,12 +62,6 @@ public class ItemBooklet extends Item implements IActAddItemOrBlock{
this.itemIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER+":"+this.getName());
}
@SuppressWarnings("unchecked")
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool){
list.add(StringUtil.localize("tooltip."+ModUtil.MOD_ID_LOWER+"."+this.getName()+".desc"));
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(ItemStack stack, int pass){

View file

@ -35,6 +35,12 @@ public class ItemCrystal extends Item implements IActAddItemOrBlock{
this.setMaxDamage(0);
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIconFromDamage(int par1){
return par1 >= this.textures.length ? null : this.textures[par1];
}
@Override
public int getMetadata(int damage){
return damage;
@ -45,12 +51,6 @@ public class ItemCrystal extends Item implements IActAddItemOrBlock{
return stack.getItemDamage() >= BlockCrystal.allCrystals.length ? StringUtil.BUGGED_ITEM_NAME : this.getUnlocalizedName()+BlockCrystal.allCrystals[stack.getItemDamage()].name;
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIconFromDamage(int par1){
return par1 >= this.textures.length ? null : this.textures[par1];
}
@Override
public EnumRarity getRarity(ItemStack stack){
return stack.getItemDamage() >= BlockCrystal.allCrystals.length ? EnumRarity.common : BlockCrystal.allCrystals[stack.getItemDamage()].rarity;

View file

@ -51,11 +51,10 @@ import java.util.Set;
@SuppressWarnings("unchecked")
public class ItemDrill extends ItemEnergy{
private static final int ENERGY_USE = 100;
@SideOnly(Side.CLIENT)
private IIcon[] allDemDamnIconsMaan;
private static final int ENERGY_USE = 100;
public ItemDrill(){
super(500000, 5000);
this.setMaxDamage(0);
@ -68,30 +67,6 @@ public class ItemDrill extends ItemEnergy{
return par1 >= this.allDemDamnIconsMaan.length ? null : this.allDemDamnIconsMaan[par1];
}
@Override
public int getMetadata(int damage){
return damage;
}
@Override
@SuppressWarnings("unchecked")
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tabs, List list){
for(int i = 0; i < this.allDemDamnIconsMaan.length; i++){
this.addDrillStack(list, i);
}
}
private void addDrillStack(List list, int meta){
ItemStack stackFull = new ItemStack(this, 1, meta);
this.setEnergy(stackFull, this.getMaxEnergyStored(stackFull));
list.add(stackFull);
ItemStack stackEmpty = new ItemStack(this, 1, meta);
this.setEnergy(stackEmpty, 0);
list.add(stackEmpty);
}
@Override
//Places Blocks if the Placing Upgrade is installed
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int hitSide, float hitX, float hitY, float hitZ){
@ -192,6 +167,11 @@ public class ItemDrill extends ItemEnergy{
return stack;
}
@Override
public int getMetadata(int damage){
return damage;
}
@Override
public boolean hitEntity(ItemStack stack, EntityLivingBase entity1, EntityLivingBase entity2){
int use = this.getEnergyUsePerBlock(stack);
@ -363,6 +343,25 @@ public class ItemDrill extends ItemEnergy{
return this.getHasUpgradeAsStack(stack, upgrade) != null;
}
@Override
@SuppressWarnings("unchecked")
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tabs, List list){
for(int i = 0; i < this.allDemDamnIconsMaan.length; i++){
this.addDrillStack(list, i);
}
}
private void addDrillStack(List list, int meta){
ItemStack stackFull = new ItemStack(this, 1, meta);
this.setEnergy(stackFull, this.getMaxEnergyStored(stackFull));
list.add(stackFull);
ItemStack stackEmpty = new ItemStack(this, 1, meta);
this.setEnergy(stackEmpty, 0);
list.add(stackEmpty);
}
/**
* Gets the Mining Speed of the Drill
*

View file

@ -32,20 +32,6 @@ public class SpecialRenderInit{
Util.registerEvent(new SpecialRenderInit());
}
@SubscribeEvent(priority = EventPriority.HIGHEST)
public void onPlayerRender(RenderPlayerEvent.Specials.Pre event){
if(!specialList.isEmpty()){
for(Map.Entry<String, RenderSpecial> entry : specialList.entrySet()){
//Does the player have one of the names from the list?
if(StringUtil.equalsToLowerCase(entry.getKey(), event.entityPlayer.getCommandSenderName())){
//Render the special Item/Block
entry.getValue().render(event.entityPlayer);
break;
}
}
}
}
public static void parse(Properties properties){
for(String key : properties.stringPropertyNames()){
String[] values = properties.getProperty(key).split("@");
@ -79,4 +65,18 @@ public class SpecialRenderInit{
}
}
@SubscribeEvent(priority = EventPriority.HIGHEST)
public void onPlayerRender(RenderPlayerEvent.Specials.Pre event){
if(!specialList.isEmpty()){
for(Map.Entry<String, RenderSpecial> entry : specialList.entrySet()){
//Does the player have one of the names from the list?
if(StringUtil.equalsToLowerCase(entry.getKey(), event.entityPlayer.getCommandSenderName())){
//Render the special Item/Block
entry.getValue().render(event.entityPlayer);
break;
}
}
}
}
}

View file

@ -52,7 +52,7 @@ public class PacketBookletStandButton implements IMessage{
this.playerID = player.getEntityId();
this.entryID = entry == null ? -1 : InitBooklet.entries.indexOf(entry);
this.chapterID = entry == null || chapter == null ? -1 : entry.chapters.indexOf(chapter);
this.chapterID = entry == null || chapter == null ? -1 : entry.chapters.indexOf(chapter);
this.pageID = page == null ? -1 : page.getID();
this.pageInIndex = pageInIndex;
}

View file

@ -136,6 +136,60 @@ public class ReconstructorRecipeHandler{
return possibleRecipes;
}
public enum LensType{
NONE(true),
COLOR(true),
DETONATION(false),
JUST_DAMAGE(false);
//Thanks to xdjackiexd for this, as I couldn't be bothered
private static final float[][] possibleColorLensColors = {
{158F, 43F, 39F}, //Red
{234F, 126F, 53F}, //Orange
{194F, 181F, 28F}, //Yellow
{57F, 186F, 46F}, //Lime Green
{54F, 75F, 24F}, //Green
{99F, 135F, 210F}, //Light Blue
{38F, 113F, 145F}, //Cyan
{37F, 49F, 147F}, //Blue
{126F, 52F, 191F}, //Purple
{190F, 73F, 201F}, //Magenta
{217F, 129F, 153F}, //Pink
{86F, 51F, 28F}, //Brown
};
public ItemStack lens;
public boolean hasRecipes;
LensType(boolean hasRecipes){
this.hasRecipes = hasRecipes;
}
public float[] getColor(){
if(this == COLOR){
float[] colors = possibleColorLensColors[Util.RANDOM.nextInt(possibleColorLensColors.length)];
return new float[]{colors[0]/255F, colors[1]/255F, colors[2]/255F};
}
else if(this == DETONATION){
return new float[]{158F/255F, 43F/255F, 39F/255F};
}
else if(this == JUST_DAMAGE){
return new float[]{188F/255F, 222F/255F, 1F};
}
else{
return new float[]{27F/255F, 109F/255F, 1F};
}
}
public void setLens(Item lens){
this.lens = new ItemStack(lens);
}
public int getDistance(){
return this == DETONATION ? 30 : (this == JUST_DAMAGE ? 15 : 10);
}
}
public static class Recipe{
public String input;
@ -161,57 +215,4 @@ public class ReconstructorRecipeHandler{
}
}
public enum LensType{
NONE(true),
COLOR(true),
DETONATION(false),
JUST_DAMAGE(false);
public ItemStack lens;
public boolean hasRecipes;
LensType(boolean hasRecipes){
this.hasRecipes = hasRecipes;
}
public float[] getColor(){
if(this == COLOR){
float[] colors = possibleColorLensColors[Util.RANDOM.nextInt(possibleColorLensColors.length)];
return new float[]{colors[0]/255F, colors[1]/255F, colors[2]/255F};
}
else if(this == DETONATION){
return new float[]{158F/255F, 43F/255F, 39F/255F};
}
else if(this == JUST_DAMAGE){
return new float[]{188F/255F, 222F/255F, 1F};
}
else return new float[]{27F/255F, 109F/255F, 1F};
}
public void setLens(Item lens){
this.lens = new ItemStack(lens);
}
public int getDistance(){
return this == DETONATION ? 30 : (this == JUST_DAMAGE ? 15 : 10);
}
//Thanks to xdjackiexd for this, as I couldn't be bothered
private static final float[][] possibleColorLensColors = {
{158F, 43F, 39F}, //Red
{234F, 126F, 53F}, //Orange
{194F, 181F, 28F}, //Yellow
{57F, 186F, 46F}, //Lime Green
{54F, 75F, 24F}, //Green
{99F, 135F, 210F}, //Light Blue
{38F, 113F, 145F}, //Cyan
{37F, 49F, 147F}, //Blue
{126F, 52F, 191F}, //Purple
{190F, 73F, 201F}, //Magenta
{217F, 129F, 153F}, //Pink
{86F, 51F, 28F}, //Brown
};
}
}

View file

@ -33,11 +33,9 @@ import java.util.ArrayList;
public class TileEntityAtomicReconstructor extends TileEntityInventoryBase implements IEnergyReceiver{
public EnergyStorage storage = new EnergyStorage(3000000);
private int currentTime;
public static final int ENERGY_USE = 200;
public EnergyStorage storage = new EnergyStorage(3000000);
private int currentTime;
public TileEntityAtomicReconstructor(){
super(1, "reconstructor");
@ -152,10 +150,6 @@ public class TileEntityAtomicReconstructor extends TileEntityInventoryBase imple
}
}
private void shootLaser(int endX, int endY, int endZ, ReconstructorRecipeHandler.LensType currentLens){
PacketHandler.theNetwork.sendToAllAround(new PacketAtomicReconstructor(xCoord, yCoord, zCoord, endX, endY, endZ, currentLens), new NetworkRegistry.TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 64));
}
public ReconstructorRecipeHandler.LensType getCurrentLens(){
if(this.slots[0] != null){
if(this.slots[0].getItem() instanceof IReconstructorLens){
@ -173,6 +167,10 @@ public class TileEntityAtomicReconstructor extends TileEntityInventoryBase imple
}
}
private void shootLaser(int endX, int endY, int endZ, ReconstructorRecipeHandler.LensType currentLens){
PacketHandler.theNetwork.sendToAllAround(new PacketAtomicReconstructor(xCoord, yCoord, zCoord, endX, endY, endZ, currentLens), new NetworkRegistry.TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 64));
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.writeSyncableNBT(compound, sync);
@ -180,6 +178,11 @@ public class TileEntityAtomicReconstructor extends TileEntityInventoryBase imple
this.storage.writeToNBT(compound);
}
@Override
public boolean shouldSyncSlots(){
return true;
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
@ -187,6 +190,23 @@ public class TileEntityAtomicReconstructor extends TileEntityInventoryBase imple
this.storage.readFromNBT(compound);
}
@Override
public boolean isItemValidForSlot(int i, ItemStack stack){
return stack != null && stack.getItem() instanceof IReconstructorLens;
}
@Override
public void setInventorySlotContents(int i, ItemStack stack){
super.setInventorySlotContents(i, stack);
this.sendUpdate();
}
@Override
public ItemStack decrStackSize(int i, int j){
this.sendUpdate();
return super.decrStackSize(i, j);
}
@Override
public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate){
return this.storage.receiveEnergy(maxReceive, simulate);
@ -216,26 +236,4 @@ public class TileEntityAtomicReconstructor extends TileEntityInventoryBase imple
public boolean canExtractItem(int slot, ItemStack stack, int side){
return true;
}
@Override
public boolean isItemValidForSlot(int i, ItemStack stack){
return stack != null && stack.getItem() instanceof IReconstructorLens;
}
@Override
public boolean shouldSyncSlots(){
return true;
}
@Override
public ItemStack decrStackSize(int i, int j){
this.sendUpdate();
return super.decrStackSize(i, j);
}
@Override
public void setInventorySlotContents(int i, ItemStack stack){
super.setInventorySlotContents(i, stack);
this.sendUpdate();
}
}

View file

@ -71,11 +71,6 @@ public abstract class TileEntityBase extends TileEntity{
GameRegistry.registerTileEntity(TileEntityBookletStand.class, ModUtil.MOD_ID_LOWER+":tileEntityBookletStand");
}
@Override
public void updateEntity(){
this.ticksElapsed++;
}
@Override
public final void readFromNBT(NBTTagCompound compound){
super.readFromNBT(compound);
@ -88,8 +83,9 @@ public abstract class TileEntityBase extends TileEntity{
this.writeSyncableNBT(compound, false);
}
public void writeSyncableNBT(NBTTagCompound compound, boolean isForSync){
@Override
public void updateEntity(){
this.ticksElapsed++;
}
@Override
@ -109,12 +105,16 @@ public abstract class TileEntityBase extends TileEntity{
return !(oldBlock.isAssociatedBlock(newBlock));
}
public void writeSyncableNBT(NBTTagCompound compound, boolean isForSync){
}
public void readSyncableNBT(NBTTagCompound compound, boolean isForSync){
}
protected boolean sendUpdateWithInterval(){
if(this.ticksElapsed % ConfigIntValues.TILE_ENTITY_UPDATE_INTERVAL.getValue() == 0){
if(this.ticksElapsed%ConfigIntValues.TILE_ENTITY_UPDATE_INTERVAL.getValue() == 0){
this.sendUpdate();
return true;
}

View file

@ -34,6 +34,18 @@ public class TileEntityBreaker extends TileEntityInventoryBase{
this.isPlacer = false;
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.writeSyncableNBT(compound, sync);
compound.setInteger("CurrentTime", this.currentTime);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
this.currentTime = compound.getInteger("CurrentTime");
}
@Override
@SuppressWarnings("unchecked")
public void updateEntity(){
@ -77,18 +89,6 @@ public class TileEntityBreaker extends TileEntityInventoryBase{
}
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.writeSyncableNBT(compound, sync);
compound.setInteger("CurrentTime", this.currentTime);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
this.currentTime = compound.getInteger("CurrentTime");
}
@Override
public boolean isItemValidForSlot(int i, ItemStack stack){
return this.isPlacer;

View file

@ -26,6 +26,9 @@ import net.minecraftforge.fluids.*;
public class TileEntityCanolaPress extends TileEntityInventoryBase implements IEnergyReceiver, IFluidHandler{
public static final int PRODUCE = 100;
public static final int ENERGY_USE = 35;
private static final int TIME = 30;
public EnergyStorage storage = new EnergyStorage(40000);
public FluidTank tank = new FluidTank(2*FluidContainerRegistry.BUCKET_VOLUME);
public int currentProcessTime;
@ -33,14 +36,41 @@ public class TileEntityCanolaPress extends TileEntityInventoryBase implements IE
private int lastTankAmount;
private int lastProcessTime;
public static final int PRODUCE = 100;
public static final int ENERGY_USE = 35;
private static final int TIME = 30;
public TileEntityCanolaPress(){
super(3, "canolaPress");
}
@SideOnly(Side.CLIENT)
public int getTankScaled(int i){
return this.tank.getFluidAmount()*i/this.tank.getCapacity();
}
@SideOnly(Side.CLIENT)
public int getProcessScaled(int i){
return this.currentProcessTime*i/TIME;
}
@SideOnly(Side.CLIENT)
public int getEnergyScaled(int i){
return this.storage.getEnergyStored()*i/this.storage.getMaxEnergyStored();
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
compound.setInteger("ProcessTime", this.currentProcessTime);
this.storage.writeToNBT(compound);
this.tank.writeToNBT(compound);
super.writeSyncableNBT(compound, sync);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.currentProcessTime = compound.getInteger("ProcessTime");
this.storage.readFromNBT(compound);
this.tank.readFromNBT(compound);
super.readSyncableNBT(compound, sync);
}
@Override
@SuppressWarnings("unchecked")
public void updateEntity(){
@ -91,37 +121,6 @@ public class TileEntityCanolaPress extends TileEntityInventoryBase implements IE
return this.slots[slot] != null && this.slots[slot].getItem() == InitItems.itemMisc && this.slots[slot].getItemDamage() == TheMiscItems.CANOLA.ordinal();
}
@SideOnly(Side.CLIENT)
public int getTankScaled(int i){
return this.tank.getFluidAmount()*i/this.tank.getCapacity();
}
@SideOnly(Side.CLIENT)
public int getProcessScaled(int i){
return this.currentProcessTime*i/TIME;
}
@SideOnly(Side.CLIENT)
public int getEnergyScaled(int i){
return this.storage.getEnergyStored()*i/this.storage.getMaxEnergyStored();
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
compound.setInteger("ProcessTime", this.currentProcessTime);
this.storage.writeToNBT(compound);
this.tank.writeToNBT(compound);
super.writeSyncableNBT(compound, sync);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.currentProcessTime = compound.getInteger("ProcessTime");
this.storage.readFromNBT(compound);
this.tank.readFromNBT(compound);
super.readSyncableNBT(compound, sync);
}
@Override
public boolean isItemValidForSlot(int i, ItemStack stack){
return (i == 0 && stack.getItem() == InitItems.itemMisc && stack.getItemDamage() == TheMiscItems.CANOLA.ordinal()) || (i == 1 && stack.getItem() == Items.bucket);

View file

@ -22,6 +22,7 @@ import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityCoalGenerator extends TileEntityInventoryBase implements IEnergyProvider{
public static final int PRODUCE = 30;
public EnergyStorage storage = new EnergyStorage(60000);
public int maxBurnTime;
public int currentBurnTime;
@ -29,12 +30,36 @@ public class TileEntityCoalGenerator extends TileEntityInventoryBase implements
private int lastBurnTime;
private int lastCurrentBurnTime;
public static final int PRODUCE = 30;
public TileEntityCoalGenerator(){
super(1, "coalGenerator");
}
@SideOnly(Side.CLIENT)
public int getEnergyScaled(int i){
return this.storage.getEnergyStored()*i/this.storage.getMaxEnergyStored();
}
@SideOnly(Side.CLIENT)
public int getBurningScaled(int i){
return this.currentBurnTime*i/this.maxBurnTime;
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
compound.setInteger("BurnTime", this.currentBurnTime);
compound.setInteger("MaxBurnTime", this.maxBurnTime);
this.storage.writeToNBT(compound);
super.writeSyncableNBT(compound, sync);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.currentBurnTime = compound.getInteger("BurnTime");
this.maxBurnTime = compound.getInteger("MaxBurnTime");
this.storage.readFromNBT(compound);
super.readSyncableNBT(compound, sync);
}
@Override
@SuppressWarnings("unchecked")
public void updateEntity(){
@ -89,32 +114,6 @@ public class TileEntityCoalGenerator extends TileEntityInventoryBase implements
}
}
@SideOnly(Side.CLIENT)
public int getEnergyScaled(int i){
return this.storage.getEnergyStored()*i/this.storage.getMaxEnergyStored();
}
@SideOnly(Side.CLIENT)
public int getBurningScaled(int i){
return this.currentBurnTime*i/this.maxBurnTime;
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
compound.setInteger("BurnTime", this.currentBurnTime);
compound.setInteger("MaxBurnTime", this.maxBurnTime);
this.storage.writeToNBT(compound);
super.writeSyncableNBT(compound, sync);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.currentBurnTime = compound.getInteger("BurnTime");
this.maxBurnTime = compound.getInteger("MaxBurnTime");
this.storage.readFromNBT(compound);
super.readSyncableNBT(compound, sync);
}
@Override
public boolean isItemValidForSlot(int i, ItemStack stack){
return TileEntityFurnace.getItemBurnTime(stack) > 0;

View file

@ -32,6 +32,11 @@ public class TileEntityCoffeeMachine extends TileEntityInventoryBase implements
public static final int SLOT_OUTPUT = 2;
public static final int SLOT_WATER_INPUT = 11;
public static final int SLOT_WATER_OUTPUT = 12;
public static final int CACHE_USE = 15;
public static final int ENERGY_USED = 150;
public static final int WATER_USE = 500;
public static final int COFFEE_CACHE_MAX_AMOUNT = 300;
private static final int TIME_USED = 500;
public EnergyStorage storage = new EnergyStorage(300000);
public FluidTank tank = new FluidTank(4*FluidContainerRegistry.BUCKET_VOLUME);
public int coffeeCacheAmount;
@ -41,16 +46,48 @@ public class TileEntityCoffeeMachine extends TileEntityInventoryBase implements
private int lastCoffeeAmount;
private int lastBrewTime;
private static final int TIME_USED = 500;
public static final int CACHE_USE = 15;
public static final int ENERGY_USED = 150;
public static final int WATER_USE = 500;
public static final int COFFEE_CACHE_MAX_AMOUNT = 300;
public TileEntityCoffeeMachine(){
super(13, "coffeeMachine");
}
@SideOnly(Side.CLIENT)
public int getCoffeeScaled(int i){
return this.coffeeCacheAmount*i/COFFEE_CACHE_MAX_AMOUNT;
}
@SideOnly(Side.CLIENT)
public int getWaterScaled(int i){
return this.tank.getFluidAmount()*i/this.tank.getCapacity();
}
@SideOnly(Side.CLIENT)
public int getEnergyScaled(int i){
return this.storage.getEnergyStored()*i/this.storage.getMaxEnergyStored();
}
@SideOnly(Side.CLIENT)
public int getBrewScaled(int i){
return this.brewTime*i/TIME_USED;
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.writeSyncableNBT(compound, sync);
this.storage.writeToNBT(compound);
this.tank.writeToNBT(compound);
compound.setInteger("Cache", this.coffeeCacheAmount);
compound.setInteger("Time", this.brewTime);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
this.storage.readFromNBT(compound);
this.tank.readFromNBT(compound);
this.coffeeCacheAmount = compound.getInteger("Cache");
this.brewTime = compound.getInteger("Time");
}
@Override
public void updateEntity(){
super.updateEntity();
@ -123,44 +160,6 @@ public class TileEntityCoffeeMachine extends TileEntityInventoryBase implements
}
}
@SideOnly(Side.CLIENT)
public int getCoffeeScaled(int i){
return this.coffeeCacheAmount*i/COFFEE_CACHE_MAX_AMOUNT;
}
@SideOnly(Side.CLIENT)
public int getWaterScaled(int i){
return this.tank.getFluidAmount()*i/this.tank.getCapacity();
}
@SideOnly(Side.CLIENT)
public int getEnergyScaled(int i){
return this.storage.getEnergyStored()*i/this.storage.getMaxEnergyStored();
}
@SideOnly(Side.CLIENT)
public int getBrewScaled(int i){
return this.brewTime*i/TIME_USED;
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.writeSyncableNBT(compound, sync);
this.storage.writeToNBT(compound);
this.tank.writeToNBT(compound);
compound.setInteger("Cache", this.coffeeCacheAmount);
compound.setInteger("Time", this.brewTime);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
this.storage.readFromNBT(compound);
this.tank.readFromNBT(compound);
this.coffeeCacheAmount = compound.getInteger("Cache");
this.brewTime = compound.getInteger("Time");
}
@Override
public boolean isItemValidForSlot(int i, ItemStack stack){
return (i >= 3 && ItemCoffee.getIngredientFromStack(stack) != null) || (i == SLOT_COFFEE_BEANS && stack.getItem() == InitItems.itemCoffeeBean) || (i == SLOT_INPUT && stack.getItem() == InitItems.itemMisc && stack.getItemDamage() == TheMiscItems.CUP.ordinal());

View file

@ -19,14 +19,25 @@ import net.minecraft.nbt.NBTTagCompound;
public class TileEntityCompost extends TileEntityInventoryBase{
public int conversionTime;
public static final int AMOUNT = 10;
public int conversionTime;
public TileEntityCompost(){
super(1, "compost");
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
compound.setInteger("ConversionTime", this.conversionTime);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
this.conversionTime = compound.getInteger("ConversionTime");
}
@Override
public void updateEntity(){
super.updateEntity();
@ -58,18 +69,6 @@ public class TileEntityCompost extends TileEntityInventoryBase{
}
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
compound.setInteger("ConversionTime", this.conversionTime);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
this.conversionTime = compound.getInteger("ConversionTime");
}
@Override
public int getInventoryStackLimit(){
return AMOUNT;

View file

@ -26,13 +26,11 @@ import java.util.ArrayList;
public class TileEntityDirectionalBreaker extends TileEntityInventoryBase implements IEnergyReceiver{
public EnergyStorage storage = new EnergyStorage(10000);
private int lastEnergy;
private int currentTime;
public static final int RANGE = 8;
public static final int ENERGY_USE = 5;
public EnergyStorage storage = new EnergyStorage(10000);
private int lastEnergy;
private int currentTime;
public TileEntityDirectionalBreaker(){
super(9, "directionalBreaker");
@ -83,11 +81,6 @@ public class TileEntityDirectionalBreaker extends TileEntityInventoryBase implem
}
}
@SideOnly(Side.CLIENT)
public int getEnergyScaled(int i){
return this.storage.getEnergyStored()*i/this.storage.getMaxEnergyStored();
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.writeSyncableNBT(compound, sync);
@ -107,6 +100,11 @@ public class TileEntityDirectionalBreaker extends TileEntityInventoryBase implem
return false;
}
@SideOnly(Side.CLIENT)
public int getEnergyScaled(int i){
return this.storage.getEnergyStored()*i/this.storage.getMaxEnergyStored();
}
@Override
public boolean canInsertItem(int slot, ItemStack stack, int side){
return this.isItemValidForSlot(slot, stack);

View file

@ -23,6 +23,18 @@ public class TileEntityDropper extends TileEntityInventoryBase{
super(9, "dropper");
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.writeSyncableNBT(compound, sync);
compound.setInteger("CurrentTime", this.currentTime);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
this.currentTime = compound.getInteger("CurrentTime");
}
@Override
@SuppressWarnings("unchecked")
public void updateEntity(){
@ -62,18 +74,6 @@ public class TileEntityDropper extends TileEntityInventoryBase{
return null;
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.writeSyncableNBT(compound, sync);
compound.setInteger("CurrentTime", this.currentTime);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
this.currentTime = compound.getInteger("CurrentTime");
}
@Override
public boolean isItemValidForSlot(int i, ItemStack stack){
return true;

View file

@ -28,6 +28,18 @@ public class TileEntityEnergizer extends TileEntityInventoryBase implements IEne
super(2, "energizer");
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.writeToNBT(compound);
super.writeSyncableNBT(compound, sync);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.readFromNBT(compound);
super.readSyncableNBT(compound, sync);
}
@Override
public void updateEntity(){
super.updateEntity();
@ -53,18 +65,6 @@ public class TileEntityEnergizer extends TileEntityInventoryBase implements IEne
}
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.writeToNBT(compound);
super.writeSyncableNBT(compound, sync);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.readFromNBT(compound);
super.readSyncableNBT(compound, sync);
}
@Override
public boolean isItemValidForSlot(int i, ItemStack stack){
return i == 0 && stack.getItem() instanceof IEnergyContainerItem;

View file

@ -29,6 +29,18 @@ public class TileEntityEnervator extends TileEntityInventoryBase implements IEne
super(2, "enervator");
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.writeToNBT(compound);
super.writeSyncableNBT(compound, sync);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.readFromNBT(compound);
super.readSyncableNBT(compound, sync);
}
@Override
public void updateEntity(){
super.updateEntity();
@ -63,18 +75,6 @@ public class TileEntityEnervator extends TileEntityInventoryBase implements IEne
}
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.writeToNBT(compound);
super.writeSyncableNBT(compound, sync);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.readFromNBT(compound);
super.readSyncableNBT(compound, sync);
}
@Override
public boolean isItemValidForSlot(int i, ItemStack stack){
return i == 0 && stack.getItem() instanceof IEnergyContainerItem;

View file

@ -22,18 +22,34 @@ import java.util.List;
public class TileEntityFeeder extends TileEntityInventoryBase{
public static final int THRESHOLD = 30;
private static final int TIME = 100;
public int currentTimer;
public int currentAnimalAmount;
private int lastAnimalAmount;
private int lastTimer;
public static final int THRESHOLD = 30;
private static final int TIME = 100;
public TileEntityFeeder(){
super(1, "feeder");
}
@SideOnly(Side.CLIENT)
public int getCurrentTimerToScale(int i){
return this.currentTimer*i/TIME;
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.writeSyncableNBT(compound, sync);
compound.setInteger("Timer", this.currentTimer);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
this.currentTimer = compound.getInteger("Timer");
}
@Override
@SuppressWarnings("unchecked")
public void updateEntity(){
@ -95,23 +111,6 @@ public class TileEntityFeeder extends TileEntityInventoryBase{
}
}
@SideOnly(Side.CLIENT)
public int getCurrentTimerToScale(int i){
return this.currentTimer*i/TIME;
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.writeSyncableNBT(compound, sync);
compound.setInteger("Timer", this.currentTimer);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
this.currentTimer = compound.getInteger("Timer");
}
@Override
public boolean isItemValidForSlot(int i, ItemStack stack){
return true;

View file

@ -22,6 +22,7 @@ import net.minecraftforge.fluids.*;
public class TileEntityFermentingBarrel extends TileEntityInventoryBase implements IFluidHandler{
private static final int PROCESS_TIME = 100;
public FluidTank canolaTank = new FluidTank(2*FluidContainerRegistry.BUCKET_VOLUME);
public FluidTank oilTank = new FluidTank(2*FluidContainerRegistry.BUCKET_VOLUME);
public int currentProcessTime;
@ -29,8 +30,6 @@ public class TileEntityFermentingBarrel extends TileEntityInventoryBase implemen
private int lastOil;
private int lastProcessTime;
private static final int PROCESS_TIME = 100;
public TileEntityFermentingBarrel(){
super(4, "fermentingBarrel");
}
@ -76,11 +75,6 @@ public class TileEntityFermentingBarrel extends TileEntityInventoryBase implemen
}
}
@SideOnly(Side.CLIENT)
public int getProcessScaled(int i){
return this.currentProcessTime*i/PROCESS_TIME;
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
compound.setInteger("ProcessTime", this.currentProcessTime);
@ -104,6 +98,11 @@ public class TileEntityFermentingBarrel extends TileEntityInventoryBase implemen
return (i == 0 && FluidContainerRegistry.containsFluid(stack, new FluidStack(InitBlocks.fluidCanolaOil, FluidContainerRegistry.BUCKET_VOLUME))) || (i == 2 && stack.getItem() == Items.bucket);
}
@SideOnly(Side.CLIENT)
public int getProcessScaled(int i){
return this.currentProcessTime*i/PROCESS_TIME;
}
@SideOnly(Side.CLIENT)
public int getOilTankScaled(int i){
return this.oilTank.getFluidAmount()*i/this.oilTank.getCapacity();

View file

@ -25,16 +25,6 @@ public class TileEntityFishingNet extends TileEntityBase{
public int timeUntilNextDrop;
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
compound.setInteger("TimeUntilNextDrop", this.timeUntilNextDrop);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.timeUntilNextDrop = compound.getInteger("TimeUntilNextDrop");
}
@Override
public void updateEntity(){
super.updateEntity();
@ -65,6 +55,16 @@ public class TileEntityFishingNet extends TileEntityBase{
}
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
compound.setInteger("TimeUntilNextDrop", this.timeUntilNextDrop);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.timeUntilNextDrop = compound.getInteger("TimeUntilNextDrop");
}
public void insertIntoInventory(IInventory inventory, ItemStack stack){
for(int i = 0; i < inventory.getSizeInventory(); i++){
if(inventory.isItemValidForSlot(i, stack)){

View file

@ -152,11 +152,6 @@ public class TileEntityFluidCollector extends TileEntityInventoryBase implements
}
}
@SideOnly(Side.CLIENT)
public int getTankScaled(int i){
return this.tank.getFluidAmount()*i/this.tank.getCapacity();
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.writeSyncableNBT(compound, sync);
@ -184,6 +179,11 @@ public class TileEntityFluidCollector extends TileEntityInventoryBase implements
return false;
}
@SideOnly(Side.CLIENT)
public int getTankScaled(int i){
return this.tank.getFluidAmount()*i/this.tank.getCapacity();
}
@Override
public boolean canInsertItem(int slot, ItemStack stack, int side){
return this.isItemValidForSlot(slot, stack);

View file

@ -25,7 +25,8 @@ public class TileEntityFurnaceDouble extends TileEntityInventoryBase implements
public static final int SLOT_OUTPUT_1 = 1;
public static final int SLOT_INPUT_2 = 2;
public static final int SLOT_OUTPUT_2 = 3;
public static final int ENERGY_USE = 25;
private static final int SMELT_TIME = 80;
public EnergyStorage storage = new EnergyStorage(30000);
public int firstSmeltTime;
public int secondSmeltTime;
@ -33,14 +34,26 @@ public class TileEntityFurnaceDouble extends TileEntityInventoryBase implements
private int lastFirstSmelt;
private int lastSecondSmelt;
private static final int SMELT_TIME = 80;
public static final int ENERGY_USE = 25;
public TileEntityFurnaceDouble(){
super(4, "furnaceDouble");
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.writeSyncableNBT(compound, sync);
compound.setInteger("FirstSmeltTime", this.firstSmeltTime);
compound.setInteger("SecondSmeltTime", this.secondSmeltTime);
this.storage.writeToNBT(compound);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
this.firstSmeltTime = compound.getInteger("FirstSmeltTime");
this.secondSmeltTime = compound.getInteger("SecondSmeltTime");
this.storage.readFromNBT(compound);
}
@Override
@SuppressWarnings("unchecked")
public void updateEntity(){
@ -131,22 +144,6 @@ public class TileEntityFurnaceDouble extends TileEntityInventoryBase implements
}
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.writeSyncableNBT(compound, sync);
compound.setInteger("FirstSmeltTime", this.firstSmeltTime);
compound.setInteger("SecondSmeltTime", this.secondSmeltTime);
this.storage.writeToNBT(compound);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
this.firstSmeltTime = compound.getInteger("FirstSmeltTime");
this.secondSmeltTime = compound.getInteger("SecondSmeltTime");
this.storage.readFromNBT(compound);
}
@Override
public boolean isItemValidForSlot(int i, ItemStack stack){
return (i == SLOT_INPUT_1 || i == SLOT_INPUT_2) && FurnaceRecipes.smelting().getSmeltingResult(stack) != null;

View file

@ -18,9 +18,8 @@ import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityFurnaceSolar extends TileEntityBase implements IEnergyProvider{
public EnergyStorage storage = new EnergyStorage(30000);
public static final int PRODUCE = 10;
public EnergyStorage storage = new EnergyStorage(30000);
@Override
public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate){
@ -42,25 +41,6 @@ public class TileEntityFurnaceSolar extends TileEntityBase implements IEnergyPro
return from != ForgeDirection.UP;
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.writeToNBT(compound);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.readFromNBT(compound);
}
public boolean hasBlockAbove(){
for(int y = yCoord+1; y <= worldObj.getHeight(); y++){
if(!worldObj.getBlock(xCoord, y, zCoord).isAir(worldObj, xCoord, y, zCoord)){
return true;
}
}
return false;
}
@Override
public void updateEntity(){
super.updateEntity();
@ -81,4 +61,23 @@ public class TileEntityFurnaceSolar extends TileEntityBase implements IEnergyPro
}
}
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.writeToNBT(compound);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.readFromNBT(compound);
}
public boolean hasBlockAbove(){
for(int y = yCoord+1; y <= worldObj.getHeight(); y++){
if(!worldObj.getBlock(xCoord, y, zCoord).isAir(worldObj, xCoord, y, zCoord)){
return true;
}
}
return false;
}
}

View file

@ -68,6 +68,22 @@ public class TileEntityGrinder extends TileEntityInventoryBase implements IEnerg
return true;
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
compound.setInteger("FirstCrushTime", this.firstCrushTime);
compound.setInteger("SecondCrushTime", this.secondCrushTime);
this.storage.writeToNBT(compound);
super.writeSyncableNBT(compound, sync);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.firstCrushTime = compound.getInteger("FirstCrushTime");
this.secondCrushTime = compound.getInteger("SecondCrushTime");
this.storage.readFromNBT(compound);
super.readSyncableNBT(compound, sync);
}
@Override
@SuppressWarnings("unchecked")
public void updateEntity(){
@ -195,22 +211,6 @@ public class TileEntityGrinder extends TileEntityInventoryBase implements IEnerg
}
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
compound.setInteger("FirstCrushTime", this.firstCrushTime);
compound.setInteger("SecondCrushTime", this.secondCrushTime);
this.storage.writeToNBT(compound);
super.writeSyncableNBT(compound, sync);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.firstCrushTime = compound.getInteger("FirstCrushTime");
this.secondCrushTime = compound.getInteger("SecondCrushTime");
this.storage.readFromNBT(compound);
super.readSyncableNBT(compound, sync);
}
@Override
public boolean isItemValidForSlot(int i, ItemStack stack){
return (i == SLOT_INPUT_1 || i == SLOT_INPUT_2) && CrusherRecipeRegistry.getRecipeFromInput(stack) != null;

View file

@ -24,10 +24,9 @@ import java.util.ArrayList;
public class TileEntityHeatCollector extends TileEntityBase implements IEnergyProvider{
public EnergyStorage storage = new EnergyStorage(30000);
public static final int ENERGY_PRODUCE = 40;
public static final int BLOCKS_NEEDED = 4;
public EnergyStorage storage = new EnergyStorage(30000);
@Override
public void updateEntity(){
@ -62,6 +61,16 @@ public class TileEntityHeatCollector extends TileEntityBase implements IEnergyPr
}
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean isForSync){
this.storage.writeToNBT(compound);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean isForSync){
this.storage.readFromNBT(compound);
}
@Override
public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate){
return this.storage.extractEnergy(maxExtract, simulate);
@ -81,14 +90,4 @@ public class TileEntityHeatCollector extends TileEntityBase implements IEnergyPr
public boolean canConnectEnergy(ForgeDirection from){
return from == ForgeDirection.UP;
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean isForSync){
this.storage.writeToNBT(compound);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean isForSync){
this.storage.readFromNBT(compound);
}
}

View file

@ -80,38 +80,6 @@ public class TileEntityInputter extends TileEntityInventoryBase implements IButt
this.markDirty();
}
@Override
public void updateEntity(){
super.updateEntity();
if(!worldObj.isRemote){
this.initVars();
//Is Block not powered by Redstone?
if(!worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)){
if(!(this.sideToPull == this.sideToPut && this.slotToPullStart == this.slotToPutStart && this.slotToPullEnd == this.slotToPutEnd)){
if(sideToPull != -1 && this.placeToPull instanceof IInventory){
this.pull();
}
if(sideToPut != -1 && this.placeToPut instanceof IInventory){
this.put();
}
}
}
//Update the Client
if((this.sideToPut != this.lastPutSide || this.sideToPull != this.lastPullSide || this.slotToPullStart != this.lastPullStart || this.slotToPullEnd != this.lastPullEnd || this.slotToPutStart != this.lastPutStart || this.slotToPutEnd != this.lastPutEnd || this.isPullWhitelist != lastPullWhite || this.isPutWhitelist != this.lastPutWhite) && this.sendUpdateWithInterval()){
this.lastPutSide = this.sideToPut;
this.lastPullSide = this.sideToPull;
this.lastPullStart = this.slotToPullStart;
this.lastPullEnd = this.slotToPullEnd;
this.lastPutStart = this.slotToPutStart;
this.lastPutEnd = this.slotToPutEnd;
this.lastPullWhite = this.isPullWhitelist;
this.lastPutWhite = this.isPutWhitelist;
}
}
}
/**
* Pulls Items from the specified Slots on the specified Side
*/
@ -426,6 +394,38 @@ public class TileEntityInputter extends TileEntityInventoryBase implements IButt
super.readSyncableNBT(compound, sync);
}
@Override
public void updateEntity(){
super.updateEntity();
if(!worldObj.isRemote){
this.initVars();
//Is Block not powered by Redstone?
if(!worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)){
if(!(this.sideToPull == this.sideToPut && this.slotToPullStart == this.slotToPutStart && this.slotToPullEnd == this.slotToPutEnd)){
if(sideToPull != -1 && this.placeToPull instanceof IInventory){
this.pull();
}
if(sideToPut != -1 && this.placeToPut instanceof IInventory){
this.put();
}
}
}
//Update the Client
if((this.sideToPut != this.lastPutSide || this.sideToPull != this.lastPullSide || this.slotToPullStart != this.lastPullStart || this.slotToPullEnd != this.lastPullEnd || this.slotToPutStart != this.lastPutStart || this.slotToPutEnd != this.lastPutEnd || this.isPullWhitelist != lastPullWhite || this.isPutWhitelist != this.lastPutWhite) && this.sendUpdateWithInterval()){
this.lastPutSide = this.sideToPut;
this.lastPullSide = this.sideToPull;
this.lastPullStart = this.slotToPullStart;
this.lastPullEnd = this.slotToPullEnd;
this.lastPutStart = this.slotToPutStart;
this.lastPutEnd = this.slotToPutEnd;
this.lastPullWhite = this.isPullWhitelist;
this.lastPutWhite = this.isPutWhitelist;
}
}
}
@Override
public boolean isItemValidForSlot(int i, ItemStack stack){
return i == 0;

View file

@ -31,8 +31,23 @@ public abstract class TileEntityInventoryBase extends TileEntityBase implements
this.slots = new ItemStack[itemAmount];
}
public boolean shouldSyncSlots(){
return false;
@Override
public int[] getAccessibleSlotsFromSide(int side){
if(this.slots.length > 0){
int[] theInt = new int[slots.length];
for(int i = 0; i < theInt.length; i++){
theInt[i] = i;
}
return theInt;
}
else{
return new int[0];
}
}
@Override
public void updateEntity(){
super.updateEntity();
}
@Override
@ -53,6 +68,10 @@ public abstract class TileEntityInventoryBase extends TileEntityBase implements
}
}
public boolean shouldSyncSlots(){
return false;
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean isForSync){
if(!isForSync || this.shouldSyncSlots()){
@ -69,25 +88,6 @@ public abstract class TileEntityInventoryBase extends TileEntityBase implements
}
}
@Override
public int[] getAccessibleSlotsFromSide(int side){
if(this.slots.length > 0){
int[] theInt = new int[slots.length];
for(int i = 0; i < theInt.length; i++){
theInt[i] = i;
}
return theInt;
}
else{
return new int[0];
}
}
@Override
public void updateEntity(){
super.updateEntity();
}
@Override
public int getInventoryStackLimit(){
return 64;

View file

@ -22,17 +22,29 @@ public class TileEntityItemRepairer extends TileEntityInventoryBase implements I
public static final int SLOT_INPUT = 0;
public static final int SLOT_OUTPUT = 1;
public static final int ENERGY_USE = 1500;
public EnergyStorage storage = new EnergyStorage(300000);
public int nextRepairTick;
private int lastEnergy;
public static final int ENERGY_USE = 1500;
public TileEntityItemRepairer(){
super(2, "repairer");
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
compound.setInteger("NextRepairTick", this.nextRepairTick);
super.writeSyncableNBT(compound, sync);
this.storage.writeToNBT(compound);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.nextRepairTick = compound.getInteger("NextRepairTick");
super.readSyncableNBT(compound, sync);
this.storage.readFromNBT(compound);
}
@Override
@SuppressWarnings("unchecked")
public void updateEntity(){
@ -69,20 +81,6 @@ public class TileEntityItemRepairer extends TileEntityInventoryBase implements I
return stack != null && stack.getItem().isRepairable();
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
compound.setInteger("NextRepairTick", this.nextRepairTick);
super.writeSyncableNBT(compound, sync);
this.storage.writeToNBT(compound);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.nextRepairTick = compound.getInteger("NextRepairTick");
super.readSyncableNBT(compound, sync);
this.storage.readFromNBT(compound);
}
@Override
public boolean isItemValidForSlot(int i, ItemStack stack){
return i == SLOT_INPUT;

View file

@ -41,12 +41,6 @@ public class TileEntityLaserRelay extends TileEntityBase implements IEnergyRecei
}
}
@Override
public void invalidate(){
super.invalidate();
LaserRelayConnectionHandler.getInstance().removeRelayFromNetwork(new WorldPos(this.worldObj, this.xCoord, this.yCoord, this.zCoord));
}
@SideOnly(Side.CLIENT)
public void renderParticles(){
if(Util.RANDOM.nextInt(2) == 0){
@ -106,6 +100,12 @@ public class TileEntityLaserRelay extends TileEntityBase implements IEnergyRecei
}
}
@Override
public void invalidate(){
super.invalidate();
LaserRelayConnectionHandler.getInstance().removeRelayFromNetwork(new WorldPos(this.worldObj, this.xCoord, this.yCoord, this.zCoord));
}
@Override
public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate){
return this.transmitEnergy(WorldUtil.getCoordsFromSide(from, worldObj, xCoord, yCoord, zCoord, 0), maxReceive, simulate);

View file

@ -24,25 +24,12 @@ public class TileEntityLavaFactoryController extends TileEntityBase implements I
public static final int NOT_MULTI = 0;
public static final int HAS_LAVA = 1;
public static final int HAS_AIR = 2;
public static final int ENERGY_USE = 150000;
//The Positions the Case Blocks should be in for the Factory to work
private static final int[][] CASE_POSITIONS = {{-1, 1, 0}, {1, 1, 0}, {0, 1, -1}, {0, 1, 1}};
public EnergyStorage storage = new EnergyStorage(3000000);
private int currentWorkTime;
public static final int ENERGY_USE = 150000;
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.writeToNBT(compound);
compound.setInteger("WorkTime", this.currentWorkTime);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.readFromNBT(compound);
this.currentWorkTime = compound.getInteger("WorkTime");
}
@Override
@SuppressWarnings("unchecked")
public void updateEntity(){
@ -62,6 +49,18 @@ public class TileEntityLavaFactoryController extends TileEntityBase implements I
}
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.writeToNBT(compound);
compound.setInteger("WorkTime", this.currentWorkTime);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.readFromNBT(compound);
this.currentWorkTime = compound.getInteger("WorkTime");
}
public int isMultiblock(){
if(WorldUtil.hasBlocksInPlacesGiven(CASE_POSITIONS, InitBlocks.blockMisc, TheMiscBlocks.LAVA_FACTORY_CASE.ordinal(), worldObj, xCoord, yCoord, zCoord)){
if(worldObj.getBlock(xCoord, yCoord+1, zCoord) == Blocks.lava || worldObj.getBlock(xCoord, yCoord+1, zCoord) == Blocks.flowing_lava){

View file

@ -23,23 +23,11 @@ import java.util.Collections;
public class TileEntityLeafGenerator extends TileEntityBase implements IEnergyProvider{
public EnergyStorage storage = new EnergyStorage(35000);
public static final int RANGE = 7;
public static final int ENERGY_PRODUCED = 300;
public EnergyStorage storage = new EnergyStorage(35000);
private int nextUseCounter;
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.writeToNBT(compound);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.readFromNBT(compound);
}
@Override
@SuppressWarnings("unchecked")
public void updateEntity(){
@ -94,6 +82,16 @@ public class TileEntityLeafGenerator extends TileEntityBase implements IEnergyPr
}
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.writeToNBT(compound);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.storage.readFromNBT(compound);
}
@Override
public int extractEnergy(ForgeDirection from, int maxReceive, boolean simulate){
return this.storage.extractEnergy(maxReceive, simulate);

View file

@ -23,6 +23,8 @@ import net.minecraftforge.fluids.*;
public class TileEntityOilGenerator extends TileEntityInventoryBase implements IEnergyProvider, IFluidHandler{
public static final int ENERGY_PRODUCED = 76;
private static final int BURN_TIME = 100;
public EnergyStorage storage = new EnergyStorage(50000);
public FluidTank tank = new FluidTank(2*FluidContainerRegistry.BUCKET_VOLUME);
public int currentBurnTime;
@ -30,13 +32,41 @@ public class TileEntityOilGenerator extends TileEntityInventoryBase implements I
private int lastTank;
private int lastBurnTime;
public static final int ENERGY_PRODUCED = 76;
private static final int BURN_TIME = 100;
public TileEntityOilGenerator(){
super(2, "oilGenerator");
}
@SideOnly(Side.CLIENT)
public int getEnergyScaled(int i){
return this.storage.getEnergyStored()*i/this.storage.getMaxEnergyStored();
}
@SideOnly(Side.CLIENT)
public int getTankScaled(int i){
return this.tank.getFluidAmount()*i/this.tank.getCapacity();
}
@SideOnly(Side.CLIENT)
public int getBurningScaled(int i){
return this.currentBurnTime*i/BURN_TIME;
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
compound.setInteger("BurnTime", this.currentBurnTime);
this.storage.writeToNBT(compound);
this.tank.writeToNBT(compound);
super.writeSyncableNBT(compound, sync);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.currentBurnTime = compound.getInteger("BurnTime");
this.storage.readFromNBT(compound);
this.tank.readFromNBT(compound);
super.readSyncableNBT(compound, sync);
}
@Override
@SuppressWarnings("unchecked")
public void updateEntity(){
@ -89,37 +119,6 @@ public class TileEntityOilGenerator extends TileEntityInventoryBase implements I
}
}
@SideOnly(Side.CLIENT)
public int getEnergyScaled(int i){
return this.storage.getEnergyStored()*i/this.storage.getMaxEnergyStored();
}
@SideOnly(Side.CLIENT)
public int getTankScaled(int i){
return this.tank.getFluidAmount()*i/this.tank.getCapacity();
}
@SideOnly(Side.CLIENT)
public int getBurningScaled(int i){
return this.currentBurnTime*i/BURN_TIME;
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
compound.setInteger("BurnTime", this.currentBurnTime);
this.storage.writeToNBT(compound);
this.tank.writeToNBT(compound);
super.writeSyncableNBT(compound, sync);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
this.currentBurnTime = compound.getInteger("BurnTime");
this.storage.readFromNBT(compound);
this.tank.readFromNBT(compound);
super.readSyncableNBT(compound, sync);
}
@Override
public boolean isItemValidForSlot(int i, ItemStack stack){
return FluidContainerRegistry.containsFluid(stack, new FluidStack(InitBlocks.fluidOil, FluidContainerRegistry.BUCKET_VOLUME)) && i == 0;

View file

@ -25,13 +25,12 @@ import java.util.ArrayList;
public class TileEntityPhantomPlacer extends TileEntityInventoryBase implements IPhantomTile{
public static final int RANGE = 3;
public WorldPos boundPosition;
public int currentTime;
public int range;
public boolean isBreaker;
public static final int RANGE = 3;
public TileEntityPhantomPlacer(int slots, String name){
super(slots, name);
}

View file

@ -24,22 +24,42 @@ import net.minecraft.world.World;
public class TileEntityPhantomface extends TileEntityInventoryBase implements IPhantomTile{
public static final int RANGE = 16;
public WorldPos boundPosition;
public BlockPhantom.Type type;
public int range;
private int rangeBefore;
private WorldPos boundPosBefore;
private Block boundBlockBefore;
public static final int RANGE = 16;
public TileEntityPhantomface(String name){
super(0, name);
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.writeSyncableNBT(compound, sync);
if(this.boundPosition != null){
compound.setInteger("XCoordOfTileStored", boundPosition.getX());
compound.setInteger("YCoordOfTileStored", boundPosition.getY());
compound.setInteger("ZCoordOfTileStored", boundPosition.getZ());
compound.setInteger("WorldOfTileStored", boundPosition.getWorld().provider.dimensionId);
}
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
int x = compound.getInteger("XCoordOfTileStored");
int y = compound.getInteger("YCoordOfTileStored");
int z = compound.getInteger("ZCoordOfTileStored");
int world = compound.getInteger("WorldOfTileStored");
if(!(x == 0 && y == 0 && z == 0)){
this.boundPosition = new WorldPos(world, x, y, z);
this.markDirty();
}
}
@Override
public void updateEntity(){
super.updateEntity();
@ -137,30 +157,6 @@ public class TileEntityPhantomface extends TileEntityInventoryBase implements IP
return this.range;
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.writeSyncableNBT(compound, sync);
if(this.boundPosition != null){
compound.setInteger("XCoordOfTileStored", boundPosition.getX());
compound.setInteger("YCoordOfTileStored", boundPosition.getY());
compound.setInteger("ZCoordOfTileStored", boundPosition.getZ());
compound.setInteger("WorldOfTileStored", boundPosition.getWorld().provider.dimensionId);
}
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
int x = compound.getInteger("XCoordOfTileStored");
int y = compound.getInteger("YCoordOfTileStored");
int z = compound.getInteger("ZCoordOfTileStored");
int world = compound.getInteger("WorldOfTileStored");
if(!(x == 0 && y == 0 && z == 0)){
this.boundPosition = new WorldPos(world, x, y, z);
this.markDirty();
}
}
@Override
public boolean canInsertItem(int slot, ItemStack stack, int side){
return false;

View file

@ -23,12 +23,10 @@ import java.util.ArrayList;
public class TileEntityRangedCollector extends TileEntityInventoryBase implements IButtonReactor{
public static final int WHITELIST_START = 6;
public static final int RANGE = 6;
public boolean isWhitelist = true;
private boolean lastWhitelist;
public static final int RANGE = 6;
public TileEntityRangedCollector(){
super(18, "rangedCollector");
}

View file

@ -27,6 +27,17 @@ public class TileEntitySmileyCloud extends TileEntityBase implements IStringReac
public int flyHeight;
private String nameBefore;
@Override
public void updateEntity(){
super.updateEntity();
if(!worldObj.isRemote){
if(!Objects.equals(this.name, this.nameBefore) && this.sendUpdateWithInterval()){
this.nameBefore = this.name;
this.markDirty();
}
}
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
if(this.name != null){
@ -39,17 +50,6 @@ public class TileEntitySmileyCloud extends TileEntityBase implements IStringReac
this.name = compound.getString("Name");
}
@Override
public void updateEntity(){
super.updateEntity();
if(!worldObj.isRemote){
if(!Objects.equals(this.name, this.nameBefore) && this.sendUpdateWithInterval()){
this.nameBefore = this.name;
this.markDirty();
}
}
}
@Override
public void onTextReceived(String text, int textID, EntityPlayer player){
this.name = text;

View file

@ -29,6 +29,18 @@ public class TileEntityXPSolidifier extends TileEntityInventoryBase implements I
super(1, "xpSolidifier");
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.writeSyncableNBT(compound, sync);
compound.setShort("Amount", this.amount);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
this.amount = compound.getShort("Amount");
}
@Override
public void updateEntity(){
super.updateEntity();
@ -53,18 +65,6 @@ public class TileEntityXPSolidifier extends TileEntityInventoryBase implements I
}
}
@Override
public void writeSyncableNBT(NBTTagCompound compound, boolean sync){
super.writeSyncableNBT(compound, sync);
compound.setShort("Amount", this.amount);
}
@Override
public void readSyncableNBT(NBTTagCompound compound, boolean sync){
super.readSyncableNBT(compound, sync);
this.amount = compound.getShort("Amount");
}
@Override
public boolean isItemValidForSlot(int i, ItemStack stack){
return false;

View file

@ -68,12 +68,6 @@ public class WorldPos{
return pos != null && this.x == pos.getX() && this.y == pos.getY() && this.z == pos.getZ() && this.getWorld() == pos.getWorld();
}
public void setBlock(Block block, int meta, int flag){
if(this.getWorld() != null){
this.getWorld().setBlock(this.x, this.y, this.z, block, meta, flag);
}
}
public int getX(){
return this.x;
}
@ -86,6 +80,12 @@ public class WorldPos{
return this.z;
}
public void setBlock(Block block, int meta, int flag){
if(this.getWorld() != null){
this.getWorld().setBlock(this.x, this.y, this.z, block, meta, flag);
}
}
public WorldPos copy(){
return new WorldPos(this.getWorld(), this.x, this.y, this.z);
}

View file

@ -71,13 +71,6 @@ public class PersistentClientData{
}
}
private static String getName(){
if(Minecraft.getMinecraft().theWorld != null){
return Minecraft.getMinecraft().isIntegratedServerRunning() ? Minecraft.getMinecraft().getIntegratedServer().getFolderName() : Minecraft.getMinecraft().func_147104_D().serverIP;
}
else return "Invalid";
}
private static NBTTagCompound getCompoundForWorld(NBTTagCompound mainCompound){
return mainCompound.getCompoundTag(getName());
}
@ -104,6 +97,15 @@ public class PersistentClientData{
return theFile;
}
private static String getName(){
if(Minecraft.getMinecraft().theWorld != null){
return Minecraft.getMinecraft().isIntegratedServerRunning() ? Minecraft.getMinecraft().getIntegratedServer().getFolderName() : Minecraft.getMinecraft().func_147104_D().serverIP;
}
else{
return "Invalid";
}
}
public static void setTheFile(File file){
theFile = file;
}