mirror of
https://github.com/chylex/Hardcore-Ender-Expansion.git
synced 2025-04-10 20:15:42 +02:00
Fixeees and polishiiiiing
This commit is contained in:
parent
6877fb1fe3
commit
39920d3a6c
src/main/java/chylex/hee
@ -1,7 +1,6 @@
|
||||
package chylex.hee.gui;
|
||||
import gnu.trove.map.hash.TByteObjectHashMap;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
@ -32,6 +31,7 @@ import chylex.hee.mechanics.compendium.content.KnowledgeObject;
|
||||
import chylex.hee.mechanics.compendium.content.fragments.KnowledgeFragmentText;
|
||||
import chylex.hee.mechanics.compendium.objects.IKnowledgeObjectInstance;
|
||||
import chylex.hee.mechanics.compendium.player.PlayerCompendiumData;
|
||||
import chylex.hee.mechanics.compendium.player.PlayerCompendiumData.FragmentPurchaseStatus;
|
||||
import chylex.hee.mechanics.compendium.render.CategoryDisplayElement;
|
||||
import chylex.hee.mechanics.compendium.render.ObjectDisplayElement;
|
||||
import chylex.hee.mechanics.compendium.render.PurchaseDisplayElement;
|
||||
@ -150,6 +150,8 @@ public class GuiEnderCompendium extends GuiScreen implements ITooltipRenderer{
|
||||
|
||||
HardcoreEnderExpansion.proxy.loadConfiguration();
|
||||
}
|
||||
|
||||
if (button.id == 3 || button.id == 4)updatePurchaseElements();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -157,6 +159,8 @@ public class GuiEnderCompendium extends GuiScreen implements ITooltipRenderer{
|
||||
if (buttonId == 1)actionPerformed((GuiButton)buttonList.get(0));
|
||||
else if (buttonId == 0){
|
||||
if (!hasHighlightedCategory){
|
||||
objectElements.clear();
|
||||
|
||||
for(CategoryDisplayElement element:categoryElements){
|
||||
if (element.isMouseOver(mouseX,mouseY,(int)offsetX.value(),(int)offsetY.value())){
|
||||
for(KnowledgeObject object:element.category.getAllObjects())objectElements.add(new ObjectDisplayElement(object));
|
||||
@ -168,7 +172,7 @@ public class GuiEnderCompendium extends GuiScreen implements ITooltipRenderer{
|
||||
}
|
||||
else{
|
||||
boolean stop = false;
|
||||
int offX = (int)offsetX.value()-(width>>1), offY = (int)offsetY.value()+guiObjectTopY;
|
||||
int offX = (int)offsetX.value()-(width>>1)+(width>>2), offY = (int)offsetY.value()+guiObjectTopY;
|
||||
|
||||
for(ObjectDisplayElement element:objectElements){
|
||||
if (element.isMouseOver(mouseX,mouseY,offX,offY)){
|
||||
@ -243,7 +247,7 @@ public class GuiEnderCompendium extends GuiScreen implements ITooltipRenderer{
|
||||
|
||||
if (fragment == null)break;
|
||||
else{
|
||||
pageMap = new HashMap<>();
|
||||
pageMap = new LinkedHashMap<>();
|
||||
pageMap.put(fragment,isUnlocked);
|
||||
yy = 0;
|
||||
continue;
|
||||
@ -257,14 +261,20 @@ public class GuiEnderCompendium extends GuiScreen implements ITooltipRenderer{
|
||||
if (object == KnowledgeRegistrations.HELP)return;
|
||||
|
||||
if (!compendiumData.hasDiscoveredObject(currentObject)){
|
||||
if (currentObject.isBuyable())purchaseElements.add(new PurchaseDisplayElement(currentObject,(this.height>>1)-3,compendiumData.getPoints() >= currentObject.getUnlockPrice()));
|
||||
if (currentObject.isBuyable())purchaseElements.add(new PurchaseDisplayElement(currentObject,(this.height>>1)-3,compendiumData.getPoints() >= currentObject.getUnlockPrice() ? FragmentPurchaseStatus.CAN_PURCHASE : FragmentPurchaseStatus.NOT_ENOUGH_POINTS));
|
||||
}
|
||||
else{
|
||||
yy = ((this.height-guiPageTexHeight)>>1)+guiPageTop;
|
||||
else updatePurchaseElements();
|
||||
}
|
||||
|
||||
private void updatePurchaseElements(){
|
||||
purchaseElements.clear();
|
||||
|
||||
if (currentObject != null){
|
||||
int yy = ((this.height-guiPageTexHeight)>>1)+guiPageTop, height;
|
||||
|
||||
for(Entry<KnowledgeFragment,Boolean> entry:currentObjectPages.get(pageIndex).entrySet()){
|
||||
height = entry.getKey().getHeight(this,entry.getValue());
|
||||
if (!entry.getValue() && entry.getKey().isBuyable())purchaseElements.add(new PurchaseDisplayElement(entry.getKey(),yy+(height>>1)+2,compendiumData.getPoints() >= entry.getKey().getPrice()));
|
||||
if (!entry.getValue())purchaseElements.add(new PurchaseDisplayElement(entry.getKey(),yy+(height>>1)+2,compendiumData.canPurchaseFragment(entry.getKey())));
|
||||
yy += 10+height;
|
||||
}
|
||||
}
|
||||
@ -314,7 +324,7 @@ public class GuiEnderCompendium extends GuiScreen implements ITooltipRenderer{
|
||||
}
|
||||
}
|
||||
|
||||
offX = ptt(offsetX.value(),prevOffsetX,partialTickTime)-(width>>1);
|
||||
offX = ptt(offsetX.value(),prevOffsetX,partialTickTime)-(width>>1)+(width>>2);
|
||||
offY = ptt(offsetY.value(),prevOffsetY,partialTickTime)+guiObjectTopY;
|
||||
|
||||
GL11.glPushMatrix();
|
||||
@ -325,9 +335,7 @@ public class GuiEnderCompendium extends GuiScreen implements ITooltipRenderer{
|
||||
|
||||
for(ObjectDisplayElement element:objectElements){
|
||||
if (element.isMouseOver(mouseX,mouseY,(int)offX,(int)offY)){
|
||||
String tooltip = element.object.getTooltip();
|
||||
//if (!compendiumData.hasDiscoveredObject(element.object))tooltip += "\n\nNot discovered yet.";
|
||||
GuiItemRenderHelper.drawTooltip(this,fontRendererObj,mouseX,mouseY,tooltip);
|
||||
GuiItemRenderHelper.drawTooltip(this,fontRendererObj,mouseX,mouseY,element.object.getTooltip());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -71,7 +71,7 @@ public final class KnowledgeRegistrations{
|
||||
END_POWDER = create(ItemList.end_powder),
|
||||
ENHANCED_ENDER_PEARL = create(ItemList.enhanced_ender_pearl),
|
||||
TEMPLE_CALLER = create(ItemList.temple_caller),
|
||||
ENDER_DRAGON = create(EntityBossDragon.class),
|
||||
ENDER_DRAGON = new KnowledgeObject<ObjectMob>(new ObjectMob(EntityBossDragon.class),new ItemStack(Blocks.dragon_egg),"Ender Dragon"),
|
||||
ANGRY_ENDERMAN = create(EntityMobAngryEnderman.class),
|
||||
VAMPIRE_BAT = create(EntityMobVampiricBat.class),
|
||||
|
||||
@ -216,7 +216,7 @@ public final class KnowledgeRegistrations{
|
||||
new KnowledgeFragmentText(4).setContents("Note that discovering objects also unlocks some of their fragments and gives you points, whereas buying the object does neither."),
|
||||
new KnowledgeFragmentText(5).setContents("Knowledge Notes are items found in dungeons and traded by villagers. Using them gives you Knowledge Points, but destroys the item in the process."),
|
||||
new KnowledgeFragmentText(6).setContents("You can use right mouse button instead of the Back button for easier use of the Compendium."),
|
||||
new KnowledgeFragmentText(7).setContents("Opening the Compendium while looking at a block, item or a mob opens the appropriate object.")
|
||||
new KnowledgeFragmentText(7).setContents("Opening the Compendium while sneaking and looking at a block, item or a mob opens the appropriate object.")
|
||||
});
|
||||
|
||||
ESSENCE.setNonBuyable().setDiscoveryReward(12).setFragments(new KnowledgeFragment[]{
|
||||
|
@ -32,7 +32,7 @@ public class KnowledgeFragmentItemConversion extends KnowledgeFragment{
|
||||
gui.drawTexturedModalRect(x+20,y,0,59,22,20);
|
||||
|
||||
GuiItemRenderHelper.renderItemIntoGUI(gui.mc.getTextureManager(),isUnlocked ? itemFrom : KnowledgeFragmentCrafting.lockedItem,x+1,y+1);
|
||||
GuiItemRenderHelper.renderItemIntoGUI(gui.mc.getTextureManager(),isUnlocked ? itemTo : KnowledgeFragmentCrafting.lockedItem,x+24,y+1);
|
||||
GuiItemRenderHelper.renderItemIntoGUI(gui.mc.getTextureManager(),isUnlocked ? itemTo : KnowledgeFragmentCrafting.lockedItem,x+45,y+1);
|
||||
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
|
||||
@ -40,7 +40,7 @@ public class KnowledgeFragmentItemConversion extends KnowledgeFragment{
|
||||
if (mouseX >= x && mouseX <= x+17){
|
||||
GuiItemRenderHelper.drawTooltip(gui,gui.mc.fontRenderer,mouseX,mouseY,Joiner.on('\n').join(itemFrom.getTooltip(gui.mc.thePlayer,false)));
|
||||
}
|
||||
else if (mouseX >= x+23 && mouseX <= x+40){
|
||||
else if (mouseX >= x+44 && mouseX <= x+61){
|
||||
GuiItemRenderHelper.drawTooltip(gui,gui.mc.fontRenderer,mouseX,mouseY,Joiner.on('\n').join(itemTo.getTooltip(gui.mc.thePlayer,false)));
|
||||
}
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ public class KnowledgeFragmentText extends KnowledgeFragment{
|
||||
public int getHeight(GuiEnderCompendium gui, boolean isUnlocked){
|
||||
boolean origFont = gui.mc.fontRenderer.getUnicodeFlag();
|
||||
gui.mc.fontRenderer.setUnicodeFlag(true);
|
||||
int h = gui.mc.fontRenderer.listFormattedStringToWidth(getString(isUnlocked),GuiEnderCompendium.guiPageWidth-10).size()*gui.mc.fontRenderer.FONT_HEIGHT;
|
||||
int h = gui.mc.fontRenderer.listFormattedStringToWidth(getString(true),GuiEnderCompendium.guiPageWidth-10).size()*gui.mc.fontRenderer.FONT_HEIGHT;
|
||||
gui.mc.fontRenderer.setUnicodeFlag(origFont);
|
||||
return h;
|
||||
}
|
||||
|
@ -32,6 +32,10 @@ public final class CompendiumEventsClient{
|
||||
}
|
||||
}
|
||||
|
||||
public static int getCompendiumKeyCode(){
|
||||
return instance.keyOpenCompendium.getKeyCode();
|
||||
}
|
||||
|
||||
private final KeyBinding keyOpenCompendium;
|
||||
private PlayerCompendiumData data;
|
||||
|
||||
@ -50,10 +54,12 @@ public final class CompendiumEventsClient{
|
||||
GuiEnderCompendium compendium = new GuiEnderCompendium(data);
|
||||
mc.displayGuiScreen(compendium);
|
||||
|
||||
KnowledgeObject<? extends IKnowledgeObjectInstance<?>> obj = CompendiumEvents.getObservation(mc.thePlayer).getObject();
|
||||
if (obj != null)compendium.showObject(obj);
|
||||
if (mc.thePlayer.isSneaking()){
|
||||
KnowledgeObject<? extends IKnowledgeObjectInstance<?>> obj = CompendiumEvents.getObservation(mc.thePlayer).getObject();
|
||||
if (obj != null)compendium.showObject(obj);
|
||||
}
|
||||
|
||||
if (mc.thePlayer.getStatFileWriter().hasAchievementUnlocked(AchievementManager.THE_MORE_YOU_KNOW))PacketPipeline.sendToServer(new S03OpenCompendium());
|
||||
if (!mc.thePlayer.getStatFileWriter().hasAchievementUnlocked(AchievementManager.THE_MORE_YOU_KNOW))PacketPipeline.sendToServer(new S03OpenCompendium());
|
||||
}
|
||||
else mc.thePlayer.addChatMessage(new ChatComponentText("Error opening Ender Compendium, server did not provide required data. Relog, wait a few seconds, pray to your favourite deity and try again!"));
|
||||
}
|
||||
|
@ -5,25 +5,26 @@ import org.lwjgl.opengl.GL11;
|
||||
import chylex.hee.gui.GuiEnderCompendium;
|
||||
import chylex.hee.mechanics.compendium.content.KnowledgeFragment;
|
||||
import chylex.hee.mechanics.compendium.content.KnowledgeObject;
|
||||
import chylex.hee.mechanics.compendium.player.PlayerCompendiumData.FragmentPurchaseStatus;
|
||||
|
||||
public class PurchaseDisplayElement{
|
||||
public final Object object;
|
||||
public final int price;
|
||||
public final FragmentPurchaseStatus status;
|
||||
private final int y;
|
||||
private final boolean canAfford;
|
||||
|
||||
public PurchaseDisplayElement(KnowledgeFragment fragment, int y, boolean canAfford){
|
||||
public PurchaseDisplayElement(KnowledgeFragment fragment, int y, FragmentPurchaseStatus status){
|
||||
this.object = fragment;
|
||||
this.price = fragment.getPrice();
|
||||
this.y = y;
|
||||
this.canAfford = canAfford;
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public PurchaseDisplayElement(KnowledgeObject<?> object, int y, boolean canAfford){
|
||||
public PurchaseDisplayElement(KnowledgeObject<?> object, int y, FragmentPurchaseStatus status){
|
||||
this.object = object;
|
||||
this.price = object.getUnlockPrice();
|
||||
this.y = y;
|
||||
this.canAfford = canAfford;
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public void render(GuiScreen gui, int pageCenterX){
|
||||
@ -41,11 +42,12 @@ public class PurchaseDisplayElement{
|
||||
GuiEnderCompendium.renderItem.renderItemIntoGUI(gui.mc.fontRenderer,gui.mc.getTextureManager(),GuiEnderCompendium.knowledgeFragmentIS,pageCenterX-22,y-10);
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
|
||||
String price = String.valueOf(this.price); // TODO canAfford
|
||||
gui.mc.fontRenderer.drawString(price,pageCenterX-gui.mc.fontRenderer.getStringWidth(price)+20,y-5,4210752);
|
||||
String price = status == FragmentPurchaseStatus.NOT_BUYABLE ? "~~~" : String.valueOf(this.price);
|
||||
int color = status == FragmentPurchaseStatus.CAN_PURCHASE ? 0x404040 : status == FragmentPurchaseStatus.REQUIREMENTS_UNFULFILLED ? 0x888888 : status == FragmentPurchaseStatus.NOT_ENOUGH_POINTS ? 0xdd2020 : 0;
|
||||
gui.mc.fontRenderer.drawString(price,pageCenterX-gui.mc.fontRenderer.getStringWidth(price)+20,y-5,color);
|
||||
}
|
||||
|
||||
public boolean isMouseOver(int mouseX, int mouseY, int pageCenterX){
|
||||
return mouseX >= (pageCenterX+3)-27 && mouseY >= y-14 && mouseX <= (pageCenterX+3)+27 && mouseY <= y+12;
|
||||
return mouseX >= (pageCenterX+3)-27 && mouseY >= y-14 && mouseX <= (pageCenterX+3)+27 && mouseY <= y+12 && status == FragmentPurchaseStatus.CAN_PURCHASE;
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,6 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.settings.GameSettings;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.Items;
|
||||
@ -16,6 +15,7 @@ import net.minecraftforge.common.AchievementPage;
|
||||
import chylex.hee.block.BlockList;
|
||||
import chylex.hee.item.ItemList;
|
||||
import chylex.hee.item.ItemSpecialEffects;
|
||||
import chylex.hee.mechanics.compendium.events.CompendiumEventsClient;
|
||||
import chylex.hee.proxy.ModCommonProxy;
|
||||
|
||||
public final class AchievementManager{
|
||||
@ -46,7 +46,7 @@ public final class AchievementManager{
|
||||
@Override
|
||||
public String formatString(String str){
|
||||
try{
|
||||
return String.format(str,GameSettings.getKeyDisplayString(Minecraft.getMinecraft().gameSettings.keyBindInventory.getKeyCode()));
|
||||
return String.format(str,GameSettings.getKeyDisplayString(CompendiumEventsClient.getCompendiumKeyCode()));
|
||||
}catch(Exception e){
|
||||
return "Error: "+e.getLocalizedMessage();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user