Skip to content
This repository was archived by the owner on Jun 23, 2024. It is now read-only.

Commit 191fde2

Browse files
committed
Version 1.1.0:
Just Enough Items compatibility: show trades list to the left if JEI is loaded Left/Right and left pixel offset can be set in config
1 parent d5696db commit 191fde2

File tree

6 files changed

+146
-16
lines changed

6 files changed

+146
-16
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ apply plugin: 'net.minecraftforge.gradle.forge'
1111
//Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
1212

1313

14-
version = "1.01"
14+
version = "1.1.0"
1515
group = "de.guntram.mcmod.easiervillagertrading" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
1616
archivesBaseName = "easiervillagertrading"
1717

src/main/java/de/guntram/mcmod/easiervillagertrading/BetterGuiMerchant.java

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
*/
2727
public class BetterGuiMerchant extends GuiMerchant {
2828

29-
private final int addXSize=0;
29+
private int xBase=0;
3030
private final ItemStack tradeOK, tradeNOK;
3131
private final int lineHeight=18;
3232
private final int titleDistance=20;
@@ -38,7 +38,13 @@ public class BetterGuiMerchant extends GuiMerchant {
3838

3939
BetterGuiMerchant (InventoryPlayer inv, GuiMerchant template, World world) {
4040
super(inv, template.getMerchant(), world);
41-
this.xSize+=addXSize;
41+
if (ConfigurationHandler.showLeft()) {
42+
xBase=-ConfigurationHandler.leftPixelOffset();
43+
if (xBase==0)
44+
xBase=-this.getXSize();
45+
}
46+
else
47+
xBase=this.getXSize()+5;
4248
tradeOK=new ItemStack(Item.getItemById(351), 1, 2);
4349
tradeNOK=new ItemStack(Item.getItemById(351), 1, 1);
4450
}
@@ -63,7 +69,7 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY)
6369
return;
6470
int topAdjust=getTopAdjust(trades.size());
6571
String s = trades.size()+" trades";
66-
this.fontRenderer.drawString(s, this.xSize-addXSize+5, -topAdjust, 0xff00ff);
72+
this.fontRenderer.drawString(s, xBase, -topAdjust, 0xff00ff);
6773
// First draw all items, then all tooltips. This is extra effort,
6874
// but we don't want any items in front of any tooltips.
6975
RenderHelper.enableStandardItemLighting();
@@ -73,9 +79,9 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY)
7379
ItemStack i1=trade.getItemToBuy();
7480
ItemStack i2=trade.hasSecondItemToBuy() ? trade.getSecondItemToBuy() : null;
7581
ItemStack o1=trade.getItemToSell();
76-
drawItem(i1, this.xSize-addXSize+5+firstBuyItemXpos, i*lineHeight-topAdjust+titleDistance);
77-
drawItem(i2, this.xSize-addXSize+5+secondBuyItemXpos, i*lineHeight-topAdjust+titleDistance);
78-
drawItem(o1, this.xSize-addXSize+5+sellItemXpos, i*lineHeight-topAdjust+titleDistance);
82+
drawItem(i1, xBase+firstBuyItemXpos, i*lineHeight-topAdjust+titleDistance);
83+
drawItem(i2, xBase+secondBuyItemXpos, i*lineHeight-topAdjust+titleDistance);
84+
drawItem(o1, xBase+sellItemXpos, i*lineHeight-topAdjust+titleDistance);
7985

8086
NBTTagList enchantments;
8187

@@ -100,19 +106,22 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY)
100106
enchants.append(enchant.getTranslatedName(k));
101107
}
102108
}
103-
fontRenderer.drawString(enchants.toString(), this.xSize-addXSize+textXpos, i*lineHeight-topAdjust+24, 0xffff00);
109+
String shownEnchants=enchants.toString();
110+
if (xBase<0)
111+
shownEnchants=fontRenderer.trimStringToWidth(shownEnchants, -xBase-textXpos-5);
112+
fontRenderer.drawString(shownEnchants, xBase+textXpos, i*lineHeight-topAdjust+24, 0xffff00);
104113
}
105-
drawItem(trade.isRecipeDisabled() ? tradeNOK : tradeOK, xSize-addXSize+5+okNokXpos, i*lineHeight-topAdjust+titleDistance);
114+
drawItem(trade.isRecipeDisabled() ? tradeNOK : tradeOK, xBase+okNokXpos, i*lineHeight-topAdjust+titleDistance);
106115
}
107116
RenderHelper.disableStandardItemLighting();
108117
for (int i=0; i<trades.size(); i++) {
109118
MerchantRecipe trade=trades.get(i);
110119
ItemStack i1=trade.getItemToBuy();
111120
ItemStack i2=trade.hasSecondItemToBuy() ? trade.getSecondItemToBuy() : null;
112121
ItemStack o1=trade.getItemToSell();
113-
drawTooltip(i1, this.xSize-addXSize+5+firstBuyItemXpos, i*lineHeight-topAdjust+titleDistance, mouseX, mouseY);
114-
drawTooltip(i2, this.xSize-addXSize+5+secondBuyItemXpos, i*lineHeight-topAdjust+titleDistance, mouseX, mouseY);
115-
drawTooltip(o1, this.xSize-addXSize+5+sellItemXpos, i*lineHeight-topAdjust+titleDistance, mouseX, mouseY);
122+
drawTooltip(i1, xBase+firstBuyItemXpos, i*lineHeight-topAdjust+titleDistance, mouseX, mouseY);
123+
drawTooltip(i2, xBase+secondBuyItemXpos, i*lineHeight-topAdjust+titleDistance, mouseX, mouseY);
124+
drawTooltip(o1, xBase+sellItemXpos, i*lineHeight-topAdjust+titleDistance, mouseX, mouseY);
116125
}
117126
}
118127

@@ -143,8 +152,8 @@ private void drawTooltip(ItemStack stack, int x, int y, int mousex, int mousey)
143152
protected void mouseClicked(final int mouseX, final int mouseY, final int mouseButton) throws IOException {
144153
// System.out.println("click at "+mouseX+"/"+mouseY);
145154
if (mouseButton==0
146-
&& (mouseX - this.guiLeft) > this.xSize-addXSize
147-
&& (mouseX - this.guiLeft) < this.xSize-addXSize+textXpos
155+
&& (mouseX - this.guiLeft) >= xBase
156+
&& (mouseX - this.guiLeft) <= xBase+textXpos
148157
) {
149158
MerchantRecipeList trades=getMerchant().getRecipes(null);
150159
if (trades==null)
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package de.guntram.mcmod.easiervillagertrading;
2+
3+
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
4+
import net.minecraftforge.fml.client.event.ConfigChangedEvent;
5+
import java.io.File;
6+
import net.minecraftforge.common.config.Configuration;
7+
import net.minecraftforge.fml.common.Loader;
8+
9+
public class ConfigurationHandler {
10+
11+
private static ConfigurationHandler instance;
12+
13+
private Configuration config;
14+
private String configFileName;
15+
private boolean showLeft;
16+
private int leftPixelOffset;
17+
18+
public static ConfigurationHandler getInstance() {
19+
if (instance==null)
20+
instance=new ConfigurationHandler();
21+
return instance;
22+
}
23+
24+
public void load(final File configFile) {
25+
if (config == null) {
26+
config = new Configuration(configFile);
27+
configFileName=configFile.getPath();
28+
loadConfig();
29+
}
30+
}
31+
32+
@SubscribeEvent
33+
public void onConfigChanged(ConfigChangedEvent.OnConfigChangedEvent event) {
34+
// System.out.println("OnConfigChanged for "+event.getModID());
35+
if (event.getModID().equalsIgnoreCase(EasierVillagerTrading.MODID)) {
36+
loadConfig();
37+
}
38+
}
39+
40+
private void loadConfig() {
41+
showLeft=config.getBoolean("Trades list left", Configuration.CATEGORY_CLIENT,
42+
Loader.isModLoaded("jei"),
43+
"Show trades list to the left, for Just Enough Items compatibility");
44+
leftPixelOffset=config.getInt("Trades left pixel offset", Configuration.CATEGORY_CLIENT,
45+
0, 0, Integer.MAX_VALUE,
46+
"How many pixels left of the GUI the trades list will be shown. Use 0 for auto detect. "+
47+
"Only used if Trades list left is true.");
48+
if (config.hasChanged())
49+
config.save();
50+
}
51+
52+
public static Configuration getConfig() {
53+
return getInstance().config;
54+
}
55+
56+
public static String getConfigFileName() {
57+
return getInstance().configFileName;
58+
}
59+
60+
public static boolean showLeft() { return getInstance().showLeft; }
61+
public static int leftPixelOffset() { return getInstance().leftPixelOffset; }
62+
}

src/main/java/de/guntram/mcmod/easiervillagertrading/EasierVillagerTrading.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,32 @@
44
import net.minecraftforge.fml.common.Mod;
55
import net.minecraftforge.fml.common.Mod.EventHandler;
66
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
7+
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
8+
9+
@Mod(
10+
modid = EasierVillagerTrading.MODID,
11+
version = EasierVillagerTrading.VERSION,
12+
clientSideOnly = true,
13+
guiFactory = "de.guntram.mcmod.easiervillagertrading.GuiFactory",
14+
acceptedMinecraftVersions = "[1.11.2]",
15+
dependencies = "after:jei"
16+
)
717

8-
@Mod(modid = EasierVillagerTrading.MODID, version = EasierVillagerTrading.VERSION)
918
public class EasierVillagerTrading {
1019

1120
public static final String MODID = "easiervillagertrading";
12-
public static final String VERSION = "1.01";
21+
public static final String VERSION = "1.1.0";
1322

1423
@EventHandler
1524
public void init(FMLInitializationEvent event)
1625
{
1726
MinecraftForge.EVENT_BUS.register(OpenTradeEventHandler.getInstance());
1827
}
28+
29+
@EventHandler
30+
public void preInit(final FMLPreInitializationEvent event) {
31+
ConfigurationHandler confHandler = ConfigurationHandler.getInstance();
32+
confHandler.load(event.getSuggestedConfigurationFile());
33+
MinecraftForge.EVENT_BUS.register(confHandler);
34+
}
1935
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package de.guntram.mcmod.easiervillagertrading;
2+
3+
import net.minecraft.client.gui.GuiScreen;
4+
import net.minecraftforge.common.config.ConfigElement;
5+
import static net.minecraftforge.common.config.Configuration.CATEGORY_CLIENT;
6+
7+
public class GuiConfig extends net.minecraftforge.fml.client.config.GuiConfig {
8+
public GuiConfig(GuiScreen parent) {
9+
super(parent,
10+
new ConfigElement(ConfigurationHandler.getConfig().getCategory(CATEGORY_CLIENT)).getChildElements(),
11+
EasierVillagerTrading.MODID,
12+
false,
13+
false,
14+
"Easier Villager Trading configuration");
15+
}
16+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package de.guntram.mcmod.easiervillagertrading;
2+
3+
import java.util.Set;
4+
import net.minecraft.client.Minecraft;
5+
import net.minecraft.client.gui.GuiScreen;
6+
import net.minecraftforge.fml.client.IModGuiFactory;
7+
8+
public class GuiFactory implements IModGuiFactory {
9+
@Override
10+
public void initialize(final Minecraft minecraftInstance) {
11+
}
12+
13+
@Override
14+
public Class<? extends GuiScreen> mainConfigGuiClass() {
15+
return de.guntram.mcmod.easiervillagertrading.GuiConfig.class;
16+
}
17+
18+
@Override
19+
public Set<IModGuiFactory.RuntimeOptionCategoryElement> runtimeGuiCategories() {
20+
return null;
21+
}
22+
23+
@Override
24+
public IModGuiFactory.RuntimeOptionGuiHandler getHandlerFor(final IModGuiFactory.RuntimeOptionCategoryElement element) {
25+
return null;
26+
}
27+
}

0 commit comments

Comments
 (0)