Compare commits

...
154 Commits
Author SHA1 Message Date
Thomas Guimbretiere f28ed4c274 Added coloring for enchanted items. 2013-10-24 18:38:57 +02:00
Thomas Guimbretiere fc3606b71c When adding a widget, it is now possible to specify a render priority (LOW, MEDIUM, HIGH).
Widgets will be rendered in the order of insert in each category (allows to have forground widgets which are not mouse stealing).
Fixed again the Config HUD screen using that.
2013-10-24 17:38:35 +02:00
Thomas Guimbretiere aeff9c1039 Might have fixed IAmOmicron bug.
Fixed HUD config screen.
2013-10-24 17:22:17 +02:00
Thomas Guimbretiere 9fd13c9ca1 Fixed enchant mod detection.
Changed default key from RSHIFT to I
2013-10-24 17:12:42 +02:00
Thomas Guimbretiere ac1cc77258 Item enchantments done. 2013-10-24 16:31:39 +02:00
Thomas Guimbretiere e6005e55af First shot at partial enchant screen. 2013-10-24 15:48:44 +02:00
Thomas Guimbretiere 62ec48ba21 Added a ViewTable widget to display data in a table shape 2013-10-24 15:25:23 +02:00
Thomas Guimbretiere 7ab8981dde All layouts depend on LayoutBase.
LayoutBase now allows for a background gradient. (setBackgroundColors)
To handle multilayers, widget rendering is done from the start of the list to
the end (in the order of insert), but widget lookup is done in revert order (
last inserted widget will be returned first).
Added utility class for reverse lookup (ReverseIterator).
2013-10-24 11:39:35 +02:00
Thomas Guimbretiere f8202e8fa8 Fixed cropping layout. 2013-10-24 03:22:41 +02:00
Thomas Guimbretiere b18fb9df61 Fixed dragging on the HUD. 2013-10-24 02:20:29 +02:00
Thomas Guimbretiere b4ca299115 Better handling of dragging when leaving the widget (moved some dragging identification to canvas). 2013-10-24 02:08:56 +02:00
Thomas Guimbretiere b0104482bb More adjustement on dragging. 2013-10-24 01:58:37 +02:00
Thomas Guimbretiere ef9ee6441d Fixed some mouse handling (keeping the drag going when on the main widget, stopping the drag on leaving, etc). 2013-10-24 01:52:02 +02:00
Thomas Guimbretiere 4ad3e92fae Mouse handling of the escalator. 2013-10-24 01:42:54 +02:00
Thomas Guimbretiere 098c88676e Corrected order of msg sending for GEOM_CHANGED (post change)
Cursor is now working properly.
2013-10-24 01:12:10 +02:00
Thomas Guimbretiere 4b05b017f7 Moved setPos / setSize to IWidget.
Modifying the geometry now triggers a GEOM_CHANGED event.
2013-10-23 22:19:19 +02:00
Thomas Guimbretiere a92a5dde3c ViewportScrollable is now its own class. 2013-10-23 21:21:34 +02:00
Thomas Guimbretiere a6890c5824 Test widget is bounded on mousewheel.
Added a possibility of setting up the steping (in px).
2013-10-23 20:51:26 +02:00
Thomas Guimbretiere e87d08a789 Reverse lookup for mouse move & drag. 2013-10-23 20:39:31 +02:00
Thomas Guimbretiere 65d8ef8c63 Fixed a couple of button bugs. 2013-10-23 20:33:56 +02:00
Thomas Guimbretiere 878a00b16b Reverse lookup on click/release. 2013-10-23 20:28:37 +02:00
Thomas Guimbretiere 984b26c7fd Reverse lookup for MouseEnter/MouseLeave 2013-10-23 20:16:42 +02:00
Thomas Guimbretiere b2cc1e02d7 Added inverted lookup for MouseWheel.
getWidgetAtPosition does return the deepest widget, so mouse events should check the parent for implementation, not the childrens !
2013-10-23 20:09:27 +02:00
Thomas Guimbretiere 83c7ef6aa9 Corrected a position bug in ItemStackDisplay
Added LayoutCropping (cropping layout using scissors).
2013-10-22 12:05:49 +02:00
Thomas Guimbretiere 6fca3468e2 Cleanup 2013-10-22 11:25:51 +02:00
Thomas Guimbretiere d134aba573 Added scalable ItemStack display. 2013-10-22 11:02:41 +02:00
Thomas Guimbretiere 8f32c0c770 Cleanup 2013-10-22 00:32:56 +02:00
Thomas Guimbretiere e0a5da865f Linked the HUD config screen to the Waila config screen. 2013-10-21 22:56:55 +02:00
Thomas Guimbretiere 69a62e6edf And finally, the scale. Can be adjusted between 0.1 and 2.0. 2013-10-21 22:42:26 +02:00
Thomas Guimbretiere a6da4adc08 Alpha is now configurable too.
Colors can be changed from the config file.
2013-10-21 22:09:43 +02:00
Thomas Guimbretiere 2d3768423f Widgets are now stored in a LinkedHashMap (for proper sorting).
Better Save/Load of GL State (includes colors).
Restored all the buttons on the config screen.
Config is now saved properly and used.
Possibility to reset to defaults.
2013-10-21 20:03:24 +02:00
Thomas Guimbretiere cb2491f3f3 Fixed dragging when other widgets are present. 2013-10-21 18:31:45 +02:00
Thomas Guimbretiere 9248b75a0c Draggable picture in the position config screen is now using relative positions.
Should be behaving like you would expect.
2013-10-21 18:08:16 +02:00
Thomas Guimbretiere fc46634fcc Shorter enum names
Mouse pos is now a double for finer control (?)
2013-10-21 02:54:59 +02:00
Thomas Guimbretiere 9df8f252c0 Changed the position/size type to an enum to make it clearer 2013-10-21 02:28:34 +02:00
Thomas Guimbretiere a844fb4815 Added default configs.
Killed the config screen (again)
2013-10-21 01:49:45 +02:00
Thomas Guimbretiere 58266d3cd1 More advance in the hud config screen. 2013-10-20 17:35:48 +02:00
Thomas Guimbretiere 94a22bf6ca Reworked the event system. Now events are pushed upward to the first widget which can treat them.
No more slots. Best practice is to create a LayoutBase derived class, and handle the events in there.
2013-10-20 17:08:08 +02:00
Thomas Guimbretiere 32a50e112b Singals and slots are now enums.
Added a few widgets to the config screen.
2013-10-20 16:34:32 +02:00
Thomas Guimbretiere 6dbcf366bd Added basic inter-widget signal passing.
LabelFixedFont now has a setText slot (to change text to first signal argument).
PictureMovable will emit onDragX/onDragY events when dragged.
WidgetBase now has slots to move the widget around (setPosX, setPosY).
WidgetGeometry allows to change the position of the widget without having to recreate the geom
Added a CounterInteger widget to store integer data. Slots to change the value and signals to advertise the change.
2013-10-20 12:14:48 +02:00
Thomas Guimbretiere 24efba751d Added a PictureMovable widget, that you can drag and drop around. Area of action is constrainted by the parent.
Added getTop() getBottom() to IWidget interface (shortcuts for getPos().getY() and getPos().getY() + getSize().getY() )
2013-10-19 15:38:51 +02:00
Thomas Guimbretiere e681b98231 Fix alignment for Module choice 2013-10-18 20:20:46 +02:00
Thomas Guimbretiere 30d88b4c45 Readded support for remote config keys.
Moved keyboard handling out of the old UI package.
2013-10-18 12:18:51 +02:00
Thomas Guimbretiere 9a13ff7898 Fixed derp in calling wrong recipe method. 2013-10-18 11:59:11 +02:00
Thomas Guimbretiere 91ac3a9e32 Fixed recipe lookup for blocks with metadata. If not recipe is found with meta, we lookup recipes without meta. 2013-10-18 11:56:32 +02:00
Thomas Guimbretiere 1036c7c0c0 Added the final missing config screens. Config keybind now popups up the new screens.
Still need to remake the server bound config buttons.
2013-10-18 11:51:16 +02:00
Thomas Guimbretiere c03d9183a8 Added main config screen.
Added clicky sound on buttons.
2013-10-18 02:25:47 +02:00
Thomas Guimbretiere 5da91bea2d Fixed MouseEnter/MouseLeave and getWidgetAtPosition logic.
Buttons labels now have the proper color.
Fixed ID:Metadata HEADER bug.
2013-10-18 02:05:19 +02:00
Thomas Guimbretiere c2ceb365d9 Derp 2013-10-18 00:58:23 +02:00
Thomas Guimbretiere 4488c37149 Added a ButtonContainer with label handling.
Created the basic Waila config screen.
2013-10-18 00:58:03 +02:00
Thomas Guimbretiere 3c3fcad888 Screen change button
More test classes in gui.testing
2013-10-17 22:17:13 +02:00
Thomas Guimbretiere 391cfe8290 Added buttons linked to config options (specific to Waila). 2013-10-17 21:47:56 +02:00
Thomas Guimbretiere 8c2ff2b56f Vertical spacing of buttons is now absolute 2013-10-17 21:21:38 +02:00
Thomas Guimbretiere d9a16ba7fa Added per-coordinate abs/frac capabilities for pos & size in WidgetGeometry 2013-10-17 21:16:50 +02:00
Thomas Guimbretiere 3b906f4de8 Moved buttons to their own package. 2013-10-17 21:03:49 +02:00
Thomas Guimbretiere 0496543d70 Added a button container for easy grid-layout buttons 2013-10-17 21:01:12 +02:00
Thomas Guimbretiere e9cc68d2b1 Added 2 types of buttons (boolean & integer) to the widgets. 2013-10-17 20:10:16 +02:00
Thomas Guimbretiere 8a5dc45240 Added a PictureSwitch widget, switching between 2 pictures on mouse over. 2013-10-11 22:03:36 +02:00
Thomas Guimbretiere d23855b263 Added show,hide to widgets.
Renamed Label to LabelFixedFont
2013-10-11 21:54:44 +02:00
Thomas Guimbretiere 5601fcdf7b Added Label widget.
Reworked WidgetGeometry to allow for separate pos/size computation method.
2013-10-11 21:43:58 +02:00
Thomas Guimbretiere a87d3b9de7 Nothing is absolute anymore. Everything is relative to the parent, in full or fractional value 2013-10-11 15:24:01 +02:00
Thomas Guimbretiere 67775bad84 Added ENTER and LEAVE events. 2013-10-11 15:19:24 +02:00
Thomas Guimbretiere 3d004700fb Mouse event handling. 2013-10-11 14:50:07 +02:00
Thomas Guimbretiere b3b2024ce7 Generic structure of new widgets is up.
Test screen with a test texture is done.
2013-10-09 22:58:39 +02:00
Thomas Guimbretiere c1cfb94a0d Setup basic testing framework for the new UI system. 2013-10-09 15:52:26 +02:00
Thomas Guimbretiere 029d141872 Bumped version
May have fixed a light prb when looking at ents.
2013-10-04 20:33:58 +02:00
Thomas Guimbretiere ed93c68fb9 Added registration methods for tail changes along with proper calls to the registrated classes. 2013-10-04 20:02:27 +02:00
Thomas Guimbretiere 4b8acb517e Added "getWailaTail" to the API 2013-10-04 19:55:26 +02:00
Thomas Guimbretiere 419308e2ac Rearranged inworld recipe check to prevent crash on NEI cache loading. 2013-10-04 19:48:55 +02:00
Thomas Guimbretiere 8dc890421d More adjusting and desactivation of NEI overlay. 2013-10-04 18:55:19 +02:00
Thomas Guimbretiere fe90900b55 Adjusted the block discovery system a bit. 2013-10-04 16:30:55 +02:00
Thomas Guimbretiere 1d9807e6d6 Added in-world recipe/usage lookup. 2013-10-04 16:02:21 +02:00
Thomas Guimbretiere 58931febc4 Fixed the proxy raytracing. 2013-10-04 15:04:59 +02:00
Thomas Guimbretiere d72dfa5775 Added support for entities.
Added missing files.
2013-10-04 14:55:01 +02:00
Thomas Guimbretiere dbf49534da Added liquid raytracing 2013-10-04 13:33:59 +02:00
Thomas Guimbretiere aad38c1eac Added a new block recovery test by using a fresh block if the block do not have a TE. 2013-10-04 13:07:08 +02:00
Thomas Guimbretiere c0727b2157 Moved overlay renderer from NEI to Waila for easier handling. 2013-10-02 18:00:53 +02:00
Thomas Guimbretiere 3085f7442a Added tag 1.3.9_1.6.2 for changeset 1e7cde94ccce 2013-09-04 00:12:37 +02:00
Thomas Guimbretiere 25cfff7354 Fixed dimension lookup (I guess).
Version bump
2013-09-04 00:12:19 +02:00
Thomas Guimbretiere 13f49db4b7 Renamed Handlers 2013-09-03 17:31:51 +02:00
Thomas Guimbretiere 117808a326 Added try/catch statement for packet 0x01 to prevent a rare case of crash when the server do not know the dimension. 2013-09-03 17:09:18 +02:00
Thomas Guimbretiere 31ee058c87 Added versionBounds statement to @NetworkMod. Should solve the version mismatch prb between client & server. 2013-09-03 16:58:06 +02:00
Thomas Guimbretiere 4d8087fb4c Added tag 1.3.8_1.6.2 for changeset 45e01e7ee1a8 2013-09-02 17:53:37 +02:00
Thomas Guimbretiere cef91a3ef4 Bump version number 2013-09-02 17:53:19 +02:00
Thomas Guimbretiere 9da2402851 Fixed BC module. Removed pipe info for now. 2013-09-02 17:33:16 +02:00
Thomas Guimbretiere 3eaffb5812 Set default NEI key for tooltip handling to None on loading. 2013-09-02 16:35:11 +02:00
Thomas Guimbretiere 643d1bfad2 Updated config string to match new NEI config option. 2013-09-02 15:02:11 +02:00
Thomas Guimbretiere ad6fd7290a Untested 1.6.2 port. 2013-09-02 14:49:08 +02:00
Thomas Guimbretiere 7e012ff6c6 New branch for 1.6.2 dev 2013-09-02 14:18:43 +02:00
Thomas Guimbretiere b547b7ece6 Moved most of the config strings to a constant class.
Added a Reflect class for easy reflection.
2013-09-02 14:07:32 +02:00
Thomas Guimbretiere 022d792d01 [AppEng] Added handling of a null monitor object 2013-09-02 01:46:16 +02:00
Thomas Guimbretiere c4f6b40ea5 Added support for AE 2013-09-02 01:40:24 +02:00
Thomas Guimbretiere 709f750a2a Muted BB module. It is now in BB itself. 2013-09-02 00:25:47 +02:00
Thomas Guimbretiere 281a8f26dd Reworked BB module to match the API
Added a gravestone module to override the normal detection
Added a TwilightForest module to override the normal (and buggy) detection.
2013-08-17 19:59:12 +02:00
Thomas Guimbretiere 03b8097ccb Added stack overlay.
Added support for NEI recipes.
2013-07-09 02:35:17 +02:00
Thomas Guimbretiere 6a2c137bce First nearly working version of the tech tree. 2013-07-08 21:11:30 +02:00
Thomas Guimbretiere e9c43a71fa Added skeleton files for the new screen & widget 2013-07-04 11:51:55 +02:00
Thomas Guimbretiere f7e0e24548 Source cleanup 2013-07-04 11:51:29 +02:00
Thomas Guimbretiere 73c5383d59 Now use name:meta as key.
Wildcards possible in name & meta.
2013-07-04 11:04:39 +02:00
Thomas Guimbretiere 4cbe727b81 Added default block summary.
Added csv reader.
2013-07-03 21:11:50 +02:00
Thomas Guimbretiere 00ea3d77cc New API for left side of description screen
Too much stuff, forgot...
2013-07-03 19:35:25 +02:00
Thomas Guimbretiere bc424e1d01 First shoot at wiki display.
Added registration of files to modules, handler, etc.
2013-07-02 11:55:13 +02:00
Thomas Guimbretiere 3c048e9795 Renamed GuiEnchantScreen (case correction) 2013-07-01 19:53:26 +02:00
Thomas Guimbretiere eeb3c7f48a Added WikiText widget (first version)
Added WikiScreen
Added WikiHandler
Some minor changes
2013-07-01 19:52:47 +02:00
Thomas Guimbretiere ee1118ee4b Added tag 1.3.4 for changeset 2f6144f8e55c 2013-07-01 15:04:44 +02:00
Thomas Guimbretiere 636ae4203e Added focus handling, more passthought and mouse dragging for VBar. 2013-06-29 22:32:02 +02:00
Thomas Guimbretiere 5360475686 [IC2] Capped max input display
[Vanilla] Added disk display for jukeboxes
2013-06-29 15:16:50 +02:00
Thomas Guimbretiere 15f89627c6 [EnderStorage] Module added. Shows chest colors. 2013-06-29 14:52:03 +02:00
Thomas Guimbretiere e42914c721 [Thaumcraft] Added capacitor storage display 2013-06-29 13:25:05 +02:00
Thomas Guimbretiere 394d9cd564 [Thaumcraft] Added CustomPlants stack handler to return proper values 2013-06-29 12:38:07 +02:00
Thomas Guimbretiere f648c41890 Added Thaumcraft module to correct leaves bug. 2013-06-29 12:27:41 +02:00
Thomas Guimbretiere 37498dc0b1 Added a registerStackProvider taking in a class instead of a block ID
Added a StackProvider to IC2 to correct reinforced door wrong stack.
2013-06-29 11:58:05 +02:00
Thomas Guimbretiere ed1a4d010d Move exception handling to its own class.
Try/catch writeToNBT server side ("You don't know your age ?" bug)
2013-06-29 11:22:42 +02:00
Thomas Guimbretiere 83ee66d8a6 Table viewport now move depending on the value of the scrollbar itself.
Clicking above & below the button will move the viewport by 1 step.
2013-06-24 01:09:43 +02:00
Thomas Guimbretiere c4dcdd926a VScrollBar is now a real widget (accept clicks passthrought). 2013-06-24 00:39:42 +02:00
Thomas Guimbretiere 3048dfe09a Added cascading widget handling.
Moved all the old buttons to widget_old until they are turned into proper widgets
2013-06-23 23:58:10 +02:00
Thomas Guimbretiere 6acfa28ef7 Clarified how height is handled in all the class. 2013-06-23 22:43:48 +02:00
Thomas Guimbretiere bac71d0894 First working scroll bar 2013-06-23 22:36:30 +02:00
Thomas Guimbretiere b2dabe7bed Mouse event propagation done. 2013-06-23 18:00:39 +02:00
Thomas Guimbretiere 78a8f92b2f Rework of the GUI part.
First shoot at custom mouse capturing.
2013-06-23 17:25:15 +02:00
Thomas Guimbretiere 137db44e23 Nearly finished version of the enchantment screen. 2013-06-22 20:06:16 +02:00
Thomas Guimbretiere d744bdf25b Readded missing file. 2013-06-21 11:15:04 +02:00
Thomas Guimbretiere 1eb67afea6 Some refactoring.
RShift shows the empty enchant screen.
2013-06-20 13:16:55 +02:00
Thomas Guimbretiere 396dbd734a Merge with default 2013-06-20 11:24:22 +02:00
Thomas Guimbretiere fb00790fdc Merge 2013-06-20 11:10:56 +02:00
Thomas Guimbretiere 39124f153f Added tag 1.3.3 for changeset 8ee781ebab6c 2013-06-19 23:24:02 +02:00
Thomas Guimbretiere acda2b4a85 "Crashes" should show a <ERROR> when looking at a defunc block
Readded array out of bound protection.
2013-06-19 23:06:59 +02:00
Thomas Guimbretiere 5a82bb2a5c Added tag 1.3.2 for changeset 4a92f4e3296c 2013-06-19 22:37:47 +02:00
Thomas Guimbretiere 987d5556ef Added big time protection on API calls. 2013-06-19 22:37:29 +02:00
Thomas Guimbretiere f754ab5fbe Typo fixes 2013-06-19 22:02:07 +02:00
Thomas Guimbretiere 4ebbd2b3e9 Merge with default 2013-06-19 16:54:13 +02:00
Thomas Guimbretiere 6598e693f9 Underped the proxy 2013-06-19 16:52:24 +02:00
Thomas Guimbretiere 4970a268f4 Merge with default 2013-06-19 16:41:29 +02:00
Thomas Guimbretiere a984e2e8bd Added tag v1.3.1 for changeset 38f148ebeb8f 2013-06-19 15:29:17 +02:00
Thomas Guimbretiere 71aba4006b Fix for the nbt casting prb. 2013-06-19 15:28:55 +02:00
Thomas Guimbretiere da64a0a019 First UI screen for enchants. 2013-06-19 14:43:12 +02:00
Thomas Guimbretiere d687bb5383 Included EPlus tooltip request to EnchantmentHandler
EnchantementHandler is now called EnchantmentHandler (for proper english)
2013-06-19 13:34:44 +02:00
Thomas Guimbretiere 37d07ab99f Merged in odininon/waila/default (pull request #1)
Added Enchanting Plus' enchantment description. eplus will nto be required to build as it is impelmented via reflection. :)
2013-06-19 13:29:30 +02:00
Thomas Guimbretiere 172e8ca659 Creating Dev branch 2013-06-19 13:24:25 +02:00
Thomas Guimbretiere 243ca7db20 Added tag v1.3.0 for changeset 137f02853afb 2013-06-19 13:22:10 +02:00
Thomas Guimbretiere 39a979ef62 Complete rework of BC module.
Bugfixes
Code cleanup.
2013-06-19 13:21:59 +02:00
Freyja 73cf134212 Added Enchanting Plus' enchantment description. eplus will nto be required to build as it is impelmented via reflection. :) 2013-06-18 22:39:08 -04:00
Thomas Guimbretiere ae641e642d New handler for power pipes. 2013-06-17 19:03:54 +02:00
Thomas Guimbretiere 58feff48f9 Missing changes. 2013-06-17 18:07:10 +02:00
Thomas Guimbretiere c77306ae4f Refactored IC2 module. Included proper handling of transformers
Refactored BC module to match API.
Fixed TE dumper.
2013-06-17 18:06:57 +02:00
Thomas Guimbretiere 0ce1661a7f Added NBT server data dumper for testing purpose. 2013-06-17 14:30:41 +02:00
Thomas Guimbretiere 95adb69f55 Update limiter is in. It is set to 250ms between updates. 2013-06-17 14:05:26 +02:00
Thomas Guimbretiere b52b110852 Added a new config type : ConfigRemote.
Can be added by IWailaRegistrar.addConfigRemote.
Use as the same as other configs, but will return false if server do not have
waila module & will be desactivated in the config menu.
2013-06-17 11:35:41 +02:00
Thomas Guimbretiere 7f1cb7d710 Finished server nbt data request.
Reworked IC2 module to handle the next type of interface and remote data sync.
Now has 3 modules, for the 3 main interfaces.
2013-06-17 02:20:04 +02:00
Thomas Guimbretiere 94d0f4d681 Added packet handling.
Added server ping on connection (identify if server side is present)
2013-06-16 18:51:23 +02:00
Thomas Guimbretiere 5f168bb1bc Fixed registration by class. 2013-06-16 16:03:30 +02:00
Thomas Guimbretiere d29ecd09ce Added tag v1.2.0 for changeset 28ccc9a07b54 2013-06-16 15:42:49 +02:00
Thomas Guimbretiere 1fd33e8d7c Added registration based on class as well as registration based on IDs 2013-06-16 15:42:26 +02:00
Thomas Guimbretiere f43bfad3d8 Changed the signature of IWailaBlock.
Now the methods are taking in a IWailaDataAccessor instead of 10 arguments.
The IWailaDataAccessor gives access to all the required values for the block
(world, player, Block, id, metadata, entity, etc)
2013-06-16 13:44:32 +02:00
133 changed files with 8956 additions and 758 deletions

No files matched your search

+171
View File
@@ -0,0 +1,171 @@
package mcp.mobius.waila;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import org.lwjgl.input.Keyboard;
import codechicken.core.Profiler;
import codechicken.nei.NEIClientUtils;
import codechicken.nei.api.API;
import codechicken.nei.forge.GuiContainerManager;
import codechicken.nei.recipe.GuiCraftingRecipe;
import codechicken.nei.recipe.GuiUsageRecipe;
import codechicken.nei.recipe.ICraftingHandler;
import codechicken.nei.recipe.ProfilerRecipeHandler;
import mcp.mobius.waila.addons.ConfigHandler;
import mcp.mobius.waila.gui.screens.ScreenBase;
import mcp.mobius.waila.gui.screens.config.ScreenConfig;
import mcp.mobius.waila.gui.screens.config.ScreenHUDConfig;
import mcp.mobius.waila.gui.screens.config.ScreenWailaConfig;
import mcp.mobius.waila.gui.screens.info.ScreenEnchants;
import mcp.mobius.waila.gui.testing.ScreenTest;
import mcp.mobius.waila.handlers.nei.HandlerEnchants;
import mcp.mobius.waila.overlay.RayTracing;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.gui.inventory.GuiInventory;
import net.minecraft.client.settings.KeyBinding;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumMovingObjectType;
import cpw.mods.fml.client.registry.KeyBindingRegistry.KeyHandler;
import cpw.mods.fml.common.TickType;
import cpw.mods.fml.common.registry.LanguageRegistry;
public class ConfigKeyHandler extends KeyHandler {
static boolean firstInventory = true;
public ConfigKeyHandler()
{
super(new KeyBinding[]{
new KeyBinding(Constants.BIND_WAILA_CFG, Keyboard.KEY_NUMPAD0),
new KeyBinding(Constants.BIND_WAILA_SHOW, Keyboard.KEY_NUMPAD1),
new KeyBinding(Constants.BIND_WAILA_LIQUID, Keyboard.KEY_NUMPAD2),
new KeyBinding(Constants.BIND_WAILA_RECIPE, Keyboard.KEY_NUMPAD3),
new KeyBinding(Constants.BIND_WAILA_USAGE, Keyboard.KEY_NUMPAD4),
new KeyBinding(Constants.BIND_WAILA_TESTING, Keyboard.KEY_NUMPAD9),
}, new boolean[]{
false,
false,
false,
false,
false,
false
});
LanguageRegistry.instance().addStringLocalization(Constants.BIND_WAILA_CFG, "[Waila] Config screen");
LanguageRegistry.instance().addStringLocalization(Constants.BIND_WAILA_SHOW, "[Waila] Show/Hide");
LanguageRegistry.instance().addStringLocalization(Constants.BIND_WAILA_LIQUID, "[Waila] Show liquids");
LanguageRegistry.instance().addStringLocalization(Constants.BIND_WAILA_RECIPE, "[Waila] Show recipe");
LanguageRegistry.instance().addStringLocalization(Constants.BIND_WAILA_USAGE, "[Waila] Show usage");
LanguageRegistry.instance().addStringLocalization(Constants.BIND_WAILA_TESTING, "[Waila] Testing");
//LanguageRegistry.instance().addStringLocalization(Constants.BIND_SCREEN_ENCH, "[Waila] Show enchant screen");
//LanguageRegistry.instance().addStringLocalization("key.wailatedump", "[Waila] Dump server TE");
GuiContainerManager.addInputHandler(new HandlerEnchants());
API.addKeyBind(Constants.BIND_SCREEN_ENCH, Keyboard.KEY_I);
}
@Override
public void keyDown(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd, boolean isRepeat) {
if (!tickEnd) return;
Minecraft mc = Minecraft.getMinecraft();
if (kb.keyDescription == Constants.BIND_WAILA_CFG){
if(mc.currentScreen == null)
mc.displayGuiScreen(new ScreenConfig(mc.currentScreen));
}
if (kb.keyDescription == Constants.BIND_WAILA_TESTING){
if(mc.currentScreen == null)
mc.displayGuiScreen(new ScreenEnchants(mc.currentScreen));
}
if (mc.currentScreen != null)
return;
if (kb.keyDescription == Constants.BIND_WAILA_SHOW && ConfigHandler.instance().getConfig(Constants.CFG_WAILA_MODE)){
boolean status = ConfigHandler.instance().getConfig(Constants.CFG_WAILA_SHOW);
ConfigHandler.instance().setConfig(Constants.CFG_WAILA_SHOW, !status);
}
else if (kb.keyDescription == Constants.BIND_WAILA_SHOW && !ConfigHandler.instance().getConfig(Constants.CFG_WAILA_MODE)){
ConfigHandler.instance().setConfig(Constants.CFG_WAILA_SHOW, true);
}
else if (kb.keyDescription == Constants.BIND_WAILA_LIQUID){
boolean status = ConfigHandler.instance().getConfig(Constants.CFG_WAILA_LIQUID);
ConfigHandler.instance().setConfig(Constants.CFG_WAILA_LIQUID, !status);
}
else if (kb.keyDescription == Constants.BIND_WAILA_RECIPE){
this.openRecipeGUI(true);
}
else if (kb.keyDescription == Constants.BIND_WAILA_USAGE){
this.openRecipeGUI(false);
}
}
public void openRecipeGUI(boolean recipe){
Minecraft mc = Minecraft.getMinecraft();
boolean uiResult;
String msg;
if ((RayTracing.raytracedTarget != null) && (RayTracing.raytracedTarget.typeOfHit == EnumMovingObjectType.TILE)){
List<ItemStack> stacks = RayTracing.getIdentifierItems();
if (stacks.size() > 0){
mc.displayGuiScreen(new GuiInventory(mc.thePlayer));
if (firstInventory){
try {Thread.sleep(1000);} catch (Exception e){};
firstInventory = false;
}
if(recipe)
if(!GuiCraftingRecipe.openRecipeGui("item", stacks.get(0).copy())){
ItemStack target = stacks.get(0).copy();
target.setItemDamage(0);
if(!GuiCraftingRecipe.openRecipeGui("item", target)){
mc.thePlayer.addChatMessage("\u00a7f\u00a7oNo recipe found.");
mc.displayGuiScreen((GuiScreen)null);
mc.setIngameFocus();
}
}
if(!recipe)
if(!GuiUsageRecipe.openRecipeGui("item", stacks.get(0).copy())){
ItemStack target = stacks.get(0).copy();
target.setItemDamage(0);
if(!GuiUsageRecipe.openRecipeGui("item", target)){
mc.thePlayer.addChatMessage("\u00a7f\u00a7oNo usage found.");
mc.displayGuiScreen((GuiScreen)null);
mc.setIngameFocus();
}
}
}
}
}
@Override
public void keyUp(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd) {
if (!tickEnd) return;
if (kb.keyDescription == Constants.BIND_WAILA_SHOW && !ConfigHandler.instance().getConfig(Constants.CFG_WAILA_MODE)){
ConfigHandler.instance().setConfig(Constants.CFG_WAILA_SHOW, false);
}
}
@Override
public EnumSet<TickType> ticks() {
return EnumSet.of(TickType.CLIENT);
}
@Override
public String getLabel() {
return "Waila Config Screen Keybind";
}
}
+34
View File
@@ -0,0 +1,34 @@
package mcp.mobius.waila;
public final class Constants {
public static String BIND_SCREEN_WIKI = "showwiki";
public static String BIND_SCREEN_TECH = "showtechtree";
public static String BIND_SCREEN_ENCH = "showenchant";
public static String BIND_WAILA_CFG = "key.wailaconfig";
public static String BIND_WAILA_SHOW = "key.wailadisplay";
public static String BIND_WAILA_LIQUID = "waila.key.liquid";
public static String BIND_WAILA_RECIPE = "waila.key.recipe";
public static String BIND_WAILA_USAGE = "waila.key.usage";
public static String BIND_WAILA_TESTING= "waila.key.testing";
public static String CFG_NEI_SHOW = "world.highlight_tips";
public static String BIND_NEI_SHOW = "keys.world.highlight_tips";
public static String CFG_WAILA_SHOW = "waila.cfg.show";
public static String CFG_WAILA_MODE = "waila.cfg.showmode";
public static String CFG_WAILA_LIQUID = "waila.cfg.liquid";
public static String CFG_WAILA_METADATA = "waila.cfg.metadata";
public static String CFG_WAILA_POSX = "waila.cfg.posx";
public static String CFG_WAILA_POSY = "waila.cfg.posy";
public static String CFG_WAILA_SCALE = "waila.cfg.scale";
public static String CFG_WAILA_ALPHA = "waila.cfg.alpha";
public static String CFG_WAILA_BGCOLOR = "waila.cfg.bgcolor";
public static String CFG_WAILA_GRADIENT1 = "waila.cfg.gradient1";
public static String CFG_WAILA_GRADIENT2 = "waila.cfg.gradient2";
public static String CFG_WAILA_FONTCOLOR = "waila.cfg.fontcolor";
}
+54 -46
View File
@@ -1,22 +1,35 @@
package mcp.mobius.waila;
import java.util.logging.Level;
import net.minecraft.item.Item;
import org.lwjgl.input.Keyboard;
import codechicken.nei.NEIClientConfig;
import codechicken.nei.api.API;
import codechicken.nei.api.ItemInfo;
import codechicken.nei.forge.GuiContainerManager;
import cpw.mods.fml.client.registry.KeyBindingRegistry;
import mcp.mobius.waila.addons.ConfigHandler;
import mcp.mobius.waila.addons.buildcraft.HUDHandlerBCTanks;
import mcp.mobius.waila.addons.ic2.HUDHandlerIC2Generator;
import mcp.mobius.waila.addons.ic2.HUDHandlerIC2Machine;
import mcp.mobius.waila.addons.ic2.HUDHandlerIC2Storage;
import cpw.mods.fml.common.registry.TickRegistry;
import cpw.mods.fml.relauncher.Side;
import mcp.mobius.waila.addons.ExternalModulesHandler;
import mcp.mobius.waila.addons.appeng.AppEngModule;
import mcp.mobius.waila.addons.betterbarrels.BetterBarrelsModule;
import mcp.mobius.waila.addons.buildcraft.BCModule;
import mcp.mobius.waila.addons.enderstorage.EnderStorageModule;
import mcp.mobius.waila.addons.gravestone.GravestoneModule;
import mcp.mobius.waila.addons.ic2.IC2Module;
import mcp.mobius.waila.addons.thaumcraft.ThaumcraftModule;
import mcp.mobius.waila.addons.twilightforest.TwilightForestModule;
import mcp.mobius.waila.addons.vanillamc.HUDHandlerVanilla;
import mcp.mobius.waila.gui.ConfigKeyHandler;
import mcp.mobius.waila.handlers.HUDHandlerExternal;
import mcp.mobius.waila.handlers.HUDHandlerWaila;
import mcp.mobius.waila.handlers.TooltipHandlerWaila;
import mcp.mobius.waila.gui_old.NEI.HandlerTechTree;
import mcp.mobius.waila.gui_old.NEI.HandlerWiki;
import mcp.mobius.waila.handlers.SummaryProviderDefault;
import mcp.mobius.waila.handlers.hud.HUDHandlerExternal;
import mcp.mobius.waila.handlers.hud.HUDHandlerWaila;
import mcp.mobius.waila.handlers.nei.HandlerEnchants;
import mcp.mobius.waila.handlers.tooltip.TooltipHandlerWaila;
import mcp.mobius.waila.overlay.WailaTickHandler;
import mcp.mobius.waila.server.ProxyServer;
public class ProxyClient extends ProxyServer {
@@ -25,16 +38,25 @@ public class ProxyClient extends ProxyServer {
@Override
public void registerHandlers(){
TickRegistry.registerTickHandler(new WailaTickHandler(), Side.CLIENT);
GuiContainerManager.addTooltipHandler(new TooltipHandlerWaila());
//GuiContainerManager.addInputHandler(new EnchantementHandler());
API.registerHighlightHandler(new HUDHandlerExternal(), ItemInfo.Layout.HEADER);
API.registerHighlightHandler(new HUDHandlerExternal(), ItemInfo.Layout.BODY);
API.registerHighlightHandler(new HUDHandlerWaila(), ItemInfo.Layout.FOOTER);
API.registerHighlightHandler(new HUDHandlerWaila(), ItemInfo.Layout.HEADER);
//API.registerHighlightIdentifier(2000, new HUDHandlerExternal());
KeyBindingRegistry.registerKeyBinding(new ConfigKeyHandler());
//API.addKeyBind("showenchant", "Display enchantements", Keyboard.KEY_RSHIFT);
// We mute the default keybind for displaying the tooltip
NEIClientConfig.getSetting(Constants.BIND_NEI_SHOW).setIntValue(Keyboard.KEY_NONE);
NEIClientConfig.getSetting(Constants.CFG_NEI_SHOW).setBooleanValue(false);
//API.addKeyBind(Constants.BIND_WIKI, "Display wiki", Keyboard.KEY_RSHIFT);
//API.addKeyBind(Constants.BIND_TECH, "Display techtree", Keyboard.KEY_RSHIFT);
ExternalModulesHandler.instance().registerShortDataProvider(new SummaryProviderDefault(), Item.class);
this.registerMods();
}
@@ -42,43 +64,29 @@ public class ProxyClient extends ProxyServer {
HUDHandlerVanilla.register();
/* BETTER BARRELS */
/*
try {
Class ModBetterBarrels = Class.forName("mcp.mobius.betterbarrels.mod_BetterBarrels");
mod_Waila.log.log(Level.INFO, "BetterBarrel mod found.");
HUDHandlerBetterBarrels.register();
ConfigHandler.instance().addConfig("BetterBarrels", "betterbarrels.content", "Barrel content");
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.INFO, "BetterBarrel mod not found. Skipping.");
}
*/
/*BETTER BARRELS*/
//BetterBarrelsModule.register();
/* BUILDCRAFT */
try {
Class ModBuildcraftFactory = Class.forName("buildcraft.BuildCraftFactory");
mod_Waila.log.log(Level.INFO, "Buildcraft|Factory mod found.");
HUDHandlerBCTanks.register();
ConfigHandler.instance().addConfig("Buildcraft", "bc.tankamount", "Liquid amount");
ConfigHandler.instance().addConfig("Buildcraft", "bc.tanktype", "Liquid type");
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.INFO, "Buildcraft|Factory mod not found. Skipping.");
}
BCModule.register();
/* INDUSTRIALCRAFT2 */
try {
Class ModIndustrialCraft = Class.forName("ic2.core.IC2");
mod_Waila.log.log(Level.INFO, "Industrialcraft2 mod found.");
HUDHandlerIC2Storage.register();
HUDHandlerIC2Machine.register();
HUDHandlerIC2Generator.register();
ConfigHandler.instance().addConfig("IndustrialCraft2", "ic2.inputeu", "Max EU input");
ConfigHandler.instance().addConfig("IndustrialCraft2", "ic2.outputeu", "Max EU output");
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.INFO, "Industrialcraft2 mod not found. Skipping.");
}
IC2Module.register();
/*Thaumcraft*/
ThaumcraftModule.register();
/*EnderStorage*/
EnderStorageModule.register();
/*Gravestone*/
GravestoneModule.register();
/*Twilight forest*/
TwilightForestModule.register();
/* Applied Energetics */
AppEngModule.register();
}
}
@@ -0,0 +1,24 @@
package mcp.mobius.waila;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
public class WailaExceptionHandler {
public WailaExceptionHandler() {}
private static ArrayList<String> errs = new ArrayList<String>();
public static List<String> handleErr(Throwable e, String className, List<String> currenttip){
if (!errs.contains(className)){
errs.add(className);
mod_Waila.log.log(Level.WARNING, String.format("Catched unhandled exception : [%s] %s",className,e));
}
if (currenttip != null)
currenttip.add("<ERROR>");
return currenttip;
}
}
+40 -2
View File
@@ -1,6 +1,8 @@
package mcp.mobius.waila.addons;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Set;
import mcp.mobius.waila.mod_Waila;
@@ -11,7 +13,8 @@ import net.minecraftforge.common.Property;
public class ConfigHandler implements IWailaConfigHandler {
private static ConfigHandler instance = null;
private HashMap<String, ConfigModule> modules = new HashMap<String, ConfigModule>();
private LinkedHashMap<String, ConfigModule> modules = new LinkedHashMap<String, ConfigModule>();
private ArrayList<String> serverconfigs = new ArrayList<String>();
private ConfigHandler() {
instance = this;
@@ -50,16 +53,51 @@ public class ConfigHandler implements IWailaConfigHandler {
this.modules.get(modName).addOption(key, name);
}
public void addConfigServer(String modName, String key, String name){
if (!this.modules.containsKey(modName))
this.modules.put(modName, new ConfigModule(modName));
this.modules.get(modName).addOption(key, name);
this.serverconfigs.add(key);
}
@Override
public boolean getConfig(String key, boolean defvalue){
mod_Waila.instance.config.load();
if (this.serverconfigs.contains(key) && !mod_Waila.instance.serverPresent)
return false;
Property prop = mod_Waila.instance.config.get(Configuration.CATEGORY_GENERAL, key, defvalue);
return prop.getBoolean(defvalue);
}
public boolean isServerRequired(String key){
return this.serverconfigs.contains(key);
}
@Override
public boolean getConfig(String key){
return this.getConfig(key, true);
}
}
public int getConfigInt(String key){
mod_Waila.instance.config.load();
Property prop = mod_Waila.instance.config.get(Configuration.CATEGORY_GENERAL, key, 0);
return prop.getInt();
}
@Override
public void setConfig(String key, boolean value){
mod_Waila.instance.config.load();
mod_Waila.instance.config.get(Configuration.CATEGORY_GENERAL, key, true).set(value);;
mod_Waila.instance.config.save();
}
public void setConfigInt(String key, int value){
mod_Waila.instance.config.load();
mod_Waila.instance.config.get(Configuration.CATEGORY_GENERAL, key, 0).set(value);;
mod_Waila.instance.config.save();
}
}
@@ -1,20 +1,40 @@
package mcp.mobius.waila.addons;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import au.com.bytecode.opencsv.CSVReader;
import net.minecraft.block.Block;
import codechicken.nei.api.API;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.api.IWailaDataProvider;
import mcp.mobius.waila.api.IWailaRegistrar;
import mcp.mobius.waila.handlers.HUDHandlerExternal;
import mcp.mobius.waila.api.IWailaSummaryProvider;
import mcp.mobius.waila.handlers.hud.HUDHandlerExternal;
public class ExternalModulesHandler implements IWailaRegistrar {
private static ExternalModulesHandler instance = null;
public HashMap<Integer, ArrayList<IWailaDataProvider>> headProviders = new HashMap<Integer, ArrayList<IWailaDataProvider>>();
public HashMap<Integer, ArrayList<IWailaDataProvider>> bodyProviders = new HashMap<Integer, ArrayList<IWailaDataProvider>>();
public HashMap<Integer, ArrayList<IWailaDataProvider>> stackProviders = new HashMap<Integer, ArrayList<IWailaDataProvider>>();
public LinkedHashMap<Integer, ArrayList<IWailaDataProvider>> headProviders = new LinkedHashMap<Integer, ArrayList<IWailaDataProvider>>();
public LinkedHashMap<Integer, ArrayList<IWailaDataProvider>> bodyProviders = new LinkedHashMap<Integer, ArrayList<IWailaDataProvider>>();
public LinkedHashMap<Integer, ArrayList<IWailaDataProvider>> tailProviders = new LinkedHashMap<Integer, ArrayList<IWailaDataProvider>>();
public LinkedHashMap<Integer, ArrayList<IWailaDataProvider>> stackProviders = new LinkedHashMap<Integer, ArrayList<IWailaDataProvider>>();
public LinkedHashMap<Class, ArrayList<IWailaDataProvider>> headBlockProviders = new LinkedHashMap<Class, ArrayList<IWailaDataProvider>>();
public LinkedHashMap<Class, ArrayList<IWailaDataProvider>> bodyBlockProviders = new LinkedHashMap<Class, ArrayList<IWailaDataProvider>>();
public LinkedHashMap<Class, ArrayList<IWailaDataProvider>> tailBlockProviders = new LinkedHashMap<Class, ArrayList<IWailaDataProvider>>();
public LinkedHashMap<Class, ArrayList<IWailaDataProvider>> stackBlockProviders = new LinkedHashMap<Class, ArrayList<IWailaDataProvider>>();
public LinkedHashMap<String, LinkedHashMap <String, LinkedHashMap <String, String>>> wikiDescriptions = new LinkedHashMap<String, LinkedHashMap <String, LinkedHashMap <String, String>>>();
public LinkedHashMap<Class, ArrayList<IWailaSummaryProvider>> summaryProviders = new LinkedHashMap<Class, ArrayList<IWailaSummaryProvider>>();
private ExternalModulesHandler() {
instance = this;
@@ -31,6 +51,11 @@ public class ExternalModulesHandler implements IWailaRegistrar {
ConfigHandler.instance().addConfig(modname, key, configname);
}
@Override
public void addConfigRemote(String modname, String key, String configname) {
ConfigHandler.instance().addConfigServer(modname, key, configname);
}
@Override
public void registerHeadProvider(IWailaDataProvider dataProvider, int blockID) {
if (!this.headProviders.containsKey(blockID))
@@ -38,6 +63,13 @@ public class ExternalModulesHandler implements IWailaRegistrar {
this.headProviders.get(blockID).add(dataProvider);
}
@Override
public void registerHeadProvider(IWailaDataProvider dataProvider, Class block) {
if (!this.headBlockProviders.containsKey(block))
this.headBlockProviders.put(block, new ArrayList<IWailaDataProvider>());
this.headBlockProviders.get(block).add(dataProvider);
}
@Override
public void registerBodyProvider(IWailaDataProvider dataProvider, int blockID) {
if (!this.bodyProviders.containsKey(blockID))
@@ -45,6 +77,27 @@ public class ExternalModulesHandler implements IWailaRegistrar {
this.bodyProviders.get(blockID).add(dataProvider);
}
@Override
public void registerBodyProvider(IWailaDataProvider dataProvider, Class block) {
if (!this.bodyBlockProviders.containsKey(block))
this.bodyBlockProviders.put(block, new ArrayList<IWailaDataProvider>());
this.bodyBlockProviders.get(block).add(dataProvider);
}
@Override
public void registerTailProvider(IWailaDataProvider dataProvider, int blockID) {
if (!this.tailProviders.containsKey(blockID))
this.tailProviders.put(blockID, new ArrayList<IWailaDataProvider>());
this.tailProviders.get(blockID).add(dataProvider);
}
@Override
public void registerTailProvider(IWailaDataProvider dataProvider, Class block) {
if (!this.tailBlockProviders.containsKey(block))
this.tailBlockProviders.put(block, new ArrayList<IWailaDataProvider>());
this.tailBlockProviders.get(block).add(dataProvider);
}
@Override
public void registerStackProvider(IWailaDataProvider dataProvider, int blockID) {
if (!this.stackProviders.containsKey(blockID))
@@ -52,6 +105,23 @@ public class ExternalModulesHandler implements IWailaRegistrar {
this.stackProviders.get(blockID).add(dataProvider);
API.registerHighlightIdentifier(blockID, new HUDHandlerExternal());
}
@Override
public void registerStackProvider(IWailaDataProvider dataProvider, Class block) {
for (int i = 0; i < Block.blocksList.length; i++)
if (block.isInstance(Block.blocksList[i])){
this.registerStackProvider(dataProvider, i);
}
}
@Override
public void registerShortDataProvider(IWailaSummaryProvider dataProvider, Class item) {
if (!this.summaryProviders.containsKey(item))
this.summaryProviders.put(item, new ArrayList<IWailaSummaryProvider>());
this.summaryProviders.get(item).add(dataProvider);
}
/* Arrays getters */
public ArrayList<IWailaDataProvider> getHeadProviders(int blockID) {
return this.headProviders.get(blockID);
@@ -61,9 +131,51 @@ public class ExternalModulesHandler implements IWailaRegistrar {
return this.bodyProviders.get(blockID);
}
public ArrayList<IWailaDataProvider> getTailProviders(int blockID) {
return this.tailProviders.get(blockID);
}
public ArrayList<IWailaDataProvider> getHeadProviders(Object block) {
ArrayList<IWailaDataProvider> returnList = new ArrayList<IWailaDataProvider>();
for (Class clazz : this.headBlockProviders.keySet())
if (clazz.isInstance(block))
returnList.addAll(this.headBlockProviders.get(clazz));
return returnList;
}
public ArrayList<IWailaDataProvider> getBodyProviders(Object block) {
ArrayList<IWailaDataProvider> returnList = new ArrayList<IWailaDataProvider>();
for (Class clazz : this.bodyBlockProviders.keySet())
if (clazz.isInstance(block))
returnList.addAll(this.bodyBlockProviders.get(clazz));
return returnList;
}
public ArrayList<IWailaDataProvider> getTailProviders(Object block) {
ArrayList<IWailaDataProvider> returnList = new ArrayList<IWailaDataProvider>();
for (Class clazz : this.bodyBlockProviders.keySet())
if (clazz.isInstance(block))
returnList.addAll(this.bodyBlockProviders.get(clazz));
return returnList;
}
public ArrayList<IWailaDataProvider> getStackProviders(int blockID) {
return this.stackProviders.get(blockID);
}
public ArrayList<IWailaSummaryProvider> getSummaryProvider(Object item){
ArrayList<IWailaSummaryProvider> returnList = new ArrayList<IWailaSummaryProvider>();
for (Class clazz : this.summaryProviders.keySet())
if (clazz.isInstance(item))
returnList.addAll(this.summaryProviders.get(clazz));
return returnList;
}
/* Providers querry methods */
public boolean hasHeadProviders(int blockID){
return this.headProviders.containsKey(blockID);
@@ -72,8 +184,160 @@ public class ExternalModulesHandler implements IWailaRegistrar {
public boolean hasBodyProviders(int blockID){
return this.bodyProviders.containsKey(blockID);
}
public boolean hasTailProviders(int blockID){
return this.tailProviders.containsKey(blockID);
}
public boolean hasStackProviders(int blockID){
return this.stackProviders.containsKey(blockID);
}
public boolean hasHeadProviders(Object block){
for (Class clazz : this.headBlockProviders.keySet())
if (clazz.isInstance(block))
return true;
return false;
}
public boolean hasBodyProviders(Object block){
for (Class clazz : this.bodyBlockProviders.keySet())
if (clazz.isInstance(block))
return true;
return false;
}
public boolean hasTailProviders(Object block){
for (Class clazz : this.tailBlockProviders.keySet())
if (clazz.isInstance(block))
return true;
return false;
}
public boolean hasSummaryProvider(Class item){
return this.summaryProviders.containsKey(item);
}
@Override
public void registerDocTextFile(String filename) {
List<String[]> docData = null;
int nentries = 0;
try{
docData = this.readFileAsString(filename);
} catch (IOException e){
mod_Waila.log.log(Level.WARNING, String.format("Error while accessing file %s : %s", filename, e));
return;
}
for (String[] ss : docData){
String modid = ss[0];
String name = ss[1];
String meta = ss[2];
String desc = ss[5].replace('$', '\n');
if (!(desc.trim().equals(""))){
if (!this.wikiDescriptions.containsKey(modid))
this.wikiDescriptions.put(modid, new LinkedHashMap <String, LinkedHashMap <String, String>>());
if (!this.wikiDescriptions.get(modid).containsKey(name))
this.wikiDescriptions.get(modid).put(name, new LinkedHashMap<String, String>());
this.wikiDescriptions.get(modid).get(name).put(meta, desc);
System.out.printf("Registered %s %s %s\n", modid, name, meta);
nentries += 1;
}
}
/*
String[] sections = docData.split(">>>>");
for (String s : sections){
s.trim();
if (!s.equals("")){
try{
String name = s.split("\r?\n",2)[0].trim();
String desc = s.split("\r?\n",2)[1].trim();
if (!this.wikiDescriptions.containsKey(modid))
this.wikiDescriptions.put(modid, new LinkedHashMap <String, String>());
this.wikiDescriptions.get(modid).put(name, desc);
nentries += 1;
}catch (Exception e){
System.out.printf("%s\n", e);
}
}
}
*/
mod_Waila.log.log(Level.INFO, String.format("Registered %s entries from %s", nentries, filename));
}
public boolean hasDocTextModID(String modid){
return this.wikiDescriptions.containsKey(modid);
}
public boolean hasDocTextItem(String modid, String item){
if (this.hasDocTextModID(modid))
return this.wikiDescriptions.get(modid).containsKey(item);
return false;
}
public boolean hasDocTextMeta(String modid, String item, String meta){
if (this.hasDocTextItem(modid, item))
return this.wikiDescriptions.get(modid).get(item).containsKey(meta);
return false;
}
public LinkedHashMap<String, String> getDocText(String modid, String name){
return this.wikiDescriptions.get(modid).get(name);
}
public String getDocText(String modid, String name, String meta){
return this.wikiDescriptions.get(modid).get(name).get(meta);
}
public boolean hasDocTextSpecificMeta(String modid, String name, String meta){
for (String s : this.getDocText(modid, name).keySet())
if (s.equals(meta))
return true;
return false;
}
public String getDoxTextWildcardMatch(String modid, String name){
Set<String> keys = this.wikiDescriptions.get(modid).keySet();
for (String s : keys){
String regexed = s;
regexed = regexed.replace(".", "\\.");
regexed = regexed.replace("*", ".*");
if (name.matches(s))
return s;
}
return null;
}
private List<String[]> readFileAsString(String filePath) throws IOException {
// URL fileURL = this.getClass().getResource(filePath);
// File filedata = new File(fileURL);
// Reader paramReader = new InputStreamReader(this.getClass().getResourceAsStream(filePath));
InputStream in = getClass().getResourceAsStream(filePath);
BufferedReader input = new BufferedReader(new InputStreamReader(in));
CSVReader reader = new CSVReader(input);
List<String[]> myEntries = reader.readAll();
reader.close();
return myEntries;
/*
StringBuffer fileData = new StringBuffer();
//BufferedReader reader = new BufferedReader(paramReader);
char[] buf = new char[1024];
int numRead=0;
while((numRead=input.read(buf)) != -1){
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
}
input.close();
return fileData.toString();
*/
}
}
@@ -0,0 +1,42 @@
package mcp.mobius.waila.addons.appeng;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.logging.Level;
import net.minecraftforge.common.ForgeDirection;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.addons.ExternalModulesHandler;
public class AppEngModule {
public static Class TileStorageMonitor = null;
public static Class IAEItemStack = null;
public static Method TileStorageMonitor_getItem = null;
public static Method IAEItemStack_getItemStack = null;
public static void register(){
try{
TileStorageMonitor = Class.forName("appeng.me.tile.TileStorageMonitor");
IAEItemStack = Class.forName("appeng.api.IAEItemStack");
TileStorageMonitor_getItem = TileStorageMonitor.getMethod("getItem");
IAEItemStack_getItemStack = IAEItemStack.getMethod("getItemStack");
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.WARNING, "[AppEng] Class not found. " + e);
return;
} catch (SecurityException e) {
mod_Waila.log.log(Level.WARNING, "[AppEng] Security Exception. " + e);
return;
} catch (NoSuchMethodException e) {
mod_Waila.log.log(Level.WARNING, "[AppEng] Method not found. " + e);
return;
}
mod_Waila.log.log(Level.INFO, "AppEng mod found.");
ExternalModulesHandler.instance().addConfig("Applied Energetic", "appeng.monitorcontent", "Monitor's content");
ExternalModulesHandler.instance().registerBodyProvider(new HUDAppEngMonitor(), TileStorageMonitor);
}
}
@@ -0,0 +1,49 @@
package mcp.mobius.waila.addons.appeng;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
public class HUDAppEngMonitor implements IWailaDataProvider {
@Override
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
return null;
}
@Override
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
TileEntity entity = accessor.getTileEntity();
if (entity != null){
if (config.getConfig("appeng.monitorcontent")){
try {
ItemStack stack = (ItemStack)AppEngModule.IAEItemStack_getItemStack.invoke(AppEngModule.IAEItemStack.cast(AppEngModule.TileStorageMonitor_getItem.invoke(entity)));
if (stack != null)
currenttip.add(stack.getDisplayName());
else
currenttip.add("<None>");
} catch (Exception e) {
System.out.printf("%s\n", e);
}
}
}
return currenttip;
}
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
}
@@ -0,0 +1,41 @@
package mcp.mobius.waila.addons.betterbarrels;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.logging.Level;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.addons.ExternalModulesHandler;
import mcp.mobius.waila.addons.buildcraft.HUDHandlerBCPipes;
import codechicken.nei.api.API;
import codechicken.nei.api.ItemInfo;
public class BetterBarrelsModule {
public static Class TileEntityBarrel = null;
public static Class IBarrelStorage = null;
public static Field TileEntityBarrel_Storage = null;
public static Method IBarrelStorage_getItem = null;
public static void register(){
try{
TileEntityBarrel = Class.forName("mcp.mobius.betterbarrels.common.TileEntityBarrel");
IBarrelStorage = Class.forName("mcp.mobius.betterbarrels.common.IBarrelStorage");
TileEntityBarrel_Storage = TileEntityBarrel.getField("storage");
IBarrelStorage_getItem = IBarrelStorage.getMethod("getItem");
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.WARNING, "[BB] BetterBarrel classes not found.");
} catch (NoSuchFieldException e){
mod_Waila.log.log(Level.WARNING, "[BB] Storage field not found.");
} catch (NoSuchMethodException e){
mod_Waila.log.log(Level.WARNING, "[BB] getItem() not found.");
}
if (IBarrelStorage_getItem != null){
mod_Waila.log.log(Level.INFO, "Waila module BetterBarrel succefully hooked.");
ExternalModulesHandler.instance().addConfig("BetterBarrels", "bb.content", "Barrel's content");
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerBBContent(), TileEntityBarrel);
}
}
}
@@ -0,0 +1,63 @@
package mcp.mobius.waila.addons.betterbarrels;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.List;
import java.util.logging.Level;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
//import mcp.mobius.betterbarrels.common.TileEntityBarrel;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import codechicken.nei.api.API;
import codechicken.nei.api.ItemInfo;
import codechicken.nei.api.ItemInfo.Layout;
import codechicken.nei.api.IHighlightHandler;
public class HUDHandlerBBContent implements IWailaDataProvider {
@Override
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
return null;
}
@Override
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
TileEntity entity = accessor.getTileEntity();
if (!config.getConfig("bb.content")) return currenttip;
if ((entity != null) && (BetterBarrelsModule.TileEntityBarrel.isInstance(entity))){
ItemStack stack = null;
try {
stack = (ItemStack) BetterBarrelsModule.IBarrelStorage_getItem.invoke(BetterBarrelsModule.TileEntityBarrel_Storage.get(entity));
} catch (Exception e){
mod_Waila.log.log(Level.SEVERE, "[BB] Unhandled exception trying to access a barrel storage for display !.\n" + String.valueOf(e));
currenttip.add("<ERROR!>");
return currenttip;
}
if (stack != null){
currenttip.add(stack.getDisplayName());
} else {
currenttip.add("<Empty>");
}
}
return currenttip;
}
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
}
@@ -1,78 +0,0 @@
package mcp.mobius.waila.addons.betterbarrels;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.List;
import java.util.logging.Level;
import mcp.mobius.waila.mod_Waila;
//import mcp.mobius.betterbarrels.common.TileEntityBarrel;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import codechicken.nei.api.API;
import codechicken.nei.api.ItemInfo;
import codechicken.nei.api.ItemInfo.Layout;
import codechicken.nei.api.IHighlightHandler;
public class HUDHandlerBetterBarrels implements IHighlightHandler {
static private Class TileEntityBarrel = null;
static private Class IBarrelStorage = null;
static private Field TileEntityBarrel_Storage = null;
static private Method IBarrelStorage_getItem = null;
@Override
public ItemStack identifyHighlight(World world, EntityPlayer player, MovingObjectPosition mop) {
return null;
}
@Override
public List<String> handleTextData(ItemStack itemStack, World world, EntityPlayer player, MovingObjectPosition mop, List<String> currenttip, Layout layout) {
TileEntity entity = world.getBlockTileEntity(mop.blockX, mop.blockY, mop.blockZ);
if ((entity != null) && (TileEntityBarrel.isInstance(entity))){
ItemStack stack = null;
try {
stack = (ItemStack) IBarrelStorage_getItem.invoke(TileEntityBarrel_Storage.get(entity));
} catch (Exception e){
mod_Waila.log.log(Level.SEVERE, "[BB] Unhandled exception trying to access a barrel storage for display !.\n" + String.valueOf(e));
currenttip.add("<ERROR!>");
return currenttip;
}
if (stack != null){
currenttip.add(stack.getDisplayName());
} else {
currenttip.add("<Empty>");
}
}
return currenttip;
}
public static void register(){
try{
TileEntityBarrel = Class.forName("mcp.mobius.betterbarrels.common.TileEntityBarrel");
IBarrelStorage = Class.forName("mcp.mobius.betterbarrels.common.IBarrelStorage");
TileEntityBarrel_Storage = TileEntityBarrel.getField("storage");
IBarrelStorage_getItem = IBarrelStorage.getMethod("getItem");
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.WARNING, "[BB] BetterBarrel classes not found.");
} catch (NoSuchFieldException e){
mod_Waila.log.log(Level.WARNING, "[BB] Storage field not found.");
} catch (NoSuchMethodException e){
mod_Waila.log.log(Level.WARNING, "[BB] getItem() not found.");
}
if (IBarrelStorage_getItem != null){
mod_Waila.log.log(Level.INFO, "Waila module BetterBarrel succefully hooked.");
API.registerHighlightHandler(new HUDHandlerBetterBarrels(), ItemInfo.Layout.BODY);
}
}
}
@@ -0,0 +1,58 @@
package mcp.mobius.waila.addons.buildcraft;
import java.lang.reflect.Method;
import java.util.logging.Level;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.addons.ExternalModulesHandler;
import net.minecraftforge.common.ForgeDirection;
public class BCModule {
public static Class TileTank = null;
public static Class IPowerReceptor = null;
public static Class PipeTransportPower = null;
public static Class TileGenericPipe = null;
public static Class TileEngine = null;
public static Method TileTank_getTankInfo = null;
//public static Method IPowerReceptor_PowerRequest = null;
public static void register(){
try {
Class ModBuildcraftFactory = Class.forName("buildcraft.BuildCraftFactory");
mod_Waila.log.log(Level.INFO, "Buildcraft|Factory mod found.");
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.INFO, "Buildcraft|Factory mod not found. Skipping.");
return;
}
try{
TileTank = Class.forName("buildcraft.factory.TileTank");
IPowerReceptor = Class.forName("buildcraft.api.power.IPowerReceptor");
PipeTransportPower = Class.forName("buildcraft.transport.PipeTransportPower");
TileGenericPipe = Class.forName("buildcraft.transport.TileGenericPipe");
TileEngine = Class.forName("buildcraft.energy.TileEngine");
TileTank_getTankInfo = TileTank.getMethod("getTankInfo", ForgeDirection.class);
//IPowerReceptor_PowerRequest = IPowerReceptor.getMethod("powerRequest", ForgeDirection.class);
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.WARNING, "[BC] Class not found. " + e);
return;
} catch (NoSuchMethodException e){
mod_Waila.log.log(Level.WARNING, "[BC] Method not found." + e);
return;
}
ExternalModulesHandler.instance().addConfig("Buildcraft", "bc.tankamount", "Liquid amount");
ExternalModulesHandler.instance().addConfig("Buildcraft", "bc.tanktype", "Liquid type");
//ExternalModulesHandler.instance().addConfigRemote("Buildcraft", "bc.powerpipe", "Power pipes");
ExternalModulesHandler.instance().registerHeadProvider(new HUDHandlerBCTanks(), TileTank);
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerBCTanks(), TileTank);
//ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerBCPipes(), TileGenericPipe);
//ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerBCEngine(), TileEngine);
//ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerBCIPowerReceptor(), PipeTransportPower);
}
}
@@ -0,0 +1,43 @@
package mcp.mobius.waila.addons.buildcraft;
import java.util.List;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
public class HUDHandlerBCEngine implements IWailaDataProvider {
@Override
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
return null;
}
@Override
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
NBTTagCompound tag = accessor.getNBTData();
if (tag.hasKey("energyF")){
//float output = tag.getFloat("energyF")*tag.getFloat("progress");
float output = tag.getFloat("energyF");
if (output > 1.0F)
currenttip.add(String.format("Output : %.1f MJ",output));
else
currenttip.add(String.format("Output : %.2f MJ",output));
}
return currenttip;
}
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
}
@@ -0,0 +1,49 @@
package mcp.mobius.waila.addons.buildcraft;
import java.util.List;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
public class HUDHandlerBCIPowerReceptor implements IWailaDataProvider {
public HUDHandlerBCIPowerReceptor() {
// TODO Auto-generated constructor stub
}
@Override
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
return null;
}
@Override
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
// int powerRequest = 0;
// try{
// powerRequest = (Integer)BCModule.IPowerReceptor_PowerRequest.invoke(BCModule.IPowerReceptor.cast(accessor.getTileEntity()), ForgeDirection.UNKNOWN);
// }
// catch (Exception e){
// mod_Waila.log.log(Level.SEVERE, "[BC] Unhandled exception trying to access a tank for display !.\n" + String.valueOf(e));
// return currenttip;
// }
// currenttip.add(String.valueOf(powerRequest));
// NBTTagCompound tag = accessor.getNBTData();
return currenttip;
}
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
}
@@ -0,0 +1,56 @@
package mcp.mobius.waila.addons.buildcraft;
import java.util.List;
import java.util.Map;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import mcp.mobius.waila.tools.Reflect;
public class HUDHandlerBCPipes implements IWailaDataProvider {
@Override
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
return null;
}
@Override
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
NBTTagCompound tag = accessor.getNBTData();
if (this.hasPartialKey(tag, "internalNextPower") && config.getConfig("bc.powerpipe")){
double power = Math.max(0, this.getPartialKeySum(tag, "internalNextPower"));
currenttip.add(String.format("Power : %.1f MJ", power));
}
return currenttip;
}
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
public boolean hasPartialKey(NBTTagCompound tag, String key){
Map tagMap = (Map)Reflect.getFieldValue("net.minecraft.nbt.NBTTagCompound", "tagMap", tag);
for (Object k : tagMap.keySet())
if (((String)k).contains(key))
return true;
return false;
}
public double getPartialKeySum(NBTTagCompound tag, String key){
double retVal = 0;
Map tagMap = (Map)Reflect.getFieldValue("net.minecraft.nbt.NBTTagCompound", "tagMap", tag);
for (Object k : tagMap.keySet())
if (((String)k).contains(key))
retVal += tag.getDouble((String)k);
return retVal;
}
}
@@ -1,92 +1,76 @@
package mcp.mobius.waila.addons.buildcraft;
import java.lang.reflect.Method;
import java.util.List;
import java.util.logging.Level;
//import buildcraft.factory.TileTank;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.addons.ConfigHandler;
import net.minecraft.entity.player.EntityPlayer;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler;
import net.minecraftforge.liquids.ILiquidTank;
import net.minecraftforge.liquids.LiquidStack;
import codechicken.nei.api.ItemInfo.Layout;
import codechicken.nei.api.API;
import codechicken.nei.api.IHighlightHandler;
public class HUDHandlerBCTanks implements IHighlightHandler {
private static Class TileTank = null;
private static Method TileTank_GetTanks = null;
public class HUDHandlerBCTanks implements IWailaDataProvider {
@Override
public ItemStack identifyHighlight(World world, EntityPlayer player, MovingObjectPosition mop) {
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
return null;
}
@Override
public List<String> handleTextData(ItemStack itemStack, World world, EntityPlayer player, MovingObjectPosition mop, List<String> currenttip, Layout layout) {
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
FluidTankInfo tank = this.getTank(accessor);
FluidStack stack = tank != null ? tank.fluid : null;
TileEntity entity = world.getBlockTileEntity(mop.blockX, mop.blockY, mop.blockZ);
if ((entity != null) && (TileTank.isInstance(entity))){
ILiquidTank tank = null;
try{
tank = ((ILiquidTank[])TileTank_GetTanks.invoke(TileTank.cast(entity), ForgeDirection.UNKNOWN))[0];
} catch (Exception e){
mod_Waila.log.log(Level.SEVERE, "[BC] Unhandled exception trying to access a tank for display !.\n" + String.valueOf(e));
return currenttip;
}
LiquidStack liquidStack = tank.getLiquid();
int liquidAmount = liquidStack != null ? liquidStack.amount:0;
int capacity = tank.getCapacity();
if (liquidStack != null && layout == Layout.HEADER && ConfigHandler.instance().getConfig("bc.tanktype")){
String name = currenttip.get(0);
name = name + " (" + liquidStack.asItemStack().getDisplayName() + ")";
currenttip.set(0, name);
}
if (liquidStack == null && layout == Layout.HEADER && ConfigHandler.instance().getConfig("bc.tanktype")){
String name = currenttip.get(0);
name = name + " <Empty>";
currenttip.set(0, name);
}
if (layout == Layout.BODY && ConfigHandler.instance().getConfig("bc.tankamount"))
currenttip.add(String.valueOf(liquidAmount) + "/" + String.valueOf(capacity) + " mB");
}
String name = currenttip.get(0);
if (stack != null && ConfigHandler.instance().getConfig("bc.tanktype"))
name = name + " (" + stack.getFluid().getName() + ")";
else if (stack == null && ConfigHandler.instance().getConfig("bc.tanktype"))
name = name + " <Empty>";
currenttip.set(0, name);
return currenttip;
}
public static void register(){
try{
TileTank = Class.forName("buildcraft.factory.TileTank");
TileTank_GetTanks = TileTank.getMethod("getTanks", ForgeDirection.class);
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.WARNING, "[BC] TileTank class not found.");
} catch (NoSuchMethodException e){
mod_Waila.log.log(Level.WARNING, "[BB] getTanks() not found.");
}
@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
FluidTankInfo tank = this.getTank(accessor);
FluidStack stack = tank != null ? tank.fluid : null;
int liquidAmount = stack != null ? stack.amount:0;
int capacity = tank != null ? tank.capacity : 0;
if (TileTank_GetTanks != null){
mod_Waila.log.log(Level.INFO, "Waila module BuildcraftTank succefully hooked.");
API.registerHighlightHandler(new HUDHandlerBCTanks(), Layout.HEADER);
API.registerHighlightHandler(new HUDHandlerBCTanks(), Layout.BODY);
}
if (ConfigHandler.instance().getConfig("bc.tankamount"))
currenttip.add(String.valueOf(liquidAmount) + "/" + String.valueOf(capacity) + " mB");
return currenttip;
}
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
public FluidTankInfo getTank(IWailaDataAccessor accessor){
FluidTankInfo tank = null;
try{
tank = ((FluidTankInfo[])BCModule.TileTank_getTankInfo.invoke(BCModule.TileTank.cast(accessor.getTileEntity()), ForgeDirection.UNKNOWN))[0];
} catch (Exception e){
mod_Waila.log.log(Level.SEVERE, "[BC] Unhandled exception trying to access a tank for display !.\n" + String.valueOf(e));
return null;
}
return tank;
}
}
@@ -0,0 +1,2 @@
>>>>buildcraft.transport.ItemPlug:*
This is a plug for pipes.
@@ -0,0 +1,52 @@
package mcp.mobius.waila.addons.enderstorage;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.logging.Level;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.addons.ExternalModulesHandler;
public class EnderStorageModule {
public static Class TileFrequencyOwner = null;
public static Field TileFrequencyOwner_Freq = null;
public static Class EnderStorageManager = null;
public static Method GetColourFromFreq = null;
public static void register(){
try{
Class EnderStorage = Class.forName("codechicken.enderstorage.EnderStorage");
mod_Waila.log.log(Level.INFO, "EnderStorage mod found.");
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.INFO, "[EnderStorage] EnderStorage mod not found.");
return;
}
try{
TileFrequencyOwner = Class.forName("codechicken.enderstorage.common.TileFrequencyOwner");
TileFrequencyOwner_Freq = TileFrequencyOwner.getField("freq");
EnderStorageManager = Class.forName("codechicken.enderstorage.api.EnderStorageManager");
GetColourFromFreq = EnderStorageManager.getDeclaredMethod("getColourFromFreq", Integer.TYPE, Integer.TYPE);
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.WARNING, "[EnderStorage] Class not found. " + e);
return;
} catch (NoSuchMethodException e){
mod_Waila.log.log(Level.WARNING, "[EnderStorage] Method not found." + e);
return;
} catch (NoSuchFieldException e){
mod_Waila.log.log(Level.WARNING, "[EnderStorage] Field not found." + e);
return;
} catch (Exception e){
mod_Waila.log.log(Level.WARNING, "[EnderStorage] Unhandled exception." + e);
return;
}
ExternalModulesHandler.instance().addConfig("EnderStorage", "enderstorage.colors", "Colors");
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerStorage(), TileFrequencyOwner);
}
}
@@ -0,0 +1,49 @@
package mcp.mobius.waila.addons.enderstorage;
import java.util.List;
import net.minecraft.item.ItemStack;
import mcp.mobius.waila.WailaExceptionHandler;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
public class HUDHandlerStorage implements IWailaDataProvider {
private static String[] colors = {"White", "Orange", "Magenta", "LBlue", "Yellow", "Lime", "Pink", "Gray", "LGray", "Cyan", "Purple", "Blue", "Brown", "Green", "Red", "Black"};
@Override
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
return null;
}
@Override
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
if(config.getConfig("enderstorage.colors")){
try{
int freq = EnderStorageModule.TileFrequencyOwner_Freq.getInt(accessor.getTileEntity());
int freqLeft = (Integer)EnderStorageModule.GetColourFromFreq.invoke(null, freq, 0);
int freqCenter = (Integer)EnderStorageModule.GetColourFromFreq.invoke(null, freq, 1);
int freqRight = (Integer)EnderStorageModule.GetColourFromFreq.invoke(null, freq, 2);
currenttip.add(String.format("%s/%s/%s", colors[freqLeft], colors[freqCenter], colors[freqRight]));
} catch (Exception e){
currenttip = WailaExceptionHandler.handleErr(e, accessor.getTileEntity().getClass().getName(), currenttip);
}
}
return currenttip;
}
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
}
@@ -0,0 +1,32 @@
package mcp.mobius.waila.addons.gravestone;
import java.util.logging.Level;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.addons.ExternalModulesHandler;
public class GravestoneModule {
public static Class BlockGraveStone = null;
public static void register(){
try{
Class ModGravestone = Class.forName("GraveStone.ModGraveStone");
mod_Waila.log.log(Level.INFO, "GraveStone mod found.");
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.INFO, "[GraveStone] GraveStone mod not found.");
return;
}
try {
BlockGraveStone = Class.forName("GraveStone.block.BlockGSGraveStone");
} catch (ClassNotFoundException e) {
mod_Waila.log.log(Level.WARNING, "[GraveStone] Class not found. " + e);
}
ExternalModulesHandler.instance().registerStackProvider(new HUDHandlerGravestone(), BlockGraveStone);
}
}
@@ -0,0 +1,32 @@
package mcp.mobius.waila.addons.gravestone;
import java.util.List;
import net.minecraft.item.ItemStack;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
public class HUDHandlerGravestone implements IWailaDataProvider {
@Override
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
return new ItemStack(accessor.getBlock(), 0, accessor.getMetadata());
}
@Override
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
}
@@ -0,0 +1,32 @@
package mcp.mobius.waila.addons.ic2;
import java.util.List;
import net.minecraft.item.ItemStack;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
public class HUDHandlerDoor implements IWailaDataProvider {
@Override
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
return IC2Module.ReinforcedDoorStack;
}
@Override
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
}
@@ -1,66 +0,0 @@
package mcp.mobius.waila.addons.ic2;
import java.lang.reflect.Method;
import java.util.List;
import java.util.logging.Level;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.addons.ConfigHandler;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import codechicken.nei.api.API;
import codechicken.nei.api.IHighlightHandler;
import codechicken.nei.api.ItemInfo.Layout;
public class HUDHandlerIC2Generator implements IHighlightHandler {
private static Class TEBaseGenerator = null;
private static Method TEBaseGenerator_GetMaxOutput = null;
@Override
public ItemStack identifyHighlight(World world, EntityPlayer player, MovingObjectPosition mop) {
return null;
}
@Override
public List<String> handleTextData(ItemStack itemStack, World world, EntityPlayer player, MovingObjectPosition mop, List<String> currenttip, Layout layout) {
if (!ConfigHandler.instance().getConfig("ic2.outputeu"))
return currenttip;
TileEntity entity = world.getBlockTileEntity(mop.blockX, mop.blockY, mop.blockZ);
if ((entity != null) && (TEBaseGenerator.isInstance(entity))){
int maxinput = 0;
try{
maxinput = (Integer)(TEBaseGenerator_GetMaxOutput.invoke(TEBaseGenerator.cast(entity)));
} catch (Exception e){
mod_Waila.log.log(Level.SEVERE, "[IC2] Unhandled exception trying to access an TEBaseGenerator for display !.\n" + String.valueOf(e));
return currenttip;
}
currenttip.add(String.format("OUT : %s EU/t", maxinput));
}
return currenttip;
}
public static void register(){
try{
TEBaseGenerator = Class.forName("ic2.core.block.generator.tileentity.TileEntityBaseGenerator");
TEBaseGenerator_GetMaxOutput = TEBaseGenerator.getMethod("getMaxEnergyOutput");
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.WARNING, "[IC2] TEBaseGenerator class not found.");
} catch (NoSuchMethodException e){
mod_Waila.log.log(Level.WARNING, "[IC2] One method was not found.");
}
if (TEBaseGenerator_GetMaxOutput != null){
mod_Waila.log.log(Level.INFO, "Waila module IndustrialCraft|Generator succefully hooked.");
API.registerHighlightHandler(new HUDHandlerIC2Generator(), Layout.BODY);
}
}
}
@@ -0,0 +1,88 @@
package mcp.mobius.waila.addons.ic2;
import java.util.List;
import java.util.logging.Level;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.addons.ConfigHandler;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
public class HUDHandlerIC2IEnergySink implements IWailaDataProvider {
@Override
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
return null;
}
@Override
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
//if (accessor.getTileEntity() != null && TEElectricBlock.isInstance(accessor.getTileEntity())){
int maxinput = -1;
try{
if (IC2Module.IEnergySink.isInstance(accessor.getTileEntity()))
maxinput = (Integer)(IC2Module.IEnergySink_GetInput.invoke(IC2Module.IEnergySink.cast(accessor.getTileEntity())));
} catch (Exception e){
mod_Waila.log.log(Level.SEVERE, "[IC2] Unhandled exception trying to access an IEnergySink for display !.\n" + String.valueOf(e));
return currenttip;
}
int ntransformers = this.getTransformerUpgrades(accessor);
if (ntransformers > 0){
maxinput = maxinput * (int)Math.pow(4.0D, Math.min(3, ntransformers));
}
if (ConfigHandler.instance().getConfig("ic2.inputeuother") && (maxinput > 4096))
currenttip.add("IN : ANY");
else if (ConfigHandler.instance().getConfig("ic2.inputeuother") && (maxinput != -1) && !this.canUpgrade(accessor.getNBTData()))
currenttip.add(String.format("IN : %s EU/t", maxinput));
else if (ConfigHandler.instance().getConfig("ic2.inputeumach") && (maxinput != -1) && this.canUpgrade(accessor.getNBTData()))
currenttip.add(String.format("IN : %s EU/t", maxinput));
if (config.getConfig("ic2.storage"))
if (accessor.getNBTData().hasKey("energy") && !IC2Module.IEnergyStorage.isInstance(accessor.getTileEntity()))
currenttip.add(String.format("Storage : %s EU", accessor.getNBTInteger(accessor.getNBTData(), "energy")));
return currenttip;
}
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
public boolean canUpgrade(NBTTagCompound tag){
if (tag.hasKey("InvSlots"))
if (tag.getCompoundTag("InvSlots").hasKey("upgrade"))
return true;
return false;
}
public int getTransformerUpgrades(IWailaDataAccessor accessor){
NBTTagCompound tag = accessor.getNBTData();
if (!canUpgrade(tag)) return -1;
int ntransformers = 0;
NBTTagList contents = tag.getCompoundTag("InvSlots").getCompoundTag("upgrade").getTagList("Contents");
for (NBTTagCompound subtag : (List<NBTTagCompound>)contents.tagList){
ItemStack currentSlot = new ItemStack(accessor.getNBTInteger(subtag, "id"),accessor.getNBTInteger(subtag, "Count"),accessor.getNBTInteger(subtag, "Damage"));
if (IC2Module.TransformerUpgradeStack.isItemEqual(currentSlot)){
ntransformers += currentSlot.stackSize;
}
}
return ntransformers;
}
}
@@ -0,0 +1,52 @@
package mcp.mobius.waila.addons.ic2;
import java.util.List;
import java.util.logging.Level;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.addons.ConfigHandler;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import net.minecraft.item.ItemStack;
public class HUDHandlerIC2IEnergySource implements IWailaDataProvider {
@Override
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
return null;
}
@Override
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
//if (accessor.getTileEntity() != null && TEElectricBlock.isInstance(accessor.getTileEntity())){
int output = -1;
try{
if (IC2Module.IEnergySource.isInstance(accessor.getTileEntity()))
output = (Integer)(IC2Module.IEnergySource_GetOutput.invoke(IC2Module.IEnergySource.cast(accessor.getTileEntity())));
} catch (Exception e){
mod_Waila.log.log(Level.SEVERE, "[IC2] Unhandled exception trying to access an IEnergySource for display !.\n" + String.valueOf(e));
return currenttip;
}
if (ConfigHandler.instance().getConfig("ic2.outputeu") && (output != -1))
currenttip.add(String.format("OUT : %s EU/t", output));
if (config.getConfig("ic2.storage"))
if (accessor.getNBTData().hasKey("storage") && !IC2Module.IEnergyStorage.isInstance(accessor.getTileEntity()))
currenttip.add(String.format("Storage : %s EU", accessor.getNBTInteger(accessor.getNBTData(), "storage")));
return currenttip;
}
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
}
@@ -0,0 +1,52 @@
package mcp.mobius.waila.addons.ic2;
import java.util.List;
import java.util.logging.Level;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import net.minecraft.item.ItemStack;
public class HUDHandlerIC2IEnergyStorage implements IWailaDataProvider {
@Override
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
return null;
}
@Override
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
if (!config.getConfig("ic2.storage"))
return currenttip;
int stored = -1;
int capacity = -1;
try{
if (IC2Module.IEnergyStorage.isInstance(accessor.getTileEntity()))
capacity = (Integer)(IC2Module.IEnergyStorage_GetCapacity.invoke(IC2Module.IEnergyStorage.cast(accessor.getTileEntity())));
} catch (Exception e){
mod_Waila.log.log(Level.SEVERE, "[IC2] Unhandled exception trying to access an IEnergyStorage for display !.\n" + String.valueOf(e));
return currenttip;
}
if (accessor.getNBTData().hasKey("energy"))
stored = accessor.getNBTInteger(accessor.getNBTData(), "energy");
if ((capacity != -1) && (stored != -1))
currenttip.add(String.format("%s/%s EU", stored, capacity));
return currenttip;
}
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
}
@@ -1,66 +0,0 @@
package mcp.mobius.waila.addons.ic2;
import java.lang.reflect.Method;
import java.util.List;
import java.util.logging.Level;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.addons.ConfigHandler;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import codechicken.nei.api.API;
import codechicken.nei.api.IHighlightHandler;
import codechicken.nei.api.ItemInfo.Layout;
public class HUDHandlerIC2Machine implements IHighlightHandler {
private static Class TEElectricMachine = null;
private static Method TEElectricMachine_GetMaxSafeInput = null;
@Override
public ItemStack identifyHighlight(World world, EntityPlayer player, MovingObjectPosition mop) {
return null;
}
@Override
public List<String> handleTextData(ItemStack itemStack, World world, EntityPlayer player, MovingObjectPosition mop, List<String> currenttip, Layout layout) {
if (!ConfigHandler.instance().getConfig("ic2.inputeu"))
return currenttip;
TileEntity entity = world.getBlockTileEntity(mop.blockX, mop.blockY, mop.blockZ);
if ((entity != null) && (TEElectricMachine.isInstance(entity))){
int maxinput = 0;
try{
maxinput = (Integer)(TEElectricMachine_GetMaxSafeInput.invoke(TEElectricMachine.cast(entity)));
} catch (Exception e){
mod_Waila.log.log(Level.SEVERE, "[IC2] Unhandled exception trying to access an IEnergyStorage for display !.\n" + String.valueOf(e));
return currenttip;
}
currenttip.add(String.format("IN : %s EU/t", maxinput));
}
return currenttip;
}
public static void register(){
try{
TEElectricMachine = Class.forName("ic2.core.block.machine.tileentity.TileEntityElectricMachine");
TEElectricMachine_GetMaxSafeInput = TEElectricMachine.getMethod("getMaxSafeInput");
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.WARNING, "[IC2] TileEntityElectricMachine class not found.");
} catch (NoSuchMethodException e){
mod_Waila.log.log(Level.WARNING, "[IC2] One method was not found.");
}
if (TEElectricMachine_GetMaxSafeInput != null){
mod_Waila.log.log(Level.INFO, "Waila module IndustrialCraft|Machine succefully hooked.");
API.registerHighlightHandler(new HUDHandlerIC2Machine(), Layout.BODY);
}
}
}
@@ -1,87 +0,0 @@
package mcp.mobius.waila.addons.ic2;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.List;
import java.util.logging.Level;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.addons.ConfigHandler;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import codechicken.nei.api.API;
import codechicken.nei.api.IHighlightHandler;
import codechicken.nei.api.ItemInfo.Layout;
public class HUDHandlerIC2Storage implements IHighlightHandler {
private static Class TEElectricBlock = null;
private static Field TEElectricBlock_Energy = null;
private static Method TEElectricBlock_GetStored = null;
private static Method TEElectricBlock_GetCapacity = null;
private static Method TEElectricBlock_GetOutput = null;
private static Method TEElectricBlock_GetMaxSafeInput = null;
@Override
public ItemStack identifyHighlight(World world, EntityPlayer player, MovingObjectPosition mop) {
return null;
}
@Override
public List<String> handleTextData(ItemStack itemStack, World world, EntityPlayer player, MovingObjectPosition mop, List<String> currenttip, Layout layout) {
TileEntity entity = world.getBlockTileEntity(mop.blockX, mop.blockY, mop.blockZ);
if ((entity != null) && (TEElectricBlock.isInstance(entity))){
int stored = 0;
int capacity = 0;
int output = 0;
int maxinput = 0;
try{
//stored = (Integer)(TEElectricBlock_Energy.get(entity));
//capacity = (Integer)(TEElectricBlock_GetCapacity.invoke(TEElectricBlock.cast(entity)));
output = (Integer)(TEElectricBlock_GetOutput.invoke(TEElectricBlock.cast(entity)));
maxinput = (Integer)(TEElectricBlock_GetMaxSafeInput.invoke(TEElectricBlock.cast(entity)));
} catch (Exception e){
mod_Waila.log.log(Level.SEVERE, "[IC2] Unhandled exception trying to access an IEnergyStorage for display !.\n" + String.valueOf(e));
return currenttip;
}
if (ConfigHandler.instance().getConfig("ic2.outputeu") && ConfigHandler.instance().getConfig("ic2.inputeu"))
currenttip.add(String.format("IN/OUT : %s/%s EU/t", maxinput, output));
else if (ConfigHandler.instance().getConfig("ic2.outputeu") && !ConfigHandler.instance().getConfig("ic2.inputeu"))
currenttip.add(String.format("OUT : %s EU/t", output));
else if (!ConfigHandler.instance().getConfig("ic2.outputeu") && ConfigHandler.instance().getConfig("ic2.inputeu"))
currenttip.add(String.format("IN : %s EU/t", maxinput));
//currenttip.add(String.format("%s / %s EU", stored, capacity));
}
return currenttip;
}
public static void register(){
try{
TEElectricBlock = Class.forName("ic2.core.block.wiring.TileEntityElectricBlock");
TEElectricBlock_GetStored = TEElectricBlock.getMethod("getStored");
TEElectricBlock_GetCapacity = TEElectricBlock.getMethod("getCapacity");
TEElectricBlock_GetOutput = TEElectricBlock.getMethod("getOutput");
TEElectricBlock_GetMaxSafeInput = TEElectricBlock.getMethod("getMaxSafeInput");
TEElectricBlock_Energy = TEElectricBlock.getField("energy");
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.WARNING, "[IC2] IEnergyStorage class not found.");
} catch (NoSuchMethodException e){
mod_Waila.log.log(Level.WARNING, "[IC2] One method was not found.");
} catch (NoSuchFieldException e){
mod_Waila.log.log(Level.WARNING, "[IC2] One field was not found.");
}
if (TEElectricBlock_Energy != null){
mod_Waila.log.log(Level.INFO, "Waila module IndustrialCraft|Storage succefully hooked.");
API.registerHighlightHandler(new HUDHandlerIC2Storage(), Layout.BODY);
}
}
}
@@ -0,0 +1,91 @@
package mcp.mobius.waila.addons.ic2;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.logging.Level;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.addons.ExternalModulesHandler;
import net.minecraft.item.ItemStack;
public class IC2Module {
/* Our interfaces */
public static Class IEnergyStorage = null;
public static Class IEnergySink = null;
public static Class IEnergySource = null;
/* Methods interfaces */
public static Method IEnergyStorage_GetCapacity = null;
public static Method IEnergySink_GetInput = null;
public static Method IEnergySource_GetOutput = null;
/* Some required items */
public static Class IC2Items = null;
public static Field TransformerUpgrade = null;
public static ItemStack TransformerUpgradeStack = null;
public static Field EnergyStorageUpgrade = null;
public static ItemStack EnergyStorageUpgradeStack = null;
/* Fix for doors */
public static Class BlockIC2Door = null;
public static Field ReinforcedDoor = null;
public static ItemStack ReinforcedDoorStack = null;
public static void register(){
try{
Class ModIndustrialCraft = Class.forName("ic2.core.IC2");
mod_Waila.log.log(Level.INFO, "Industrialcraft2 mod found.");
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.INFO, "[IC2] Industrialcraft2 mod not found.");
return;
}
try{
IEnergyStorage = Class.forName("ic2.api.tile.IEnergyStorage");
IEnergySink = Class.forName("ic2.api.energy.tile.IEnergySink");
IEnergySource = Class.forName("ic2.api.energy.tile.IEnergySource");
IEnergySink_GetInput = IEnergySink.getMethod("getMaxSafeInput");
IEnergySource_GetOutput = IEnergySource.getMethod("getMaxEnergyOutput");
IEnergyStorage_GetCapacity = IEnergyStorage.getMethod("getCapacity");
IC2Items = Class.forName("ic2.core.Ic2Items");
TransformerUpgrade = IC2Items.getDeclaredField("transformerUpgrade");
EnergyStorageUpgrade = IC2Items.getDeclaredField("energyStorageUpgrade");
TransformerUpgradeStack = (ItemStack)TransformerUpgrade.get(null);
EnergyStorageUpgradeStack = (ItemStack)EnergyStorageUpgrade.get(null);
BlockIC2Door = Class.forName("ic2.core.block.BlockIC2Door");
ReinforcedDoor = IC2Items.getDeclaredField("reinforcedDoor");
ReinforcedDoorStack = (ItemStack)ReinforcedDoor.get(null);
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.WARNING, "[IC2] Class not found. " + e);
return;
} catch (NoSuchMethodException e){
mod_Waila.log.log(Level.WARNING, "[IC2] Method not found." + e);
return;
} catch (NoSuchFieldException e){
mod_Waila.log.log(Level.WARNING, "[IC2] Field not found." + e);
return;
} catch (Exception e){
mod_Waila.log.log(Level.WARNING, "[IC2] Unhandled exception." + e);
return;
}
ExternalModulesHandler.instance().addConfigRemote("IndustrialCraft2", "ic2.inputeumach", "Max EU input [Machines]");
ExternalModulesHandler.instance().addConfig("IndustrialCraft2", "ic2.inputeuother", "Max EU input [Other]");
ExternalModulesHandler.instance().addConfig("IndustrialCraft2", "ic2.outputeu", "Max EU output");
ExternalModulesHandler.instance().addConfigRemote("IndustrialCraft2", "ic2.storage", "Energy stored");
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerIC2IEnergySink(), IEnergySink);
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerIC2IEnergySource(), IEnergySource);
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerIC2IEnergyStorage(), IEnergyStorage);
ExternalModulesHandler.instance().registerStackProvider(new HUDHandlerDoor(), BlockIC2Door);
}
}
@@ -0,0 +1,43 @@
package mcp.mobius.waila.addons.thaumcraft;
import java.util.List;
import mcp.mobius.waila.WailaExceptionHandler;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import net.minecraft.item.ItemStack;
public class HUDHandlerCapacitor implements IWailaDataProvider {
@Override
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
return null;
}
@Override
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
if (config.getConfig("thaumcraft.storedvis")){
try{
short storedVis = ThaumcraftModule.TileCrystalCapacitor_StoredVis.getShort(accessor.getTileEntity());
short maxVis = ThaumcraftModule.TileCrystalCapacitor_MaxVis.getShort(accessor.getTileEntity());
currenttip.add(String.format("%s/%s vis", storedVis, maxVis));
}catch (Exception e){
currenttip = WailaExceptionHandler.handleErr(e, accessor.getClass().getName(), currenttip);
}
}
return currenttip;
}
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
}
@@ -0,0 +1,31 @@
package mcp.mobius.waila.addons.thaumcraft;
import java.util.List;
import net.minecraft.item.ItemStack;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
public class HUDHandlerLeaves implements IWailaDataProvider {
@Override
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
return new ItemStack(accessor.getBlock(), 0, accessor.getMetadata());
}
@Override
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
}
@@ -0,0 +1,30 @@
package mcp.mobius.waila.addons.thaumcraft;
import java.util.List;
import net.minecraft.item.ItemStack;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
public class HUDHandlerPlants implements IWailaDataProvider {
@Override
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
return new ItemStack(accessor.getBlock(), 0, accessor.getMetadata());
}
@Override
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
}
@@ -0,0 +1,57 @@
package mcp.mobius.waila.addons.thaumcraft;
import java.lang.reflect.Field;
import java.util.logging.Level;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.addons.ExternalModulesHandler;
public class ThaumcraftModule {
public static Class BlockMagicalLeaves = null;
public static Class BlockCustomPlant = null;
public static Class TileCrystalCapacitor = null;
public static Field TileCrystalCapacitor_StoredVis = null;
public static Field TileCrystalCapacitor_MaxVis = null;
public static void register(){
try{
Class ModThaumcraft = Class.forName("thaumcraft.common.Thaumcraft");
mod_Waila.log.log(Level.INFO, "Thaumcraft mod found.");
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.INFO, "[Thaumcraft] Thaumcraft mod not found.");
return;
}
try{
BlockMagicalLeaves = Class.forName("thaumcraft.common.world.BlockMagicalLeaves");
BlockCustomPlant = Class.forName("thaumcraft.common.world.BlockCustomPlant");
TileCrystalCapacitor = Class.forName("thaumcraft.common.tiles.TileCrystalCapacitor");
TileCrystalCapacitor_StoredVis = TileCrystalCapacitor.getField("storedVis");
TileCrystalCapacitor_MaxVis = TileCrystalCapacitor.getField("maxVis");
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.WARNING, "[Thaumcraft] Class not found. " + e);
return;
// } catch (NoSuchMethodException e){
// mod_Waila.log.log(Level.WARNING, "[Thaumcraft] Method not found." + e);
// return;
} catch (NoSuchFieldException e){
mod_Waila.log.log(Level.WARNING, "[Thaumcraft] Field not found." + e);
return;
// } catch (Exception e){
// mod_Waila.log.log(Level.WARNING, "[Thaumcraft] Unhandled exception." + e);
// return;
}
ExternalModulesHandler.instance().addConfig("Thaumcraft", "thaumcraft.storedvis", "Capacitor storage");
ExternalModulesHandler.instance().registerStackProvider(new HUDHandlerLeaves(), BlockMagicalLeaves);
ExternalModulesHandler.instance().registerStackProvider(new HUDHandlerPlants(), BlockCustomPlant);
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerCapacitor(), TileCrystalCapacitor);
}
}
@@ -0,0 +1,31 @@
package mcp.mobius.waila.addons.twilightforest;
import java.util.List;
import net.minecraft.item.ItemStack;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
public class TwilightForestGenericOverride implements IWailaDataProvider {
@Override
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
return new ItemStack(accessor.getBlock(), 0, accessor.getMetadata());
}
@Override
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
}
@@ -0,0 +1,38 @@
package mcp.mobius.waila.addons.twilightforest;
import java.util.logging.Level;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.addons.ExternalModulesHandler;
public class TwilightForestModule {
public static Class BlockTFRoots = null;
public static Class BlockTFPlant = null;
public static Class BlockTFSapling = null;
public static void register(){
try{
Class TwilightForestMod = Class.forName("twilightforest.TwilightForestMod");
mod_Waila.log.log(Level.INFO, "TwilightForestMod mod found.");
} catch (ClassNotFoundException e){
mod_Waila.log.log(Level.INFO, "[TwilightForestMod] TwilightForestMod mod not found.");
return;
}
try {
BlockTFRoots = Class.forName("twilightforest.block.BlockTFRoots");
BlockTFPlant = Class.forName("twilightforest.block.BlockTFPlant");
BlockTFSapling = Class.forName("twilightforest.block.BlockTFSapling");
} catch (ClassNotFoundException e) {
mod_Waila.log.log(Level.WARNING, "[TwilightForestMod] Class not found. " + e);
}
ExternalModulesHandler.instance().registerStackProvider(new TwilightForestGenericOverride(), BlockTFRoots);
ExternalModulesHandler.instance().registerStackProvider(new TwilightForestGenericOverride(), BlockTFPlant);
//ExternalModulesHandler.instance().registerStackProvider(new TwilightForestGenericOverride(), BlockTFSapling);
}
}
@@ -3,14 +3,14 @@ package mcp.mobius.waila.addons.vanillamc;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemRecord;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntityMobSpawner;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import mcp.mobius.waila.addons.ExternalModulesHandler;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
public class HUDHandlerVanilla implements IWailaDataProvider {
@@ -21,51 +21,131 @@ public class HUDHandlerVanilla implements IWailaDataProvider {
static int pumpkinStemID = Block.pumpkinStem.blockID;
static int carrotID = Block.carrot.blockID;
static int potatoID = Block.potato.blockID;
static int leverID = Block.lever.blockID;
static int repeaterIdle = Block.redstoneRepeaterIdle.blockID;
static int repeaterActv = Block.redstoneRepeaterActive.blockID;
static int comparatorIdl = Block.redstoneComparatorIdle.blockID;
static int comparatorAct = Block.redstoneComparatorActive.blockID;
static int redstone = Block.redstoneWire.blockID;
static int jukebox = Block.jukebox.blockID;
@Override
public ItemStack getWailaStack(World world, EntityPlayer player, TileEntity entity, Block block, MovingObjectPosition mop, IWailaConfigHandler config) {
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
return null;
}
@Override
public List<String> getWailaHead(ItemStack itemStack, World world, EntityPlayer player, TileEntity entity, Block block, MovingObjectPosition mop, List<String> currenttip, IWailaConfigHandler config) {
int blockID = block.blockID;
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
int blockID = accessor.getBlockID();
/* Mob spawner handler */
if (blockID == mobSpawnerID && entity instanceof TileEntityMobSpawner && config.getConfig("vanilla.showspawntype")){
if (blockID == mobSpawnerID && accessor.getTileEntity() instanceof TileEntityMobSpawner && config.getConfig("vanilla.spawntype")){
String name = currenttip.get(0);
String mobname = ((TileEntityMobSpawner)entity).func_98049_a().getEntityNameToSpawn();
String mobname = ((TileEntityMobSpawner)accessor.getTileEntity()).getSpawnerLogic().getEntityNameToSpawn();
currenttip.set(0, String.format("%s (%s)", name, mobname));
}
if (blockID == redstone){
String name = currenttip.get(0).replaceFirst(String.format(" %s", accessor.getMetadata()), "");
currenttip.set(0, name);
}
return currenttip;
}
@Override
public List<String> getWailaBody(ItemStack itemStack, World world, EntityPlayer player, TileEntity entity, Block block, MovingObjectPosition mop, List<String> currenttip, IWailaConfigHandler config) {
int blockID = block.blockID;
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
int blockID = accessor.getBlockID();
/* Crops */
if (config.getConfig("vanilla.showgrowthvalue"))
if (config.getConfig("vanilla.growthvalue"))
if (blockID == cropsID || blockID == melonStemID || blockID == pumpkinStemID || blockID == carrotID || blockID == potatoID){
float growthValue = ((float)world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ) / 7.0F) * 100.0F;
float growthValue = (accessor.getMetadata() / 7.0F) * 100.0F;
if (growthValue != 100.0)
currenttip.add(String.format("Growth : %.0f %%", growthValue));
else
currenttip.add("Growth : Mature");
return currenttip;
}
if (config.getConfig("vanilla.leverstate"))
if (blockID == leverID){
String redstoneOn = (accessor.getMetadata() & 8) == 0 ? "Off" : "On";
currenttip.add("State : " + redstoneOn);
return currenttip;
}
if (config.getConfig("vanilla.repeater"))
if ((blockID == repeaterIdle) ||(blockID == repeaterActv)){
int tick = (accessor.getMetadata() >> 2) + 1 ;
if (tick == 1)
currenttip.add(String.format("Delay : %s tick", tick));
else
currenttip.add(String.format("Delay : %s ticks", tick));
return currenttip;
}
if (config.getConfig("vanilla.comparator"))
if ((blockID == comparatorIdl) ||(blockID == comparatorAct)){
String mode = ((accessor.getMetadata() >> 2) & 1) == 0 ? "Comparator" : "Subtractor";
//int outputSignal = ((TileEntityComparator)entity).func_96100_a();
currenttip.add("Mode : " + mode);
//currenttip.add(String.format("Out : %s", outputSignal));
return currenttip;
}
if (config.getConfig("vanilla.redstone"))
if (blockID == redstone){
currenttip.add(String.format("Power : %s" , accessor.getMetadata()));
return currenttip;
}
if (config.getConfig("vanilla.jukebox"))
if (blockID == jukebox){
NBTTagCompound tag = accessor.getNBTData();
Item record = null;
if (tag.hasKey("Record")){
record = Item.itemsList[accessor.getNBTInteger(tag, "Record")];
currenttip.add(((ItemRecord)record).getRecordTitle());
} else {
currenttip.add("<Empty>");
}
}
return currenttip;
}
}
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return currenttip;
}
public static void register(){
ExternalModulesHandler.instance().addConfig("VanillaMC", "vanilla.showspawntype", "Spawner type");
ExternalModulesHandler.instance().addConfig("VanillaMC", "vanilla.showgrowthvalue", "Growth value");
ExternalModulesHandler.instance().addConfig("VanillaMC", "vanilla.spawntype", "Spawner type");
ExternalModulesHandler.instance().addConfig("VanillaMC", "vanilla.growthvalue", "Growth value");
ExternalModulesHandler.instance().addConfig("VanillaMC", "vanilla.leverstate", "Lever state");
ExternalModulesHandler.instance().addConfig("VanillaMC", "vanilla.repeater", "Repeater delay");
ExternalModulesHandler.instance().addConfig("VanillaMC", "vanilla.comparator", "Comparator mode");
ExternalModulesHandler.instance().addConfig("VanillaMC", "vanilla.redstone", "Redstone power");
ExternalModulesHandler.instance().addConfigRemote("VanillaMC", "vanilla.jukebox", "Jukebox disk");
ExternalModulesHandler.instance().registerHeadProvider(new HUDHandlerVanilla(), mobSpawnerID);
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerVanilla(), cropsID);
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerVanilla(), melonStemID);
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerVanilla(), pumpkinStemID);
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerVanilla(), carrotID);
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerVanilla(), potatoID);
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerVanilla(), potatoID);
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerVanilla(), leverID);
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerVanilla(), repeaterIdle);
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerVanilla(), repeaterActv);
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerVanilla(), comparatorIdl);
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerVanilla(), comparatorAct);
ExternalModulesHandler.instance().registerHeadProvider(new HUDHandlerVanilla(), redstone);
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerVanilla(), redstone);
ExternalModulesHandler.instance().registerBodyProvider(new HUDHandlerVanilla(), jukebox);
ExternalModulesHandler.instance().registerDocTextFile("/mcp/mobius/waila/addons/vanillamc/WikiData.csv");
}
}
@@ -0,0 +1,667 @@
Minecraft,tile.*,0,Stone,net.minecraft.item.ItemBlock,This is a crazy test !
Minecraft,tile.grass,0,Grass Block,net.minecraft.item.ItemBlock,
Minecraft,tile.dirt,0,Dirt,net.minecraft.item.ItemBlock,
Minecraft,tile.stonebrick,0,Cobblestone,net.minecraft.item.ItemBlock,
Minecraft,tile.wood.oak,0,Oak Wood Planks,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.wood.spruce,1,Spruce Wood Planks,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.wood.birch,2,Birch Wood Planks,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.wood.jungle,3,Jungle Wood Planks,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.sapling.oak,0,Oak Sapling,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.sapling.spruce,1,Spruce Sapling,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.sapling.birch,2,Birch Sapling,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.sapling.jungle,3,Jungle Sapling,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.bedrock,0,Bedrock,net.minecraft.item.ItemBlock,
Minecraft,tile.water,0,Water,net.minecraft.item.ItemBlock,
Minecraft,tile.water,0,Water,net.minecraft.item.ItemBlock,
Minecraft,tile.lava,0,Lava,net.minecraft.item.ItemBlock,
Minecraft,tile.lava,0,Lava,net.minecraft.item.ItemBlock,
Minecraft,tile.sand,0,Sand,net.minecraft.item.ItemBlock,
Minecraft,tile.gravel,0,Gravel,net.minecraft.item.ItemBlock,
Minecraft,tile.oreGold,0,Gold Ore,net.minecraft.item.ItemBlock,
Minecraft,tile.oreIron,0,Iron Ore,net.minecraft.item.ItemBlock,
Minecraft,tile.oreCoal,0,Coal Ore,net.minecraft.item.ItemBlock,
Minecraft,tile.log.oak,0,Oak Wood,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.log.spruce,1,Spruce Wood,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.log.birch,2,Birch Wood,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.log.jungle,3,Jungle Wood,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.leaves.oak,0,Oak Leaves,net.minecraft.item.ItemLeaves,
Minecraft,tile.leaves.spruce,1,Spruce Leaves,net.minecraft.item.ItemLeaves,
Minecraft,tile.leaves.birch,2,Birch Leaves,net.minecraft.item.ItemLeaves,
Minecraft,tile.leaves.jungle,3,Jungle Leaves,net.minecraft.item.ItemLeaves,
Minecraft,tile.sponge,0,Sponge,net.minecraft.item.ItemBlock,
Minecraft,tile.glass,0,Glass,net.minecraft.item.ItemBlock,
Minecraft,tile.oreLapis,0,Lapis Lazuli Ore,net.minecraft.item.ItemBlock,
Minecraft,tile.blockLapis,0,Lapis Lazuli Block,net.minecraft.item.ItemBlock,
Minecraft,tile.dispenser,0,Dispenser,net.minecraft.item.ItemBlock,
Minecraft,tile.sandStone.default,0,Sandstone,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.sandStone.chiseled,1,Chiseled Sandstone,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.sandStone.smooth,2,Smooth Sandstone,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.musicBlock,0,Note Block,net.minecraft.item.ItemBlock,
Minecraft,tile.goldenRail,0,Powered Rail,net.minecraft.item.ItemBlock,
Minecraft,tile.detectorRail,0,Detector Rail,net.minecraft.item.ItemBlock,
Minecraft,tile.pistonStickyBase,0,Sticky Piston,net.minecraft.item.ItemPiston,
Minecraft,tile.web,0,Cobweb,net.minecraft.item.ItemBlock,
Minecraft,tile.tallgrass.grass,1,Grass,net.minecraft.item.ItemColored,
Minecraft,tile.tallgrass.fern,2,Fern,net.minecraft.item.ItemColored,
Minecraft,tile.deadbush,0,Dead Bush,net.minecraft.item.ItemBlock,
Minecraft,tile.pistonBase,0,Piston,net.minecraft.item.ItemPiston,
Minecraft,tile.cloth.white,0,Wool,net.minecraft.item.ItemCloth,
Minecraft,tile.cloth.orange,1,Orange Wool,net.minecraft.item.ItemCloth,
Minecraft,tile.cloth.magenta,2,Magenta Wool,net.minecraft.item.ItemCloth,
Minecraft,tile.cloth.lightBlue,3,Light Blue Wool,net.minecraft.item.ItemCloth,
Minecraft,tile.cloth.yellow,4,Yellow Wool,net.minecraft.item.ItemCloth,
Minecraft,tile.cloth.lime,5,Lime Wool,net.minecraft.item.ItemCloth,
Minecraft,tile.cloth.pink,6,Pink Wool,net.minecraft.item.ItemCloth,
Minecraft,tile.cloth.gray,7,Gray Wool,net.minecraft.item.ItemCloth,
Minecraft,tile.cloth.silver,8,Light Gray Wool,net.minecraft.item.ItemCloth,
Minecraft,tile.cloth.cyan,9,Cyan Wool,net.minecraft.item.ItemCloth,
Minecraft,tile.cloth.purple,10,Purple Wool,net.minecraft.item.ItemCloth,
Minecraft,tile.cloth.blue,11,Blue Wool,net.minecraft.item.ItemCloth,
Minecraft,tile.cloth.brown,12,Brown Wool,net.minecraft.item.ItemCloth,
Minecraft,tile.cloth.green,13,Green Wool,net.minecraft.item.ItemCloth,
Minecraft,tile.cloth.red,14,Red Wool,net.minecraft.item.ItemCloth,
Minecraft,tile.cloth.black,15,Black Wool,net.minecraft.item.ItemCloth,
Minecraft,tile.flower,0,Flower,net.minecraft.item.ItemBlock,
Minecraft,tile.rose,0,Rose,net.minecraft.item.ItemBlock,
Minecraft,tile.mushroom,0,Mushroom,net.minecraft.item.ItemBlock,
Minecraft,tile.mushroom,0,Mushroom,net.minecraft.item.ItemBlock,
Minecraft,tile.blockGold,0,Block of Gold,net.minecraft.item.ItemBlock,
Minecraft,tile.blockIron,0,Block of Iron,net.minecraft.item.ItemBlock,
Minecraft,tile.stoneSlab.stone,0,Stone Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.sand,1,Sandstone Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.wood,2,Wooden Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.cobble,3,Cobblestone Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.brick,4,Bricks Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.smoothStoneBrick,5,Stone Bricks Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.netherBrick,6,Nether Brick Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.quartz,7,Quartz Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.stone,8,Stone Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.stone,9,Stone Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.stone,10,Stone Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.stone,11,Stone Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.stone,12,Stone Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.stone,13,Stone Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.stone,14,Stone Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.stone,15,Stone Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.stone,0,Stone Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.sand,1,Sandstone Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.cobble,3,Cobblestone Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.brick,4,Bricks Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.smoothStoneBrick,5,Stone Bricks Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.netherBrick,6,Nether Brick Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.stoneSlab.quartz,7,Quartz Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.brick,0,Bricks,net.minecraft.item.ItemBlock,
Minecraft,tile.tnt,0,TNT,net.minecraft.item.ItemBlock,
Minecraft,tile.bookshelf,0,Bookshelf,net.minecraft.item.ItemBlock,
Minecraft,tile.stoneMoss,0,Moss Stone,net.minecraft.item.ItemBlock,
Minecraft,tile.obsidian,0,Obsidian,net.minecraft.item.ItemBlock,
Minecraft,tile.torch,0,Torch,net.minecraft.item.ItemBlock,
Minecraft,tile.fire,0,Fire,net.minecraft.item.ItemBlock,
Minecraft,tile.mobSpawner,90,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,50,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,51,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,52,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,53,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,54,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,55,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,56,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,57,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,58,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,59,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,60,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,61,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,62,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,64,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,65,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,66,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,91,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,92,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,93,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,94,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,95,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,96,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,97,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,98,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,99,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.mobSpawner,120,Monster Spawner,codechicken.nei.ItemMobSpawner,
Minecraft,tile.stairsWood,0,Oak Wood Stairs,net.minecraft.item.ItemBlock,
Minecraft,tile.chest,0,Chest,net.minecraft.item.ItemBlock,
Minecraft,tile.oreDiamond,0,Diamond Ore,net.minecraft.item.ItemBlock,
Minecraft,tile.blockDiamond,0,Block of Diamond,net.minecraft.item.ItemBlock,
Minecraft,tile.workbench,0,Crafting Table,net.minecraft.item.ItemBlock,
Minecraft,tile.farmland,0,Farmland,net.minecraft.item.ItemBlock,
Minecraft,tile.furnace,0,Furnace,net.minecraft.item.ItemBlock,
Minecraft,tile.ladder,0,Ladder,net.minecraft.item.ItemBlock,
Minecraft,tile.rail,0,Rail,net.minecraft.item.ItemBlock,
Minecraft,tile.stairsStone,0,Stone Stairs,net.minecraft.item.ItemBlock,
Minecraft,tile.lever,0,Lever,net.minecraft.item.ItemBlock,
Minecraft,tile.pressurePlate,0,Pressure Plate,net.minecraft.item.ItemBlock,
Minecraft,tile.pressurePlate,0,Pressure Plate,net.minecraft.item.ItemBlock,
Minecraft,tile.oreRedstone,0,Redstone Ore,net.minecraft.item.ItemBlock,
Minecraft,tile.notGate,0,Redstone Torch,net.minecraft.item.ItemBlock,
Minecraft,tile.button,0,Button,net.minecraft.item.ItemBlock,
Minecraft,tile.snow,0,Snow,net.minecraft.item.ItemSnow,
Minecraft,tile.ice,0,Ice,net.minecraft.item.ItemBlock,
Minecraft,tile.snow,0,Snow,net.minecraft.item.ItemBlock,
Minecraft,tile.cactus,0,Cactus,net.minecraft.item.ItemBlock,
Minecraft,tile.clay,0,Clay,net.minecraft.item.ItemBlock,
Minecraft,tile.jukebox,0,Jukebox,net.minecraft.item.ItemBlock,
Minecraft,tile.fence,0,Fence,net.minecraft.item.ItemBlock,
Minecraft,tile.pumpkin,0,Pumpkin,net.minecraft.item.ItemBlock,
Minecraft,tile.hellrock,0,Netherrack,net.minecraft.item.ItemBlock,
Minecraft,tile.hellsand,0,Soul Sand,net.minecraft.item.ItemBlock,
Minecraft,tile.lightgem,0,Glowstone,net.minecraft.item.ItemBlock,
Minecraft,tile.portal,0,Portal,net.minecraft.item.ItemBlock,
Minecraft,tile.litpumpkin,0,Jack 'o' Lantern,net.minecraft.item.ItemBlock,
Minecraft,tile.cake,0,Cake,net.minecraft.item.ItemBlock,
Minecraft,tile.lockedchest,0,Locked chest,net.minecraft.item.ItemBlock,
Minecraft,tile.trapdoor,0,Trapdoor,net.minecraft.item.ItemBlock,
Minecraft,tile.monsterStoneEgg.stone,0,Stone Monster Egg,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.monsterStoneEgg.cobble,1,Cobblestone Monster Egg,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.monsterStoneEgg.brick,2,Stone Brick Monster Egg,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.stonebricksmooth.default,0,Stone Bricks,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.stonebricksmooth.mossy,1,Mossy Stone Bricks,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.stonebricksmooth.cracked,2,Cracked Stone Bricks,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.stonebricksmooth.chiseled,3,Chiseled Stone Bricks,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.mushroom,0,Mushroom,net.minecraft.item.ItemBlock,
Minecraft,tile.mushroom,0,Mushroom,net.minecraft.item.ItemBlock,
Minecraft,tile.fenceIron,0,Iron Bars,net.minecraft.item.ItemBlock,
Minecraft,tile.thinGlass,0,Glass Pane,net.minecraft.item.ItemBlock,
Minecraft,tile.melon,0,Melon,net.minecraft.item.ItemBlock,
Minecraft,tile.vine,0,Vines,net.minecraft.item.ItemColored,
Minecraft,tile.fenceGate,0,Fence Gate,net.minecraft.item.ItemBlock,
Minecraft,tile.stairsBrick,0,Brick Stairs,net.minecraft.item.ItemBlock,
Minecraft,tile.stairsStoneBrickSmooth,0,Stone Brick Stairs,net.minecraft.item.ItemBlock,
Minecraft,tile.mycel,0,Mycelium,net.minecraft.item.ItemBlock,
Minecraft,tile.waterlily,0,Lily Pad,net.minecraft.item.ItemLilyPad,
Minecraft,tile.netherBrick,0,Nether Brick,net.minecraft.item.ItemBlock,
Minecraft,tile.netherFence,0,Nether Brick Fence,net.minecraft.item.ItemBlock,
Minecraft,tile.stairsNetherBrick,0,Nether Brick Stairs,net.minecraft.item.ItemBlock,
Minecraft,tile.enchantmentTable,0,Enchantment Table,net.minecraft.item.ItemBlock,
Minecraft,tile.null,0,,net.minecraft.item.ItemBlock,
Minecraft,tile.endPortalFrame,0,End Portal,net.minecraft.item.ItemBlock,
Minecraft,tile.whiteStone,0,End Stone,net.minecraft.item.ItemBlock,
Minecraft,tile.dragonEgg,0,Dragon Egg,net.minecraft.item.ItemBlock,
Minecraft,tile.redstoneLight,0,Redstone Lamp,net.minecraft.item.ItemBlock,
Minecraft,tile.woodSlab.oak,0,Oak Wood Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.woodSlab.spruce,1,Spruce Wood Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.woodSlab.birch,2,Birch Wood Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.woodSlab.jungle,3,Jungle Wood Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.woodSlab.oak,9,Oak Wood Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.woodSlab.oak,10,Oak Wood Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.woodSlab.oak,11,Oak Wood Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.woodSlab.oak,0,Oak Wood Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.woodSlab.spruce,1,Spruce Wood Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.woodSlab.birch,2,Birch Wood Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.woodSlab.jungle,3,Jungle Wood Slab,net.minecraft.item.ItemSlab,
Minecraft,tile.cocoa,0,Cocoa,net.minecraft.item.ItemBlock,
Minecraft,tile.stairsSandStone,0,Sandstone Stairs,net.minecraft.item.ItemBlock,
Minecraft,tile.oreEmerald,0,Emerald Ore,net.minecraft.item.ItemBlock,
Minecraft,tile.tripWireSource,0,Tripwire Hook,net.minecraft.item.ItemBlock,
Minecraft,tile.blockEmerald,0,Block of Emerald,net.minecraft.item.ItemBlock,
Minecraft,tile.stairsWoodSpruce,0,Spruce Wood Stairs,net.minecraft.item.ItemBlock,
Minecraft,tile.stairsWoodBirch,0,Birch Wood Stairs,net.minecraft.item.ItemBlock,
Minecraft,tile.stairsWoodJungle,0,Jungle Wood Stairs,net.minecraft.item.ItemBlock,
Minecraft,tile.commandBlock,0,Command Block,net.minecraft.item.ItemBlock,
Minecraft,tile.beacon,0,Beacon,net.minecraft.item.ItemBlock,
Minecraft,tile.cobbleWall.normal,0,Cobblestone Wall,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.cobbleWall.mossy,1,Mossy Cobblestone Wall,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.button,0,Button,net.minecraft.item.ItemBlock,
Minecraft,tile.anvil.intact,0,Anvil,net.minecraft.item.ItemAnvilBlock,
Minecraft,tile.anvil.slightlyDamaged,1,Slightly Damaged Anvil,net.minecraft.item.ItemAnvilBlock,
Minecraft,tile.anvil.veryDamaged,2,Very Damaged Anvil,net.minecraft.item.ItemAnvilBlock,
Minecraft,tile.chestTrap,0,Trapped Chest,net.minecraft.item.ItemBlock,
Minecraft,tile.weightedPlate_light,0,Weighted Pressure Plate (Light),net.minecraft.item.ItemBlock,
Minecraft,tile.weightedPlate_heavy,0,Weighted Pressure Plate (Heavy),net.minecraft.item.ItemBlock,
Minecraft,tile.comparator,0,,net.minecraft.item.ItemBlock,
Minecraft,tile.comparator,0,,net.minecraft.item.ItemBlock,
Minecraft,tile.daylightDetector,0,Daylight Sensor,net.minecraft.item.ItemBlock,
Minecraft,tile.blockRedstone,0,Block of Redstone,net.minecraft.item.ItemBlock,
Minecraft,tile.netherquartz,0,Nether Quartz Ore,net.minecraft.item.ItemBlock,
Minecraft,tile.hopper,0,Hopper,net.minecraft.item.ItemBlock,
Minecraft,tile.quartzBlock.default,0,Block of Quartz,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.quartzBlock.chiseled,1,Chiseled Quartz Block,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.quartzBlock.lines,2,Pillar Quartz Block,net.minecraft.item.ItemMultiTextureTile,
Minecraft,tile.stairsQuartz,0,Quartz Stairs,net.minecraft.item.ItemBlock,
Minecraft,tile.activatorRail,0,Activator Rail,net.minecraft.item.ItemBlock,
Minecraft,tile.dropper,0,Dropper,net.minecraft.item.ItemBlock,
EnderStorage,tile.enderchest|0,0,Ender Chest,codechicken.enderstorage.common.ItemEnderStorage,
EnderStorage,tile.enderchest|1,4096,Ender Tank,codechicken.enderstorage.common.ItemEnderStorage,
Minecraft,item.shovelIron,0,Iron Shovel,net.minecraft.item.ItemSpade,
Minecraft,item.pickaxeIron,0,Iron Pickaxe,net.minecraft.item.ItemPickaxe,
Minecraft,item.hatchetIron,0,Iron Axe,net.minecraft.item.ItemAxe,
Minecraft,item.flintAndSteel,0,Flint and Steel,net.minecraft.item.ItemFlintAndSteel,
Minecraft,item.apple,0,Apple,net.minecraft.item.ItemFood,
Minecraft,item.bow,0,Bow,net.minecraft.item.ItemBow,
Minecraft,item.arrow,0,Arrow,net.minecraft.item.Item,
Minecraft,item.coal,0,Coal,net.minecraft.item.ItemCoal,
Minecraft,item.charcoal,1,Charcoal,net.minecraft.item.ItemCoal,
Minecraft,item.diamond,0,Diamond,net.minecraft.item.Item,
Minecraft,item.ingotIron,0,Iron Ingot,net.minecraft.item.Item,
Minecraft,item.ingotGold,0,Gold Ingot,net.minecraft.item.Item,
Minecraft,item.swordIron,0,Iron Sword,net.minecraft.item.ItemSword,
Minecraft,item.swordWood,0,Wooden Sword,net.minecraft.item.ItemSword,
Minecraft,item.shovelWood,0,Wooden Shovel,net.minecraft.item.ItemSpade,
Minecraft,item.pickaxeWood,0,Wooden Pickaxe,net.minecraft.item.ItemPickaxe,
Minecraft,item.hatchetWood,0,Wooden Axe,net.minecraft.item.ItemAxe,
Minecraft,item.swordStone,0,Stone Sword,net.minecraft.item.ItemSword,
Minecraft,item.shovelStone,0,Stone Shovel,net.minecraft.item.ItemSpade,
Minecraft,item.pickaxeStone,0,Stone Pickaxe,net.minecraft.item.ItemPickaxe,
Minecraft,item.hatchetStone,0,Stone Axe,net.minecraft.item.ItemAxe,
Minecraft,item.swordDiamond,0,Diamond Sword,net.minecraft.item.ItemSword,
Minecraft,item.shovelDiamond,0,Diamond Shovel,net.minecraft.item.ItemSpade,
Minecraft,item.pickaxeDiamond,0,Diamond Pickaxe,net.minecraft.item.ItemPickaxe,
Minecraft,item.hatchetDiamond,0,Diamond Axe,net.minecraft.item.ItemAxe,
Minecraft,item.stick,0,Stick,net.minecraft.item.Item,
Minecraft,item.bowl,0,Bowl,net.minecraft.item.Item,
Minecraft,item.mushroomStew,0,Mushroom Stew,net.minecraft.item.ItemSoup,
Minecraft,item.swordGold,0,Golden Sword,net.minecraft.item.ItemSword,
Minecraft,item.shovelGold,0,Golden Shovel,net.minecraft.item.ItemSpade,
Minecraft,item.pickaxeGold,0,Golden Pickaxe,net.minecraft.item.ItemPickaxe,
Minecraft,item.hatchetGold,0,Golden Axe,net.minecraft.item.ItemAxe,
Minecraft,item.string,0,String,net.minecraft.item.ItemReed,
Minecraft,item.feather,0,Feather,net.minecraft.item.Item,
Minecraft,item.sulphur,0,Gunpowder,net.minecraft.item.Item,
Minecraft,item.hoeWood,0,Wooden Hoe,net.minecraft.item.ItemHoe,
Minecraft,item.hoeStone,0,Stone Hoe,net.minecraft.item.ItemHoe,
Minecraft,item.hoeIron,0,Iron Hoe,net.minecraft.item.ItemHoe,
Minecraft,item.hoeDiamond,0,Diamond Hoe,net.minecraft.item.ItemHoe,
Minecraft,item.hoeGold,0,Golden Hoe,net.minecraft.item.ItemHoe,
Minecraft,item.seeds,0,Seeds,net.minecraft.item.ItemSeeds,
Minecraft,item.wheat,0,Wheat,net.minecraft.item.Item,
Minecraft,item.bread,0,Bread,net.minecraft.item.ItemFood,
Minecraft,item.helmetCloth,0,Leather Cap,net.minecraft.item.ItemArmor,
Minecraft,item.chestplateCloth,0,Leather Tunic,net.minecraft.item.ItemArmor,
Minecraft,item.leggingsCloth,0,Leather Pants,net.minecraft.item.ItemArmor,
Minecraft,item.bootsCloth,0,Leather Boots,net.minecraft.item.ItemArmor,
Minecraft,item.helmetChain,0,Chain Helmet,net.minecraft.item.ItemArmor,
Minecraft,item.chestplateChain,0,Chain Chestplate,net.minecraft.item.ItemArmor,
Minecraft,item.leggingsChain,0,Chain Leggings,net.minecraft.item.ItemArmor,
Minecraft,item.bootsChain,0,Chain Boots,net.minecraft.item.ItemArmor,
Minecraft,item.helmetIron,0,Iron Helmet,net.minecraft.item.ItemArmor,
Minecraft,item.chestplateIron,0,Iron Chestplate,net.minecraft.item.ItemArmor,
Minecraft,item.leggingsIron,0,Iron Leggings,net.minecraft.item.ItemArmor,
Minecraft,item.bootsIron,0,Iron Boots,net.minecraft.item.ItemArmor,
Minecraft,item.helmetDiamond,0,Diamond Helmet,net.minecraft.item.ItemArmor,
Minecraft,item.chestplateDiamond,0,Diamond Chestplate,net.minecraft.item.ItemArmor,
Minecraft,item.leggingsDiamond,0,Diamond Leggings,net.minecraft.item.ItemArmor,
Minecraft,item.bootsDiamond,0,Diamond Boots,net.minecraft.item.ItemArmor,
Minecraft,item.helmetGold,0,Golden Helmet,net.minecraft.item.ItemArmor,
Minecraft,item.chestplateGold,0,Golden Chestplate,net.minecraft.item.ItemArmor,
Minecraft,item.leggingsGold,0,Golden Leggings,net.minecraft.item.ItemArmor,
Minecraft,item.bootsGold,0,Golden Boots,net.minecraft.item.ItemArmor,
Minecraft,item.flint,0,Flint,net.minecraft.item.Item,
Minecraft,item.porkchopRaw,0,Raw Porkchop,net.minecraft.item.ItemFood,
Minecraft,item.porkchopCooked,0,Cooked Porkchop,net.minecraft.item.ItemFood,
Minecraft,item.painting,0,Painting,net.minecraft.item.ItemHangingEntity,
Minecraft,item.appleGold,0,Golden Apple,net.minecraft.item.ItemAppleGold,
Minecraft,item.sign,0,Sign,net.minecraft.item.ItemSign,
Minecraft,item.doorWood,0,Wooden Door,net.minecraft.item.ItemDoor,
Minecraft,item.bucket,0,Bucket,net.minecraft.item.ItemBucket,
Minecraft,item.bucketWater,0,Water Bucket,net.minecraft.item.ItemBucket,
Minecraft,item.bucketLava,0,Lava Bucket,net.minecraft.item.ItemBucket,
Minecraft,item.minecart,0,Minecart,net.minecraft.item.ItemMinecart,
Minecraft,item.saddle,0,Saddle,net.minecraft.item.ItemSaddle,
Minecraft,item.doorIron,0,Iron Door,net.minecraft.item.ItemDoor,
Minecraft,item.redstone,0,Redstone,net.minecraft.item.ItemRedstone,
Minecraft,item.snowball,0,Snowball,net.minecraft.item.ItemSnowball,
Minecraft,item.boat,0,Boat,net.minecraft.item.ItemBoat,
Minecraft,item.leather,0,Leather,net.minecraft.item.Item,
Minecraft,item.milk,0,Milk,net.minecraft.item.ItemBucketMilk,
Minecraft,item.brick,0,Brick,net.minecraft.item.Item,
Minecraft,item.clay,0,Clay,net.minecraft.item.Item,
Minecraft,item.reeds,0,Sugar Canes,net.minecraft.item.ItemReed,
Minecraft,item.paper,0,Paper,net.minecraft.item.Item,
Minecraft,item.book,0,Book,net.minecraft.item.ItemBook,
Minecraft,item.slimeball,0,Slimeball,net.minecraft.item.Item,
Minecraft,item.minecartChest,0,Minecart with Chest,net.minecraft.item.ItemMinecart,
Minecraft,item.minecartFurnace,0,Minecart with Furnace,net.minecraft.item.ItemMinecart,
Minecraft,item.egg,0,Egg,net.minecraft.item.ItemEgg,
Minecraft,item.compass,0,Compass,net.minecraft.item.Item,
Minecraft,item.fishingRod,0,Fishing Rod,net.minecraft.item.ItemFishingRod,
Minecraft,item.clock,0,Clock,net.minecraft.item.Item,
Minecraft,item.yellowDust,0,Glowstone Dust,net.minecraft.item.Item,
Minecraft,item.fishRaw,0,Raw Fish,net.minecraft.item.ItemFood,
Minecraft,item.fishCooked,0,Cooked Fish,net.minecraft.item.ItemFood,
Minecraft,item.dyePowder.black,0,Ink Sac,net.minecraft.item.ItemDye,
Minecraft,item.dyePowder.red,1,Rose Red,net.minecraft.item.ItemDye,
Minecraft,item.dyePowder.green,2,Cactus Green,net.minecraft.item.ItemDye,
Minecraft,item.dyePowder.brown,3,Cocoa Beans,net.minecraft.item.ItemDye,
Minecraft,item.dyePowder.blue,4,Lapis Lazuli,net.minecraft.item.ItemDye,
Minecraft,item.dyePowder.purple,5,Purple Dye,net.minecraft.item.ItemDye,
Minecraft,item.dyePowder.cyan,6,Cyan Dye,net.minecraft.item.ItemDye,
Minecraft,item.dyePowder.silver,7,Light Gray Dye,net.minecraft.item.ItemDye,
Minecraft,item.dyePowder.gray,8,Gray Dye,net.minecraft.item.ItemDye,
Minecraft,item.dyePowder.pink,9,Pink Dye,net.minecraft.item.ItemDye,
Minecraft,item.dyePowder.lime,10,Lime Dye,net.minecraft.item.ItemDye,
Minecraft,item.dyePowder.yellow,11,Dandelion Yellow,net.minecraft.item.ItemDye,
Minecraft,item.dyePowder.lightBlue,12,Light Blue Dye,net.minecraft.item.ItemDye,
Minecraft,item.dyePowder.magenta,13,Magenta Dye,net.minecraft.item.ItemDye,
Minecraft,item.dyePowder.orange,14,Orange Dye,net.minecraft.item.ItemDye,
Minecraft,item.dyePowder.white,15,Bone Meal,net.minecraft.item.ItemDye,
Minecraft,item.bone,0,Bone,net.minecraft.item.Item,
Minecraft,item.sugar,0,Sugar,net.minecraft.item.Item,
Minecraft,item.cake,0,Cake,net.minecraft.item.ItemReed,
Minecraft,item.bed,0,Bed,net.minecraft.item.ItemBed,
Minecraft,item.diode,0,Redstone Repeater,net.minecraft.item.ItemReed,
Minecraft,item.cookie,0,Cookie,net.minecraft.item.ItemFood,
Minecraft,item.map,0,Map,net.minecraft.item.ItemMap,
Minecraft,item.shears,0,Shears,net.minecraft.item.ItemShears,
Minecraft,item.melon,0,Melon,net.minecraft.item.ItemFood,
Minecraft,item.seeds_pumpkin,0,Pumpkin Seeds,net.minecraft.item.ItemSeeds,
Minecraft,item.seeds_melon,0,Melon Seeds,net.minecraft.item.ItemSeeds,
Minecraft,item.beefRaw,0,Raw Beef,net.minecraft.item.ItemFood,
Minecraft,item.beefCooked,0,Steak,net.minecraft.item.ItemFood,
Minecraft,item.chickenRaw,0,Raw Chicken,net.minecraft.item.ItemFood,
Minecraft,item.chickenCooked,0,Cooked Chicken,net.minecraft.item.ItemFood,
Minecraft,item.rottenFlesh,0,Rotten Flesh,net.minecraft.item.ItemFood,
Minecraft,item.enderPearl,0,Ender Pearl,net.minecraft.item.ItemEnderPearl,
Minecraft,item.blazeRod,0,Blaze Rod,net.minecraft.item.Item,
Minecraft,item.ghastTear,0,Ghast Tear,net.minecraft.item.Item,
Minecraft,item.goldNugget,0,Gold Nugget,net.minecraft.item.Item,
Minecraft,item.netherStalkSeeds,0,Nether Wart,net.minecraft.item.ItemSeeds,
Minecraft,item.potion,0,Water Bottle,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16,Awkward Potion,net.minecraft.item.ItemPotion,
Minecraft,item.potion,32,Thick Potion,net.minecraft.item.ItemPotion,
Minecraft,item.potion,64,Mundane Potion,net.minecraft.item.ItemPotion,
Minecraft,item.potion,8193,Potion of Regeneration,net.minecraft.item.ItemPotion,Potion of Regeneration
Minecraft,item.potion,8194,Potion of Swiftness,net.minecraft.item.ItemPotion,Potion of Swiftness
Minecraft,item.potion,8195,Potion of Fire Resistance,net.minecraft.item.ItemPotion,Potion of Fire Resistance
Minecraft,item.potion,8196,Potion of Poison,net.minecraft.item.ItemPotion,Potion of Poison
Minecraft,item.potion,8197,Potion of Healing,net.minecraft.item.ItemPotion,Potion of Healing
Minecraft,item.potion,8198,Potion of Night Vision,net.minecraft.item.ItemPotion,Potion of Night Vision
Minecraft,item.potion,8200,Potion of Weakness,net.minecraft.item.ItemPotion,Potion of Weakness
Minecraft,item.potion,8201,Potion of Strength,net.minecraft.item.ItemPotion,Potion of Strength
Minecraft,item.potion,8202,Potion of Slowness,net.minecraft.item.ItemPotion,
Minecraft,item.potion,8204,Potion of Harming,net.minecraft.item.ItemPotion,
Minecraft,item.potion,8206,Potion of Invisibility,net.minecraft.item.ItemPotion,
Minecraft,item.potion,8225,Potion of Regeneration,net.minecraft.item.ItemPotion,
Minecraft,item.potion,8226,Potion of Swiftness,net.minecraft.item.ItemPotion,
Minecraft,item.potion,8228,Potion of Poison,net.minecraft.item.ItemPotion,
Minecraft,item.potion,8229,Potion of Healing,net.minecraft.item.ItemPotion,
Minecraft,item.potion,8233,Potion of Strength,net.minecraft.item.ItemPotion,
Minecraft,item.potion,*,Potion of Harming,net.minecraft.item.ItemPotion,This is a generic potion entry
Minecraft,item.potion,8257,Potion of Regeneration,net.minecraft.item.ItemPotion,
Minecraft,item.potion,8258,Potion of Swiftness,net.minecraft.item.ItemPotion,
Minecraft,item.potion,8259,Potion of Fire Resistance,net.minecraft.item.ItemPotion,
Minecraft,item.potion,8260,Potion of Poison,net.minecraft.item.ItemPotion,
Minecraft,item.potion,8262,Potion of Night Vision,net.minecraft.item.ItemPotion,
Minecraft,item.potion,8264,Potion of Weakness,net.minecraft.item.ItemPotion,
Minecraft,item.potion,8265,Potion of Strength,net.minecraft.item.ItemPotion,
Minecraft,item.potion,8266,Potion of Slowness,net.minecraft.item.ItemPotion,
Minecraft,item.potion,8270,Potion of Invisibility,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16384,Mundane Potion,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16385,Splash Potion of Regeneration,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16386,Splash Potion of Swiftness,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16387,Splash Potion of Fire Resistance,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16388,Splash Potion of Poison,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16389,Splash Potion of Healing,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16390,Splash Potion of Night Vision,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16392,Splash Potion of Weakness,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16393,Splash Potion of Strength,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16394,Splash Potion of Slowness,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16396,Splash Potion of Harming,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16398,Splash Potion of Invisibility,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16417,Splash Potion of Regeneration,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16418,Splash Potion of Swiftness,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16420,Splash Potion of Poison,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16421,Splash Potion of Healing,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16425,Splash Potion of Strength,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16428,Splash Potion of Harming,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16449,Splash Potion of Regeneration,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16450,Splash Potion of Swiftness,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16451,Splash Potion of Fire Resistance,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16452,Splash Potion of Poison,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16454,Splash Potion of Night Vision,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16456,Splash Potion of Weakness,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16457,Splash Potion of Strength,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16458,Splash Potion of Slowness,net.minecraft.item.ItemPotion,
Minecraft,item.potion,16462,Splash Potion of Invisibility,net.minecraft.item.ItemPotion,
Minecraft,item.glassBottle,0,Glass Bottle,net.minecraft.item.ItemGlassBottle,
Minecraft,item.spiderEye,0,Spider Eye,net.minecraft.item.ItemFood,
Minecraft,item.fermentedSpiderEye,0,Fermented Spider Eye,net.minecraft.item.Item,
Minecraft,item.blazePowder,0,Blaze Powder,net.minecraft.item.Item,
Minecraft,item.magmaCream,0,Magma Cream,net.minecraft.item.Item,
Minecraft,item.brewingStand,0,Brewing Stand,net.minecraft.item.ItemReed,
Minecraft,item.cauldron,0,Cauldron,net.minecraft.item.ItemReed,
Minecraft,item.eyeOfEnder,0,Eye of Ender,net.minecraft.item.ItemEnderEye,
Minecraft,item.speckledMelon,0,Glistering Melon,net.minecraft.item.Item,
Minecraft,item.monsterPlacer,50,Spawn Creeper,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,51,Spawn Skeleton,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,52,Spawn Spider,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,54,Spawn Zombie,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,55,Spawn Slime,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,56,Spawn Ghast,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,57,Spawn Zombie Pigman,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,58,Spawn Enderman,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,59,Spawn Cave Spider,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,60,Spawn Silverfish,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,61,Spawn Blaze,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,62,Spawn Magma Cube,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,65,Spawn Bat,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,66,Spawn Witch,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,90,Spawn Pig,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,91,Spawn Sheep,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,92,Spawn Cow,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,93,Spawn Chicken,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,94,Spawn Squid,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,95,Spawn Wolf,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,96,Spawn Mooshroom,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,97,Spawn Snow Golem,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,98,Spawn Ocelot,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,99,Spawn Iron Golem,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.monsterPlacer,120,Spawn Villager,net.minecraft.item.ItemMonsterPlacer,
Minecraft,item.expBottle,0,Bottle o' Enchanting,net.minecraft.item.ItemExpBottle,
Minecraft,item.fireball,0,Fire Charge,net.minecraft.item.ItemFireball,
Minecraft,item.writingBook,0,Book and Quill,net.minecraft.item.ItemWritableBook,
Minecraft,item.writtenBook,0,Written Book,net.minecraft.item.ItemEditableBook,
Minecraft,item.emerald,0,Emerald,net.minecraft.item.Item,
Minecraft,item.frame,0,Item Frame,net.minecraft.item.ItemHangingEntity,
Minecraft,item.flowerPot,0,Flower Pot,net.minecraft.item.ItemReed,
Minecraft,item.carrots,0,Carrot,net.minecraft.item.ItemSeedFood,
Minecraft,item.potato,0,Potato,net.minecraft.item.ItemSeedFood,
Minecraft,item.potatoBaked,0,Baked Potato,net.minecraft.item.ItemFood,
Minecraft,item.potatoPoisonous,0,Poisonous Potato,net.minecraft.item.ItemFood,
Minecraft,item.emptyMap,0,Empty Map,net.minecraft.item.ItemEmptyMap,
Minecraft,item.carrotGolden,0,Golden Carrot,net.minecraft.item.ItemFood,
Minecraft,item.skull.skeleton,0,Skeleton Skull,net.minecraft.item.ItemSkull,
Minecraft,item.skull.wither,1,Wither Skeleton Skull,net.minecraft.item.ItemSkull,
Minecraft,item.skull.zombie,2,Zombie Head,net.minecraft.item.ItemSkull,
Minecraft,item.skull.char,3,Head,net.minecraft.item.ItemSkull,
Minecraft,item.skull.creeper,4,Creeper Head,net.minecraft.item.ItemSkull,
Minecraft,item.carrotOnAStick,0,Carrot on a Stick,net.minecraft.item.ItemCarrotOnAStick,
Minecraft,item.netherStar,0,Nether Star,net.minecraft.item.ItemSimpleFoiled,
Minecraft,item.pumpkinPie,0,Pumpkin Pie,net.minecraft.item.ItemFood,
Minecraft,item.fireworks,0,Firework Rocket,net.minecraft.item.ItemFirework,
Minecraft,item.fireworksCharge,0,Firework Star,net.minecraft.item.ItemFireworkCharge,
Minecraft,item.enchantedBook,0,Enchanted Book,net.minecraft.item.ItemEnchantedBook,
Minecraft,item.comparator,0,Redstone Comparator,net.minecraft.item.ItemReed,
Minecraft,item.netherbrick,0,Nether Brick,net.minecraft.item.Item,
Minecraft,item.netherquartz,0,Nether Quartz,net.minecraft.item.Item,
Minecraft,item.minecartTnt,0,Minecart with TNT,net.minecraft.item.ItemMinecart,
Minecraft,item.minecartHopper,0,Minecart with Hopper,net.minecraft.item.ItemMinecart,
BuildCraft|Factory,tile.miningWellBlock,0,Mining Well,buildcraft.core.ItemBlockBuildCraft,
BuildCraft|Factory,tile.plainPipeBlock,0,Mining Pipe,buildcraft.core.ItemBlockBuildCraft,
BuildCraft|Factory,tile.autoWorkbenchBlock,0,Autocrafting Table,buildcraft.core.ItemBlockBuildCraft,
BuildCraft|Factory,tile.machineBlock,0,Quarry,buildcraft.core.ItemBlockBuildCraft,
BuildCraft|Builders,tile.markerBlock,0,Land Mark,buildcraft.core.ItemBlockBuildCraft,
BuildCraft|Builders,tile.fillerBlock,0,Filler,buildcraft.core.ItemBlockBuildCraft,
BuildCraft|Builders,tile.builderBlock,0,Builder,buildcraft.core.ItemBlockBuildCraft,
BuildCraft|Builders,tile.architectBlock,0,Architect Table,buildcraft.core.ItemBlockBuildCraft,
BuildCraft|Factory,tile.frameBlock,0,Frame,buildcraft.core.ItemBlockBuildCraft,
BuildCraft|Energy,tile.engineWood,0,Redstone Engine,buildcraft.energy.ItemEngine,
BuildCraft|Energy,tile.engineStone,1,Stirling Engine,buildcraft.energy.ItemEngine,
BuildCraft|Energy,tile.engineIron,2,Combustion Engine,buildcraft.energy.ItemEngine,
BuildCraft|Factory,tile.pumpBlock,0,Pump,buildcraft.core.ItemBlockBuildCraft,
BuildCraft|Factory,tile.tankBlock,0,Tank,buildcraft.core.ItemBlockBuildCraft,
BuildCraft|Transport,tile.null,0,,net.minecraft.item.ItemBlock,
BuildCraft|Factory,tile.refineryBlock,0,Refinery,buildcraft.core.ItemBlockBuildCraft,
BuildCraft|Builders,tile.libraryBlock,0,Blueprint Library,buildcraft.core.ItemBlockBuildCraft,
BuildCraft|Silicon,tile.laserBlock,0,Laser,buildcraft.core.ItemBlockBuildCraft,
BuildCraft|Silicon,block.assemblyTableBlock,0,Assembly Table,buildcraft.silicon.ItemLaserTable,
BuildCraft|Silicon,block.assemblyWorkbenchBlock,1,Advanced Crafting Table,buildcraft.silicon.ItemLaserTable,
BuildCraft|Builders,tile.pathMarkerBlock,0,Path Marker,buildcraft.core.ItemBlockBuildCraft,
BuildCraft|Factory,tile.blockHopper,0,Chute,buildcraft.core.ItemBlockBuildCraft,
BuildCraft|Energy,tile.oilMoving,0,Oil,buildcraft.core.ItemBlockBuildCraft,
BuildCraft|Energy,tile.oilStill,0,Oil,buildcraft.core.ItemBlockBuildCraft,
BuildCraft|Core,tile.spring.water,0,Water Spring,buildcraft.core.ItemSpring,
BuildCraft|Core,tile.spring.oil,1,Oil Spring,buildcraft.core.ItemSpring,
Minecraft,item.record,0,Music Disc,net.minecraft.item.ItemRecord,
Minecraft,item.record,0,Music Disc,net.minecraft.item.ItemRecord,
Minecraft,item.record,0,Music Disc,net.minecraft.item.ItemRecord,
Minecraft,item.record,0,Music Disc,net.minecraft.item.ItemRecord,
Minecraft,item.record,0,Music Disc,net.minecraft.item.ItemRecord,
Minecraft,item.record,0,Music Disc,net.minecraft.item.ItemRecord,
Minecraft,item.record,0,Music Disc,net.minecraft.item.ItemRecord,
Minecraft,item.record,0,Music Disc,net.minecraft.item.ItemRecord,
Minecraft,item.record,0,Music Disc,net.minecraft.item.ItemRecord,
Minecraft,item.record,0,Music Disc,net.minecraft.item.ItemRecord,
Minecraft,item.record,0,Music Disc,net.minecraft.item.ItemRecord,
Minecraft,item.record,0,Music Disc,net.minecraft.item.ItemRecord,
EnderStorage,item.enderpouch,0,Ender Pouch,codechicken.enderstorage.storage.item.ItemEnderPouch,
BuildCraft|Core,item.woodenGearItem,0,Wood Gear,buildcraft.core.ItemBuildCraft,
BuildCraft|Core,item.stoneGearItem,0,Stone Gear,buildcraft.core.ItemBuildCraft,
BuildCraft|Core,item.ironGearItem,0,Iron Gear,buildcraft.core.ItemBuildCraft,
BuildCraft|Core,item.goldGearItem,0,Gold Gear,buildcraft.core.ItemBuildCraft,
BuildCraft|Core,item.diamondGearItem,0,Diamond Gear,buildcraft.core.ItemBuildCraft,
BuildCraft|Builders,item.templateItem,0,Template,buildcraft.builders.ItemBptTemplate,
BuildCraft|Core,item.wrenchItem,0,Wrench,buildcraft.core.ItemWrench,
BuildCraft|Energy,item.bucketOil,0,Oil Bucket,buildcraft.energy.ItemBucketOil,
BuildCraft|Energy,item.fuel,0,Fuel,buildcraft.core.ItemBuildCraft,
BuildCraft|Transport,item.pipeWaterproof,0,Pipe Waterproof,buildcraft.core.ItemBuildCraft,
BuildCraft|Energy,item.bucketFuel,0,Fuel Bucket,buildcraft.core.ItemBuildCraft,
BuildCraft|Transport,item.pipeGate.0,0,Gate,buildcraft.transport.ItemGate,
BuildCraft|Transport,item.pipeGate.1,1,Iron AND Gate,buildcraft.transport.ItemGate,
BuildCraft|Transport,item.pipeGate.2,2,Iron OR Gate,buildcraft.transport.ItemGate,
BuildCraft|Transport,item.pipeGate.3,3,Gold AND Gate,buildcraft.transport.ItemGate,
BuildCraft|Transport,item.pipeGate.4,4,Gold OR Gate,buildcraft.transport.ItemGate,
BuildCraft|Transport,item.pipeGate.5,5,Diamond AND Gate,buildcraft.transport.ItemGate,
BuildCraft|Transport,item.pipeGate.6,6,Diamond OR Gate,buildcraft.transport.ItemGate,
BuildCraft|Transport,item.redPipeWire,0,Red Pipe Wire,buildcraft.core.ItemBuildCraft,
BuildCraft|Transport,item.bluePipeWire,0,Blue Pipe Wire,buildcraft.core.ItemBuildCraft,
BuildCraft|Transport,item.greenPipeWire,0,Green Pipe Wire,buildcraft.core.ItemBuildCraft,
BuildCraft|Transport,item.yellowPipeWire,0,Yellow Pipe Wire,buildcraft.core.ItemBuildCraft,
BuildCraft|Silicon,item.redstoneChipset.0,0,Redstone Chipset,buildcraft.core.ItemRedstoneChipset,
BuildCraft|Silicon,item.redstoneChipset.1,1,Redstone Iron Chipset,buildcraft.core.ItemRedstoneChipset,
BuildCraft|Silicon,item.redstoneChipset.2,2,Redstone Golden Chipset,buildcraft.core.ItemRedstoneChipset,
BuildCraft|Silicon,item.redstoneChipset.3,3,Redstone Diamond Chipset,buildcraft.core.ItemRedstoneChipset,
BuildCraft|Silicon,item.redstoneChipset.4,4,Pulsating Chipset,buildcraft.core.ItemRedstoneChipset,
BuildCraft|Builders,item.blueprintItem,0,Blueprint,buildcraft.builders.ItemBptBluePrint,
BuildCraft|Transport,item.pipeGateAutarchic.0,0,Autarchic Gate,buildcraft.transport.ItemGate,
BuildCraft|Transport,item.pipeGateAutarchic.1,1,Autarchic Iron AND Gate,buildcraft.transport.ItemGate,
BuildCraft|Transport,item.pipeGateAutarchic.2,2,Autarchic Iron OR Gate,buildcraft.transport.ItemGate,
BuildCraft|Transport,item.pipeGateAutarchic.3,3,Autarchic Gold AND Gate,buildcraft.transport.ItemGate,
BuildCraft|Transport,item.pipeGateAutarchic.4,4,Autarchic Gold OR Gate,buildcraft.transport.ItemGate,
BuildCraft|Transport,item.pipeGateAutarchic.5,5,Autarchic Diamond AND Gate,buildcraft.transport.ItemGate,
BuildCraft|Transport,item.pipeGateAutarchic.6,6,Autarchic Diamond OR Gate,buildcraft.transport.ItemGate,
BuildCraft|Transport,item.Facade,16,Facade: Stone,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,48,Facade: Dirt,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,64,Facade: Cobblestone,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,80,Facade: Oak Wood Planks,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,81,Facade: Spruce Wood Planks,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,82,Facade: Birch Wood Planks,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,83,Facade: Jungle Wood Planks,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,192,Facade: Sand,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,208,Facade: Gravel,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,224,Facade: Gold Ore,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,240,Facade: Iron Ore,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,256,Facade: Coal Ore,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,272,Facade: Oak Wood,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,273,Facade: Spruce Wood,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,274,Facade: Birch Wood,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,275,Facade: Jungle Wood,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,320,Facade: Glass,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,336,Facade: Lapis Lazuli Ore,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,352,Facade: Lapis Lazuli Block,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,384,Facade: Sandstone,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,385,Facade: Chiseled Sandstone,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,386,Facade: Smooth Sandstone,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,560,Facade: Wool,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,561,Facade: Orange Wool,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,562,Facade: Magenta Wool,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,563,Facade: Light Blue Wool,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,564,Facade: Yellow Wool,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,565,Facade: Lime Wool,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,566,Facade: Pink Wool,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,567,Facade: Gray Wool,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,568,Facade: Light Gray Wool,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,569,Facade: Cyan Wool,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,570,Facade: Purple Wool,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,571,Facade: Blue Wool,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,572,Facade: Brown Wool,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,573,Facade: Green Wool,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,574,Facade: Red Wool,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,575,Facade: Black Wool,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,656,Facade: Block of Gold,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,672,Facade: Block of Iron,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,688,Facade: Stone Slab,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,689,Facade: Sandstone Slab,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,690,Facade: Wooden Slab,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,691,Facade: Cobblestone Slab,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,692,Facade: Bricks Slab,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,693,Facade: Stone Bricks Slab,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,694,Facade: Nether Brick Slab,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,695,Facade: Quartz Slab,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,720,Facade: Bricks,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,736,Facade: TNT,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,752,Facade: Bookshelf,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,768,Facade: Moss Stone,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,784,Facade: Obsidian,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,896,Facade: Diamond Ore,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,912,Facade: Block of Diamond,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,928,Facade: Crafting Table,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1168,Facade: Redstone Ore,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1280,Facade: Snow,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1312,Facade: Clay,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1376,Facade: Pumpkin,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1392,Facade: Netherrack,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1408,Facade: Soul Sand,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1424,Facade: Glowstone,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1456,Facade: Jack 'o' Lantern,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1552,Facade: Stone Monster Egg,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1553,Facade: Cobblestone Monster Egg,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1554,Facade: Stone Brick Monster Egg,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1568,Facade: Stone Bricks,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1569,Facade: Mossy Stone Bricks,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1570,Facade: Cracked Stone Bricks,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1571,Facade: Chiseled Stone Bricks,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1584,Facade: Mushroom,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1648,Facade: Melon,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1760,Facade: Mycelium,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1792,Facade: Nether Brick,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1936,Facade: End Stone,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,1968,Facade: Redstone Lamp,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,2000,Facade: Oak Wood Slab,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,2001,Facade: Spruce Wood Slab,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,2002,Facade: Birch Wood Slab,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,2003,Facade: Jungle Wood Slab,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,2064,Facade: Emerald Ore,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,2128,Facade: Block of Emerald,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,2432,Facade: Block of Redstone,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,2448,Facade: Nether Quartz Ore,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,2480,Facade: Block of Quartz,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,2481,Facade: Chiseled Quartz Block,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.Facade,2482,Facade: Pillar Quartz Block,buildcraft.transport.ItemFacade,
BuildCraft|Transport,item.PipePlug,0,Pipe Plug,buildcraft.transport.ItemPlug,
BuildCraft|Transport,item.PipeItemsWood,0,Wooden Transport Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipeItemsCobblestone,0,Cobblestone Transport Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipeItemsStone,0,Stone Transport Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipeItemsIron,0,Iron Transport Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipeItemsGold,0,Golden Transport Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipeItemsDiamond,0,Diamond Transport Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipeItemsObsidian,0,Obsidian Transport Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipeItemsEmerald,0,Emerald Transport Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipeLiquidsWood,0,Wooden Waterproof Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipeLiquidsCobblestone,0,Cobblestone Waterproof Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipeLiquidsStone,0,Stone Waterproof Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipeLiquidsIron,0,Iron Waterproof Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipeLiquidsGold,0,Golden Waterproof Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipeLiquidsEmerald,0,Emerald Waterproof Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipePowerWood,0,Wooden Conductive Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipePowerStone,0,Stone Conductive Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipePowerGold,0,Golden Conductive Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipeItemsVoid,0,Void Transport Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipeLiquidsVoid,0,Void Waterproof Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipeItemsSandstone,0,Sandstone Transport Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipeLiquidsSandstone,0,Sandstone Waterproof Pipe,buildcraft.transport.ItemPipe,
BuildCraft|Transport,item.PipeStructureCobblestone,0,Cobblestone Structure Pipe,buildcraft.transport.ItemPipe,
1 Minecraft tile.* 0 Stone net.minecraft.item.ItemBlock This is a crazy test !
2 Minecraft tile.grass 0 Grass Block net.minecraft.item.ItemBlock
3 Minecraft tile.dirt 0 Dirt net.minecraft.item.ItemBlock
4 Minecraft tile.stonebrick 0 Cobblestone net.minecraft.item.ItemBlock
5 Minecraft tile.wood.oak 0 Oak Wood Planks net.minecraft.item.ItemMultiTextureTile
6 Minecraft tile.wood.spruce 1 Spruce Wood Planks net.minecraft.item.ItemMultiTextureTile
7 Minecraft tile.wood.birch 2 Birch Wood Planks net.minecraft.item.ItemMultiTextureTile
8 Minecraft tile.wood.jungle 3 Jungle Wood Planks net.minecraft.item.ItemMultiTextureTile
9 Minecraft tile.sapling.oak 0 Oak Sapling net.minecraft.item.ItemMultiTextureTile
10 Minecraft tile.sapling.spruce 1 Spruce Sapling net.minecraft.item.ItemMultiTextureTile
11 Minecraft tile.sapling.birch 2 Birch Sapling net.minecraft.item.ItemMultiTextureTile
12 Minecraft tile.sapling.jungle 3 Jungle Sapling net.minecraft.item.ItemMultiTextureTile
13 Minecraft tile.bedrock 0 Bedrock net.minecraft.item.ItemBlock
14 Minecraft tile.water 0 Water net.minecraft.item.ItemBlock
15 Minecraft tile.water 0 Water net.minecraft.item.ItemBlock
16 Minecraft tile.lava 0 Lava net.minecraft.item.ItemBlock
17 Minecraft tile.lava 0 Lava net.minecraft.item.ItemBlock
18 Minecraft tile.sand 0 Sand net.minecraft.item.ItemBlock
19 Minecraft tile.gravel 0 Gravel net.minecraft.item.ItemBlock
20 Minecraft tile.oreGold 0 Gold Ore net.minecraft.item.ItemBlock
21 Minecraft tile.oreIron 0 Iron Ore net.minecraft.item.ItemBlock
22 Minecraft tile.oreCoal 0 Coal Ore net.minecraft.item.ItemBlock
23 Minecraft tile.log.oak 0 Oak Wood net.minecraft.item.ItemMultiTextureTile
24 Minecraft tile.log.spruce 1 Spruce Wood net.minecraft.item.ItemMultiTextureTile
25 Minecraft tile.log.birch 2 Birch Wood net.minecraft.item.ItemMultiTextureTile
26 Minecraft tile.log.jungle 3 Jungle Wood net.minecraft.item.ItemMultiTextureTile
27 Minecraft tile.leaves.oak 0 Oak Leaves net.minecraft.item.ItemLeaves
28 Minecraft tile.leaves.spruce 1 Spruce Leaves net.minecraft.item.ItemLeaves
29 Minecraft tile.leaves.birch 2 Birch Leaves net.minecraft.item.ItemLeaves
30 Minecraft tile.leaves.jungle 3 Jungle Leaves net.minecraft.item.ItemLeaves
31 Minecraft tile.sponge 0 Sponge net.minecraft.item.ItemBlock
32 Minecraft tile.glass 0 Glass net.minecraft.item.ItemBlock
33 Minecraft tile.oreLapis 0 Lapis Lazuli Ore net.minecraft.item.ItemBlock
34 Minecraft tile.blockLapis 0 Lapis Lazuli Block net.minecraft.item.ItemBlock
35 Minecraft tile.dispenser 0 Dispenser net.minecraft.item.ItemBlock
36 Minecraft tile.sandStone.default 0 Sandstone net.minecraft.item.ItemMultiTextureTile
37 Minecraft tile.sandStone.chiseled 1 Chiseled Sandstone net.minecraft.item.ItemMultiTextureTile
38 Minecraft tile.sandStone.smooth 2 Smooth Sandstone net.minecraft.item.ItemMultiTextureTile
39 Minecraft tile.musicBlock 0 Note Block net.minecraft.item.ItemBlock
40 Minecraft tile.goldenRail 0 Powered Rail net.minecraft.item.ItemBlock
41 Minecraft tile.detectorRail 0 Detector Rail net.minecraft.item.ItemBlock
42 Minecraft tile.pistonStickyBase 0 Sticky Piston net.minecraft.item.ItemPiston
43 Minecraft tile.web 0 Cobweb net.minecraft.item.ItemBlock
44 Minecraft tile.tallgrass.grass 1 Grass net.minecraft.item.ItemColored
45 Minecraft tile.tallgrass.fern 2 Fern net.minecraft.item.ItemColored
46 Minecraft tile.deadbush 0 Dead Bush net.minecraft.item.ItemBlock
47 Minecraft tile.pistonBase 0 Piston net.minecraft.item.ItemPiston
48 Minecraft tile.cloth.white 0 Wool net.minecraft.item.ItemCloth
49 Minecraft tile.cloth.orange 1 Orange Wool net.minecraft.item.ItemCloth
50 Minecraft tile.cloth.magenta 2 Magenta Wool net.minecraft.item.ItemCloth
51 Minecraft tile.cloth.lightBlue 3 Light Blue Wool net.minecraft.item.ItemCloth
52 Minecraft tile.cloth.yellow 4 Yellow Wool net.minecraft.item.ItemCloth
53 Minecraft tile.cloth.lime 5 Lime Wool net.minecraft.item.ItemCloth
54 Minecraft tile.cloth.pink 6 Pink Wool net.minecraft.item.ItemCloth
55 Minecraft tile.cloth.gray 7 Gray Wool net.minecraft.item.ItemCloth
56 Minecraft tile.cloth.silver 8 Light Gray Wool net.minecraft.item.ItemCloth
57 Minecraft tile.cloth.cyan 9 Cyan Wool net.minecraft.item.ItemCloth
58 Minecraft tile.cloth.purple 10 Purple Wool net.minecraft.item.ItemCloth
59 Minecraft tile.cloth.blue 11 Blue Wool net.minecraft.item.ItemCloth
60 Minecraft tile.cloth.brown 12 Brown Wool net.minecraft.item.ItemCloth
61 Minecraft tile.cloth.green 13 Green Wool net.minecraft.item.ItemCloth
62 Minecraft tile.cloth.red 14 Red Wool net.minecraft.item.ItemCloth
63 Minecraft tile.cloth.black 15 Black Wool net.minecraft.item.ItemCloth
64 Minecraft tile.flower 0 Flower net.minecraft.item.ItemBlock
65 Minecraft tile.rose 0 Rose net.minecraft.item.ItemBlock
66 Minecraft tile.mushroom 0 Mushroom net.minecraft.item.ItemBlock
67 Minecraft tile.mushroom 0 Mushroom net.minecraft.item.ItemBlock
68 Minecraft tile.blockGold 0 Block of Gold net.minecraft.item.ItemBlock
69 Minecraft tile.blockIron 0 Block of Iron net.minecraft.item.ItemBlock
70 Minecraft tile.stoneSlab.stone 0 Stone Slab net.minecraft.item.ItemSlab
71 Minecraft tile.stoneSlab.sand 1 Sandstone Slab net.minecraft.item.ItemSlab
72 Minecraft tile.stoneSlab.wood 2 Wooden Slab net.minecraft.item.ItemSlab
73 Minecraft tile.stoneSlab.cobble 3 Cobblestone Slab net.minecraft.item.ItemSlab
74 Minecraft tile.stoneSlab.brick 4 Bricks Slab net.minecraft.item.ItemSlab
75 Minecraft tile.stoneSlab.smoothStoneBrick 5 Stone Bricks Slab net.minecraft.item.ItemSlab
76 Minecraft tile.stoneSlab.netherBrick 6 Nether Brick Slab net.minecraft.item.ItemSlab
77 Minecraft tile.stoneSlab.quartz 7 Quartz Slab net.minecraft.item.ItemSlab
78 Minecraft tile.stoneSlab.stone 8 Stone Slab net.minecraft.item.ItemSlab
79 Minecraft tile.stoneSlab.stone 9 Stone Slab net.minecraft.item.ItemSlab
80 Minecraft tile.stoneSlab.stone 10 Stone Slab net.minecraft.item.ItemSlab
81 Minecraft tile.stoneSlab.stone 11 Stone Slab net.minecraft.item.ItemSlab
82 Minecraft tile.stoneSlab.stone 12 Stone Slab net.minecraft.item.ItemSlab
83 Minecraft tile.stoneSlab.stone 13 Stone Slab net.minecraft.item.ItemSlab
84 Minecraft tile.stoneSlab.stone 14 Stone Slab net.minecraft.item.ItemSlab
85 Minecraft tile.stoneSlab.stone 15 Stone Slab net.minecraft.item.ItemSlab
86 Minecraft tile.stoneSlab.stone 0 Stone Slab net.minecraft.item.ItemSlab
87 Minecraft tile.stoneSlab.sand 1 Sandstone Slab net.minecraft.item.ItemSlab
88 Minecraft tile.stoneSlab.cobble 3 Cobblestone Slab net.minecraft.item.ItemSlab
89 Minecraft tile.stoneSlab.brick 4 Bricks Slab net.minecraft.item.ItemSlab
90 Minecraft tile.stoneSlab.smoothStoneBrick 5 Stone Bricks Slab net.minecraft.item.ItemSlab
91 Minecraft tile.stoneSlab.netherBrick 6 Nether Brick Slab net.minecraft.item.ItemSlab
92 Minecraft tile.stoneSlab.quartz 7 Quartz Slab net.minecraft.item.ItemSlab
93 Minecraft tile.brick 0 Bricks net.minecraft.item.ItemBlock
94 Minecraft tile.tnt 0 TNT net.minecraft.item.ItemBlock
95 Minecraft tile.bookshelf 0 Bookshelf net.minecraft.item.ItemBlock
96 Minecraft tile.stoneMoss 0 Moss Stone net.minecraft.item.ItemBlock
97 Minecraft tile.obsidian 0 Obsidian net.minecraft.item.ItemBlock
98 Minecraft tile.torch 0 Torch net.minecraft.item.ItemBlock
99 Minecraft tile.fire 0 Fire net.minecraft.item.ItemBlock
100 Minecraft tile.mobSpawner 90 Monster Spawner codechicken.nei.ItemMobSpawner
101 Minecraft tile.mobSpawner 50 Monster Spawner codechicken.nei.ItemMobSpawner
102 Minecraft tile.mobSpawner 51 Monster Spawner codechicken.nei.ItemMobSpawner
103 Minecraft tile.mobSpawner 52 Monster Spawner codechicken.nei.ItemMobSpawner
104 Minecraft tile.mobSpawner 53 Monster Spawner codechicken.nei.ItemMobSpawner
105 Minecraft tile.mobSpawner 54 Monster Spawner codechicken.nei.ItemMobSpawner
106 Minecraft tile.mobSpawner 55 Monster Spawner codechicken.nei.ItemMobSpawner
107 Minecraft tile.mobSpawner 56 Monster Spawner codechicken.nei.ItemMobSpawner
108 Minecraft tile.mobSpawner 57 Monster Spawner codechicken.nei.ItemMobSpawner
109 Minecraft tile.mobSpawner 58 Monster Spawner codechicken.nei.ItemMobSpawner
110 Minecraft tile.mobSpawner 59 Monster Spawner codechicken.nei.ItemMobSpawner
111 Minecraft tile.mobSpawner 60 Monster Spawner codechicken.nei.ItemMobSpawner
112 Minecraft tile.mobSpawner 61 Monster Spawner codechicken.nei.ItemMobSpawner
113 Minecraft tile.mobSpawner 62 Monster Spawner codechicken.nei.ItemMobSpawner
114 Minecraft tile.mobSpawner 64 Monster Spawner codechicken.nei.ItemMobSpawner
115 Minecraft tile.mobSpawner 65 Monster Spawner codechicken.nei.ItemMobSpawner
116 Minecraft tile.mobSpawner 66 Monster Spawner codechicken.nei.ItemMobSpawner
117 Minecraft tile.mobSpawner 91 Monster Spawner codechicken.nei.ItemMobSpawner
118 Minecraft tile.mobSpawner 92 Monster Spawner codechicken.nei.ItemMobSpawner
119 Minecraft tile.mobSpawner 93 Monster Spawner codechicken.nei.ItemMobSpawner
120 Minecraft tile.mobSpawner 94 Monster Spawner codechicken.nei.ItemMobSpawner
121 Minecraft tile.mobSpawner 95 Monster Spawner codechicken.nei.ItemMobSpawner
122 Minecraft tile.mobSpawner 96 Monster Spawner codechicken.nei.ItemMobSpawner
123 Minecraft tile.mobSpawner 97 Monster Spawner codechicken.nei.ItemMobSpawner
124 Minecraft tile.mobSpawner 98 Monster Spawner codechicken.nei.ItemMobSpawner
125 Minecraft tile.mobSpawner 99 Monster Spawner codechicken.nei.ItemMobSpawner
126 Minecraft tile.mobSpawner 120 Monster Spawner codechicken.nei.ItemMobSpawner
127 Minecraft tile.stairsWood 0 Oak Wood Stairs net.minecraft.item.ItemBlock
128 Minecraft tile.chest 0 Chest net.minecraft.item.ItemBlock
129 Minecraft tile.oreDiamond 0 Diamond Ore net.minecraft.item.ItemBlock
130 Minecraft tile.blockDiamond 0 Block of Diamond net.minecraft.item.ItemBlock
131 Minecraft tile.workbench 0 Crafting Table net.minecraft.item.ItemBlock
132 Minecraft tile.farmland 0 Farmland net.minecraft.item.ItemBlock
133 Minecraft tile.furnace 0 Furnace net.minecraft.item.ItemBlock
134 Minecraft tile.ladder 0 Ladder net.minecraft.item.ItemBlock
135 Minecraft tile.rail 0 Rail net.minecraft.item.ItemBlock
136 Minecraft tile.stairsStone 0 Stone Stairs net.minecraft.item.ItemBlock
137 Minecraft tile.lever 0 Lever net.minecraft.item.ItemBlock
138 Minecraft tile.pressurePlate 0 Pressure Plate net.minecraft.item.ItemBlock
139 Minecraft tile.pressurePlate 0 Pressure Plate net.minecraft.item.ItemBlock
140 Minecraft tile.oreRedstone 0 Redstone Ore net.minecraft.item.ItemBlock
141 Minecraft tile.notGate 0 Redstone Torch net.minecraft.item.ItemBlock
142 Minecraft tile.button 0 Button net.minecraft.item.ItemBlock
143 Minecraft tile.snow 0 Snow net.minecraft.item.ItemSnow
144 Minecraft tile.ice 0 Ice net.minecraft.item.ItemBlock
145 Minecraft tile.snow 0 Snow net.minecraft.item.ItemBlock
146 Minecraft tile.cactus 0 Cactus net.minecraft.item.ItemBlock
147 Minecraft tile.clay 0 Clay net.minecraft.item.ItemBlock
148 Minecraft tile.jukebox 0 Jukebox net.minecraft.item.ItemBlock
149 Minecraft tile.fence 0 Fence net.minecraft.item.ItemBlock
150 Minecraft tile.pumpkin 0 Pumpkin net.minecraft.item.ItemBlock
151 Minecraft tile.hellrock 0 Netherrack net.minecraft.item.ItemBlock
152 Minecraft tile.hellsand 0 Soul Sand net.minecraft.item.ItemBlock
153 Minecraft tile.lightgem 0 Glowstone net.minecraft.item.ItemBlock
154 Minecraft tile.portal 0 Portal net.minecraft.item.ItemBlock
155 Minecraft tile.litpumpkin 0 Jack 'o' Lantern net.minecraft.item.ItemBlock
156 Minecraft tile.cake 0 Cake net.minecraft.item.ItemBlock
157 Minecraft tile.lockedchest 0 Locked chest net.minecraft.item.ItemBlock
158 Minecraft tile.trapdoor 0 Trapdoor net.minecraft.item.ItemBlock
159 Minecraft tile.monsterStoneEgg.stone 0 Stone Monster Egg net.minecraft.item.ItemMultiTextureTile
160 Minecraft tile.monsterStoneEgg.cobble 1 Cobblestone Monster Egg net.minecraft.item.ItemMultiTextureTile
161 Minecraft tile.monsterStoneEgg.brick 2 Stone Brick Monster Egg net.minecraft.item.ItemMultiTextureTile
162 Minecraft tile.stonebricksmooth.default 0 Stone Bricks net.minecraft.item.ItemMultiTextureTile
163 Minecraft tile.stonebricksmooth.mossy 1 Mossy Stone Bricks net.minecraft.item.ItemMultiTextureTile
164 Minecraft tile.stonebricksmooth.cracked 2 Cracked Stone Bricks net.minecraft.item.ItemMultiTextureTile
165 Minecraft tile.stonebricksmooth.chiseled 3 Chiseled Stone Bricks net.minecraft.item.ItemMultiTextureTile
166 Minecraft tile.mushroom 0 Mushroom net.minecraft.item.ItemBlock
167 Minecraft tile.mushroom 0 Mushroom net.minecraft.item.ItemBlock
168 Minecraft tile.fenceIron 0 Iron Bars net.minecraft.item.ItemBlock
169 Minecraft tile.thinGlass 0 Glass Pane net.minecraft.item.ItemBlock
170 Minecraft tile.melon 0 Melon net.minecraft.item.ItemBlock
171 Minecraft tile.vine 0 Vines net.minecraft.item.ItemColored
172 Minecraft tile.fenceGate 0 Fence Gate net.minecraft.item.ItemBlock
173 Minecraft tile.stairsBrick 0 Brick Stairs net.minecraft.item.ItemBlock
174 Minecraft tile.stairsStoneBrickSmooth 0 Stone Brick Stairs net.minecraft.item.ItemBlock
175 Minecraft tile.mycel 0 Mycelium net.minecraft.item.ItemBlock
176 Minecraft tile.waterlily 0 Lily Pad net.minecraft.item.ItemLilyPad
177 Minecraft tile.netherBrick 0 Nether Brick net.minecraft.item.ItemBlock
178 Minecraft tile.netherFence 0 Nether Brick Fence net.minecraft.item.ItemBlock
179 Minecraft tile.stairsNetherBrick 0 Nether Brick Stairs net.minecraft.item.ItemBlock
180 Minecraft tile.enchantmentTable 0 Enchantment Table net.minecraft.item.ItemBlock
181 Minecraft tile.null 0 net.minecraft.item.ItemBlock
182 Minecraft tile.endPortalFrame 0 End Portal net.minecraft.item.ItemBlock
183 Minecraft tile.whiteStone 0 End Stone net.minecraft.item.ItemBlock
184 Minecraft tile.dragonEgg 0 Dragon Egg net.minecraft.item.ItemBlock
185 Minecraft tile.redstoneLight 0 Redstone Lamp net.minecraft.item.ItemBlock
186 Minecraft tile.woodSlab.oak 0 Oak Wood Slab net.minecraft.item.ItemSlab
187 Minecraft tile.woodSlab.spruce 1 Spruce Wood Slab net.minecraft.item.ItemSlab
188 Minecraft tile.woodSlab.birch 2 Birch Wood Slab net.minecraft.item.ItemSlab
189 Minecraft tile.woodSlab.jungle 3 Jungle Wood Slab net.minecraft.item.ItemSlab
190 Minecraft tile.woodSlab.oak 9 Oak Wood Slab net.minecraft.item.ItemSlab
191 Minecraft tile.woodSlab.oak 10 Oak Wood Slab net.minecraft.item.ItemSlab
192 Minecraft tile.woodSlab.oak 11 Oak Wood Slab net.minecraft.item.ItemSlab
193 Minecraft tile.woodSlab.oak 0 Oak Wood Slab net.minecraft.item.ItemSlab
194 Minecraft tile.woodSlab.spruce 1 Spruce Wood Slab net.minecraft.item.ItemSlab
195 Minecraft tile.woodSlab.birch 2 Birch Wood Slab net.minecraft.item.ItemSlab
196 Minecraft tile.woodSlab.jungle 3 Jungle Wood Slab net.minecraft.item.ItemSlab
197 Minecraft tile.cocoa 0 Cocoa net.minecraft.item.ItemBlock
198 Minecraft tile.stairsSandStone 0 Sandstone Stairs net.minecraft.item.ItemBlock
199 Minecraft tile.oreEmerald 0 Emerald Ore net.minecraft.item.ItemBlock
200 Minecraft tile.tripWireSource 0 Tripwire Hook net.minecraft.item.ItemBlock
201 Minecraft tile.blockEmerald 0 Block of Emerald net.minecraft.item.ItemBlock
202 Minecraft tile.stairsWoodSpruce 0 Spruce Wood Stairs net.minecraft.item.ItemBlock
203 Minecraft tile.stairsWoodBirch 0 Birch Wood Stairs net.minecraft.item.ItemBlock
204 Minecraft tile.stairsWoodJungle 0 Jungle Wood Stairs net.minecraft.item.ItemBlock
205 Minecraft tile.commandBlock 0 Command Block net.minecraft.item.ItemBlock
206 Minecraft tile.beacon 0 Beacon net.minecraft.item.ItemBlock
207 Minecraft tile.cobbleWall.normal 0 Cobblestone Wall net.minecraft.item.ItemMultiTextureTile
208 Minecraft tile.cobbleWall.mossy 1 Mossy Cobblestone Wall net.minecraft.item.ItemMultiTextureTile
209 Minecraft tile.button 0 Button net.minecraft.item.ItemBlock
210 Minecraft tile.anvil.intact 0 Anvil net.minecraft.item.ItemAnvilBlock
211 Minecraft tile.anvil.slightlyDamaged 1 Slightly Damaged Anvil net.minecraft.item.ItemAnvilBlock
212 Minecraft tile.anvil.veryDamaged 2 Very Damaged Anvil net.minecraft.item.ItemAnvilBlock
213 Minecraft tile.chestTrap 0 Trapped Chest net.minecraft.item.ItemBlock
214 Minecraft tile.weightedPlate_light 0 Weighted Pressure Plate (Light) net.minecraft.item.ItemBlock
215 Minecraft tile.weightedPlate_heavy 0 Weighted Pressure Plate (Heavy) net.minecraft.item.ItemBlock
216 Minecraft tile.comparator 0 net.minecraft.item.ItemBlock
217 Minecraft tile.comparator 0 net.minecraft.item.ItemBlock
218 Minecraft tile.daylightDetector 0 Daylight Sensor net.minecraft.item.ItemBlock
219 Minecraft tile.blockRedstone 0 Block of Redstone net.minecraft.item.ItemBlock
220 Minecraft tile.netherquartz 0 Nether Quartz Ore net.minecraft.item.ItemBlock
221 Minecraft tile.hopper 0 Hopper net.minecraft.item.ItemBlock
222 Minecraft tile.quartzBlock.default 0 Block of Quartz net.minecraft.item.ItemMultiTextureTile
223 Minecraft tile.quartzBlock.chiseled 1 Chiseled Quartz Block net.minecraft.item.ItemMultiTextureTile
224 Minecraft tile.quartzBlock.lines 2 Pillar Quartz Block net.minecraft.item.ItemMultiTextureTile
225 Minecraft tile.stairsQuartz 0 Quartz Stairs net.minecraft.item.ItemBlock
226 Minecraft tile.activatorRail 0 Activator Rail net.minecraft.item.ItemBlock
227 Minecraft tile.dropper 0 Dropper net.minecraft.item.ItemBlock
228 EnderStorage tile.enderchest|0 0 Ender Chest codechicken.enderstorage.common.ItemEnderStorage
229 EnderStorage tile.enderchest|1 4096 Ender Tank codechicken.enderstorage.common.ItemEnderStorage
230 Minecraft item.shovelIron 0 Iron Shovel net.minecraft.item.ItemSpade
231 Minecraft item.pickaxeIron 0 Iron Pickaxe net.minecraft.item.ItemPickaxe
232 Minecraft item.hatchetIron 0 Iron Axe net.minecraft.item.ItemAxe
233 Minecraft item.flintAndSteel 0 Flint and Steel net.minecraft.item.ItemFlintAndSteel
234 Minecraft item.apple 0 Apple net.minecraft.item.ItemFood
235 Minecraft item.bow 0 Bow net.minecraft.item.ItemBow
236 Minecraft item.arrow 0 Arrow net.minecraft.item.Item
237 Minecraft item.coal 0 Coal net.minecraft.item.ItemCoal
238 Minecraft item.charcoal 1 Charcoal net.minecraft.item.ItemCoal
239 Minecraft item.diamond 0 Diamond net.minecraft.item.Item
240 Minecraft item.ingotIron 0 Iron Ingot net.minecraft.item.Item
241 Minecraft item.ingotGold 0 Gold Ingot net.minecraft.item.Item
242 Minecraft item.swordIron 0 Iron Sword net.minecraft.item.ItemSword
243 Minecraft item.swordWood 0 Wooden Sword net.minecraft.item.ItemSword
244 Minecraft item.shovelWood 0 Wooden Shovel net.minecraft.item.ItemSpade
245 Minecraft item.pickaxeWood 0 Wooden Pickaxe net.minecraft.item.ItemPickaxe
246 Minecraft item.hatchetWood 0 Wooden Axe net.minecraft.item.ItemAxe
247 Minecraft item.swordStone 0 Stone Sword net.minecraft.item.ItemSword
248 Minecraft item.shovelStone 0 Stone Shovel net.minecraft.item.ItemSpade
249 Minecraft item.pickaxeStone 0 Stone Pickaxe net.minecraft.item.ItemPickaxe
250 Minecraft item.hatchetStone 0 Stone Axe net.minecraft.item.ItemAxe
251 Minecraft item.swordDiamond 0 Diamond Sword net.minecraft.item.ItemSword
252 Minecraft item.shovelDiamond 0 Diamond Shovel net.minecraft.item.ItemSpade
253 Minecraft item.pickaxeDiamond 0 Diamond Pickaxe net.minecraft.item.ItemPickaxe
254 Minecraft item.hatchetDiamond 0 Diamond Axe net.minecraft.item.ItemAxe
255 Minecraft item.stick 0 Stick net.minecraft.item.Item
256 Minecraft item.bowl 0 Bowl net.minecraft.item.Item
257 Minecraft item.mushroomStew 0 Mushroom Stew net.minecraft.item.ItemSoup
258 Minecraft item.swordGold 0 Golden Sword net.minecraft.item.ItemSword
259 Minecraft item.shovelGold 0 Golden Shovel net.minecraft.item.ItemSpade
260 Minecraft item.pickaxeGold 0 Golden Pickaxe net.minecraft.item.ItemPickaxe
261 Minecraft item.hatchetGold 0 Golden Axe net.minecraft.item.ItemAxe
262 Minecraft item.string 0 String net.minecraft.item.ItemReed
263 Minecraft item.feather 0 Feather net.minecraft.item.Item
264 Minecraft item.sulphur 0 Gunpowder net.minecraft.item.Item
265 Minecraft item.hoeWood 0 Wooden Hoe net.minecraft.item.ItemHoe
266 Minecraft item.hoeStone 0 Stone Hoe net.minecraft.item.ItemHoe
267 Minecraft item.hoeIron 0 Iron Hoe net.minecraft.item.ItemHoe
268 Minecraft item.hoeDiamond 0 Diamond Hoe net.minecraft.item.ItemHoe
269 Minecraft item.hoeGold 0 Golden Hoe net.minecraft.item.ItemHoe
270 Minecraft item.seeds 0 Seeds net.minecraft.item.ItemSeeds
271 Minecraft item.wheat 0 Wheat net.minecraft.item.Item
272 Minecraft item.bread 0 Bread net.minecraft.item.ItemFood
273 Minecraft item.helmetCloth 0 Leather Cap net.minecraft.item.ItemArmor
274 Minecraft item.chestplateCloth 0 Leather Tunic net.minecraft.item.ItemArmor
275 Minecraft item.leggingsCloth 0 Leather Pants net.minecraft.item.ItemArmor
276 Minecraft item.bootsCloth 0 Leather Boots net.minecraft.item.ItemArmor
277 Minecraft item.helmetChain 0 Chain Helmet net.minecraft.item.ItemArmor
278 Minecraft item.chestplateChain 0 Chain Chestplate net.minecraft.item.ItemArmor
279 Minecraft item.leggingsChain 0 Chain Leggings net.minecraft.item.ItemArmor
280 Minecraft item.bootsChain 0 Chain Boots net.minecraft.item.ItemArmor
281 Minecraft item.helmetIron 0 Iron Helmet net.minecraft.item.ItemArmor
282 Minecraft item.chestplateIron 0 Iron Chestplate net.minecraft.item.ItemArmor
283 Minecraft item.leggingsIron 0 Iron Leggings net.minecraft.item.ItemArmor
284 Minecraft item.bootsIron 0 Iron Boots net.minecraft.item.ItemArmor
285 Minecraft item.helmetDiamond 0 Diamond Helmet net.minecraft.item.ItemArmor
286 Minecraft item.chestplateDiamond 0 Diamond Chestplate net.minecraft.item.ItemArmor
287 Minecraft item.leggingsDiamond 0 Diamond Leggings net.minecraft.item.ItemArmor
288 Minecraft item.bootsDiamond 0 Diamond Boots net.minecraft.item.ItemArmor
289 Minecraft item.helmetGold 0 Golden Helmet net.minecraft.item.ItemArmor
290 Minecraft item.chestplateGold 0 Golden Chestplate net.minecraft.item.ItemArmor
291 Minecraft item.leggingsGold 0 Golden Leggings net.minecraft.item.ItemArmor
292 Minecraft item.bootsGold 0 Golden Boots net.minecraft.item.ItemArmor
293 Minecraft item.flint 0 Flint net.minecraft.item.Item
294 Minecraft item.porkchopRaw 0 Raw Porkchop net.minecraft.item.ItemFood
295 Minecraft item.porkchopCooked 0 Cooked Porkchop net.minecraft.item.ItemFood
296 Minecraft item.painting 0 Painting net.minecraft.item.ItemHangingEntity
297 Minecraft item.appleGold 0 Golden Apple net.minecraft.item.ItemAppleGold
298 Minecraft item.sign 0 Sign net.minecraft.item.ItemSign
299 Minecraft item.doorWood 0 Wooden Door net.minecraft.item.ItemDoor
300 Minecraft item.bucket 0 Bucket net.minecraft.item.ItemBucket
301 Minecraft item.bucketWater 0 Water Bucket net.minecraft.item.ItemBucket
302 Minecraft item.bucketLava 0 Lava Bucket net.minecraft.item.ItemBucket
303 Minecraft item.minecart 0 Minecart net.minecraft.item.ItemMinecart
304 Minecraft item.saddle 0 Saddle net.minecraft.item.ItemSaddle
305 Minecraft item.doorIron 0 Iron Door net.minecraft.item.ItemDoor
306 Minecraft item.redstone 0 Redstone net.minecraft.item.ItemRedstone
307 Minecraft item.snowball 0 Snowball net.minecraft.item.ItemSnowball
308 Minecraft item.boat 0 Boat net.minecraft.item.ItemBoat
309 Minecraft item.leather 0 Leather net.minecraft.item.Item
310 Minecraft item.milk 0 Milk net.minecraft.item.ItemBucketMilk
311 Minecraft item.brick 0 Brick net.minecraft.item.Item
312 Minecraft item.clay 0 Clay net.minecraft.item.Item
313 Minecraft item.reeds 0 Sugar Canes net.minecraft.item.ItemReed
314 Minecraft item.paper 0 Paper net.minecraft.item.Item
315 Minecraft item.book 0 Book net.minecraft.item.ItemBook
316 Minecraft item.slimeball 0 Slimeball net.minecraft.item.Item
317 Minecraft item.minecartChest 0 Minecart with Chest net.minecraft.item.ItemMinecart
318 Minecraft item.minecartFurnace 0 Minecart with Furnace net.minecraft.item.ItemMinecart
319 Minecraft item.egg 0 Egg net.minecraft.item.ItemEgg
320 Minecraft item.compass 0 Compass net.minecraft.item.Item
321 Minecraft item.fishingRod 0 Fishing Rod net.minecraft.item.ItemFishingRod
322 Minecraft item.clock 0 Clock net.minecraft.item.Item
323 Minecraft item.yellowDust 0 Glowstone Dust net.minecraft.item.Item
324 Minecraft item.fishRaw 0 Raw Fish net.minecraft.item.ItemFood
325 Minecraft item.fishCooked 0 Cooked Fish net.minecraft.item.ItemFood
326 Minecraft item.dyePowder.black 0 Ink Sac net.minecraft.item.ItemDye
327 Minecraft item.dyePowder.red 1 Rose Red net.minecraft.item.ItemDye
328 Minecraft item.dyePowder.green 2 Cactus Green net.minecraft.item.ItemDye
329 Minecraft item.dyePowder.brown 3 Cocoa Beans net.minecraft.item.ItemDye
330 Minecraft item.dyePowder.blue 4 Lapis Lazuli net.minecraft.item.ItemDye
331 Minecraft item.dyePowder.purple 5 Purple Dye net.minecraft.item.ItemDye
332 Minecraft item.dyePowder.cyan 6 Cyan Dye net.minecraft.item.ItemDye
333 Minecraft item.dyePowder.silver 7 Light Gray Dye net.minecraft.item.ItemDye
334 Minecraft item.dyePowder.gray 8 Gray Dye net.minecraft.item.ItemDye
335 Minecraft item.dyePowder.pink 9 Pink Dye net.minecraft.item.ItemDye
336 Minecraft item.dyePowder.lime 10 Lime Dye net.minecraft.item.ItemDye
337 Minecraft item.dyePowder.yellow 11 Dandelion Yellow net.minecraft.item.ItemDye
338 Minecraft item.dyePowder.lightBlue 12 Light Blue Dye net.minecraft.item.ItemDye
339 Minecraft item.dyePowder.magenta 13 Magenta Dye net.minecraft.item.ItemDye
340 Minecraft item.dyePowder.orange 14 Orange Dye net.minecraft.item.ItemDye
341 Minecraft item.dyePowder.white 15 Bone Meal net.minecraft.item.ItemDye
342 Minecraft item.bone 0 Bone net.minecraft.item.Item
343 Minecraft item.sugar 0 Sugar net.minecraft.item.Item
344 Minecraft item.cake 0 Cake net.minecraft.item.ItemReed
345 Minecraft item.bed 0 Bed net.minecraft.item.ItemBed
346 Minecraft item.diode 0 Redstone Repeater net.minecraft.item.ItemReed
347 Minecraft item.cookie 0 Cookie net.minecraft.item.ItemFood
348 Minecraft item.map 0 Map net.minecraft.item.ItemMap
349 Minecraft item.shears 0 Shears net.minecraft.item.ItemShears
350 Minecraft item.melon 0 Melon net.minecraft.item.ItemFood
351 Minecraft item.seeds_pumpkin 0 Pumpkin Seeds net.minecraft.item.ItemSeeds
352 Minecraft item.seeds_melon 0 Melon Seeds net.minecraft.item.ItemSeeds
353 Minecraft item.beefRaw 0 Raw Beef net.minecraft.item.ItemFood
354 Minecraft item.beefCooked 0 Steak net.minecraft.item.ItemFood
355 Minecraft item.chickenRaw 0 Raw Chicken net.minecraft.item.ItemFood
356 Minecraft item.chickenCooked 0 Cooked Chicken net.minecraft.item.ItemFood
357 Minecraft item.rottenFlesh 0 Rotten Flesh net.minecraft.item.ItemFood
358 Minecraft item.enderPearl 0 Ender Pearl net.minecraft.item.ItemEnderPearl
359 Minecraft item.blazeRod 0 Blaze Rod net.minecraft.item.Item
360 Minecraft item.ghastTear 0 Ghast Tear net.minecraft.item.Item
361 Minecraft item.goldNugget 0 Gold Nugget net.minecraft.item.Item
362 Minecraft item.netherStalkSeeds 0 Nether Wart net.minecraft.item.ItemSeeds
363 Minecraft item.potion 0 Water Bottle net.minecraft.item.ItemPotion
364 Minecraft item.potion 16 Awkward Potion net.minecraft.item.ItemPotion
365 Minecraft item.potion 32 Thick Potion net.minecraft.item.ItemPotion
366 Minecraft item.potion 64 Mundane Potion net.minecraft.item.ItemPotion
367 Minecraft item.potion 8193 Potion of Regeneration net.minecraft.item.ItemPotion Potion of Regeneration
368 Minecraft item.potion 8194 Potion of Swiftness net.minecraft.item.ItemPotion Potion of Swiftness
369 Minecraft item.potion 8195 Potion of Fire Resistance net.minecraft.item.ItemPotion Potion of Fire Resistance
370 Minecraft item.potion 8196 Potion of Poison net.minecraft.item.ItemPotion Potion of Poison
371 Minecraft item.potion 8197 Potion of Healing net.minecraft.item.ItemPotion Potion of Healing
372 Minecraft item.potion 8198 Potion of Night Vision net.minecraft.item.ItemPotion Potion of Night Vision
373 Minecraft item.potion 8200 Potion of Weakness net.minecraft.item.ItemPotion Potion of Weakness
374 Minecraft item.potion 8201 Potion of Strength net.minecraft.item.ItemPotion Potion of Strength
375 Minecraft item.potion 8202 Potion of Slowness net.minecraft.item.ItemPotion
376 Minecraft item.potion 8204 Potion of Harming net.minecraft.item.ItemPotion
377 Minecraft item.potion 8206 Potion of Invisibility net.minecraft.item.ItemPotion
378 Minecraft item.potion 8225 Potion of Regeneration net.minecraft.item.ItemPotion
379 Minecraft item.potion 8226 Potion of Swiftness net.minecraft.item.ItemPotion
380 Minecraft item.potion 8228 Potion of Poison net.minecraft.item.ItemPotion
381 Minecraft item.potion 8229 Potion of Healing net.minecraft.item.ItemPotion
382 Minecraft item.potion 8233 Potion of Strength net.minecraft.item.ItemPotion
383 Minecraft item.potion * Potion of Harming net.minecraft.item.ItemPotion This is a generic potion entry
384 Minecraft item.potion 8257 Potion of Regeneration net.minecraft.item.ItemPotion
385 Minecraft item.potion 8258 Potion of Swiftness net.minecraft.item.ItemPotion
386 Minecraft item.potion 8259 Potion of Fire Resistance net.minecraft.item.ItemPotion
387 Minecraft item.potion 8260 Potion of Poison net.minecraft.item.ItemPotion
388 Minecraft item.potion 8262 Potion of Night Vision net.minecraft.item.ItemPotion
389 Minecraft item.potion 8264 Potion of Weakness net.minecraft.item.ItemPotion
390 Minecraft item.potion 8265 Potion of Strength net.minecraft.item.ItemPotion
391 Minecraft item.potion 8266 Potion of Slowness net.minecraft.item.ItemPotion
392 Minecraft item.potion 8270 Potion of Invisibility net.minecraft.item.ItemPotion
393 Minecraft item.potion 16384 Mundane Potion net.minecraft.item.ItemPotion
394 Minecraft item.potion 16385 Splash Potion of Regeneration net.minecraft.item.ItemPotion
395 Minecraft item.potion 16386 Splash Potion of Swiftness net.minecraft.item.ItemPotion
396 Minecraft item.potion 16387 Splash Potion of Fire Resistance net.minecraft.item.ItemPotion
397 Minecraft item.potion 16388 Splash Potion of Poison net.minecraft.item.ItemPotion
398 Minecraft item.potion 16389 Splash Potion of Healing net.minecraft.item.ItemPotion
399 Minecraft item.potion 16390 Splash Potion of Night Vision net.minecraft.item.ItemPotion
400 Minecraft item.potion 16392 Splash Potion of Weakness net.minecraft.item.ItemPotion
401 Minecraft item.potion 16393 Splash Potion of Strength net.minecraft.item.ItemPotion
402 Minecraft item.potion 16394 Splash Potion of Slowness net.minecraft.item.ItemPotion
403 Minecraft item.potion 16396 Splash Potion of Harming net.minecraft.item.ItemPotion
404 Minecraft item.potion 16398 Splash Potion of Invisibility net.minecraft.item.ItemPotion
405 Minecraft item.potion 16417 Splash Potion of Regeneration net.minecraft.item.ItemPotion
406 Minecraft item.potion 16418 Splash Potion of Swiftness net.minecraft.item.ItemPotion
407 Minecraft item.potion 16420 Splash Potion of Poison net.minecraft.item.ItemPotion
408 Minecraft item.potion 16421 Splash Potion of Healing net.minecraft.item.ItemPotion
409 Minecraft item.potion 16425 Splash Potion of Strength net.minecraft.item.ItemPotion
410 Minecraft item.potion 16428 Splash Potion of Harming net.minecraft.item.ItemPotion
411 Minecraft item.potion 16449 Splash Potion of Regeneration net.minecraft.item.ItemPotion
412 Minecraft item.potion 16450 Splash Potion of Swiftness net.minecraft.item.ItemPotion
413 Minecraft item.potion 16451 Splash Potion of Fire Resistance net.minecraft.item.ItemPotion
414 Minecraft item.potion 16452 Splash Potion of Poison net.minecraft.item.ItemPotion
415 Minecraft item.potion 16454 Splash Potion of Night Vision net.minecraft.item.ItemPotion
416 Minecraft item.potion 16456 Splash Potion of Weakness net.minecraft.item.ItemPotion
417 Minecraft item.potion 16457 Splash Potion of Strength net.minecraft.item.ItemPotion
418 Minecraft item.potion 16458 Splash Potion of Slowness net.minecraft.item.ItemPotion
419 Minecraft item.potion 16462 Splash Potion of Invisibility net.minecraft.item.ItemPotion
420 Minecraft item.glassBottle 0 Glass Bottle net.minecraft.item.ItemGlassBottle
421 Minecraft item.spiderEye 0 Spider Eye net.minecraft.item.ItemFood
422 Minecraft item.fermentedSpiderEye 0 Fermented Spider Eye net.minecraft.item.Item
423 Minecraft item.blazePowder 0 Blaze Powder net.minecraft.item.Item
424 Minecraft item.magmaCream 0 Magma Cream net.minecraft.item.Item
425 Minecraft item.brewingStand 0 Brewing Stand net.minecraft.item.ItemReed
426 Minecraft item.cauldron 0 Cauldron net.minecraft.item.ItemReed
427 Minecraft item.eyeOfEnder 0 Eye of Ender net.minecraft.item.ItemEnderEye
428 Minecraft item.speckledMelon 0 Glistering Melon net.minecraft.item.Item
429 Minecraft item.monsterPlacer 50 Spawn Creeper net.minecraft.item.ItemMonsterPlacer
430 Minecraft item.monsterPlacer 51 Spawn Skeleton net.minecraft.item.ItemMonsterPlacer
431 Minecraft item.monsterPlacer 52 Spawn Spider net.minecraft.item.ItemMonsterPlacer
432 Minecraft item.monsterPlacer 54 Spawn Zombie net.minecraft.item.ItemMonsterPlacer
433 Minecraft item.monsterPlacer 55 Spawn Slime net.minecraft.item.ItemMonsterPlacer
434 Minecraft item.monsterPlacer 56 Spawn Ghast net.minecraft.item.ItemMonsterPlacer
435 Minecraft item.monsterPlacer 57 Spawn Zombie Pigman net.minecraft.item.ItemMonsterPlacer
436 Minecraft item.monsterPlacer 58 Spawn Enderman net.minecraft.item.ItemMonsterPlacer
437 Minecraft item.monsterPlacer 59 Spawn Cave Spider net.minecraft.item.ItemMonsterPlacer
438 Minecraft item.monsterPlacer 60 Spawn Silverfish net.minecraft.item.ItemMonsterPlacer
439 Minecraft item.monsterPlacer 61 Spawn Blaze net.minecraft.item.ItemMonsterPlacer
440 Minecraft item.monsterPlacer 62 Spawn Magma Cube net.minecraft.item.ItemMonsterPlacer
441 Minecraft item.monsterPlacer 65 Spawn Bat net.minecraft.item.ItemMonsterPlacer
442 Minecraft item.monsterPlacer 66 Spawn Witch net.minecraft.item.ItemMonsterPlacer
443 Minecraft item.monsterPlacer 90 Spawn Pig net.minecraft.item.ItemMonsterPlacer
444 Minecraft item.monsterPlacer 91 Spawn Sheep net.minecraft.item.ItemMonsterPlacer
445 Minecraft item.monsterPlacer 92 Spawn Cow net.minecraft.item.ItemMonsterPlacer
446 Minecraft item.monsterPlacer 93 Spawn Chicken net.minecraft.item.ItemMonsterPlacer
447 Minecraft item.monsterPlacer 94 Spawn Squid net.minecraft.item.ItemMonsterPlacer
448 Minecraft item.monsterPlacer 95 Spawn Wolf net.minecraft.item.ItemMonsterPlacer
449 Minecraft item.monsterPlacer 96 Spawn Mooshroom net.minecraft.item.ItemMonsterPlacer
450 Minecraft item.monsterPlacer 97 Spawn Snow Golem net.minecraft.item.ItemMonsterPlacer
451 Minecraft item.monsterPlacer 98 Spawn Ocelot net.minecraft.item.ItemMonsterPlacer
452 Minecraft item.monsterPlacer 99 Spawn Iron Golem net.minecraft.item.ItemMonsterPlacer
453 Minecraft item.monsterPlacer 120 Spawn Villager net.minecraft.item.ItemMonsterPlacer
454 Minecraft item.expBottle 0 Bottle o' Enchanting net.minecraft.item.ItemExpBottle
455 Minecraft item.fireball 0 Fire Charge net.minecraft.item.ItemFireball
456 Minecraft item.writingBook 0 Book and Quill net.minecraft.item.ItemWritableBook
457 Minecraft item.writtenBook 0 Written Book net.minecraft.item.ItemEditableBook
458 Minecraft item.emerald 0 Emerald net.minecraft.item.Item
459 Minecraft item.frame 0 Item Frame net.minecraft.item.ItemHangingEntity
460 Minecraft item.flowerPot 0 Flower Pot net.minecraft.item.ItemReed
461 Minecraft item.carrots 0 Carrot net.minecraft.item.ItemSeedFood
462 Minecraft item.potato 0 Potato net.minecraft.item.ItemSeedFood
463 Minecraft item.potatoBaked 0 Baked Potato net.minecraft.item.ItemFood
464 Minecraft item.potatoPoisonous 0 Poisonous Potato net.minecraft.item.ItemFood
465 Minecraft item.emptyMap 0 Empty Map net.minecraft.item.ItemEmptyMap
466 Minecraft item.carrotGolden 0 Golden Carrot net.minecraft.item.ItemFood
467 Minecraft item.skull.skeleton 0 Skeleton Skull net.minecraft.item.ItemSkull
468 Minecraft item.skull.wither 1 Wither Skeleton Skull net.minecraft.item.ItemSkull
469 Minecraft item.skull.zombie 2 Zombie Head net.minecraft.item.ItemSkull
470 Minecraft item.skull.char 3 Head net.minecraft.item.ItemSkull
471 Minecraft item.skull.creeper 4 Creeper Head net.minecraft.item.ItemSkull
472 Minecraft item.carrotOnAStick 0 Carrot on a Stick net.minecraft.item.ItemCarrotOnAStick
473 Minecraft item.netherStar 0 Nether Star net.minecraft.item.ItemSimpleFoiled
474 Minecraft item.pumpkinPie 0 Pumpkin Pie net.minecraft.item.ItemFood
475 Minecraft item.fireworks 0 Firework Rocket net.minecraft.item.ItemFirework
476 Minecraft item.fireworksCharge 0 Firework Star net.minecraft.item.ItemFireworkCharge
477 Minecraft item.enchantedBook 0 Enchanted Book net.minecraft.item.ItemEnchantedBook
478 Minecraft item.comparator 0 Redstone Comparator net.minecraft.item.ItemReed
479 Minecraft item.netherbrick 0 Nether Brick net.minecraft.item.Item
480 Minecraft item.netherquartz 0 Nether Quartz net.minecraft.item.Item
481 Minecraft item.minecartTnt 0 Minecart with TNT net.minecraft.item.ItemMinecart
482 Minecraft item.minecartHopper 0 Minecart with Hopper net.minecraft.item.ItemMinecart
483 BuildCraft|Factory tile.miningWellBlock 0 Mining Well buildcraft.core.ItemBlockBuildCraft
484 BuildCraft|Factory tile.plainPipeBlock 0 Mining Pipe buildcraft.core.ItemBlockBuildCraft
485 BuildCraft|Factory tile.autoWorkbenchBlock 0 Autocrafting Table buildcraft.core.ItemBlockBuildCraft
486 BuildCraft|Factory tile.machineBlock 0 Quarry buildcraft.core.ItemBlockBuildCraft
487 BuildCraft|Builders tile.markerBlock 0 Land Mark buildcraft.core.ItemBlockBuildCraft
488 BuildCraft|Builders tile.fillerBlock 0 Filler buildcraft.core.ItemBlockBuildCraft
489 BuildCraft|Builders tile.builderBlock 0 Builder buildcraft.core.ItemBlockBuildCraft
490 BuildCraft|Builders tile.architectBlock 0 Architect Table buildcraft.core.ItemBlockBuildCraft
491 BuildCraft|Factory tile.frameBlock 0 Frame buildcraft.core.ItemBlockBuildCraft
492 BuildCraft|Energy tile.engineWood 0 Redstone Engine buildcraft.energy.ItemEngine
493 BuildCraft|Energy tile.engineStone 1 Stirling Engine buildcraft.energy.ItemEngine
494 BuildCraft|Energy tile.engineIron 2 Combustion Engine buildcraft.energy.ItemEngine
495 BuildCraft|Factory tile.pumpBlock 0 Pump buildcraft.core.ItemBlockBuildCraft
496 BuildCraft|Factory tile.tankBlock 0 Tank buildcraft.core.ItemBlockBuildCraft
497 BuildCraft|Transport tile.null 0 net.minecraft.item.ItemBlock
498 BuildCraft|Factory tile.refineryBlock 0 Refinery buildcraft.core.ItemBlockBuildCraft
499 BuildCraft|Builders tile.libraryBlock 0 Blueprint Library buildcraft.core.ItemBlockBuildCraft
500 BuildCraft|Silicon tile.laserBlock 0 Laser buildcraft.core.ItemBlockBuildCraft
501 BuildCraft|Silicon block.assemblyTableBlock 0 Assembly Table buildcraft.silicon.ItemLaserTable
502 BuildCraft|Silicon block.assemblyWorkbenchBlock 1 Advanced Crafting Table buildcraft.silicon.ItemLaserTable
503 BuildCraft|Builders tile.pathMarkerBlock 0 Path Marker buildcraft.core.ItemBlockBuildCraft
504 BuildCraft|Factory tile.blockHopper 0 Chute buildcraft.core.ItemBlockBuildCraft
505 BuildCraft|Energy tile.oilMoving 0 Oil buildcraft.core.ItemBlockBuildCraft
506 BuildCraft|Energy tile.oilStill 0 Oil buildcraft.core.ItemBlockBuildCraft
507 BuildCraft|Core tile.spring.water 0 Water Spring buildcraft.core.ItemSpring
508 BuildCraft|Core tile.spring.oil 1 Oil Spring buildcraft.core.ItemSpring
509 Minecraft item.record 0 Music Disc net.minecraft.item.ItemRecord
510 Minecraft item.record 0 Music Disc net.minecraft.item.ItemRecord
511 Minecraft item.record 0 Music Disc net.minecraft.item.ItemRecord
512 Minecraft item.record 0 Music Disc net.minecraft.item.ItemRecord
513 Minecraft item.record 0 Music Disc net.minecraft.item.ItemRecord
514 Minecraft item.record 0 Music Disc net.minecraft.item.ItemRecord
515 Minecraft item.record 0 Music Disc net.minecraft.item.ItemRecord
516 Minecraft item.record 0 Music Disc net.minecraft.item.ItemRecord
517 Minecraft item.record 0 Music Disc net.minecraft.item.ItemRecord
518 Minecraft item.record 0 Music Disc net.minecraft.item.ItemRecord
519 Minecraft item.record 0 Music Disc net.minecraft.item.ItemRecord
520 Minecraft item.record 0 Music Disc net.minecraft.item.ItemRecord
521 EnderStorage item.enderpouch 0 Ender Pouch codechicken.enderstorage.storage.item.ItemEnderPouch
522 BuildCraft|Core item.woodenGearItem 0 Wood Gear buildcraft.core.ItemBuildCraft
523 BuildCraft|Core item.stoneGearItem 0 Stone Gear buildcraft.core.ItemBuildCraft
524 BuildCraft|Core item.ironGearItem 0 Iron Gear buildcraft.core.ItemBuildCraft
525 BuildCraft|Core item.goldGearItem 0 Gold Gear buildcraft.core.ItemBuildCraft
526 BuildCraft|Core item.diamondGearItem 0 Diamond Gear buildcraft.core.ItemBuildCraft
527 BuildCraft|Builders item.templateItem 0 Template buildcraft.builders.ItemBptTemplate
528 BuildCraft|Core item.wrenchItem 0 Wrench buildcraft.core.ItemWrench
529 BuildCraft|Energy item.bucketOil 0 Oil Bucket buildcraft.energy.ItemBucketOil
530 BuildCraft|Energy item.fuel 0 Fuel buildcraft.core.ItemBuildCraft
531 BuildCraft|Transport item.pipeWaterproof 0 Pipe Waterproof buildcraft.core.ItemBuildCraft
532 BuildCraft|Energy item.bucketFuel 0 Fuel Bucket buildcraft.core.ItemBuildCraft
533 BuildCraft|Transport item.pipeGate.0 0 Gate buildcraft.transport.ItemGate
534 BuildCraft|Transport item.pipeGate.1 1 Iron AND Gate buildcraft.transport.ItemGate
535 BuildCraft|Transport item.pipeGate.2 2 Iron OR Gate buildcraft.transport.ItemGate
536 BuildCraft|Transport item.pipeGate.3 3 Gold AND Gate buildcraft.transport.ItemGate
537 BuildCraft|Transport item.pipeGate.4 4 Gold OR Gate buildcraft.transport.ItemGate
538 BuildCraft|Transport item.pipeGate.5 5 Diamond AND Gate buildcraft.transport.ItemGate
539 BuildCraft|Transport item.pipeGate.6 6 Diamond OR Gate buildcraft.transport.ItemGate
540 BuildCraft|Transport item.redPipeWire 0 Red Pipe Wire buildcraft.core.ItemBuildCraft
541 BuildCraft|Transport item.bluePipeWire 0 Blue Pipe Wire buildcraft.core.ItemBuildCraft
542 BuildCraft|Transport item.greenPipeWire 0 Green Pipe Wire buildcraft.core.ItemBuildCraft
543 BuildCraft|Transport item.yellowPipeWire 0 Yellow Pipe Wire buildcraft.core.ItemBuildCraft
544 BuildCraft|Silicon item.redstoneChipset.0 0 Redstone Chipset buildcraft.core.ItemRedstoneChipset
545 BuildCraft|Silicon item.redstoneChipset.1 1 Redstone Iron Chipset buildcraft.core.ItemRedstoneChipset
546 BuildCraft|Silicon item.redstoneChipset.2 2 Redstone Golden Chipset buildcraft.core.ItemRedstoneChipset
547 BuildCraft|Silicon item.redstoneChipset.3 3 Redstone Diamond Chipset buildcraft.core.ItemRedstoneChipset
548 BuildCraft|Silicon item.redstoneChipset.4 4 Pulsating Chipset buildcraft.core.ItemRedstoneChipset
549 BuildCraft|Builders item.blueprintItem 0 Blueprint buildcraft.builders.ItemBptBluePrint
550 BuildCraft|Transport item.pipeGateAutarchic.0 0 Autarchic Gate buildcraft.transport.ItemGate
551 BuildCraft|Transport item.pipeGateAutarchic.1 1 Autarchic Iron AND Gate buildcraft.transport.ItemGate
552 BuildCraft|Transport item.pipeGateAutarchic.2 2 Autarchic Iron OR Gate buildcraft.transport.ItemGate
553 BuildCraft|Transport item.pipeGateAutarchic.3 3 Autarchic Gold AND Gate buildcraft.transport.ItemGate
554 BuildCraft|Transport item.pipeGateAutarchic.4 4 Autarchic Gold OR Gate buildcraft.transport.ItemGate
555 BuildCraft|Transport item.pipeGateAutarchic.5 5 Autarchic Diamond AND Gate buildcraft.transport.ItemGate
556 BuildCraft|Transport item.pipeGateAutarchic.6 6 Autarchic Diamond OR Gate buildcraft.transport.ItemGate
557 BuildCraft|Transport item.Facade 16 Facade: Stone buildcraft.transport.ItemFacade
558 BuildCraft|Transport item.Facade 48 Facade: Dirt buildcraft.transport.ItemFacade
559 BuildCraft|Transport item.Facade 64 Facade: Cobblestone buildcraft.transport.ItemFacade
560 BuildCraft|Transport item.Facade 80 Facade: Oak Wood Planks buildcraft.transport.ItemFacade
561 BuildCraft|Transport item.Facade 81 Facade: Spruce Wood Planks buildcraft.transport.ItemFacade
562 BuildCraft|Transport item.Facade 82 Facade: Birch Wood Planks buildcraft.transport.ItemFacade
563 BuildCraft|Transport item.Facade 83 Facade: Jungle Wood Planks buildcraft.transport.ItemFacade
564 BuildCraft|Transport item.Facade 192 Facade: Sand buildcraft.transport.ItemFacade
565 BuildCraft|Transport item.Facade 208 Facade: Gravel buildcraft.transport.ItemFacade
566 BuildCraft|Transport item.Facade 224 Facade: Gold Ore buildcraft.transport.ItemFacade
567 BuildCraft|Transport item.Facade 240 Facade: Iron Ore buildcraft.transport.ItemFacade
568 BuildCraft|Transport item.Facade 256 Facade: Coal Ore buildcraft.transport.ItemFacade
569 BuildCraft|Transport item.Facade 272 Facade: Oak Wood buildcraft.transport.ItemFacade
570 BuildCraft|Transport item.Facade 273 Facade: Spruce Wood buildcraft.transport.ItemFacade
571 BuildCraft|Transport item.Facade 274 Facade: Birch Wood buildcraft.transport.ItemFacade
572 BuildCraft|Transport item.Facade 275 Facade: Jungle Wood buildcraft.transport.ItemFacade
573 BuildCraft|Transport item.Facade 320 Facade: Glass buildcraft.transport.ItemFacade
574 BuildCraft|Transport item.Facade 336 Facade: Lapis Lazuli Ore buildcraft.transport.ItemFacade
575 BuildCraft|Transport item.Facade 352 Facade: Lapis Lazuli Block buildcraft.transport.ItemFacade
576 BuildCraft|Transport item.Facade 384 Facade: Sandstone buildcraft.transport.ItemFacade
577 BuildCraft|Transport item.Facade 385 Facade: Chiseled Sandstone buildcraft.transport.ItemFacade
578 BuildCraft|Transport item.Facade 386 Facade: Smooth Sandstone buildcraft.transport.ItemFacade
579 BuildCraft|Transport item.Facade 560 Facade: Wool buildcraft.transport.ItemFacade
580 BuildCraft|Transport item.Facade 561 Facade: Orange Wool buildcraft.transport.ItemFacade
581 BuildCraft|Transport item.Facade 562 Facade: Magenta Wool buildcraft.transport.ItemFacade
582 BuildCraft|Transport item.Facade 563 Facade: Light Blue Wool buildcraft.transport.ItemFacade
583 BuildCraft|Transport item.Facade 564 Facade: Yellow Wool buildcraft.transport.ItemFacade
584 BuildCraft|Transport item.Facade 565 Facade: Lime Wool buildcraft.transport.ItemFacade
585 BuildCraft|Transport item.Facade 566 Facade: Pink Wool buildcraft.transport.ItemFacade
586 BuildCraft|Transport item.Facade 567 Facade: Gray Wool buildcraft.transport.ItemFacade
587 BuildCraft|Transport item.Facade 568 Facade: Light Gray Wool buildcraft.transport.ItemFacade
588 BuildCraft|Transport item.Facade 569 Facade: Cyan Wool buildcraft.transport.ItemFacade
589 BuildCraft|Transport item.Facade 570 Facade: Purple Wool buildcraft.transport.ItemFacade
590 BuildCraft|Transport item.Facade 571 Facade: Blue Wool buildcraft.transport.ItemFacade
591 BuildCraft|Transport item.Facade 572 Facade: Brown Wool buildcraft.transport.ItemFacade
592 BuildCraft|Transport item.Facade 573 Facade: Green Wool buildcraft.transport.ItemFacade
593 BuildCraft|Transport item.Facade 574 Facade: Red Wool buildcraft.transport.ItemFacade
594 BuildCraft|Transport item.Facade 575 Facade: Black Wool buildcraft.transport.ItemFacade
595 BuildCraft|Transport item.Facade 656 Facade: Block of Gold buildcraft.transport.ItemFacade
596 BuildCraft|Transport item.Facade 672 Facade: Block of Iron buildcraft.transport.ItemFacade
597 BuildCraft|Transport item.Facade 688 Facade: Stone Slab buildcraft.transport.ItemFacade
598 BuildCraft|Transport item.Facade 689 Facade: Sandstone Slab buildcraft.transport.ItemFacade
599 BuildCraft|Transport item.Facade 690 Facade: Wooden Slab buildcraft.transport.ItemFacade
600 BuildCraft|Transport item.Facade 691 Facade: Cobblestone Slab buildcraft.transport.ItemFacade
601 BuildCraft|Transport item.Facade 692 Facade: Bricks Slab buildcraft.transport.ItemFacade
602 BuildCraft|Transport item.Facade 693 Facade: Stone Bricks Slab buildcraft.transport.ItemFacade
603 BuildCraft|Transport item.Facade 694 Facade: Nether Brick Slab buildcraft.transport.ItemFacade
604 BuildCraft|Transport item.Facade 695 Facade: Quartz Slab buildcraft.transport.ItemFacade
605 BuildCraft|Transport item.Facade 720 Facade: Bricks buildcraft.transport.ItemFacade
606 BuildCraft|Transport item.Facade 736 Facade: TNT buildcraft.transport.ItemFacade
607 BuildCraft|Transport item.Facade 752 Facade: Bookshelf buildcraft.transport.ItemFacade
608 BuildCraft|Transport item.Facade 768 Facade: Moss Stone buildcraft.transport.ItemFacade
609 BuildCraft|Transport item.Facade 784 Facade: Obsidian buildcraft.transport.ItemFacade
610 BuildCraft|Transport item.Facade 896 Facade: Diamond Ore buildcraft.transport.ItemFacade
611 BuildCraft|Transport item.Facade 912 Facade: Block of Diamond buildcraft.transport.ItemFacade
612 BuildCraft|Transport item.Facade 928 Facade: Crafting Table buildcraft.transport.ItemFacade
613 BuildCraft|Transport item.Facade 1168 Facade: Redstone Ore buildcraft.transport.ItemFacade
614 BuildCraft|Transport item.Facade 1280 Facade: Snow buildcraft.transport.ItemFacade
615 BuildCraft|Transport item.Facade 1312 Facade: Clay buildcraft.transport.ItemFacade
616 BuildCraft|Transport item.Facade 1376 Facade: Pumpkin buildcraft.transport.ItemFacade
617 BuildCraft|Transport item.Facade 1392 Facade: Netherrack buildcraft.transport.ItemFacade
618 BuildCraft|Transport item.Facade 1408 Facade: Soul Sand buildcraft.transport.ItemFacade
619 BuildCraft|Transport item.Facade 1424 Facade: Glowstone buildcraft.transport.ItemFacade
620 BuildCraft|Transport item.Facade 1456 Facade: Jack 'o' Lantern buildcraft.transport.ItemFacade
621 BuildCraft|Transport item.Facade 1552 Facade: Stone Monster Egg buildcraft.transport.ItemFacade
622 BuildCraft|Transport item.Facade 1553 Facade: Cobblestone Monster Egg buildcraft.transport.ItemFacade
623 BuildCraft|Transport item.Facade 1554 Facade: Stone Brick Monster Egg buildcraft.transport.ItemFacade
624 BuildCraft|Transport item.Facade 1568 Facade: Stone Bricks buildcraft.transport.ItemFacade
625 BuildCraft|Transport item.Facade 1569 Facade: Mossy Stone Bricks buildcraft.transport.ItemFacade
626 BuildCraft|Transport item.Facade 1570 Facade: Cracked Stone Bricks buildcraft.transport.ItemFacade
627 BuildCraft|Transport item.Facade 1571 Facade: Chiseled Stone Bricks buildcraft.transport.ItemFacade
628 BuildCraft|Transport item.Facade 1584 Facade: Mushroom buildcraft.transport.ItemFacade
629 BuildCraft|Transport item.Facade 1648 Facade: Melon buildcraft.transport.ItemFacade
630 BuildCraft|Transport item.Facade 1760 Facade: Mycelium buildcraft.transport.ItemFacade
631 BuildCraft|Transport item.Facade 1792 Facade: Nether Brick buildcraft.transport.ItemFacade
632 BuildCraft|Transport item.Facade 1936 Facade: End Stone buildcraft.transport.ItemFacade
633 BuildCraft|Transport item.Facade 1968 Facade: Redstone Lamp buildcraft.transport.ItemFacade
634 BuildCraft|Transport item.Facade 2000 Facade: Oak Wood Slab buildcraft.transport.ItemFacade
635 BuildCraft|Transport item.Facade 2001 Facade: Spruce Wood Slab buildcraft.transport.ItemFacade
636 BuildCraft|Transport item.Facade 2002 Facade: Birch Wood Slab buildcraft.transport.ItemFacade
637 BuildCraft|Transport item.Facade 2003 Facade: Jungle Wood Slab buildcraft.transport.ItemFacade
638 BuildCraft|Transport item.Facade 2064 Facade: Emerald Ore buildcraft.transport.ItemFacade
639 BuildCraft|Transport item.Facade 2128 Facade: Block of Emerald buildcraft.transport.ItemFacade
640 BuildCraft|Transport item.Facade 2432 Facade: Block of Redstone buildcraft.transport.ItemFacade
641 BuildCraft|Transport item.Facade 2448 Facade: Nether Quartz Ore buildcraft.transport.ItemFacade
642 BuildCraft|Transport item.Facade 2480 Facade: Block of Quartz buildcraft.transport.ItemFacade
643 BuildCraft|Transport item.Facade 2481 Facade: Chiseled Quartz Block buildcraft.transport.ItemFacade
644 BuildCraft|Transport item.Facade 2482 Facade: Pillar Quartz Block buildcraft.transport.ItemFacade
645 BuildCraft|Transport item.PipePlug 0 Pipe Plug buildcraft.transport.ItemPlug
646 BuildCraft|Transport item.PipeItemsWood 0 Wooden Transport Pipe buildcraft.transport.ItemPipe
647 BuildCraft|Transport item.PipeItemsCobblestone 0 Cobblestone Transport Pipe buildcraft.transport.ItemPipe
648 BuildCraft|Transport item.PipeItemsStone 0 Stone Transport Pipe buildcraft.transport.ItemPipe
649 BuildCraft|Transport item.PipeItemsIron 0 Iron Transport Pipe buildcraft.transport.ItemPipe
650 BuildCraft|Transport item.PipeItemsGold 0 Golden Transport Pipe buildcraft.transport.ItemPipe
651 BuildCraft|Transport item.PipeItemsDiamond 0 Diamond Transport Pipe buildcraft.transport.ItemPipe
652 BuildCraft|Transport item.PipeItemsObsidian 0 Obsidian Transport Pipe buildcraft.transport.ItemPipe
653 BuildCraft|Transport item.PipeItemsEmerald 0 Emerald Transport Pipe buildcraft.transport.ItemPipe
654 BuildCraft|Transport item.PipeLiquidsWood 0 Wooden Waterproof Pipe buildcraft.transport.ItemPipe
655 BuildCraft|Transport item.PipeLiquidsCobblestone 0 Cobblestone Waterproof Pipe buildcraft.transport.ItemPipe
656 BuildCraft|Transport item.PipeLiquidsStone 0 Stone Waterproof Pipe buildcraft.transport.ItemPipe
657 BuildCraft|Transport item.PipeLiquidsIron 0 Iron Waterproof Pipe buildcraft.transport.ItemPipe
658 BuildCraft|Transport item.PipeLiquidsGold 0 Golden Waterproof Pipe buildcraft.transport.ItemPipe
659 BuildCraft|Transport item.PipeLiquidsEmerald 0 Emerald Waterproof Pipe buildcraft.transport.ItemPipe
660 BuildCraft|Transport item.PipePowerWood 0 Wooden Conductive Pipe buildcraft.transport.ItemPipe
661 BuildCraft|Transport item.PipePowerStone 0 Stone Conductive Pipe buildcraft.transport.ItemPipe
662 BuildCraft|Transport item.PipePowerGold 0 Golden Conductive Pipe buildcraft.transport.ItemPipe
663 BuildCraft|Transport item.PipeItemsVoid 0 Void Transport Pipe buildcraft.transport.ItemPipe
664 BuildCraft|Transport item.PipeLiquidsVoid 0 Void Waterproof Pipe buildcraft.transport.ItemPipe
665 BuildCraft|Transport item.PipeItemsSandstone 0 Sandstone Transport Pipe buildcraft.transport.ItemPipe
666 BuildCraft|Transport item.PipeLiquidsSandstone 0 Sandstone Waterproof Pipe buildcraft.transport.ItemPipe
667 BuildCraft|Transport item.PipeStructureCobblestone 0 Cobblestone Structure Pipe buildcraft.transport.ItemPipe
@@ -0,0 +1,13 @@
>>>>tile.stone
This is basic stone.
>>>>item.swordDiamond
This is a diamond sword.
Good at killing zombies and creepers.
>>>>item.pickaxeWood
Your very first pickaxe.
Not good at anything, beside getting splinters.
>>>>item.pickaxeDiamond
The ultimate pickaxe, made out of refined diamonds.
Shinnnnyyyy.
>>>>item.pickaxeIron
Sturdy, solid, efficient. Your best friend.
@@ -0,0 +1,5 @@
Minecraft,tile.stone,,,This is basic stone.
Minecraft,item.swordDiamond,,,This is a diamond sword.$Good at killing zombies and creepers.
Minecraft,item.pickaxeWood,,,"Your very first pickaxe.$Not good at anything, beside getting splinters."
Minecraft,item.pickaxeDiamond,,,"The ultimate pickaxe, made out of refined diamonds."
Minecraft,item.pickaxeIron,,,"Sturdy, solid, efficient. Your best friend."
1 Minecraft tile.stone This is basic stone.
2 Minecraft item.swordDiamond This is a diamond sword.$Good at killing zombies and creepers.
3 Minecraft item.pickaxeWood Your very first pickaxe.$Not good at anything, beside getting splinters.
4 Minecraft item.pickaxeDiamond The ultimate pickaxe, made out of refined diamonds.
5 Minecraft item.pickaxeIron Sturdy, solid, efficient. Your best friend.
+4 -8
View File
@@ -2,12 +2,7 @@ package mcp.mobius.waila.api;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
public interface IWailaBlock {
/*
@@ -15,7 +10,7 @@ public interface IWailaBlock {
* Return null if you want to use the default lookup system.
* You get the world, the player and the location of the block. With that, it is easy to gather information & tile entities
*/
ItemStack getWailaStack(World world, EntityPlayer player, TileEntity entity, Block block, MovingObjectPosition mop, IWailaConfigHandler config);
ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config);
/* Waila HUD is divided into 3 zones. The head corresponds to the item name,
* body to where you mostly want to put informations, and I reserve the tail for modname display
@@ -32,6 +27,7 @@ public interface IWailaBlock {
* Always return the currenttip is you don't want to modify the current zone.
*/
List<String> getWailaHead(ItemStack itemStack, World world, EntityPlayer player, TileEntity entity, Block block, MovingObjectPosition mop, List<String> currenttip, IWailaConfigHandler config);
List<String> getWailaBody(ItemStack itemStack, World world, EntityPlayer player, TileEntity entity, Block block, MovingObjectPosition mop, List<String> currenttip, IWailaConfigHandler config);
List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config);
List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config);
List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config);
}
@@ -23,4 +23,6 @@ public interface IWailaConfigHandler {
/* Returns the current value of an option (true/false) with a default value true if not set*/
public boolean getConfig(String key);
public void setConfig(String key, boolean value);
}
@@ -0,0 +1,20 @@
package mcp.mobius.waila.api;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
public interface IWailaDataAccessor {
World getWorld();
EntityPlayer getPlayer();
Block getBlock();
int getBlockID();
int getMetadata();
TileEntity getTileEntity();
MovingObjectPosition getPosition();
NBTTagCompound getNBTData();
int getNBTInteger(NBTTagCompound tag, String keyname);
}
+13
View File
@@ -3,11 +3,24 @@ package mcp.mobius.waila.api;
public interface IWailaRegistrar {
/* Add a config option in the section modname with displayed text configtext and access key keyname */
public void addConfig(String modname, String keyname, String configtext);
public void addConfigRemote(String modname, String keyname, String configtext);
/* Register a IWailaDataProvider for the given blockID, either for the Head section or the Body section */
public void registerHeadProvider (IWailaDataProvider dataProvider, int blockID);
public void registerBodyProvider (IWailaDataProvider dataProvider, int blockID);
public void registerTailProvider (IWailaDataProvider dataProvider, int blockID);
/* Register a stack overrider for the given blockID */
public void registerStackProvider(IWailaDataProvider dataProvider, int blockID);
public void registerStackProvider(IWailaDataProvider dataProvider, Class block);
/* Same thing, but works on a class hierarchy instead */
public void registerHeadProvider (IWailaDataProvider dataProvider, Class block);
public void registerBodyProvider (IWailaDataProvider dataProvider, Class block);
public void registerTailProvider (IWailaDataProvider dataProvider, Class block);
public void registerDocTextFile (String filename);
public void registerShortDataProvider (IWailaSummaryProvider dataProvider, Class item);
}
@@ -0,0 +1,21 @@
package mcp.mobius.waila.api;
import java.util.LinkedHashMap;
import net.minecraft.item.ItemStack;
public interface IWailaSummaryProvider {
/* This interface is used to control the display data in the description screen */
/* BASIC TOOLS & ITEMS DATA */
//EnumToolMaterial getMaterial(ItemStack stack);
//String getMaterialName(ItemStack stack);
//String getEffectiveBlock(ItemStack stack);
//int getHarvestLevel(ItemStack stack);
//float getEfficiencyOnProperMaterial(ItemStack stack);
//int getEnchantability(ItemStack stack);
//int getDamageVsEntity(ItemStack stack);
//int getDurability(ItemStack stack);
LinkedHashMap<String, String> getSummary(ItemStack stack, LinkedHashMap<String, String> currentSummary, IWailaConfigHandler config);
}
@@ -1,67 +0,0 @@
package mcp.mobius.waila.gui;
import java.util.EnumSet;
import org.lwjgl.input.Keyboard;
import codechicken.nei.NEIClientConfig;
import mcp.mobius.waila.addons.ConfigHandler;
import net.minecraft.client.Minecraft;
import net.minecraft.client.settings.KeyBinding;
import cpw.mods.fml.client.registry.KeyBindingRegistry.KeyHandler;
import cpw.mods.fml.common.TickType;
import cpw.mods.fml.common.registry.LanguageRegistry;
public class ConfigKeyHandler extends KeyHandler {
public ConfigKeyHandler()
{
super(new KeyBinding[]{
new KeyBinding("key.wailaconfig", Keyboard.KEY_NUMPAD0),
new KeyBinding("key.wailadisplay", Keyboard.KEY_NUMPAD1)
}, new boolean[]{
false,
false
});
LanguageRegistry.instance().addStringLocalization("key.wailaconfig", "[Waila] Config screen");
LanguageRegistry.instance().addStringLocalization("key.wailadisplay", "[Waila] Show/Hide");
}
@Override
public void keyDown(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd, boolean isRepeat) {
if (!tickEnd) return;
Minecraft mc = Minecraft.getMinecraft();
if (kb.keyDescription == "key.wailaconfig"){
if(mc.currentScreen == null)
mc.displayGuiScreen(new GuiConfigScreen(mc.currentScreen));
}
else if (kb.keyDescription == "key.wailadisplay" && ConfigHandler.instance().getConfig("waila.showmode")){
boolean status = NEIClientConfig.getSetting("options.inworld tooltips").getBooleanValue();
NEIClientConfig.getSetting("options.inworld tooltips").setBooleanValue(!status);
}
else if (kb.keyDescription == "key.wailadisplay" && !ConfigHandler.instance().getConfig("waila.showmode")){
NEIClientConfig.getSetting("options.inworld tooltips").setBooleanValue(true);
}
}
@Override
public void keyUp(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd) {
if (!tickEnd) return;
if (kb.keyDescription == "key.wailadisplay" && !ConfigHandler.instance().getConfig("waila.showmode")){
NEIClientConfig.getSetting("options.inworld tooltips").setBooleanValue(false);
}
}
@Override
public EnumSet<TickType> ticks() {
return EnumSet.of(TickType.CLIENT);
}
@Override
public String getLabel() {
return "Waila Config Screen Keybind";
}
}
@@ -1,41 +0,0 @@
package mcp.mobius.waila.gui;
import mcp.mobius.waila.gui.widget.Button2States;
import mcp.mobius.waila.gui.widget.ButtonChangeScreen;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
public class GuiBaseConfigScreen extends GuiScreen {
protected GuiScreen parentGui; // GUI we will return to in the case we are call from a GUI
public GuiBaseConfigScreen(GuiScreen _parentGui) {
this.parentGui = _parentGui;
}
@Override
/* Here we draw anything special, and super takes care of the buttons for us */
public void drawScreen(int i, int j, float f)
{
drawDefaultBackground();
super.drawScreen(i, j, f);
}
@Override
/* Here we handle key presses. Super will just close the gui on ESC, and we like it like that */
public void keyTyped(char keyChar, int keyID)
{
super.keyTyped(keyChar, keyID);
}
@Override
protected void actionPerformed(GuiButton guibutton)
{
if (guibutton instanceof ButtonChangeScreen)
((ButtonChangeScreen)guibutton).pressButton();
else if (guibutton instanceof Button2States)
((Button2States)guibutton).pressButton();
}
}
-23
View File
@@ -1,23 +0,0 @@
package mcp.mobius.waila.gui;
import mcp.mobius.waila.gui.widget.ButtonChangeScreen;
import mcp.mobius.waila.gui.widget.ContainerButtons;
import net.minecraft.client.gui.GuiScreen;
public class GuiConfigScreen extends GuiBaseConfigScreen {
public GuiConfigScreen(GuiScreen _parentGui) {
super(_parentGui);
}
@Override
/* We init the GUI data here (buttons, etc) */
public void initGui()
{
buttonList.add(new ButtonChangeScreen(200, width / 2 - 100, height / 6 + 168, "Done", null));
ContainerButtons container = new ContainerButtons(this, 5, height/2-10, width - 10, height);
container.addButton(new ButtonChangeScreen(201, "Waila", new GuiWailaConfig(this) ));
container.addButton(new ButtonChangeScreen(202, "Modules", new GuiModules(this)));
}
}
@@ -1,29 +0,0 @@
package mcp.mobius.waila.gui;
import mcp.mobius.waila.addons.ConfigHandler;
import mcp.mobius.waila.gui.widget.ButtonChangeScreen;
import mcp.mobius.waila.gui.widget.ButtonConfigOption;
import mcp.mobius.waila.gui.widget.ContainerButtons;
import net.minecraft.client.gui.GuiScreen;
public class GuiModuleOptions extends GuiBaseConfigScreen {
private String modName;
public GuiModuleOptions(GuiScreen _parentGui, String _modName) {
super(_parentGui);
this.modName = _modName;
}
@Override
public void initGui()
{
buttonList.add(new ButtonChangeScreen(200, width / 2 - 100, height / 6 + 168, "Back", this.parentGui));
ContainerButtons container = new ContainerButtons(this, 5, 0, width - 10, height);
for (String key:ConfigHandler.instance().getConfigKeys(this.modName).keySet()){
container.addButton(new ButtonConfigOption(-1, "No", "Yes", ConfigHandler.instance().getConfigKeys(this.modName).get(key), key ));
}
}
}
-31
View File
@@ -1,31 +0,0 @@
package mcp.mobius.waila.gui;
import java.util.HashMap;
import mcp.mobius.waila.addons.ConfigHandler;
import mcp.mobius.waila.gui.widget.ButtonChangeScreen;
import mcp.mobius.waila.gui.widget.ContainerButtons;
import net.minecraft.client.gui.GuiScreen;
public class GuiModules extends GuiBaseConfigScreen {
private HashMap<String, GuiScreen> screens = new HashMap<String, GuiScreen>();
public GuiModules(GuiScreen _parentGui) {
super(_parentGui);
for (String key : ConfigHandler.instance().getModuleNames())
screens.put(key, new GuiModuleOptions(this, key));
}
@Override
public void initGui()
{
buttonList.add(new ButtonChangeScreen(200, width / 2 - 100, height / 6 + 168, "Back", this.parentGui));
ContainerButtons container = new ContainerButtons(this, 5, 0, width - 10, height);
for (String key : ConfigHandler.instance().getModuleNames())
container.addButton(new ButtonChangeScreen(-1, key, screens.get(key)));
}
}
-28
View File
@@ -1,28 +0,0 @@
package mcp.mobius.waila.gui;
import mcp.mobius.waila.gui.widget.ButtonChangeScreen;
import mcp.mobius.waila.gui.widget.ButtonConfigNEI;
import mcp.mobius.waila.gui.widget.ButtonConfigOption;
import mcp.mobius.waila.gui.widget.ContainerButtons;
import net.minecraft.client.gui.GuiScreen;
public class GuiWailaConfig extends GuiBaseConfigScreen {
public GuiWailaConfig(GuiScreen _parentGui) {
super(_parentGui);
// TODO Auto-generated constructor stub
}
@Override
public void initGui()
{
buttonList.add(new ButtonChangeScreen(200, width / 2 - 100, height / 6 + 168, "Back", this.parentGui));
ContainerButtons container = new ContainerButtons(this, 5, 0, width - 10, height);
container.addButton(new ButtonConfigNEI(-1, "Hidden", "Shown", "Show/Hide Waila", "options.inworld tooltips" ));
container.addButton(new ButtonConfigOption(-1, "Maintened", "Toggled", "Toggle/Maintened", "waila.showmode" ));
container.addButton(new ButtonConfigOption(-1, "Hidden", "Visible", "Show ID:Metadata", "waila.showmetadata", false ));
}
}
+101
View File
@@ -0,0 +1,101 @@
package mcp.mobius.waila.gui.events;
import net.minecraft.client.Minecraft;
import org.lwjgl.input.Mouse;
import mcp.mobius.waila.gui.interfaces.IWidget;
public class MouseEvent {
public enum EventType {NONE, MOVE, CLICK, RELEASED, DRAG, WHEEL, ENTER, LEAVE};
public long timestamp;
public Minecraft mc;
public IWidget srcwidget;
public IWidget trgwidget;
public double x,y;
public int z;
public static int buttonCount = Mouse.getButtonCount();
public boolean[] buttonState = new boolean[buttonCount];
public EventType type;
public int button = -1;
public MouseEvent(IWidget widget){
this.srcwidget = widget;
this.timestamp = System.nanoTime();
this.mc = Minecraft.getMinecraft();
this.x = (double)Mouse.getEventX() * (double)this.srcwidget.getSize().getX() / (double)this.mc.displayWidth;
this.y = (double)this.srcwidget.getSize().getY() - (double)Mouse.getEventY() * (double)this.srcwidget.getSize().getY() / (double)this.mc.displayHeight - 1.0;
//this.x = Mouse.getEventX();
//this.y = Mouse.getEventY();
//System.out.printf("%s %s\n", this.x, this.y);
//this.z = Mouse.getEventDWheel();
this.z = Mouse.getDWheel();
for (int i = 0; i < buttonCount; i++)
buttonState[i] = Mouse.isButtonDown(i);
this.trgwidget = this.srcwidget.getWidgetAtCoordinates(this.x, this.y);
}
public String toString(){
String retstring = String.format("MOUSE %s : [%s] [ %.2f %.2f %d ] [", this.type, this.timestamp, this.x, this.y, this.z);
if (this.buttonCount < 5)
for (int i = 0; i < this.buttonCount; i++)
retstring += String.format(" %s ", this.buttonState[i]);
else
for (int i = 0; i < 5; i++)
retstring += String.format(" %s ", this.buttonState[i]);
retstring += "]";
if (this.button != -1)
retstring += String.format(" Button %s", this.button);
return retstring;
}
// Returns the event type based on the previous mouse event.
public EventType getEventType(MouseEvent me){
this.type = EventType.NONE;
if (this.trgwidget != me.trgwidget){
this.type = EventType.ENTER;
return this.type;
}
if (this.z != 0){
this.type = EventType.WHEEL;
return this.type;
}
for (int i = 0; i < this.buttonCount; i++){
if (this.buttonState[i] != me.buttonState[i]){
if (this.buttonState[i] == true)
this.type = EventType.CLICK;
else
this.type = EventType.RELEASED;
this.button = i;
return this.type;
}
}
//MOVE & DRAG EVENTS (we moved the mouse and button 0 was clicked or not)
if ((this.x != me.x) || (this.y != me.y)){
if (this.buttonState[0] == true)
this.type = EventType.DRAG;
else
this.type = EventType.MOVE;
return this.type;
}
return this.type;
}
}
@@ -0,0 +1,37 @@
package mcp.mobius.waila.gui.helpers;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import com.google.common.collect.Lists;
public class ReverseIterator<T> implements Iterable<T> {
private ListIterator<T> listIterator;
public ReverseIterator(Collection<T> wrappedList) {
List list = Lists.newArrayList(wrappedList);
this.listIterator = list.listIterator(wrappedList.size());
}
public Iterator<T> iterator() {
return new Iterator<T>() {
public boolean hasNext() {
return listIterator.hasPrevious();
}
public T next() {
return listIterator.previous();
}
public void remove() {
listIterator.remove();
}
};
}
}
@@ -0,0 +1,7 @@
package mcp.mobius.waila.gui.helpers;
public class UIException extends RuntimeException {
public UIException(String message) {
super(message);
}
}
@@ -0,0 +1,58 @@
package mcp.mobius.waila.gui.helpers;
import org.lwjgl.opengl.GL11;
import net.minecraft.client.renderer.Tessellator;
public class UIHelper {
public static void drawTexture(int posX, int posY, int sizeX, int sizeY)
{
UIHelper.drawTexture(posX, posY, sizeX, sizeY, 0, 0, 256, 256);
}
public static void drawTexture(int posX, int posY, int sizeX, int sizeY, int texU, int texV, int texSizeU, int texSizeV)
{
float zLevel = 0.0F;
float f = 0.00390625F;
Tessellator tess = Tessellator.instance;
tess.startDrawingQuads();
tess.addVertexWithUV((double)(posX + 0), (double)(posY + sizeY), (double)zLevel, texU*f, (texV + texSizeV)*f);
tess.addVertexWithUV((double)(posX + sizeX), (double)(posY + sizeY), (double)zLevel, (texU + texSizeU)*f, (texV + texSizeV)*f);
tess.addVertexWithUV((double)(posX + sizeX), (double)(posY + 0), (double)zLevel, (texU + texSizeU)*f, texV*f);
tess.addVertexWithUV((double)(posX + 0), (double)(posY + 0), (double)zLevel, texU*f, texV*f);
tess.draw();
}
public static void drawGradientRect(int minx, int miny, int maxx, int maxy, int zlevel, int color1, int color2)
{
float alpha1 = (float)(color1 >> 24 & 255) / 255.0F;
float red1 = (float)(color1 >> 16 & 255) / 255.0F;
float green1 = (float)(color1 >> 8 & 255) / 255.0F;
float blue1 = (float)(color1 & 255) / 255.0F;
float alpha2 = (float)(color2 >> 24 & 255) / 255.0F;
float red2 = (float)(color2 >> 16 & 255) / 255.0F;
float green2 = (float)(color2 >> 8 & 255) / 255.0F;
float blue2 = (float)(color2 & 255) / 255.0F;
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_ALPHA_TEST);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glShadeModel(GL11.GL_SMOOTH);
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.setColorRGBA_F(red1, green1, blue1, alpha1);
tessellator.addVertex((double)maxx, (double)miny, (double)zlevel);
tessellator.addVertex((double)minx, (double)miny, (double)zlevel);
tessellator.setColorRGBA_F(red2, green2, blue2, alpha2);
tessellator.addVertex((double)minx, (double)maxy, (double)zlevel);
tessellator.addVertex((double)maxx, (double)maxy, (double)zlevel);
tessellator.draw();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glEnable(GL11.GL_TEXTURE_2D);
}
}
@@ -0,0 +1,8 @@
package mcp.mobius.waila.gui.interfaces;
public enum CType {
REL_X,
REL_Y,
RELXY,
ABSXY;
}
@@ -0,0 +1,64 @@
package mcp.mobius.waila.gui.interfaces;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.widgets.WidgetGeometry;
import org.lwjgl.util.Point;
public interface IWidget {
// Should all the coordinates, sizes, etc be % or absolute values ?
// Should we allow 2 methods for an absolute referencing (screen pos) and relative one (parent pos) ?
IWidget getParent();
void setParent(IWidget parent);
IWidget setGeometry(WidgetGeometry geom);
WidgetGeometry getGeometry();
IWidget setPos(double x, double y);
IWidget setPos(double x, double y, boolean fracX, boolean fracY);
IWidget setSize(double sx, double sy);
IWidget setSize(double sx, double sy, boolean fracX, boolean fracY);
IWidget adjustSize();
Point getPos();
Point getSize();
int getRight();
int getLeft();
int getTop();
int getBottom();
void draw();
void draw(Point pos);
void show();
void hide();
void setAlpha(float alpha);
float getAlpha();
boolean shouldRender();
IWidget addWidget(String name, IWidget widget);
IWidget addWidget(String name, IWidget widget, RenderPriority priority);
IWidget getWidget(String name);
IWidget delWidget(String name);
IWidget getWidgetAtCoordinates(double posX, double posY);
boolean isWidgetAtCoordinates(double posx, double posy);
void handleMouseInput();
void onMouseClick(MouseEvent event);
void onMouseDrag(MouseEvent event);
void onMouseMove(MouseEvent event);
void onMouseRelease(MouseEvent event);
void onMouseWheel(MouseEvent event);
void onMouseEnter(MouseEvent event);
void onMouseLeave(MouseEvent event);
void emit(Signal signal, Object... params);
void onWidgetEvent(IWidget srcwidget, Signal signal, Object... params);
//boolean onMouseEnter();
//boolean onMouseMoved();
//boolean onMouseLeave();
}
@@ -0,0 +1,7 @@
package mcp.mobius.waila.gui.interfaces;
public enum RenderPriority {
LOW,
MEDIUM,
HIGH;
}
@@ -0,0 +1,8 @@
package mcp.mobius.waila.gui.interfaces;
public enum Signal {
DRAGGED,
CLICKED,
VALUE_CHANGED,
GEOM_CHANGED;
}
@@ -0,0 +1,5 @@
package mcp.mobius.waila.gui.interfaces;
public enum WAlign {
LEFT,CENTER,RIGHT,TOP,BOTTOM;
}
@@ -0,0 +1,90 @@
package mcp.mobius.waila.gui.screens;
import java.util.HashMap;
import org.lwjgl.input.Mouse;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.widgets.LayoutCanvas;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
public abstract class ScreenBase extends GuiScreen{
protected GuiScreen parent; // Return screen if available.
protected Minecraft mc; // Minecraft instance
protected HashMap<String, IWidget> widgets; // List of widgets on this ui
public ScreenBase(GuiScreen parent) {
this.parent = parent;
this.mc = Minecraft.getMinecraft();
this.widgets = new HashMap<String, IWidget>();
this.addWidget("canvas", new LayoutCanvas());
Mouse.getDWheel(); // We init the DWheel method (getDWheel returns the value since the last call, so we have to call it once on ui creation)
}
/////////////////////
// WIDGET HANDLING //
/////////////////////
public IWidget addWidget(String name, IWidget widget){
this.widgets.put(name, widget);
return this.getWidget(name);
}
public IWidget getWidget(String name){
return this.widgets.get(name);
}
public IWidget delWidget(String name){
IWidget widget = this.getWidget(name);
this.widgets.remove(widget);
return widget;
}
public IWidget getRoot(){
return this.getWidget("canvas");
}
/////////////////////
// DRAWING METHODS //
/////////////////////
@Override
public void drawScreen(int i, int j, float f) {
this.drawDefaultBackground(); //The dark background common to most of the UIs
super.drawScreen(i, j, f);
for (IWidget widget: this.widgets.values())
widget.draw();
}
// Used to easily display a UI without having to mess with mc handle.
public void display(){
this.mc.displayGuiScreen(this);
}
/////////////////////
// INPUT METHODS //
/////////////////////
//Keyboard handling. Basic one is just returning to the previous UI when Esc is pressed
@Override
public void keyTyped(char keyChar, int keyID)
{
if (keyID == 1)
if (this.parent == null){
this.mc.displayGuiScreen((GuiScreen)null);
this.mc.setIngameFocus();
} else
this.mc.displayGuiScreen(this.parent);
}
@Override
public void handleMouseInput()
{
this.getRoot().handleMouseInput();
}
}
@@ -0,0 +1,32 @@
package mcp.mobius.waila.gui.screens.config;
import mcp.mobius.waila.Constants;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.WAlign;
import mcp.mobius.waila.gui.screens.ScreenBase;
import mcp.mobius.waila.gui.widgets.LayoutBase;
import mcp.mobius.waila.gui.widgets.WidgetGeometry;
import mcp.mobius.waila.gui.widgets.buttons.ButtonBooleanConfig;
import mcp.mobius.waila.gui.widgets.buttons.ButtonContainer;
import mcp.mobius.waila.gui.widgets.buttons.ButtonContainerLabel;
import mcp.mobius.waila.gui.widgets.buttons.ButtonScreenChange;
import net.minecraft.client.gui.GuiScreen;
public class ScreenConfig extends ScreenBase {
public ScreenConfig(GuiScreen parent){
super(parent);
this.getRoot().addWidget("ButtonContainer", new ButtonContainer(this.getRoot(), 2, 100, 25.0));
this.getRoot().getWidget("ButtonContainer").setGeometry(new WidgetGeometry(50.0, 50.0, 50.0, 30.0, CType.RELXY, CType.REL_X, WAlign.CENTER, WAlign.CENTER));
ButtonContainer buttonContainer = ((ButtonContainer)this.getRoot().getWidget("ButtonContainer"));
buttonContainer.addButton( new ButtonScreenChange(this.getRoot(), "Waila", new ScreenWailaConfig(this)));
buttonContainer.addButton( new ButtonScreenChange(this.getRoot(), "Modules", new ScreenModuleChoice(this)));
this.getRoot().addWidget("LayoutBack", new LayoutBase(this.getRoot()));
this.getRoot().getWidget("LayoutBack").setGeometry(new WidgetGeometry(0.0, 80.0, 100.0, 20.0, CType.RELXY, CType.RELXY));
this.getRoot().getWidget("LayoutBack").addWidget("ButtonBack", new ButtonScreenChange(this.getRoot().getWidget("LayoutBack"), "Back", this.parent));
this.getRoot().getWidget("LayoutBack").getWidget("ButtonBack").setGeometry(new WidgetGeometry(50.0, 50.0, 100.0, 20.0, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
}
}
@@ -0,0 +1,254 @@
package mcp.mobius.waila.gui.screens.config;
import org.lwjgl.util.Point;
import mcp.mobius.waila.Constants;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.addons.ConfigHandler;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.interfaces.RenderPriority;
import mcp.mobius.waila.gui.interfaces.Signal;
import mcp.mobius.waila.gui.interfaces.WAlign;
import mcp.mobius.waila.gui.screens.ScreenBase;
import mcp.mobius.waila.gui.widgets.LabelFixedFont;
import mcp.mobius.waila.gui.widgets.LayoutBase;
import mcp.mobius.waila.gui.widgets.LayoutMargin;
import mcp.mobius.waila.gui.widgets.WidgetGeometry;
import mcp.mobius.waila.gui.widgets.buttons.ButtonLabel;
import mcp.mobius.waila.gui.widgets.buttons.ButtonScreenChange;
import mcp.mobius.waila.gui.widgets.movable.PictureMovableRC;
import net.minecraft.client.gui.GuiScreen;
public class ScreenHUDConfig extends ScreenBase {
private class EventCanvas extends LayoutBase{
IWidget draggedWidget = null;
float scale;
public EventCanvas(IWidget parent, GuiScreen prevScreen){
super(parent);
this.setGeometry(new WidgetGeometry(0.0,0.0,100.0,100.0,CType.RELXY, CType.RELXY));
/*
IWidget layoutX = this.addWidget("LayoutX", new LayoutBase(this));
layoutX.setGeometry(new WidgetGeometry(40.0,50.0,20,60, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
layoutX.addWidget("ButtonXAdd", new ButtonLabel(null, "+")).setGeometry(new WidgetGeometry(0.0, 0.0,20,20, CType.RELXY, CType.ABSXY, WAlign.LEFT, WAlign.TOP));
layoutX.addWidget("ButtonXSub", new ButtonLabel(null, "-")).setGeometry(new WidgetGeometry(0.0,100.0,20,20, CType.RELXY, CType.ABSXY, WAlign.LEFT, WAlign.BOTTOM));
layoutX.addWidget("ValueDisplayX", new LabelFixedFont(null, "0")).setGeometry(new WidgetGeometry(50.0,50.0,20,20, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
*/
/*
IWidget layoutY = this.addWidget("LayoutY", new LayoutBase(this));
layoutY.setGeometry(new WidgetGeometry(50.0,50.0,20,60,CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
layoutY.addWidget("ButtonYAdd", new ButtonLabel(null, "+")).setGeometry(new WidgetGeometry(0.0, 0.0,20,20, CType.RELXY, CType.ABSXY, WAlign.LEFT, WAlign.TOP));
layoutY.addWidget("ButtonYSub", new ButtonLabel(null, "-")).setGeometry(new WidgetGeometry(0.0,100.0,20,20, CType.RELXY, CType.ABSXY, WAlign.LEFT, WAlign.BOTTOM));
layoutY.addWidget("ValueDisplayY", new LabelFixedFont(null, "0")).setGeometry(new WidgetGeometry(50.0,50.0,20,20, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
*/
double picX = ConfigHandler.instance().getConfigInt(Constants.CFG_WAILA_POSX) / 100.0;
double picY = ConfigHandler.instance().getConfigInt(Constants.CFG_WAILA_POSY) / 100.0;
float picAlpha = ConfigHandler.instance().getConfigInt(Constants.CFG_WAILA_ALPHA) / 100.0f;
scale = ConfigHandler.instance().getConfigInt(Constants.CFG_WAILA_SCALE) / 100.0f;
int picSX = (int)(180 / this.rez.getScaleFactor() * scale), picSY = (int)(62 / this.rez.getScaleFactor() * scale);
this.addWidget("Layout", new LayoutMargin(null), RenderPriority.HIGH);
((LayoutMargin)this.getWidget("Layout")).setMargins(picSX/2, picSX/2, picSY/2, picSY/2);
this.getWidget("Layout").addWidget("Picture", new PictureMovableRC(null, "waila:textures/config_template.png")).setGeometry(new WidgetGeometry(picX, picY, picSX, picSY,CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
this.addWidget("TextTuto1", new LabelFixedFont(null, "Drag the HUD to setup its position.")).setGeometry(new WidgetGeometry(50.0, 30.0,20,20, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));;
IWidget layoutX = this.addWidget("LayoutX", new LayoutBase(this));
layoutX.setGeometry(new WidgetGeometry(35.0,50.0,20,80,CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
layoutX.addWidget("LabelX", new LabelFixedFont(null, "X")) .setGeometry(new WidgetGeometry(50.0, 0.0,20,20, CType.REL_X, CType.ABSXY, WAlign.CENTER, WAlign.TOP));
layoutX.addWidget("ButtonXAdd", new ButtonLabel(null, "+")) .setGeometry(new WidgetGeometry(0.0, 10.0,20,20, CType.REL_X, CType.ABSXY, WAlign.LEFT, WAlign.TOP));
layoutX.addWidget("ValueDisplayX", new LabelFixedFont(null, "0")) .setGeometry(new WidgetGeometry(50.0, 40.0,20,20, CType.REL_X, CType.ABSXY, WAlign.CENTER, WAlign.TOP));
layoutX.addWidget("ButtonXSub", new ButtonLabel(null, "-")) .setGeometry(new WidgetGeometry(0.0, 60.0,20,20, CType.REL_X, CType.ABSXY, WAlign.LEFT, WAlign.TOP));
IWidget layoutY = this.addWidget("LayoutY", new LayoutBase(this));
layoutY.setGeometry(new WidgetGeometry(45.0,50.0,20,80,CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
layoutY.addWidget("LabelY", new LabelFixedFont(null, "Y")) .setGeometry(new WidgetGeometry(50.0, 0.0,20,20, CType.REL_X, CType.ABSXY, WAlign.CENTER, WAlign.TOP));
layoutY.addWidget("ButtonYAdd", new ButtonLabel(null, "+")) .setGeometry(new WidgetGeometry(0.0, 10.0,20,20, CType.REL_X, CType.ABSXY, WAlign.LEFT, WAlign.TOP));
layoutY.addWidget("ValueDisplayY", new LabelFixedFont(null, "0")) .setGeometry(new WidgetGeometry(50.0, 40.0,20,20, CType.REL_X, CType.ABSXY, WAlign.CENTER, WAlign.TOP));
layoutY.addWidget("ButtonYSub", new ButtonLabel(null, "-")) .setGeometry(new WidgetGeometry(0.0, 60.0,20,20, CType.REL_X, CType.ABSXY, WAlign.LEFT, WAlign.TOP));
IWidget layoutAlpha = this.addWidget("LayoutAlpha", new LayoutBase(this));
layoutAlpha.setGeometry(new WidgetGeometry(55.0,50.0,20,80,CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
layoutAlpha.addWidget("LabelAlpha", new LabelFixedFont(null, "Alpha")).setGeometry(new WidgetGeometry(50.0, 0.0,20,20, CType.REL_X, CType.ABSXY, WAlign.CENTER, WAlign.TOP));
layoutAlpha.addWidget("ButtonAlphaAdd", new ButtonLabel(null, "+")) .setGeometry(new WidgetGeometry(0.0, 10.0,20,20, CType.REL_X, CType.ABSXY, WAlign.LEFT, WAlign.TOP));
layoutAlpha.addWidget("ValueDisplayAlpha", new LabelFixedFont(null, "0")) .setGeometry(new WidgetGeometry(50.0, 40.0,20,20, CType.REL_X, CType.ABSXY, WAlign.CENTER, WAlign.TOP));
layoutAlpha.addWidget("ButtonAlphaSub", new ButtonLabel(null, "-")) .setGeometry(new WidgetGeometry(0.0, 60.0,20,20, CType.REL_X, CType.ABSXY, WAlign.LEFT, WAlign.TOP));
IWidget layoutScale = this.addWidget("LayoutScale", new LayoutBase(this));
layoutScale.setGeometry(new WidgetGeometry(65.0,50.0,20,80,CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
layoutScale.addWidget("LabelScale", new LabelFixedFont(null, "Scale")).setGeometry(new WidgetGeometry(50.0, 0.0,20,20, CType.REL_X, CType.ABSXY, WAlign.CENTER, WAlign.TOP));
layoutScale.addWidget("ButtonScaleAdd", new ButtonLabel(null, "+")) .setGeometry(new WidgetGeometry(0.0, 10.0,20,20, CType.REL_X, CType.ABSXY, WAlign.LEFT, WAlign.TOP));
layoutScale.addWidget("ValueDisplayScale", new LabelFixedFont(null, "0")) .setGeometry(new WidgetGeometry(50.0, 40.0,20,20, CType.REL_X, CType.ABSXY, WAlign.CENTER, WAlign.TOP));
layoutScale.addWidget("ButtonScaleSub", new ButtonLabel(null, "-")) .setGeometry(new WidgetGeometry(0.0, 60.0,20,20, CType.REL_X, CType.ABSXY, WAlign.LEFT, WAlign.TOP));
this.addWidget("ButtonCancel", new ButtonScreenChange(null, "Cancel", prevScreen)).setGeometry(new WidgetGeometry(70.0,97.0,75,20, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.BOTTOM));
this.addWidget("ButtonOk", new ButtonScreenChange(null, "Ok", prevScreen)).setGeometry(new WidgetGeometry(30.0,97.0,75,20, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.BOTTOM));
this.addWidget("ButtonDefault",new ButtonLabel(null, "Default")).setGeometry(new WidgetGeometry(50.0,97.0,75,20, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.BOTTOM));
((LabelFixedFont)this.getWidget("LayoutX").getWidget("ValueDisplayX")).setText(String.format("%.2f", picX));
((LabelFixedFont)this.getWidget("LayoutY").getWidget("ValueDisplayY")).setText(String.format("%.2f", picY));
((LabelFixedFont)this.getWidget("LayoutAlpha").getWidget("ValueDisplayAlpha")).setText(String.format("%.2f", picAlpha));
((LabelFixedFont)this.getWidget("LayoutScale").getWidget("ValueDisplayScale")).setText(String.format("%.2f", scale));
this.getWidget("Layout").getWidget("Picture").setAlpha(picAlpha);
}
@Override
public IWidget getWidgetAtCoordinates(double posX, double posY){
if (this.getWidget("Layout").getWidget("Picture").isWidgetAtCoordinates(posX, posY))
return this.getWidget("Layout").getWidget("Picture");
else
return super.getWidgetAtCoordinates(posX, posY);
}
@Override
public void onMouseClick(MouseEvent event){
//System.out.println(this.getWidgetAtCoordinates(event.x, event.y));
if ((event.button == 0) && (this.getWidget("Layout").getWidget("Picture").isWidgetAtCoordinates(event.x, event.y))){
this.getWidget("Layout").getWidget("Picture").onMouseClick(event);
this.draggedWidget = this.getWidget("Layout").getWidget("Picture");
}
else
super.onMouseClick(event);
}
@Override
public void onMouseDrag(MouseEvent event){
//if ((this.getWidgetAtCoordinates(event.x, event.y) == this) && (this.draggedWidget != null)){
if (this.draggedWidget != null){
this.draggedWidget.onMouseDrag(event);
} else {
super.onMouseDrag(event);
}
}
@Override
public void onMouseRelease(MouseEvent event){
if (event.button == 0)
this.draggedWidget = null;
super.onMouseRelease(event);
}
private void updateData(){
((LabelFixedFont)this.getWidget("LayoutX").getWidget("ValueDisplayX")).setText(String.format("%.2f", this.getWidget("Layout").getWidget("Picture").getGeometry().getRawPos().getX()));
((LabelFixedFont)this.getWidget("LayoutY").getWidget("ValueDisplayY")).setText(String.format("%.2f", this.getWidget("Layout").getWidget("Picture").getGeometry().getRawPos().getY()));
((LabelFixedFont)this.getWidget("LayoutAlpha").getWidget("ValueDisplayAlpha")).setText(String.format("%.2f", this.getWidget("Layout").getWidget("Picture").getAlpha()));
((LabelFixedFont)this.getWidget("LayoutScale").getWidget("ValueDisplayScale")).setText(String.format("%.2f", scale));
}
@Override
public void onWidgetEvent(IWidget srcwidget, Signal signal, Object... params){
if (this.getWidget("Layout") == null) return;
if (srcwidget.equals(this.getWidget("Layout").getWidget("Picture")) && signal == Signal.DRAGGED){
this.draggedWidget = this.getWidget("Layout").getWidget("Picture");
this.updateData();
}
if (signal == Signal.CLICKED){
IWidget picture = this.getWidget("Layout").getWidget("Picture");
double pictureX = picture.getGeometry().getRawPos().getX();
double pictureY = picture.getGeometry().getRawPos().getY();
double pixelToPercentX = 100.0D / picture.getParent().getSize().getX();
double pixelToPercentY = 100.0D / picture.getParent().getSize().getY();
if (srcwidget.equals(this.getWidget("LayoutX").getWidget("ButtonXAdd"))){
double newPos = Math.min(pictureX + pixelToPercentX, 100.0);
picture.setPos(newPos, pictureY);
}
if (srcwidget.equals(this.getWidget("LayoutX").getWidget("ButtonXSub"))){
double newPos = Math.max(pictureX - pixelToPercentX, 0.0);
picture.setPos(newPos, pictureY);
}
if (srcwidget.equals(this.getWidget("LayoutY").getWidget("ButtonYAdd"))){
double newPos = Math.min(pictureY + pixelToPercentY, 100.0);
picture.setPos(pictureX, newPos);
}
if (srcwidget.equals(this.getWidget("LayoutY").getWidget("ButtonYSub"))){
double newPos = Math.max(pictureY - pixelToPercentY, 0.0);
picture.setPos(pictureX, newPos);
}
if (srcwidget.equals(this.getWidget("LayoutAlpha").getWidget("ButtonAlphaAdd")))
picture.setAlpha(Math.min(picture.getAlpha() + 0.05f, 1.0f));
if (srcwidget.equals(this.getWidget("LayoutAlpha").getWidget("ButtonAlphaSub")))
picture.setAlpha(Math.max(picture.getAlpha() - 0.05f, 0.0f));
if (srcwidget.equals(this.getWidget("LayoutScale").getWidget("ButtonScaleAdd"))){
scale += 0.05f;
scale = Math.max(0.10f, scale);
scale = Math.min(2.00f, scale);
int picSX = (int)(180 / this.rez.getScaleFactor() * scale), picSY = (int)(62 / this.rez.getScaleFactor() * scale);
picture.setSize(picSX, picSY);
((LayoutMargin)this.getWidget("Layout")).setMargins(picSX/2, picSX/2, picSY/2, picSY/2);
}
if (srcwidget.equals(this.getWidget("LayoutScale").getWidget("ButtonScaleSub"))){
scale -= 0.05f;
scale = Math.max(0.10f, scale);
scale = Math.min(2.00f, scale);
int picSX = (int)(180 / this.rez.getScaleFactor() * scale), picSY = (int)(62 / this.rez.getScaleFactor() * scale);
picture.setSize(picSX, picSY);
((LayoutMargin)this.getWidget("Layout")).setMargins(picSX/2, picSX/2, picSY/2, picSY/2);
}
//picture.emit(Signal.DRAGGED, picture.getPos());
this.updateData();
}
if (srcwidget.equals(this.getWidget("ButtonOk")) && signal == Signal.CLICKED){
ConfigHandler.instance().setConfigInt(Constants.CFG_WAILA_POSX, (int)(this.getWidget("Layout").getWidget("Picture").getGeometry().getRawPos().getX() * 100.0));
ConfigHandler.instance().setConfigInt(Constants.CFG_WAILA_POSY, (int)(this.getWidget("Layout").getWidget("Picture").getGeometry().getRawPos().getY() * 100.0));
ConfigHandler.instance().setConfigInt(Constants.CFG_WAILA_ALPHA, (int)(this.getWidget("Layout").getWidget("Picture").getAlpha() * 100.0));
ConfigHandler.instance().setConfigInt(Constants.CFG_WAILA_SCALE, (int)(scale * 100.0));
mod_Waila.alpha = ConfigHandler.instance().getConfigInt(Constants.CFG_WAILA_ALPHA);
mod_Waila.posX = ConfigHandler.instance().getConfigInt(Constants.CFG_WAILA_POSX);
mod_Waila.posY = ConfigHandler.instance().getConfigInt(Constants.CFG_WAILA_POSY);
mod_Waila.scale = ConfigHandler.instance().getConfigInt(Constants.CFG_WAILA_SCALE) / 100.0f;
mod_Waila.updateColors();
}
if (srcwidget.equals(this.getWidget("ButtonDefault")) && signal == Signal.CLICKED){
this.getWidget("Layout").getWidget("Picture").setPos(50.0, 1.0);
this.getWidget("Layout").getWidget("Picture").setAlpha(0.8f);
this.scale = 1.0f;
int picSX = (int)(180 / this.rez.getScaleFactor() * scale), picSY = (int)(62 / this.rez.getScaleFactor() * scale);
this.getWidget("Layout").getWidget("Picture").setSize(picSX, picSY);
((LayoutMargin)this.getWidget("Layout")).setMargins(picSX/2, picSX/2, picSY/2, picSY/2);
this.updateData();
}
}
}
public ScreenHUDConfig(GuiScreen parent){
super(parent);
this.getRoot().addWidget("EventCanvas", new EventCanvas(this.getRoot(), parent));
}
}
@@ -0,0 +1,32 @@
package mcp.mobius.waila.gui.screens.config;
import mcp.mobius.waila.addons.ConfigHandler;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.WAlign;
import mcp.mobius.waila.gui.screens.ScreenBase;
import mcp.mobius.waila.gui.widgets.LayoutBase;
import mcp.mobius.waila.gui.widgets.WidgetGeometry;
import mcp.mobius.waila.gui.widgets.buttons.ButtonContainer;
import mcp.mobius.waila.gui.widgets.buttons.ButtonScreenChange;
import mcp.mobius.waila.gui_old.widget_old.ButtonChangeScreen;
import net.minecraft.client.gui.GuiScreen;
public class ScreenModuleChoice extends ScreenBase {
public ScreenModuleChoice(GuiScreen parent){
super(parent);
this.getRoot().addWidget("ButtonContainer", new ButtonContainer(this.getRoot(), 3, 100, 25.0));
this.getRoot().getWidget("ButtonContainer").setGeometry(new WidgetGeometry(50.0, 20.0, 400.0, 60.0, CType.RELXY, CType.REL_Y, WAlign.CENTER, WAlign.TOP));
ButtonContainer buttonContainer = ((ButtonContainer)this.getRoot().getWidget("ButtonContainer"));
for (String key : ConfigHandler.instance().getModuleNames())
buttonContainer.addButton( new ButtonScreenChange(this.getRoot(), key, new ScreenModuleConfig(this, key)));
this.getRoot().addWidget("LayoutBack", new LayoutBase(this.getRoot()));
this.getRoot().getWidget("LayoutBack").setGeometry(new WidgetGeometry(0.0, 80.0, 100.0, 20.0, CType.RELXY, CType.RELXY));
this.getRoot().getWidget("LayoutBack").addWidget("ButtonBack", new ButtonScreenChange(this.getRoot().getWidget("LayoutBack"), "Back", this.parent));
this.getRoot().getWidget("LayoutBack").getWidget("ButtonBack").setGeometry(new WidgetGeometry(50.0, 50.0, 100.0, 20.0, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
}
}
@@ -0,0 +1,49 @@
package mcp.mobius.waila.gui.screens.config;
import mcp.mobius.waila.addons.ConfigHandler;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.WAlign;
import mcp.mobius.waila.gui.screens.ScreenBase;
import mcp.mobius.waila.gui.widgets.LayoutBase;
import mcp.mobius.waila.gui.widgets.WidgetGeometry;
import mcp.mobius.waila.gui.widgets.buttons.ButtonBooleanConfig;
import mcp.mobius.waila.gui.widgets.buttons.ButtonBooleanConfigRemote;
import mcp.mobius.waila.gui.widgets.buttons.ButtonContainer;
import mcp.mobius.waila.gui.widgets.buttons.ButtonContainerLabel;
import mcp.mobius.waila.gui.widgets.buttons.ButtonScreenChange;
import mcp.mobius.waila.gui_old.widget_old.ButtonConfigOption;
import mcp.mobius.waila.gui_old.widget_old.ButtonConfigRemote;
import net.minecraft.client.gui.GuiScreen;
public class ScreenModuleConfig extends ScreenBase {
private String modName;
public ScreenModuleConfig(GuiScreen parent, String modname){
super(parent);
this.modName = modname;
this.getRoot().addWidget("ButtonContainer", new ButtonContainerLabel(this.getRoot(), 2, 100, 25.0));
this.getRoot().getWidget("ButtonContainer").setGeometry(new WidgetGeometry(0.0, 20.0, 100.0, 60.0, CType.RELXY, CType.RELXY, WAlign.LEFT, WAlign.TOP));
ButtonContainerLabel buttonContainer = ((ButtonContainerLabel)this.getRoot().getWidget("ButtonContainer"));
for (String key:ConfigHandler.instance().getConfigKeys(this.modName).keySet()){
if (ConfigHandler.instance().isServerRequired(key))
buttonContainer.addButton(new ButtonBooleanConfigRemote(this.getRoot(), key, "No", "Yes"), ConfigHandler.instance().getConfigKeys(this.modName).get(key));
else
buttonContainer.addButton(new ButtonBooleanConfig(this.getRoot(), key, "No", "Yes"), ConfigHandler.instance().getConfigKeys(this.modName).get(key));
//buttonContainer.addButton(new ButtonConfigRemote(-1, "No", "Yes", ConfigHandler.instance().getConfigKeys(this.modName).get(key), key ));
//else
//buttonContainer.addButton(new ButtonConfigOption(-1, "No", "Yes", ConfigHandler.instance().getConfigKeys(this.modName).get(key), key ));
}
this.getRoot().addWidget("LayoutBack", new LayoutBase(this.getRoot()));
this.getRoot().getWidget("LayoutBack").setGeometry(new WidgetGeometry(0.0, 80.0, 100.0, 20.0, CType.RELXY, CType.RELXY));
this.getRoot().getWidget("LayoutBack").addWidget("ButtonBack", new ButtonScreenChange(this.getRoot().getWidget("LayoutBack"), "Back", this.parent));
this.getRoot().getWidget("LayoutBack").getWidget("ButtonBack").setGeometry(new WidgetGeometry(50.0, 50.0, 100.0, 20.0, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
}
}
@@ -0,0 +1,40 @@
package mcp.mobius.waila.gui.screens.config;
import net.minecraft.client.gui.GuiScreen;
import mcp.mobius.waila.Constants;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.WAlign;
import mcp.mobius.waila.gui.screens.ScreenBase;
import mcp.mobius.waila.gui.widgets.LayoutBase;
import mcp.mobius.waila.gui.widgets.WidgetGeometry;
import mcp.mobius.waila.gui.widgets.buttons.ButtonBooleanConfig;
import mcp.mobius.waila.gui.widgets.buttons.ButtonContainerLabel;
import mcp.mobius.waila.gui.widgets.buttons.ButtonIntegerConfig;
import mcp.mobius.waila.gui.widgets.buttons.ButtonScreenChange;
public class ScreenWailaConfig extends ScreenBase {
public ScreenWailaConfig(GuiScreen parent){
super(parent);
this.getRoot().addWidget("ButtonContainer", new ButtonContainerLabel(this.getRoot(), 2, 100, 25.0));
this.getRoot().getWidget("ButtonContainer").setGeometry(new WidgetGeometry(0.0, 10.0, 100.0, 50.0, CType.RELXY, CType.RELXY));
ButtonContainerLabel buttonContainer = ((ButtonContainerLabel)this.getRoot().getWidget("ButtonContainer"));
buttonContainer.addButton( new ButtonBooleanConfig(this.getRoot(), Constants.CFG_WAILA_SHOW, true, true, "Hidden", "Visible"), "Show/Hide Waila");
buttonContainer.addButton( new ButtonBooleanConfig(this.getRoot(), Constants.CFG_WAILA_MODE, true, true, "Maintained", "Toggled"), "Toggled/Maintained");
buttonContainer.addButton( new ButtonBooleanConfig(this.getRoot(), Constants.CFG_WAILA_METADATA, true, false,"Hidden", "Visible"), "Show ID:Metadata");
buttonContainer.addButton( new ButtonBooleanConfig(this.getRoot(), Constants.CFG_WAILA_LIQUID, true, false,"Hidden", "Visible"), "Liquids");
this.getRoot().addWidget("LayoutConfigPos", new LayoutBase(this.getRoot()));
this.getRoot().getWidget("LayoutConfigPos").setGeometry(new WidgetGeometry(0.0, 50.0, 100.0, 20.0, CType.RELXY, CType.RELXY));
this.getRoot().getWidget("LayoutConfigPos").addWidget("ButtonConfigPos", new ButtonScreenChange(null, "Configure aspect ...", new ScreenHUDConfig(this)));
this.getRoot().getWidget("LayoutConfigPos").getWidget("ButtonConfigPos").setGeometry(new WidgetGeometry(50.0, 50.0, 150.0, 20.0, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
this.getRoot().addWidget("LayoutBack", new LayoutBase(this.getRoot()));
this.getRoot().getWidget("LayoutBack").setGeometry(new WidgetGeometry(0.0, 80.0, 100.0, 20.0, CType.RELXY, CType.RELXY));
this.getRoot().getWidget("LayoutBack").addWidget("ButtonBack", new ButtonScreenChange(null, "Back", this.parent));
this.getRoot().getWidget("LayoutBack").getWidget("ButtonBack").setGeometry(new WidgetGeometry(50.0, 50.0, 100.0, 20.0, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
}
}
@@ -0,0 +1,73 @@
package mcp.mobius.waila.gui.screens.info;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.item.ItemStack;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.WAlign;
import mcp.mobius.waila.gui.screens.ScreenBase;
import mcp.mobius.waila.gui.widgets.ItemStackDisplay;
import mcp.mobius.waila.gui.widgets.LabelFixedFont;
import mcp.mobius.waila.gui.widgets.LayoutBase;
import mcp.mobius.waila.gui.widgets.ViewTable;
import mcp.mobius.waila.gui.widgets.WidgetGeometry;
public class ScreenEnchants extends ScreenBase {
public ScreenEnchants(GuiScreen parent) {
super(parent);
this.getRoot().addWidget("Layout_Title", new LayoutBase(null))
.setGeometry(new WidgetGeometry(50.0, 10.0, 50.0, 32.0, CType.REL_X, CType.REL_X, WAlign.CENTER, WAlign.TOP));
this.getRoot().getWidget("Layout_Title").addWidget("ItemStack", new ItemStackDisplay(null))
.setGeometry(new WidgetGeometry(0.0, 0.0, 32.0, 32.0, CType.ABSXY, CType.ABSXY, WAlign.LEFT, WAlign.TOP));
this.getRoot().getWidget("Layout_Title").addWidget("LabelName", new LabelFixedFont(null, "None"))
.setGeometry(new WidgetGeometry(40.0, 4.0, 16.0, 16.0, CType.ABSXY, CType.ABSXY, WAlign.LEFT, WAlign.TOP));
this.getRoot().getWidget("Layout_Title").addWidget("LabelEnchantability", new LabelFixedFont(null, "None"))
.setGeometry(new WidgetGeometry(40.0, 22.0, 16.0, 16.0, CType.ABSXY, CType.REL_X, WAlign.LEFT, WAlign.BOTTOM));
this.getRoot().addWidget("Table", new ViewTable(null))
.setGeometry(new WidgetGeometry(50.0, 50.0, 90.0, 90.0, CType.REL_X, CType.RELXY, WAlign.CENTER, WAlign.TOP));
((ViewTable)this.getRoot().getWidget("Table"))
.setColumnsTitle("\u00a7a\u00a7oName","\u00a7a\u00a7oMin lvl","\u00a7a\u00a7oMax lvl","\u00a7a\u00a7oWeight", "\u00a7a\u00a7oMod")
.setColumnsWidth(35.0, 10.0, 10.0, 10.0, 35.0)
.setColumnsAlign(WAlign.LEFT, WAlign.CENTER, WAlign.CENTER, WAlign.CENTER, WAlign.LEFT);
}
public ViewTable getTable(){
return (ViewTable)this.getRoot().getWidget("Table");
}
public ScreenEnchants addRow(String...strings ){
this.getTable().addRow(strings);
return this;
}
public ScreenEnchants setStack(ItemStack stack){
((ItemStackDisplay)this.getRoot().getWidget("Layout_Title").getWidget("ItemStack")).setStack(stack);
this.getRoot().getWidget("Layout_Title").adjustSize();
return this;
}
public ScreenEnchants setName(String name){
((LabelFixedFont)this.getRoot().getWidget("Layout_Title").getWidget("LabelName")).setText(name);
this.getRoot().getWidget("Layout_Title").adjustSize();
return this;
}
public ScreenEnchants setEnchantability(String value){
((LabelFixedFont)this.getRoot().getWidget("Layout_Title").getWidget("LabelEnchantability")).setText(String.format("Enchantability : %s", value));
this.getRoot().getWidget("Layout_Title").adjustSize();
return this;
}
/*
public ScreenEnchants setStack(ItemStack stack){
((ItemStackDisplay)this.getRoot().getWidget("ItemStack")).setStack(stack);
return this;
}
*/
}
@@ -0,0 +1,70 @@
package mcp.mobius.waila.gui.testing;
import org.lwjgl.util.Point;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.helpers.UIException;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.interfaces.WAlign;
import mcp.mobius.waila.gui.screens.ScreenBase;
import mcp.mobius.waila.gui.widgets.ItemStackDisplay;
import mcp.mobius.waila.gui.widgets.LabelFixedFont;
import mcp.mobius.waila.gui.widgets.LayoutBase;
import mcp.mobius.waila.gui.widgets.LayoutCropping;
import mcp.mobius.waila.gui.widgets.PictureDisplay;
import mcp.mobius.waila.gui.widgets.PictureSwitch;
import mcp.mobius.waila.gui.widgets.ViewTable;
import mcp.mobius.waila.gui.widgets.ViewportScrollable;
import mcp.mobius.waila.gui.widgets.WidgetBase;
import mcp.mobius.waila.gui.widgets.WidgetGeometry;
import mcp.mobius.waila.gui.widgets.buttons.ButtonBoolean;
import mcp.mobius.waila.gui.widgets.buttons.ButtonContainerLabel;
import mcp.mobius.waila.gui.widgets.buttons.ButtonInteger;
import mcp.mobius.waila.gui.widgets.buttons.ButtonIntegerConfig;
import mcp.mobius.waila.gui.widgets.buttons.ButtonScreenChange;
import mcp.mobius.waila.gui.widgets.movable.PictureMovableRC;
import net.minecraft.block.Block;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.item.ItemStack;
public class ScreenTest extends ScreenBase {
public ScreenTest(GuiScreen parent) {
super(parent);
this.getRoot().addWidget("Test", new ViewTable(null))
.setGeometry(new WidgetGeometry(50.0, 50.0, 90.0, 90.0, CType.RELXY, CType.RELXY, WAlign.CENTER, WAlign.CENTER));
((ViewTable)this.getRoot().getWidget("Test"))
.setColumnsTitle("Column1","Column2","Column3")
.setColumnsWidth(30.0,30.0,30.0)
.setColumnsAlign(WAlign.CENTER, WAlign.CENTER, WAlign.CENTER)
.addRow("test1", "test2", "test3")
.addRow("test1", "test2", "test3")
.addRow("test1", "test2", "test3")
.addRow("test1", "test2", "test3")
.addRow("test1", "test2", "test3")
.addRow("test1", "test2", "test3")
.addRow("test1", "test2", "test3")
.addRow("test1", "test2", "test3")
.addRow("test1", "test2", "test3")
.addRow("test1", "test2", "test3");
/*
this.getRoot().addWidget("Test", new Row(null)).setGeometry(new WidgetGeometry(50.0, 50.0, 90.0, 20.0, CType.RELXY, CType.REL_X, WAlign.CENTER, WAlign.CENTER));
((Row)this.getRoot().getWidget("Test")).setColumnsText("aabbbbbbbbbbbbbbbbbbbbbbbbb","bb","cc");
((Row)this.getRoot().getWidget("Test")).setColumnsWidth(30.0,30.0,30.0);
((Row)this.getRoot().getWidget("Test")).setColumnsAlign(WAlign.LEFT, WAlign.CENTER, WAlign.CENTER);
*/
//this.getRoot().addWidget("TestLayout", new LayoutBase(null)).setGeometry(new WidgetGeometry(50.0, 50.0, 90.0, 90.0, CType.RELXY, CType.RELXY, WAlign.CENTER, WAlign.CENTER));
//((LayoutBase)this.getRoot().getWidget("TestLayout")).setBackgroundColors(0xff505050, 0xff505050);
//this.getRoot().addWidget("Layout", new ViewportScrollable(null)).setGeometry(new WidgetGeometry(50.0,50.0,75.0,75.0,CType.RELXY, CType.RELXY, WAlign.CENTER, WAlign.CENTER));
//((ViewportScrollable)this.getRoot().getWidget("Layout")).attachWidget(new PictureSwitch(this.getRoot(), "waila:textures/test.png", "waila:textures/test_solar.png")).setSize(900, 900);
}
}
@@ -0,0 +1,29 @@
package mcp.mobius.waila.gui.testing;
import net.minecraft.client.gui.GuiScreen;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.WAlign;
import mcp.mobius.waila.gui.screens.ScreenBase;
import mcp.mobius.waila.gui.widgets.LabelFixedFont;
import mcp.mobius.waila.gui.widgets.WidgetGeometry;
import mcp.mobius.waila.gui.widgets.buttons.ButtonContainerLabel;
import mcp.mobius.waila.gui.widgets.buttons.ButtonIntegerConfig;
public class ScreenTest2 extends ScreenBase {
public ScreenTest2(GuiScreen parent) {
super(parent);
//this.getRoot().addWidget("Picture", new PictureSwitch(this.getRoot(), "waila:textures/test.png", "waila:textures/test_solar.png"));
//this.getRoot().addWidget("Button", new ButtonInteger(this.getRoot(), "Val0", "Val1", "Val2"));
//this.getRoot().getWidget("Button").setGeometry(new WidgetGeometry(50.0D, 50.0D, 100.0D, 20.0D, true, false, WidgetAlign.CENTER, WidgetAlign.CENTER));
this.getRoot().addWidget("Buttons", new ButtonContainerLabel(this.getRoot(), 2, 100, 30.0));
this.getRoot().getWidget("Buttons").setGeometry(new WidgetGeometry(0.0, 0.0, 100.0, 50.0, CType.RELXY, CType.RELXY));
//((ButtonContainer)this.getRoot().getWidget("Buttons")).addButton(new ButtonIntegerConfig(this.getRoot(), "testconfig", true, 0, "Val0", "Val1", "Val2"));
this.getRoot().addWidget("Text", new LabelFixedFont(this.getRoot(), "waila:textures/test.png"));
this.getRoot().getWidget("Text").setGeometry(new WidgetGeometry(50.0D, 10.0D, 50.0D, 50.0D, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.TOP));
}
}
@@ -0,0 +1,49 @@
package mcp.mobius.waila.gui.widgets;
import mcp.mobius.waila.gui.interfaces.IWidget;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.item.ItemStack;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.Point;
import codechicken.nei.forge.GuiContainerManager;
public class ItemStackDisplay extends WidgetBase {
ItemStack stack = null;
public ItemStackDisplay(IWidget parent){
this(parent, null);
}
public ItemStackDisplay(IWidget parent, ItemStack stack){
super(parent);
this.stack = stack;
this.setSize(16, 16);
}
public void setStack(ItemStack stack){
this.stack = stack;
}
public ItemStack getStack(){
return this.stack;
}
@Override
public void draw(Point pos) {
if (this.stack == null) return;
float scaleX = this.getSize().getX()/16.0f;
float scaleY = this.getSize().getY()/16.0f;
GL11.glPushMatrix();
GL11.glScalef(scaleX, scaleY, 1.0f);
RenderHelper.enableGUIStandardItemLighting();
GuiContainerManager.drawItem((int)(pos.getX()/scaleX), (int)(pos.getY()/scaleX), this.stack);
GL11.glPopMatrix();
}
}
@@ -0,0 +1,57 @@
package mcp.mobius.waila.gui.widgets;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.interfaces.Signal;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.util.Point;
public class LabelFixedFont extends WidgetBase {
protected String text = "";
protected int color;
public LabelFixedFont(IWidget parent, String text){
super(parent);
this.setText(text);
this.color = 0xFFFFFF;
}
public LabelFixedFont(IWidget parent, String text, int color){
super(parent);
this.setText(text);
this.color = color;
}
@Override
public IWidget setGeometry(WidgetGeometry geom){
this.geom = geom;
this.updateGeometry();
return this;
}
public void setText(String text){
this.text = text;
this.updateGeometry();
}
public void setColor(int color){
this.color = color;
}
private void updateGeometry(){
if (this.geom == null)
this.geom = new WidgetGeometry(0,0,50,50, CType.ABSXY, CType.ABSXY);
this.geom = new WidgetGeometry(this.geom.x, this.geom.y, this.mc.fontRenderer.getStringWidth(this.text), 8, this.geom.posType, CType.ABSXY, this.geom.alignX, this.geom.alignY);
}
@Override
public void draw(Point pos) {
this.saveGLState();
this.mc.fontRenderer.drawString(this.text, pos.getX(), pos.getY(), this.color);
this.loadGLState();
}
}
@@ -0,0 +1,47 @@
package mcp.mobius.waila.gui.widgets;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.helpers.UIHelper;
import mcp.mobius.waila.gui.interfaces.IWidget;
import org.lwjgl.util.Point;
public class LayoutBase extends WidgetBase {
protected int bgcolor1 = 0x00000000;
protected int bgcolor2 = 0x00000000;
protected boolean renderBG;
public LayoutBase(IWidget parent){
super(parent);
}
@Override
public void draw(Point pos) {
if (this.renderBG)
UIHelper.drawGradientRect(this.getLeft(), this.getTop(), this.getRight(), this.getBottom(), 0, this.bgcolor1, this.bgcolor2);
}
public void setBackgroundColors(int bg1, int bg2){
this.bgcolor1 = bg1;
this.bgcolor2 = bg2;
this.renderBG = true;
}
/*
@Override
public void onMouseEnter(MouseEvent event) {
IWidget widget = this.getWidgetAtCoordinates(event.x, event.y);
if (widget != null && widget != this)
widget.onMouseEnter(event);
}
@Override
public void onMouseLeave(MouseEvent event) {
IWidget widget = this.getWidgetAtCoordinates(event.x, event.y);
if (widget != null && widget != this)
widget.onMouseLeave(event);
}
*/
}
@@ -0,0 +1,122 @@
package mcp.mobius.waila.gui.widgets;
import net.minecraft.client.gui.ScaledResolution;
import org.lwjgl.input.Mouse;
import org.lwjgl.util.Point;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.events.MouseEvent.EventType;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.interfaces.Signal;
public class LayoutCanvas extends LayoutBase{
private MouseEvent lastMouseEvent;
private IWidget draggedWidget = null;
public LayoutCanvas(){
super(null);
this.setGeometry(0, 0, this.rez.getScaledWidth(), this.rez.getScaledHeight(), CType.ABSXY, CType.ABSXY);
Mouse.getDWheel(); // This is to "calibrate" the DWheel
this.lastMouseEvent = new MouseEvent(this);
}
@Override
public void draw(){
this.rez = new ScaledResolution(mc.gameSettings, mc.displayWidth, mc.displayHeight);
this.setGeometry(0, 0, this.rez.getScaledWidth(), this.rez.getScaledHeight(), CType.ABSXY, CType.ABSXY);
/*
this.draw(this.getPos());
for (IWidget widget: this.widgets.values())
if (widget.shouldRender())
widget.draw();
*/
super.draw();
this.handleMouseInput();
}
@Override
public void draw(Point pos) { super.draw(pos); }
@Override
public void handleMouseInput(){
// Here we are going to generate the require mouse events we will pass down to all the other widgets
// This is more or less where the magic happens. If you want mouse support for a widget, it should be
// attached to a canvas like this one, or any inheriting one.
MouseEvent event = new MouseEvent(this);
EventType type = event.getEventType(this.lastMouseEvent);
IWidget targetWidget = this.getWidgetAtCoordinates(event.x, event.y);
switch (type){
case CLICK:
if (targetWidget != null)
targetWidget.onMouseClick(event);
//this.onMouseClick(event);
break;
case DRAG:
if (targetWidget != null)
targetWidget.onMouseDrag(event);
//this.onMouseDrag(event);
break;
case MOVE:
if (targetWidget != null)
targetWidget.onMouseMove(event);
//this.onMouseMove(event);
break;
case RELEASED:
if (targetWidget != null)
targetWidget.onMouseRelease(event);
//this.onMouseRelease(event);
break;
case WHEEL:
if (targetWidget != null)
targetWidget.onMouseWheel(event);
//this.onMouseWheel(event);
break;
case ENTER:
if (event.trgwidget != null)
event.trgwidget.onMouseEnter(event);
if (this.lastMouseEvent.trgwidget != null){
event.type = EventType.LEAVE;
this.lastMouseEvent.trgwidget.onMouseLeave(event);
}
break;
case NONE:
break;
default:
break;
}
this.lastMouseEvent = event;
}
@Override
public void onWidgetEvent(IWidget srcwidget, Signal signal, Object... params){
if (signal == Signal.DRAGGED)
this.draggedWidget = srcwidget;
else
super.onWidgetEvent(srcwidget, signal, params);
}
@Override
public void onMouseRelease(MouseEvent event){
if(event.button == 0)
this.draggedWidget = null;
super.onMouseRelease(event);
}
@Override
public void onMouseDrag(MouseEvent event){
if (this.draggedWidget != null)
this.draggedWidget.onMouseDrag(event);
else
super.onMouseDrag(event);
}
}
@@ -0,0 +1,68 @@
package mcp.mobius.waila.gui.widgets;
import mcp.mobius.waila.gui.interfaces.IWidget;
import net.minecraft.client.gui.ScaledResolution;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.Point;
public class LayoutCropping extends LayoutBase {
int xOffset = 0;
int yOffset = 0;
public LayoutCropping(IWidget parent){
super(parent);
}
public void setOffsets(int xoffset, int yoffset){
this.xOffset = xoffset;
this.yOffset = yoffset;
}
@Override
public void draw(){
this.rez = new ScaledResolution(mc.gameSettings, mc.displayWidth, mc.displayHeight);
this.saveGLState();
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA,GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glColor4f(1.0f, 1.0f, 1.0f, this.alpha);
this.draw(this.getPos());
GL11.glEnable(GL11.GL_SCISSOR_TEST);
GL11.glScissor(this.getPos().getX()*this.rez.getScaleFactor(), (this.rez.getScaledHeight() - (this.getPos().getY() + this.getSize().getY())) * this.rez.getScaleFactor(), this.getSize().getX()*this.rez.getScaleFactor(), this.getSize().getY()*this.rez.getScaleFactor());
//GL11.glScissor(this.getPos().getX()*this.rez.getScaleFactor(), this.getPos().getY()*this.rez.getScaleFactor(), this.getSize().getX()*this.rez.getScaleFactor(), this.getSize().getY()*this.rez.getScaleFactor());
GL11.glTranslatef(xOffset, yOffset, 0.0f);
/*
for (IWidget widget: this.widgets.values())
if (widget.shouldRender())
widget.draw();
*/
for (IWidget widget: this.renderQueue_LOW.values())
if (widget.shouldRender())
widget.draw();
for (IWidget widget: this.renderQueue_MEDIUM.values())
if (widget.shouldRender())
widget.draw();
for (IWidget widget: this.renderQueue_HIGH.values())
if (widget.shouldRender())
widget.draw();
GL11.glDisable(GL11.GL_SCISSOR_TEST);
this.loadGLState();
}
@Override
public void draw(Point pos) { super.draw(pos); }
}
@@ -0,0 +1,43 @@
package mcp.mobius.waila.gui.widgets;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.interfaces.WAlign;
import org.lwjgl.util.Point;
public class LayoutMargin extends LayoutBase {
int left = 0;
int right = 0;
int top = 0;
int bottom = 0;
public LayoutMargin(IWidget parent){
super (parent);
this.setGeometry(new WidgetGeometry(0,0,0,0,CType.ABSXY,CType.ABSXY,WAlign.CENTER,WAlign.CENTER));
}
public void setMargins(int left, int right, int top, int bottom){
this.left = left;
this.right = right;
this.top = top;
this.bottom = bottom;
}
@Override
public Point getSize(){
Point parentSize = this.parent.getSize();
return new Point(parentSize.getX() - left - right, parentSize.getY() - top - bottom);
}
@Override
public Point getPos(){
Point parentPos = this.parent.getPos();
return new Point(parentPos.getX() + left, parentPos.getY() + top);
}
@Override
public void draw(Point pos) { super.draw(pos); }
}
@@ -0,0 +1,31 @@
package mcp.mobius.waila.gui.widgets;
import mcp.mobius.waila.gui.helpers.UIHelper;
import mcp.mobius.waila.gui.interfaces.IWidget;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.Point;
public class PictureDisplay extends WidgetBase {
protected ResourceLocation texture;
public PictureDisplay(IWidget parent, String uri){
super(parent);
this.texture = new ResourceLocation(uri);
}
@Override
public void draw(Point pos) {
this.saveGLState();
GL11.glPushMatrix();
this.texManager.func_110577_a(texture);
UIHelper.drawTexture(pos.getX(), pos.getY(), this.getSize().getX(), this.getSize().getY());
GL11.glPopMatrix();
this.loadGLState();
}
}
@@ -0,0 +1,49 @@
package mcp.mobius.waila.gui.widgets;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.helpers.UIHelper;
import mcp.mobius.waila.gui.interfaces.IWidget;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.Point;
public class PictureSwitch extends WidgetBase {
private ResourceLocation texture1;
private ResourceLocation texture2;
private boolean mouseOver = false;
public PictureSwitch(IWidget parent, String uri1, String uri2){
super(parent);
this.texture1 = new ResourceLocation(uri1);
this.texture2 = new ResourceLocation(uri2);
}
@Override
public void draw(Point pos) {
this.saveGLState();
ResourceLocation texture = mouseOver ? this.texture2 : this.texture1;
GL11.glPushMatrix();
this.texManager.func_110577_a(texture);
UIHelper.drawTexture(pos.getX(), pos.getY(), this.getSize().getX(), this.getSize().getY());
GL11.glPopMatrix();
this.loadGLState();
}
@Override
public void onMouseEnter(MouseEvent event){
//System.out.printf("%s %s\n", this, event);
mouseOver = true;
}
@Override
public void onMouseLeave(MouseEvent event){
//System.out.printf("%s %s\n", this, event);
mouseOver = false;
}
}
+201
View File
@@ -0,0 +1,201 @@
package mcp.mobius.waila.gui.widgets;
import mcp.mobius.waila.gui.helpers.UIException;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.interfaces.WAlign;
import org.lwjgl.util.Point;
public class ViewTable extends WidgetBase{
public class Cell extends WidgetBase{
public Cell(IWidget parent, String text, WAlign align){
super(parent);
//this.addWidget("Crop", new LayoutCropping(null)).setGeometry(new WidgetGeometry(50.0, 50.0, 90.0, 100.0, CType.RELXY, CType.RELXY, WAlign.CENTER, WAlign.CENTER));
switch(align){
case CENTER:
//this.getWidget("Crop").addWidget("Text", new LabelFixedFont(null, text))
this.addWidget("Text", new LabelFixedFont(null, text))
.setGeometry(new WidgetGeometry(50.0, 50.0, 100.0, 100.0, CType.RELXY, CType.RELXY, WAlign.CENTER, WAlign.CENTER));
break;
case LEFT:
//this.getWidget("Crop").addWidget("Text", new LabelFixedFont(null, text))
this.addWidget("Text", new LabelFixedFont(null, text))
.setGeometry(new WidgetGeometry(5.0, 50.0, 95.0, 100.0, CType.RELXY, CType.RELXY, WAlign.LEFT, WAlign.CENTER));
break;
case RIGHT:
//this.getWidget("Crop").addWidget("Text", new LabelFixedFont(null, text))
this.addWidget("Text", new LabelFixedFont(null, text))
.setGeometry(new WidgetGeometry(5.0, 50.0, 95.0, 100.0, CType.RELXY, CType.RELXY, WAlign.RIGHT, WAlign.CENTER));
break;
default:
throw new UIException(String.format("Unexpected align value : %s", align));
}
}
@Override
public void draw(Point pos){}
}
public class Row extends WidgetBase{
int ncolumns = -1;
double[] widths;
String[] texts;
WAlign[] aligns;
boolean init = false;
int bgcolor1 = 0x50505050;
int bgcolor2 = 0x50505050;
public Row(IWidget parent){
super(parent);
this.addWidget("Background", new LayoutBase(null)).setGeometry(new WidgetGeometry(50.0, 50.0, 100.0, 100.0, CType.RELXY, CType.RELXY, WAlign.CENTER, WAlign.CENTER));
((LayoutBase)this.getWidget("Background")).setBackgroundColors(this.bgcolor1, this.bgcolor2);
}
public Row setColumnsWidth(double... widths){
if (this.ncolumns == -1)
this.ncolumns = widths.length;
else if(this.ncolumns != widths.length){
throw new UIException(String.format("Number of columns mismatch. Expecting %d, got %d", this.ncolumns, widths.length));
}
this.widths = widths;
return this;
}
public Row setColumnsText(String...strings ){
if (this.ncolumns == -1)
this.ncolumns = strings.length;
else if(this.ncolumns != strings.length){
throw new UIException(String.format("Number of columns mismatch. Expecting %d, got %d", this.ncolumns, strings.length));
}
this.texts = strings;
return this;
}
public Row setColumnsAlign(WAlign... aligns ){
if (this.ncolumns == -1)
this.ncolumns = aligns.length;
else if(this.ncolumns != aligns.length){
throw new UIException(String.format("Number of columns mismatch. Expecting %d, got %d", this.ncolumns, aligns.length));
}
this.aligns = aligns;
return this;
}
public Row setColors(int bg1, int bg2){
this.bgcolor1 = bg1;
this.bgcolor2 = bg2;
((LayoutBase)this.getWidget("Background")).setBackgroundColors(this.bgcolor1, this.bgcolor2);
return this;
}
@Override
public void draw(){
if (!init)
{
double currentOffset = 0.0;
for (int i = 0; i < this.ncolumns; i++){
if (!this.widgets.containsKey(String.format("Cell_%02d", i))){
Cell cell = (Cell)(this.addWidget(String.format("Cell_%02d", i), new Cell(null, this.texts[i], this.aligns[i])));
cell.setGeometry(new WidgetGeometry(currentOffset, 50.0, this.widths[i], 100.0, CType.RELXY, CType.RELXY, WAlign.LEFT, WAlign.CENTER));
currentOffset += this.widths[i];
}
}
init = true;
}
super.draw();
}
@Override
public void draw(Point pos){}
}
int ncolumns = -1;
int nrows = 0;
double[] widths;
String[] texts;
WAlign[] aligns;
boolean init = false;
public ViewTable(IWidget parent){
super(parent);
this.addWidget("Titles", new Row(null)).setGeometry(new WidgetGeometry(0.0, 0.0, 100.0, 16.0, CType.REL_X, CType.REL_X, WAlign.LEFT, WAlign.TOP));
((Row)this.getWidget("Titles")).setColors(0x00000000, 0x00000000);
this.addWidget("Viewport", new ViewportScrollable(null)).setGeometry(new WidgetGeometry(0.0, 16.0, 100.0, 90.0, CType.REL_X, CType.RELXY, WAlign.LEFT, WAlign.TOP));
((ViewportScrollable)(this.getWidget("Viewport"))).attachWidget(new LayoutBase(null)).setGeometry(new WidgetGeometry(0.0, 0.0, 100.0, 0.0, CType.RELXY, CType.REL_X, WAlign.LEFT, WAlign.TOP));
}
@Override
public void draw(Point pos){}
public ViewTable setColumnsWidth(double... widths){
if (this.ncolumns == -1)
this.ncolumns = widths.length;
else if(this.ncolumns != widths.length){
throw new UIException(String.format("Number of columns mismatch. Expecting %d, got %d", this.ncolumns, widths.length));
}
this.widths = widths;
((Row)this.getWidget("Titles")).setColumnsWidth(widths);
return this;
}
public ViewTable setColumnsTitle(String...strings ){
if (this.ncolumns == -1)
this.ncolumns = strings.length;
else if(this.ncolumns != strings.length){
throw new UIException(String.format("Number of columns mismatch. Expecting %d, got %d", this.ncolumns, strings.length));
}
this.texts = strings;
((Row)this.getWidget("Titles")).setColumnsText(strings);
return this;
}
public ViewTable setColumnsAlign(WAlign... aligns ){
if (this.ncolumns == -1)
this.ncolumns = aligns.length;
else if(this.ncolumns != aligns.length){
throw new UIException(String.format("Number of columns mismatch. Expecting %d, got %d", this.ncolumns, aligns.length));
}
this.aligns = aligns;
((Row)this.getWidget("Titles")).setColumnsAlign(aligns);
return this;
}
public ViewTable addRow(String...strings ){
IWidget tableLayout = ((ViewportScrollable)(this.getWidget("Viewport"))).getAttachedWidget();
tableLayout.setSize(100.0, (this.nrows + 1) * 16);
Row newRow = (Row)new Row(null);
newRow.setColumnsWidth(this.widths);
newRow.setColumnsText(strings);
newRow.setColumnsAlign(this.aligns);
if(this.nrows % 2 == 1)
newRow.setColors(0x50808080, 0x50808080);
newRow.setGeometry(new WidgetGeometry(0.0, 16*this.nrows, 100.0, 16, CType.REL_X, CType.REL_X, WAlign.LEFT, WAlign.TOP));
tableLayout.addWidget(String.format("Row_%03d", this.nrows), newRow);
this.nrows += 1;
return this;
}
}
@@ -0,0 +1,179 @@
package mcp.mobius.waila.gui.widgets;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.helpers.UIHelper;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.interfaces.Signal;
import mcp.mobius.waila.gui.interfaces.WAlign;
import org.lwjgl.opengl.Display;
import org.lwjgl.util.Point;
public class ViewportScrollable extends WidgetBase {
public class Escalator extends WidgetBase{
int yOffset = 0;
int sizeCursor = 8;
int maxValue = 0;
int step = 0;
boolean drag = false;
public Escalator(IWidget parent, int step){
this.parent = parent;
this.step = step;
}
public void setOffset(int yoffset){
this.yOffset = yoffset;
}
public void setMaxValue(int value){
this.maxValue = value;
}
public void setStep(int step){
this.step = step;
}
@Override
public void draw(Point pos) {
UIHelper.drawGradientRect(this.getLeft(), this.getTop(), this.getRight(), this.getBottom(), 1, 0xff999999, 0xff999999);
int offsetScaled = (int)(((double)this.getSize().getY() - (double)sizeCursor + 1) / (double)this.maxValue * (yOffset));
UIHelper.drawGradientRect(this.getLeft(), this.getTop() + offsetScaled, this.getRight(), this.getTop() + offsetScaled + sizeCursor, 1, 0xffffffff, 0xffffffff);
}
@Override
public void onMouseClick(MouseEvent event){
if (event.button == 0){
int offsetScaled = this.getTop() + (int)(((double)this.getSize().getY() - (double)sizeCursor + 1) / (double)this.maxValue * (yOffset));
this.drag = false;
if (event.y < offsetScaled)
this.yOffset += this.step;
else if (event.y > offsetScaled + sizeCursor)
this.yOffset -= this.step;
else
this.drag = true;
this.emit(Signal.VALUE_CHANGED, this.yOffset);
} else {
super.onMouseClick(event);
}
}
@Override
public void onMouseRelease(MouseEvent event){
if (event.button == 0)
this.drag = false;
super.onMouseRelease(event);
}
@Override
public void onMouseDrag(MouseEvent event){
if (this.drag){
int relativeY = (int)event.y - this.getTop();
double factor = ((double)this.getSize().getY() - (double)sizeCursor + 1) / (double)this.maxValue;
this.yOffset = (int)(relativeY / factor);
this.yOffset = Math.max(this.yOffset, this.maxValue);
this.yOffset = Math.min(this.yOffset, 0);
this.emit(Signal.VALUE_CHANGED, this.yOffset);
this.emit(Signal.DRAGGED, this);
}
else
super.onMouseDrag(event);
}
}
IWidget attachedWidget = null;
int yOffset = 0;
int step = 5;
public ViewportScrollable( IWidget parent){
super(parent);
this.addWidget("Cropping", new LayoutCropping(null)).setGeometry(new WidgetGeometry(0.0, 0.0, 100.0, 100.0, CType.RELXY, CType.RELXY, WAlign.LEFT, WAlign.TOP));
this.addWidget("Escalator", new Escalator(null, this.step * 5)).setGeometry(new WidgetGeometry(100.0, 0, 8, 100.0, CType.RELXY, CType.REL_Y, WAlign.RIGHT, WAlign.TOP)).hide();
}
public IWidget attachWidget(IWidget widget){
this.attachedWidget = this.getWidget("Cropping").addWidget("Cropped", widget);
return this.attachedWidget;
}
public IWidget getAttachedWidget(){
return this.attachedWidget;
}
public IWidget setStep(int step){
this.step = step;
((Escalator)this.getWidget("Escalator")).setStep(this.step * 5);
return this;
}
@Override
public void draw(Point pos) {}
@Override
public void draw(){
//if (Display.wasResized())
if ((this.attachedWidget != null) && (this.attachedWidget.getSize().getY() > this.getSize().getY()))
this.getWidget("Escalator").show();
else
this.getWidget("Escalator").hide();
super.draw();
}
@Override
public void onMouseWheel(MouseEvent event){
this.yOffset += event.z / 120.0 * this.step;
this.yOffset = Math.max(this.yOffset, this.getSize().getY() - this.attachedWidget.getSize().getY());
this.yOffset = Math.min(this.yOffset, 0);
((LayoutCropping)this.getWidget("Cropping")).setOffsets(0, this.yOffset);
((Escalator)this.getWidget("Escalator")).setOffset(this.yOffset);
}
@Override
public void onWidgetEvent(IWidget srcwidget, Signal signal, Object... params){
if (srcwidget.equals(this.attachedWidget) && signal == Signal.GEOM_CHANGED){
((Escalator)this.getWidget("Escalator")).setMaxValue(this.getSize().getY() - srcwidget.getSize().getY());
}
else if (srcwidget.equals(this.getWidget("Escalator")) && signal == Signal.VALUE_CHANGED){
this.yOffset = (Integer)params[0];
((LayoutCropping)this.getWidget("Cropping")).setOffsets(0, this.yOffset);
}
else
super.onWidgetEvent(srcwidget, signal, params);
}
@Override
public void onMouseDrag(MouseEvent event){
if (this.getWidget("Escalator").shouldRender() && ((Escalator)this.getWidget("Escalator")).drag)
this.getWidget("Escalator").onMouseDrag(event);
else
super.onMouseDrag(event);
}
@Override
public void onMouseClick(MouseEvent event){
if (event.button == 0){
if (!this.getWidget("Escalator").isWidgetAtCoordinates(event.x, event.y)){
((Escalator)this.getWidget("Escalator")).drag = false;
super.onMouseClick(event);
}
else
this.getWidget("Escalator").onMouseClick(event);
}
else
super.onMouseClick(event);
}
}
@@ -0,0 +1,362 @@
package mcp.mobius.waila.gui.widgets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.Point;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.renderer.texture.TextureManager;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.helpers.ReverseIterator;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.interfaces.RenderPriority;
import mcp.mobius.waila.gui.interfaces.Signal;
public abstract class WidgetBase implements IWidget {
protected IWidget parent;
protected WidgetGeometry geom;
protected LinkedHashMap<String, IWidget> widgets = new LinkedHashMap<String, IWidget>();
protected LinkedHashMap<String, IWidget> renderQueue_HIGH = new LinkedHashMap<String, IWidget>();
protected LinkedHashMap<String, IWidget> renderQueue_MEDIUM = new LinkedHashMap<String, IWidget>();
protected LinkedHashMap<String, IWidget> renderQueue_LOW = new LinkedHashMap<String, IWidget>();
protected Minecraft mc;
protected TextureManager texManager;
protected ScaledResolution rez;
protected boolean hasBlending;
protected boolean hasLight;
protected int boundTexIndex;
protected boolean isRendering = true;
protected float alpha = 1.0f;
public WidgetBase(){
this.setParent(null);
this.mc = Minecraft.getMinecraft();
this.rez = new ScaledResolution(mc.gameSettings, mc.displayWidth, mc.displayHeight);
this.texManager = this.mc.renderEngine;
this.setGeometry(new WidgetGeometry(0, 0, 50, 50, CType.ABSXY, CType.ABSXY));
}
public WidgetBase(IWidget parent){
this.setParent(parent);
this.mc = Minecraft.getMinecraft();
this.rez = new ScaledResolution(mc.gameSettings, mc.displayWidth, mc.displayHeight);
this.texManager = this.mc.renderEngine;
this.setGeometry(new WidgetGeometry(0, 0, 50, 50, CType.ABSXY, CType.ABSXY));
}
/////////////////////
// WIDGET HANDLING //
/////////////////////
@Override
public IWidget addWidget(String name, IWidget widget){
return this.addWidget(name, widget, RenderPriority.MEDIUM);
}
@Override
public IWidget addWidget(String name, IWidget widget, RenderPriority priority){
widget.setParent(this);
this.widgets.put(name, widget);
switch(priority){
case LOW:
this.renderQueue_LOW.put(name, widget);
break;
case HIGH:
this.renderQueue_HIGH.put(name, widget);
break;
case MEDIUM:
this.renderQueue_MEDIUM.put(name, widget);
break;
}
return this.getWidget(name);
}
@Override
public IWidget getWidget(String name){
return this.widgets.get(name);
}
@Override
public IWidget delWidget(String name){
IWidget widget = this.getWidget(name);
this.widgets.remove(widget);
return widget;
}
@Override
public IWidget getWidgetAtCoordinates(double posX, double posY){
for (IWidget widget : new ReverseIterator<IWidget>(this.widgets.values()))
if ((posX >= widget.getPos().getX()) &&
(posX <= widget.getPos().getX() + widget.getSize().getX()) &&
(posY >= widget.getPos().getY()) &&
(posY <= widget.getPos().getY() + widget.getSize().getY()))
return widget.getWidgetAtCoordinates(posX, posY);
if ((posX >= this.getPos().getX()) &&
(posX <= this.getPos().getX() + this.getSize().getX()) &&
(posY >= this.getPos().getY()) &&
(posY <= this.getPos().getY() + this.getSize().getY()))
return this;
return null;
}
@Override
public boolean isWidgetAtCoordinates(double posx, double posy){
if (this.getLeft() > posx) return false;
if (this.getRight() < posx) return false;
if (this.getTop() > posy) return false;
if (this.getBottom() < posy) return false;
return true;
}
///////////////////////
// IWIDGET INTERFACE //
///////////////////////
@Override
public IWidget getParent() { return this.parent; }
@Override
public void setParent(IWidget parent) { this.parent = parent; }
@Override
public void draw(){
this.saveGLState();
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA,GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glColor4f(1.0f, 1.0f, 1.0f, this.alpha);
this.draw(this.getPos());
/*
for (IWidget widget: this.widgets.values())
if (widget.shouldRender())
widget.draw();
*/
for (IWidget widget: this.renderQueue_LOW.values())
if (widget.shouldRender())
widget.draw();
for (IWidget widget: this.renderQueue_MEDIUM.values())
if (widget.shouldRender())
widget.draw();
for (IWidget widget: this.renderQueue_HIGH.values())
if (widget.shouldRender())
widget.draw();
this.loadGLState();
}
@Override
public abstract void draw(Point pos);
@Override
public IWidget setGeometry(WidgetGeometry geom) {
this.geom = geom;
this.emit(Signal.GEOM_CHANGED, this.geom);
return this;
}
public IWidget setGeometry(double x, double y, double sx, double sy, CType fp, CType fs){
this.setGeometry(new WidgetGeometry (x, y, sx, sy, fp, fs));
this.emit(Signal.GEOM_CHANGED, this.geom);
return this;
}
@Override
public WidgetGeometry getGeometry() { return this.geom; }
@Override
public Point getPos() { return this.geom.getPos(this.parent); }
@Override
public Point getSize() { return this.geom.getSize(this.parent); }
@Override
public int getLeft() { return this.getPos().getX(); }
@Override
public int getRight() { return this.getPos().getX() + this.getSize().getX(); }
@Override
public int getTop() { return this.getPos().getY(); }
@Override
public int getBottom() { return this.getPos().getY() + this.getSize().getY(); }
@Override
public IWidget setPos(double x, double y){
return this.setPos(x, y, this.geom.fracPosX, this.geom.fracPosY);
}
@Override
public IWidget setPos(double x, double y, boolean fracX, boolean fracY){
this.geom.setPos(x, y, fracX, fracY);
this.emit(Signal.GEOM_CHANGED, this.geom);
return this;
};
@Override
public IWidget setSize(double sx, double sy){
return this.setSize(sx, sy, this.geom.fracSizeX, this.geom.fracSizeY);
}
@Override
public IWidget setSize(double sx, double sy, boolean fracX, boolean fracY){
this.geom.setSize(sx, sy, fracX, fracY);
this.emit(Signal.GEOM_CHANGED, this.geom);
return this;
};
@Override
public IWidget adjustSize(){
int minleft = 9999;
int maxright = 0;
int mintop = 9999;
int maxbottom = 0;
for (IWidget widget : this.widgets.values()){
minleft = Math.min(minleft, widget.getLeft());
maxright = Math.max(maxright, widget.getRight());
mintop = Math.min(mintop, widget.getTop());
maxbottom = Math.max(maxbottom, widget.getBottom());
}
this.setSize(maxright - minleft, maxbottom - mintop, false, false);
this.emit(Signal.GEOM_CHANGED, this.geom);
return this;
}
////////////////////////////
// SOME RENDERING HELPERS //
////////////////////////////
protected void saveGLState(){
hasBlending = GL11.glGetBoolean(GL11.GL_BLEND);
hasLight = GL11.glGetBoolean(GL11.GL_LIGHTING);
boundTexIndex = GL11.glGetInteger(GL11.GL_TEXTURE_BINDING_2D);
GL11.glPushAttrib(GL11.GL_CURRENT_BIT);
GL11.glPushMatrix();
}
protected void loadGLState(){
if (hasBlending) GL11.glEnable(GL11.GL_BLEND); else GL11.glDisable(GL11.GL_BLEND);
if (hasLight) GL11.glEnable(GL11.GL_LIGHTING); else GL11.glDisable(GL11.GL_LIGHTING);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, boundTexIndex);
GL11.glPopMatrix();
GL11.glPopAttrib();
//GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
}
@Override
public void setAlpha(float alpha){this.alpha = alpha;};
@Override
public float getAlpha(){return this.alpha;};
@Override
public void show(){this.isRendering = true;};
@Override
public void hide(){this.isRendering = false;};
@Override
public boolean shouldRender(){return this.isRendering;};
////////////////////
// INPUT HANDLING //
////////////////////
@Override
public void handleMouseInput(){}
@Override
public void onMouseClick(MouseEvent event) {
//System.out.printf("%s %s\n", this, event);
if (this.parent != null)
this.parent.onMouseClick(event);
//IWidget widget = this.getWidgetAtCoordinates(event.x, event.y);
//if (widget != null && widget != this)
// widget.onMouseClick(event);
}
@Override
public void onMouseDrag(MouseEvent event) {
//System.out.printf("%s %s\n", this, event);
if (this.parent != null)
this.parent.onMouseDrag(event);
//IWidget widget = this.getWidgetAtCoordinates(event.x, event.y);
//if (widget != null && widget != this)
// widget.onMouseDrag(event);
}
@Override
public void onMouseMove(MouseEvent event) {
//System.out.printf("%s %s\n", this, event);
if (this.parent != null)
this.parent.onMouseMove(event);
//IWidget widget = this.getWidgetAtCoordinates(event.x, event.y);
//if (widget != null && widget != this)
// widget.onMouseMove(event);
}
@Override
public void onMouseRelease(MouseEvent event) {
//System.out.printf("%s %s\n", this, event);
if (this.parent != null)
this.parent.onMouseRelease(event);
//IWidget widget = this.getWidgetAtCoordinates(event.x, event.y);
//if (widget != null && widget != this)
// widget.onMouseRelease(event);
}
@Override
public void onMouseWheel(MouseEvent event) {
//System.out.printf("%s %s\n", this, event);
if (this.parent != null)
this.parent.onMouseWheel(event);
}
@Override
public void onMouseEnter(MouseEvent event) {
//System.out.printf("%s %s\n", this, event);
if (this.parent != null)
this.parent.onMouseEnter(event);
}
@Override
public void onMouseLeave(MouseEvent event) {
//System.out.printf("%s %s\n", this, event);
if (this.parent != null)
this.parent.onMouseLeave(event);
}
@Override
public void emit(Signal signal, Object... params) {
if(this.parent != null)
this.parent.onWidgetEvent(this, signal, params);
}
@Override
public void onWidgetEvent(IWidget srcwidget, Signal signal, Object... params) {
if (this.parent != null)
this.parent.onWidgetEvent(srcwidget, signal, params);
}
}
@@ -0,0 +1,186 @@
package mcp.mobius.waila.gui.widgets;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.interfaces.WAlign;
import net.minecraft.util.MathHelper;
import org.lwjgl.util.Point;
//public class WidgetGeometry implements Cloneable{
public class WidgetGeometry{
//public enum Align {LEFT, CENTER, RIGHT, TOP, BOTTOM};
double x = -1;
double y = -1;
double sx = -1;
double sy = -1;
CType posType;
CType sizeType;
boolean fracPosX = false;
boolean fracPosY = false;
boolean fracSizeX = false;
boolean fracSizeY = false;
WAlign alignX;
WAlign alignY;
public class PointDouble{
double x; double y;
public PointDouble(double x, double y){ this.x = x; this.y = y;};
public double getX(){return this.x;}
public double getY(){return this.y;}
public String toString(){return String.format("PointDouble : %.5f %.5f", this.x, this.y);}
}
public WidgetGeometry(double x, double y, double sx, double sy, CType fracPos, CType fracSize){
this(x, y, sx, sy, fracPos, fracSize, WAlign.LEFT, WAlign.TOP);
}
public WidgetGeometry(double x, double y, double sx, double sy, CType fracPos, CType fracSize, WAlign alignX, WAlign alignY){
this.x = x;
this.y = y;
this.sx = sx;
this.sy = sy;
this.posType = fracPos;
this.sizeType = fracSize;
switch(fracPos){
case REL_X:
this.fracPosX = true;
break;
case RELXY:
this.fracPosX = true;
this.fracPosY = true;
break;
case REL_Y:
this.fracPosY = true;
break;
default:
break;
}
switch(fracSize){
case REL_X:
this.fracSizeX = true;
break;
case RELXY:
this.fracSizeX = true;
this.fracSizeY = true;
break;
case REL_Y:
this.fracSizeY = true;
break;
default:
break;
}
this.alignX = alignX;
this.alignY = alignY;
}
public void setPos(double x, double y, boolean fracX, boolean fracY){
this.x = x;
this.y = y;
this.fracPosX = fracX;
this.fracPosY = fracY;
}
public void setSize(double sx, double sy, boolean fracSizeX, boolean fracSizeY){
this.sx = sx;
this.sy = sy;
this.fracSizeX = fracSizeX;
this.fracSizeY = fracSizeY;
}
public PointDouble getRawPos(){
return new PointDouble(this.x, this.y);
}
public Point getUnalignedPos(IWidget parent){
int x = -1;
if (this.fracPosX)
x = MathHelper.ceiling_double_int(parent.getPos().getX() + parent.getSize().getX() * this.x / 100D);
if (!this.fracPosX && parent != null)
x = parent.getPos().getX() + (int)this.x;
if (!this.fracPosX && parent == null)
x = (int)this.x;
int y = -1;
if (this.fracPosY)
y = MathHelper.ceiling_double_int(parent.getPos().getY() + parent.getSize().getY() * this.y / 100D);
if (!this.fracPosY && parent != null)
y = parent.getPos().getY() + (int)this.y;
if (!this.fracPosY && parent == null)
y = (int)this.y;
return new Point(x,y);
}
public Point getPos(IWidget parent){
int x = -1;
if (this.fracPosX)
x = MathHelper.ceiling_double_int(parent.getPos().getX() + parent.getSize().getX() * this.x / 100D);
if (!this.fracPosX && parent != null)
x = parent.getPos().getX() + (int)this.x;
if (!this.fracPosX && parent == null)
x = (int)this.x;
int y = -1;
if (this.fracPosY)
y = MathHelper.ceiling_double_int(parent.getPos().getY() + parent.getSize().getY() * this.y / 100D);
if (!this.fracPosY && parent != null)
y = parent.getPos().getY() + (int)this.y;
if (!this.fracPosY && parent == null)
y = (int)this.y;
if (this.alignX == WAlign.CENTER)
x -= this.getSize(parent).getX() / 2;
if (this.alignY == WAlign.CENTER)
y -= this.getSize(parent).getY() / 2;
if (this.alignX == WAlign.RIGHT)
x -= this.getSize(parent).getX() - 1;
if (this.alignY == WAlign.BOTTOM)
y -= this.getSize(parent).getY() - 1;
return new Point(x,y);
}
public Point getSize(IWidget parent){
int sx = -1;
if (this.fracSizeX)
sx = MathHelper.ceiling_double_int(parent.getSize().getX() * this.sx / 100D);
if (!this.fracSizeX)
sx = (int)this.sx;
int sy = -1;
if (this.fracSizeY)
sy = MathHelper.ceiling_double_int(parent.getSize().getY() * this.sy / 100D);
if (!this.fracSizeY)
sy = (int)this.sy;
return new Point(sx,sy);
}
public String toString(){
return String.format("Geometry : [%s %s] [%s %s] [%s %s] [%s %s]", this.x, this.y, this.sx, this.sy, this.posType, this.sizeType, this.alignX, this.alignY);
}
//@Override
//public WidgetGeometry clone() throws CloneNotSupportedException{
// return (WidgetGeometry)super.clone();
//}
}
@@ -0,0 +1,73 @@
package mcp.mobius.waila.gui.widgets.buttons;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.helpers.UIHelper;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.interfaces.Signal;
import mcp.mobius.waila.gui.widgets.LabelFixedFont;
import mcp.mobius.waila.gui.widgets.WidgetBase;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.Point;
public abstract class ButtonBase extends WidgetBase {
protected boolean mouseOver = false;
protected static ResourceLocation widgetsTexture = new ResourceLocation("textures/gui/widgets.png");
public ButtonBase(IWidget parent){
super(parent);
}
@Override
public void draw() {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
for (IWidget widget : this.widgets.values())
if (widget instanceof LabelFixedFont)
if (this.mouseOver)
((LabelFixedFont)widget).setColor(0xffffa0);
else
((LabelFixedFont)widget).setColor(0xffffff);
super.draw();
}
@Override
public void draw(Point pos) {
this.saveGLState();
int texOffset = 0;
if (this.mouseOver)
texOffset = 1;
this.mc.func_110434_K().func_110577_a(widgetsTexture);
UIHelper.drawTexture(this.getPos().getX(), this.getPos().getY(), this.getSize().getX(), this.getSize().getY(), 0, 66 + texOffset*20, 200, 20);
this.loadGLState();
}
@Override
public void onMouseEnter(MouseEvent event){
mouseOver = true;
}
@Override
public void onMouseLeave(MouseEvent event){
mouseOver = false;
}
@Override
public IWidget getWidgetAtCoordinates(double posX, double posY){
return this;
}
@Override
public void onMouseClick(MouseEvent event){
if (event.button == 0)
this.mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
this.emit(Signal.CLICKED, event.button);
}
}
@@ -0,0 +1,43 @@
package mcp.mobius.waila.gui.widgets.buttons;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.helpers.UIHelper;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.interfaces.WAlign;
import mcp.mobius.waila.gui.widgets.LabelFixedFont;
import mcp.mobius.waila.gui.widgets.WidgetGeometry;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.util.Point;
public class ButtonBoolean extends ButtonBase {
protected boolean state = false;
public ButtonBoolean(IWidget parent, String textFalse, String textTrue){
super(parent);
this.addWidget("LabelFalse", new LabelFixedFont(this, textFalse));
this.getWidget("LabelFalse").setGeometry(new WidgetGeometry(50.0D, 50.0D, 100.0D, 20.0D, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
this.addWidget("LabelTrue", new LabelFixedFont(this, textTrue));
this.getWidget("LabelTrue").hide();
this.getWidget("LabelTrue").setGeometry(new WidgetGeometry(50.0D, 50.0D, 100.0D, 20.0D, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
}
@Override
public void onMouseClick(MouseEvent event){
super.onMouseClick(event);
if (event.button == 0)
this.state = !this.state;
if (this.state){
this.getWidget("LabelTrue").show();
this.getWidget("LabelFalse").hide();
} else {
this.getWidget("LabelTrue").hide();
this.getWidget("LabelFalse").show();
}
}
}
@@ -0,0 +1,46 @@
package mcp.mobius.waila.gui.widgets.buttons;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.Property;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.interfaces.IWidget;
public class ButtonBooleanConfig extends ButtonBoolean {
private String configKey;
private boolean instant;
public ButtonBooleanConfig(IWidget parent, String configKey, String textFalse, String textTrue){
this(parent, configKey, true, true, textFalse, textTrue);
}
public ButtonBooleanConfig(IWidget parent, String configKey, boolean instant, boolean state_, String textFalse, String textTrue){
super(parent, textFalse, textTrue);
this.configKey = configKey;
this.instant = instant;
mod_Waila.instance.config.load();
Property prop = mod_Waila.instance.config.get(Configuration.CATEGORY_GENERAL, this.configKey, state_);
this.state = prop.getBoolean(state_);
if (this.state){
this.getWidget("LabelTrue").show();
this.getWidget("LabelFalse").hide();
} else {
this.getWidget("LabelTrue").hide();
this.getWidget("LabelFalse").show();
}
}
@Override
public void onMouseClick(MouseEvent event){
super.onMouseClick(event);
if (this.instant){
mod_Waila.instance.config.getCategory(Configuration.CATEGORY_GENERAL).put(this.configKey, new Property(this.configKey,String.valueOf(this.state),Property.Type.BOOLEAN));
mod_Waila.instance.config.save();
}
}
}
@@ -0,0 +1,52 @@
package mcp.mobius.waila.gui.widgets.buttons;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.Point;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.Property;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.helpers.UIHelper;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.widgets.LabelFixedFont;
public class ButtonBooleanConfigRemote extends ButtonBooleanConfig {
public ButtonBooleanConfigRemote(IWidget parent, String configKey, String textFalse, String textTrue){
this(parent, configKey, true, true, textFalse, textTrue);
}
public ButtonBooleanConfigRemote(IWidget parent, String configKey, boolean instant, boolean state_, String textFalse, String textTrue){
super(parent, configKey, instant, state_, textFalse, textTrue);
if (!mod_Waila.instance.serverPresent)
this.state = false;
if (this.state){
this.getWidget("LabelTrue").show();
this.getWidget("LabelFalse").hide();
} else {
this.getWidget("LabelTrue").hide();
this.getWidget("LabelFalse").show();
}
}
@Override
public void onMouseClick(MouseEvent event){
if (mod_Waila.instance.serverPresent)
super.onMouseClick(event);
}
@Override
public void draw(Point pos) {
if (mod_Waila.instance.serverPresent)
super.draw(pos);
else{
this.saveGLState();
int texOffset = -1;
this.mc.func_110434_K().func_110577_a(widgetsTexture);
UIHelper.drawTexture(this.getPos().getX(), this.getPos().getY(), this.getSize().getX(), this.getSize().getY(), 0, 66 + texOffset*20, 200, 20);
this.loadGLState();
}
}
}
@@ -0,0 +1,50 @@
package mcp.mobius.waila.gui.widgets.buttons;
import org.lwjgl.util.Point;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.interfaces.WAlign;
import mcp.mobius.waila.gui.widgets.LabelFixedFont;
import mcp.mobius.waila.gui.widgets.LayoutBase;
import mcp.mobius.waila.gui.widgets.WidgetBase;
import mcp.mobius.waila.gui.widgets.WidgetGeometry;
public class ButtonContainer extends WidgetBase {
private int nButtons = 0;
private int columns;
private int buttonSize;
private double spacing;
public ButtonContainer(IWidget parent, int columns, int buttonSize, double spacing){
super (parent);
this.columns = columns;
this.spacing = spacing;
this.buttonSize = buttonSize;
}
public void addButton(ButtonBase button){
String buttonName = String.format("Button_%d", nButtons);
String layoutName = String.format("Layout_%d", nButtons);
String layoutLabelName = String.format("LayoutLabel_%d", nButtons);
String labelName = String.format("Label_%d", nButtons);
this.addWidget(layoutName, new LayoutBase(this));
this.addWidget(layoutLabelName, new LayoutBase(this));
int column = this.nButtons % this.columns;
int row = this.nButtons / this.columns;
double sizeColumn = 100.0 / this.columns;
this.getWidget(layoutName).setGeometry(new WidgetGeometry(sizeColumn * column, spacing * row, sizeColumn, spacing, CType.REL_X, CType.REL_X, WAlign.LEFT, WAlign.TOP));
this.getWidget(layoutName).addWidget(buttonName, button);
this.getWidget(layoutName).getWidget(buttonName).setGeometry(new WidgetGeometry(50.0, 50.0, buttonSize, 20.0, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
this.nButtons += 1;
}
@Override
public void draw(Point pos) {}
}
@@ -0,0 +1,55 @@
package mcp.mobius.waila.gui.widgets.buttons;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.interfaces.WAlign;
import mcp.mobius.waila.gui.widgets.LabelFixedFont;
import mcp.mobius.waila.gui.widgets.LayoutBase;
import mcp.mobius.waila.gui.widgets.WidgetBase;
import mcp.mobius.waila.gui.widgets.WidgetGeometry;
import org.lwjgl.util.Point;
//TODO : THIS CLASS IS WIP AND CAN'T WORK RIGHT NOW
public class ButtonContainerLabel extends WidgetBase {
private int nButtons = 0;
private int columns;
private int buttonSize;
private double spacing;
public ButtonContainerLabel(IWidget parent, int columns, int buttonSize, double spacing){
super (parent);
this.columns = columns;
this.spacing = spacing;
this.buttonSize = buttonSize;
}
public void addButton(ButtonBase button, String label){
String buttonName = String.format("Button_%d", nButtons);
String layoutName = String.format("Layout_%d", nButtons);
String layoutLabelName = String.format("LayoutLabel_%d", nButtons);
String labelName = String.format("Label_%d", nButtons);
this.addWidget(layoutName, new LayoutBase(this));
this.addWidget(layoutLabelName, new LayoutBase(this));
int column = (this.nButtons % this.columns) * 2;
int row = this.nButtons / this.columns;
double sizeColumn = 100.0 / (this.columns * 2);
this.getWidget(layoutName).setGeometry(new WidgetGeometry(sizeColumn * (column + 1), spacing * row, sizeColumn, spacing, CType.REL_X, CType.REL_X, WAlign.LEFT, WAlign.TOP));
this.getWidget(layoutName).addWidget(buttonName, button);
this.getWidget(layoutName).getWidget(buttonName).setGeometry(new WidgetGeometry(50.0, 50.0, buttonSize, 20.0, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
this.getWidget(layoutLabelName).setGeometry(new WidgetGeometry(sizeColumn * column, spacing * row, sizeColumn, spacing, CType.REL_X, CType.REL_X, WAlign.LEFT, WAlign.TOP));
this.getWidget(layoutLabelName).addWidget(labelName, new LabelFixedFont(this, label));
this.getWidget(layoutLabelName).getWidget(labelName).setGeometry(new WidgetGeometry(50.0, 50.0, buttonSize, 20.0, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
this.nButtons += 1;
}
@Override
public void draw(Point pos) {}
}
@@ -0,0 +1,49 @@
package mcp.mobius.waila.gui.widgets.buttons;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.helpers.UIHelper;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.interfaces.WAlign;
import mcp.mobius.waila.gui.widgets.LabelFixedFont;
import mcp.mobius.waila.gui.widgets.WidgetGeometry;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.util.Point;
public class ButtonInteger extends ButtonBase {
protected int state = 0;
protected int nStates;
public ButtonInteger(IWidget parent, String... texts){
super(parent);
this.nStates = texts.length;
for (int i = 0; i < texts.length; i++){
String labelName = String.format("Label_%d", i);
this.addWidget(labelName, new LabelFixedFont(this, texts[i]));
this.getWidget(labelName).hide();
this.getWidget(labelName).setGeometry(new WidgetGeometry(50.0D, 50.0D, 100.0D, 20.0D, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
}
this.getWidget("Label_0").show();
}
@Override
public void onMouseClick(MouseEvent event){
super.onMouseClick(event);
if (event.button == 0)
this.state += 1;
if (this.state >= this.nStates)
this.state = 0;
for (int i = 0; i < this.nStates; i++)
this.getWidget(String.format("Label_%d", i)).hide();
this.getWidget(String.format("Label_%d", state)).show();
}
}
@@ -0,0 +1,47 @@
package mcp.mobius.waila.gui.widgets.buttons;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.Property;
import org.lwjgl.util.Point;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.widgets.WidgetBase;
public class ButtonIntegerConfig extends ButtonInteger {
private String configKey;
private boolean instant;
public ButtonIntegerConfig(IWidget parent, String configKey, String... texts){
this(parent, configKey, true, 0, texts);
}
public ButtonIntegerConfig(IWidget parent, String configKey, boolean instant, int state_, String... texts){
super(parent, texts);
this.configKey = configKey;
this.instant = instant;
mod_Waila.instance.config.load();
Property prop = mod_Waila.instance.config.get(Configuration.CATEGORY_GENERAL, this.configKey, state_);
this.state = prop.getInt();
for (int i = 0; i < this.nStates; i++)
this.getWidget(String.format("Label_%d", i)).hide();
this.getWidget(String.format("Label_%d", state)).show();
}
@Override
public void onMouseClick(MouseEvent event){
super.onMouseClick(event);
if (this.instant){
mod_Waila.instance.config.getCategory(Configuration.CATEGORY_GENERAL).put(this.configKey, new Property(this.configKey,String.valueOf(this.state),Property.Type.INTEGER));
mod_Waila.instance.config.save();
}
}
}
@@ -0,0 +1,24 @@
package mcp.mobius.waila.gui.widgets.buttons;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.interfaces.WAlign;
import mcp.mobius.waila.gui.widgets.LabelFixedFont;
import mcp.mobius.waila.gui.widgets.WidgetGeometry;
import net.minecraft.client.gui.GuiScreen;
public class ButtonLabel extends ButtonBase {
public ButtonLabel(IWidget parent, String text){
super(parent);
this.addWidget("Label", new LabelFixedFont(this, text));
this.getWidget("Label").setGeometry(new WidgetGeometry(50.0D, 50.0D, 100.0D, 20.0D, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
}
@Override
public void onMouseClick(MouseEvent event){
super.onMouseClick(event);
}
}
@@ -0,0 +1,31 @@
package mcp.mobius.waila.gui.widgets.buttons;
import net.minecraft.client.gui.GuiScreen;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.interfaces.WAlign;
import mcp.mobius.waila.gui.screens.ScreenBase;
import mcp.mobius.waila.gui.widgets.LabelFixedFont;
import mcp.mobius.waila.gui.widgets.WidgetGeometry;
public class ButtonScreenChange extends ButtonBase {
GuiScreen linkedScreen;
public ButtonScreenChange(IWidget parent, String text, GuiScreen linkedscreen){
super(parent);
this.linkedScreen = linkedscreen;
this.addWidget("Label", new LabelFixedFont(this, text));
this.getWidget("Label").setGeometry(new WidgetGeometry(50.0D, 50.0D, 100.0D, 20.0D, CType.RELXY, CType.ABSXY, WAlign.CENTER, WAlign.CENTER));
}
@Override
public void onMouseClick(MouseEvent event){
super.onMouseClick(event);
if (event.button == 0)
this.mc.displayGuiScreen(this.linkedScreen);
}
}
@@ -0,0 +1,68 @@
package mcp.mobius.waila.gui.widgets.movable;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.helpers.UIHelper;
import mcp.mobius.waila.gui.interfaces.CType;
import mcp.mobius.waila.gui.interfaces.IWidget;
import mcp.mobius.waila.gui.interfaces.Signal;
import mcp.mobius.waila.gui.interfaces.WAlign;
import mcp.mobius.waila.gui.widgets.WidgetBase;
import mcp.mobius.waila.gui.widgets.WidgetGeometry;
import mcp.mobius.waila.gui.widgets.WidgetGeometry.PointDouble;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.Point;
// A movable picture setup especially for centered relative positions.
public class PictureMovableRC extends WidgetBase {
private double offsetX, offsetY;
protected ResourceLocation texture;
public PictureMovableRC(IWidget parent, String uri) {
super(parent);
this.texture = new ResourceLocation(uri);
}
@Override
public void onMouseClick(MouseEvent event){
this.offsetX = event.x - this.geom.getUnalignedPos(this.parent).getX();
this.offsetY = event.y - this.geom.getUnalignedPos(this.parent).getY();
//System.out.printf("%s %s\n", this.offsetX, this.offsetY);
}
@Override
public void onMouseDrag(MouseEvent event){
double newX = event.x - this.offsetX ;
double newY = event.y - this.offsetY ;
newX = Math.max(newX, this.parent.getLeft());
newY = Math.max(newY, this.parent.getTop());
newX = Math.min(newX, this.parent.getRight());
newY = Math.min(newY, this.parent.getBottom());
this.setPos(((newX - this.parent.getLeft()) / this.parent.getSize().getX()) * 100.0, ((newY - this.parent.getTop())/ this.parent.getSize().getY()) * 100.0);
//System.out.printf("%s\n", this.parent.getGeometry());
//System.out.printf("%s %s\n", this.parent.getPos(), this.parent.getSize());
this.emit(Signal.DRAGGED, this.getPos());
}
@Override
public void draw(Point pos) {
this.saveGLState();
GL11.glPushMatrix();
this.texManager.func_110577_a(texture);
UIHelper.drawTexture(pos.getX(), pos.getY(), this.getSize().getX(), this.getSize().getY());
GL11.glPopMatrix();
this.loadGLState();
}
}
@@ -0,0 +1,235 @@
package mcp.mobius.waila.gui_old;
import java.util.Collection;
import java.util.HashMap;
import org.lwjgl.input.Mouse;
import mcp.mobius.waila.gui_old.widget.IWidget;
import mcp.mobius.waila.gui_old.widget_old.Button2States;
import mcp.mobius.waila.gui_old.widget_old.ButtonChangeScreen;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.ScaledResolution;
public class BaseWailaScreen extends GuiScreen{
protected GuiScreen parentGui; // GUI we will return to in the case we are call from a GUI
public ScaledResolution res;
protected HashMap<String, IWidget> widgets = new HashMap<String, IWidget>();
/* Custom mouse handling */
private int lastMouseButton = -1;
private long lastMouseEvent = -1;
private int lastMousePosX = -1;
private int lastMousePosY = -1;
private static int buttonCount = Mouse.getButtonCount();
private boolean[] lastButtonStates = new boolean[buttonCount];
private IWidget[] focusWidget = new IWidget[buttonCount];
private IWidget mainFocusWidget = null;
public BaseWailaScreen(GuiScreen _parentGui) {
this.parentGui = _parentGui;
res = new ScaledResolution(Minecraft.getMinecraft().gameSettings,
Minecraft.getMinecraft().displayWidth,
Minecraft.getMinecraft().displayHeight);
Mouse.getDWheel();
}
@Override
/* Here we draw anything special, and super takes care of the buttons for us */
public void drawScreen(int i, int j, float f)
{
drawDefaultBackground();
super.drawScreen(i, j, f);
}
@Override
/* Here we handle key presses. Super will just close the gui on ESC, and we like it like that */
public void keyTyped(char keyChar, int keyID)
{
if (keyID == 1)
{
if (this.parentGui == null){
this.mc.displayGuiScreen((GuiScreen)null);
this.mc.setIngameFocus();
} else {
this.mc.displayGuiScreen(this.parentGui);
}
}
}
@Override
protected void actionPerformed(GuiButton guibutton)
{
if (guibutton instanceof ButtonChangeScreen)
((ButtonChangeScreen)guibutton).pressButton();
else if (guibutton instanceof Button2States)
((Button2States)guibutton).pressButton();
}
protected int getXCentered(int width){
return (this.res.getScaledWidth() - width)/ 2;
}
public void addWidget(String name, IWidget widget){
this.widgets.put(name, widget);
}
public Collection<IWidget> getWidgets(){
return this.widgets.values();
}
public IWidget getWidget(String name){
return this.widgets.get(name);
}
@Override
public void mouseClicked(int mouseX, int mouseY, int buttonID)
{
IWidget widget = this.getWidgetAtCoordinates(mouseX, mouseY);
if (widget != null && widget.mouseClicked(mouseX, mouseY, buttonID)){
if (buttonID == 0)
this.mainFocusWidget = widget;
this.focusWidget[buttonID] = widget;
}
else
super.mouseClicked(mouseX, mouseY, buttonID);
}
@Override
public void mouseMovedOrUp(int mouseX, int mouseY, int buttonID)
{
if (buttonID == 0)
this.mainFocusWidget = null;
if (this.focusWidget[buttonID] != null){
this.focusWidget[buttonID].mouseReleased(mouseX, mouseY, buttonID);
this.focusWidget[buttonID] = null;
} else {
IWidget widget = this.getWidgetAtCoordinates(mouseX, mouseY);
if (widget == null || !widget.mouseReleased(mouseX, mouseY, buttonID))
super.mouseMovedOrUp(mouseX, mouseY, buttonID);
}
}
public void mouseWheel(int mouseX, int mouseY, int mouseZ){
IWidget widget = this.getWidgetAtCoordinates(mouseX, mouseY);
if (widget != null)
widget.mouseWheel(mouseX, mouseY, mouseZ);
}
public void mouseMoved(int mouseX, int mouseY){
if (this.mainFocusWidget != null)
this.mainFocusWidget.mouseMoved(mouseX, mouseY);
else{
IWidget widget = this.getWidgetAtCoordinates(mouseX, mouseY);
if (widget != null)
widget.mouseMoved(mouseX, mouseY);
}
}
/*
public void mouseDragged(int mouseX, int mouseY, int buttonID, long deltaTime){
IWidget widget = this.getWidgetAtCoordinates(mouseX, mouseY);
if (widget != null)
widget.mouseDragged(mouseX, mouseY, buttonID, deltaTime);
}
*/
@Override
public void handleMouseInput()
{
int mouseX = Mouse.getEventX() * this.width / this.mc.displayWidth;
int mouseY = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1;
int mouseZ = Mouse.getEventDWheel();
boolean[] buttonChanged = new boolean[buttonCount];
if (mouseZ != 0)
this.mouseWheel(mouseX, mouseY, mouseZ);
int changedButton = -1;
boolean hasStateChanged = false;
if (Mouse.getEventButtonState()){
hasStateChanged = true;
changedButton = Mouse.getEventButton();
}
for (int i = 0; i < buttonCount; i++){
buttonChanged[i] = Mouse.isButtonDown(i) != this.lastButtonStates[i];
this.lastButtonStates[i] = Mouse.isButtonDown(i);
if (buttonChanged[i] && Mouse.isButtonDown(i))
this.mouseClicked(mouseX, mouseY, i);
else if (buttonChanged[i] && !Mouse.isButtonDown(i))
this.mouseMovedOrUp(mouseX, mouseY, i);
}
if ((mouseX != this.lastMousePosX) || (mouseY != this.lastMousePosY)){
this.mouseMoved(mouseX, mouseY);
this.lastMousePosX = mouseX;
this.lastMousePosY = mouseY;
}
/*
if (changedButton != -1){
if (Mouse.isButtonDown(changedButton)){
this.mouseClicked(mouseX, mouseY, changedButton);
this.lastMouseButton = changedButton;
}
else if (!Mouse.isButtonDown(changedButton)){
this.mouseMovedOrUp(mouseX, mouseY, changedButton);
this.lastMouseButton = -1;
}
}
if ((mouseX != this.lastMousePosX) || (mouseY != this.lastMousePosY)){
this.mouseMoved(mouseX, mouseY);
this.lastMousePosX = mouseX;
this.lastMousePosY = mouseY;
}
*/
/*
if (hasStateChanged)
{
this.lastMouseButton = changedButton;
this.lastMouseEvent = Minecraft.getSystemTime();
this.mouseClicked(mouseX, mouseY, this.lastMouseButton);
}
else if (changedButton != -1)
{
this.lastMouseButton = -1;
this.mouseMovedOrUp(mouseX, mouseY, changedButton);
}
*/
/*
else if (this.lastMouseButton != -1 && this.lastMouseEvent > 0L)
{
long deltaTime = Minecraft.getSystemTime() - this.lastMouseEvent;
this.mouseDragged(mouseX, mouseY, this.lastMouseButton, deltaTime);
}
*/
/*
else if ((mouseX != this.lastMousePosX) || (mouseY != this.lastMousePosY)){
this.mouseMoved(mouseX, mouseY);
this.lastMousePosX = mouseX;
this.lastMousePosY = mouseY;
}
*/
}
private IWidget getWidgetAtCoordinates(int posX, int posY){
for (IWidget widget : this.getWidgets())
if ((posX >= widget.getPosX()) &&
(posX <= widget.getPosX() + widget.getWidth()) &&
(posY >= widget.getPosY()) &&
(posY <= widget.getPosY() + widget.getHeight()))
return widget;
return null;
}
}
@@ -0,0 +1,57 @@
package mcp.mobius.waila.gui_old;
import mcp.mobius.waila.gui_old.widget.ContainerTable;
import mcp.mobius.waila.gui_old.widget.Label;
import mcp.mobius.waila.gui_old.widget.StackDisplay;
import net.minecraft.client.gui.GuiScreen;
public class GuiEnchantScreen extends BaseWailaScreen {
public ContainerTable widTable;
public StackDisplay widStackDisplay;
public Label widStackName;
public Label widStackEnchantability;
public GuiEnchantScreen(GuiScreen _parentGui) {
super(_parentGui);
this.zLevel = -1.0F;
this.widTable = new ContainerTable(this);
this.widStackDisplay = new StackDisplay(this);
this.widStackName = new Label(this);
this.widStackEnchantability = new Label(this);
this.widTable.setColumns(8, "\u00a7a\u00a7oName", "\u00a7a\u00a7oMin lvl", "\u00a7a\u00a7oMax lvl", "\u00a7a\u00a7oMod");
this.widTable.setHeight(this.res.getScaledHeight() - 16 - 32);
this.addWidget("datatable", this.widTable);
this.addWidget("stackdisplay", this.widStackDisplay);
this.addWidget("stackname", this.widStackName);
this.addWidget("stackenchant", this.widStackEnchantability);
}
@Override
/* Here we draw anything special, and super takes care of the buttons for us */
public void drawScreen(int i, int j, float f)
{
//this.parentGui.drawScreen(i, j, f);
//this.parentGui.allowUserInput = false;
super.drawScreen(i, j, f);
widTable.draw(this.getXCentered(widTable.getWidth()), 32, 0);
widStackDisplay.draw(this.getXCentered(widTable.getWidth()), 0, 0);
widStackName.draw(this.getXCentered(widTable.getWidth())+32, 0, 0);
widStackEnchantability.draw(this.getXCentered(widTable.getWidth())+32, 8, 0);
}
@Override
public void initGui()
{
}
@Override
public void drawDefaultBackground()
{
this.drawGradientRect(0, 0, this.width, this.height, 0xdd000000, 0xdd000000);
}
}
@@ -0,0 +1,62 @@
package mcp.mobius.waila.gui_old;
import mcp.mobius.waila.gui_old.widget.ContainerTable;
import mcp.mobius.waila.gui_old.widget.Label;
import mcp.mobius.waila.gui_old.widget.StackDisplay;
import mcp.mobius.waila.gui_old.widget.WikiReader;
import net.minecraft.client.gui.GuiScreen;
public class GuiIngameWiki extends BaseWailaScreen {
public WikiReader widReader = null;
public StackDisplay widStack = null;
public ContainerTable widTable = null;
public Label widItemName = null;
public GuiIngameWiki(GuiScreen _parentGui) {
super(_parentGui);
this.widReader = new WikiReader(this);
this.widStack = new StackDisplay(this);
this.widTable = new ContainerTable(this);
this.widItemName = new Label("");
this.widReader.setWidth(this.res.getScaledWidth()-this.res.getScaledWidth()/3 - 16);
this.widReader.setHeight(this.res.getScaledHeight() - 24);
this.widReader.setBackgroundColor(0x66888888);
this.widStack.setScale(4.0f);
this.widTable.setAutosize(false);
this.widTable.setWidth(this.res.getScaledWidth()/3 - 8);
this.widTable.setHeight(this.res.getScaledHeight() - 16 - this.widStack.getHeight());
this.widTable.setColumns(8, "\u00a7a\u00a7oEntry", "\u00a7a\u00a7oValue");
this.addWidget("wikireader", this.widReader);
this.addWidget("stackdisplay", this.widStack);
this.addWidget("datatable", this.widTable);
}
@Override
public void drawScreen(int i, int j, float f)
{
super.drawScreen(i, j, f);
widTable.draw(4, this.widStack.getHeight() + 16, 1000);
widItemName.draw(this.res.getScaledWidth()/6-widItemName.getWidth()/2, this.widStack.getHeight(), 0);
widReader.draw(this.res.getScaledWidth()/3 + 8, 8, 0);
widStack.draw(this.res.getScaledWidth()/6-widStack.getWidth()/2, 0, 0);
}
@Override
public void initGui()
{
}
@Override
public void drawDefaultBackground()
{
this.drawGradientRect(0, 0, this.width, this.height, 0xdd000000, 0xdd000000);
}
}
+41
View File
@@ -0,0 +1,41 @@
package mcp.mobius.waila.gui_old;
import mcp.mobius.waila.gui_old.widget.DraggableViewport;
import net.minecraft.client.gui.GuiScreen;
public class GuiTechTree extends BaseWailaScreen {
public DraggableViewport widViewport = null;
public int topOffset = 16;
public GuiTechTree(GuiScreen _parentGui) {
super(_parentGui);
this.widViewport = new DraggableViewport(this);
this.widViewport.setWidth(this.res.getScaledWidth() - 32);
this.widViewport.setHeight(this.res.getScaledHeight() - 32);
this.widViewport.setBackgroundColor(0x66888888);
this.addWidget("viewport", this.widViewport);
}
@Override
public void drawScreen(int i, int j, float f)
{
super.drawScreen(i, j, f);
this.widViewport.draw(16,topOffset,0);
}
@Override
public void initGui()
{
}
@Override
public void drawDefaultBackground()
{
this.drawGradientRect(0, 0, this.width, this.height, 0xdd000000, 0xdd000000);
}
}
@@ -0,0 +1,175 @@
package mcp.mobius.waila.gui_old.NEI;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import codechicken.core.ReflectionManager;
import codechicken.nei.PositionedStack;
import codechicken.nei.recipe.FuelRecipeHandler;
import codechicken.nei.recipe.GuiCraftingRecipe;
import codechicken.nei.recipe.ICraftingHandler;
import codechicken.nei.recipe.TemplateRecipeHandler;
import codechicken.nei.recipe.TemplateRecipeHandler.CachedRecipe;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.ShapedRecipes;
import net.minecraft.item.crafting.ShapelessRecipes;
import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
public class CraftingTreeNode {
CraftingTreeNode topNode = null;
LinkedHashMap<ItemStack, ArrayList<CraftingTreeNode>> bottomNodes = new LinkedHashMap<ItemStack, ArrayList<CraftingTreeNode>>();
//Item stacks we have in the node.
public ArrayList<ItemStack> elements = new ArrayList<ItemStack>();
//Item stacks we are filtering the recipes with. (Previous stacks in the tree)
ArrayList<CachedRecipe> excRecipes = new ArrayList<CachedRecipe>();
//List of recipes available for a given stack
HashMap<ItemStack, ArrayList<CachedRecipe>> recipesMap = new HashMap<ItemStack, ArrayList<CachedRecipe>>();
//Components sorted by recipes for a given item stack
HashMap<ItemStack, ArrayList<ArrayList<ItemStack>>> componentsMap = new HashMap<ItemStack, ArrayList<ArrayList<ItemStack>>>();
int layer;
LinkedHashMap<Integer, ArrayList<CraftingTreeNode>> layers;
public CraftingTreeNode(CraftingTreeNode topNode, ArrayList<ItemStack> elements, int layer, LinkedHashMap<Integer, ArrayList<CraftingTreeNode>> layers) {
this.topNode = topNode;
this.layer = layer;
this.layers = layers;
this.addSelfToLayers();
this.setElements(elements);
System.out.printf("%s\n", this.toString());
}
public CraftingTreeNode(CraftingTreeNode topNode, ArrayList<ItemStack> elements, ArrayList<CachedRecipe> excluded, int layer, LinkedHashMap<Integer, ArrayList<CraftingTreeNode>> layers) {
this.topNode = topNode;
this.layer = layer;
this.layers = layers;
this.addSelfToLayers();
this.excRecipes = excluded;
this.setElements(elements);
System.out.printf("%s\n", this.toString());
}
public CraftingTreeNode(CraftingTreeNode topNode, ItemStack stack, int layer, LinkedHashMap<Integer, ArrayList<CraftingTreeNode>> layers) {
this.topNode = topNode;
this.layer = layer;
this.layers = layers;
this.addSelfToLayers();
this.addElement(stack);
System.out.printf("%s\n", this.toString());
}
public void addSelfToLayers(){
if (!(this.layers.containsKey(layer)))
this.layers.put(this.layer, new ArrayList<CraftingTreeNode>());
this.layers.get(this.layer).add(this);
}
public void addElement(ItemStack stack){
this.elements.add(stack);
this.recipesMap.put(stack, this.getRecipes(stack, this.excRecipes));
this.componentsMap.put(stack, new ArrayList<ArrayList<ItemStack>>());
for (CachedRecipe recipe: this.recipesMap.get(stack)){
this.excRecipes.add(recipe);
ArrayList<ItemStack> subComposants = new ArrayList<ItemStack>();
for (PositionedStack substack : recipe.getIngredients())
subComposants.add(substack.item);
if (subComposants.size() > 0){
if (!this.bottomNodes.containsKey(stack))
this.bottomNodes.put(stack, new ArrayList<CraftingTreeNode>());
this.bottomNodes.get(stack).add(new CraftingTreeNode(this, this.cleanupRecipe(subComposants), this.excRecipes, this.layer+1, this.layers));
}
}
}
public void setElements(ArrayList<ItemStack> elements){
for (ItemStack is : elements)
this.addElement(is);
}
public ArrayList<CachedRecipe> getRecipes(ItemStack stack, ArrayList<CachedRecipe> excluded){
ArrayList<ICraftingHandler> craftinghandlers = ReflectionManager.getField(GuiCraftingRecipe.class, ArrayList.class, null, "craftinghandlers");
ArrayList<CachedRecipe> cachedRecipes = new ArrayList<CachedRecipe>();
for (ICraftingHandler handler : craftinghandlers)
if (handler instanceof TemplateRecipeHandler && !(handler instanceof FuelRecipeHandler)){
((TemplateRecipeHandler) handler).arecipes = new ArrayList<CachedRecipe>();
((TemplateRecipeHandler) handler).loadCraftingRecipes(stack);
for (CachedRecipe recipe : ((TemplateRecipeHandler)handler).arecipes){
boolean found = false;
for (CachedRecipe exc : excluded)
if (this.areRecipesIdentical(recipe, exc))
found = true;
if (found)
continue;
cachedRecipes.add(recipe);
}
}
return cachedRecipes;
}
public boolean areRecipesIdentical(CachedRecipe recipe1, CachedRecipe recipe2){
if (recipe1.getResult().items.length != recipe2.getResult().items.length)
return false;
if (recipe1.getIngredients().size() != recipe1.getIngredients().size())
return false;
for (int i = 0; i < recipe1.getResult().items.length; i++)
if (!recipe1.getResult().items[i].isItemEqual(recipe2.getResult().items[i]))
return false;
for (int i = 0; i < recipe1.getIngredients().size(); i++)
for (int j = 0; j < recipe1.getIngredients().get(i).items.length; j++)
if (!recipe1.getIngredients().get(i).items[j].isItemEqual(recipe2.getIngredients().get(i).items[j]))
return false;
return true;
}
public ArrayList<ItemStack> cleanupRecipe(ArrayList<ItemStack> stacks){
ArrayList<ItemStack> curratedStacks = new ArrayList<ItemStack>();
for (ItemStack is : stacks){
boolean found = false;
for (ItemStack isc : curratedStacks){
//if (OreDictionary.itemMatches(is, isc, false)){
if ((isc.isItemEqual(is)) ||
((OreDictionary.getOreID(isc) != -1) &&
(OreDictionary.getOreID(is) != -1) &&
(OreDictionary.getOreID(isc) == OreDictionary.getOreID(is))
)){
found = true;
break;
}
}
if (!found){
ItemStack isc = is.copy();
isc.stackSize = 0;
curratedStacks.add(isc);
}
}
for (ItemStack is : stacks)
for (ItemStack isc : curratedStacks)
if ((isc.isItemEqual(is)) ||
((OreDictionary.getOreID(isc) != -1) &&
(OreDictionary.getOreID(is) != -1) &&
(OreDictionary.getOreID(isc) == OreDictionary.getOreID(is))
))
//if (isc.isItemEqual(is) || OreDictionary.getOreID(isc) == OreDictionary.getOreID(is))
isc.stackSize += is.stackSize;
return curratedStacks;
}
public String toString(){
return this.elements.toString();
}
}
@@ -1,13 +1,24 @@
package mcp.mobius.waila.handlers;
package mcp.mobius.waila.gui_old.NEI;
import java.lang.reflect.Method;
import mcp.mobius.waila.Constants;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.gui_old.GuiEnchantScreen;
import mcp.mobius.waila.gui_old.widget.Label;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import codechicken.nei.NEIClientConfig;
import codechicken.nei.forge.IContainerInputHandler;
public class EnchantementHandler implements IContainerInputHandler {
public class HandlerEnchantment implements IContainerInputHandler {
static Class EplusApi;
static Method Tooltip;
@Override
public boolean keyTyped(GuiContainer gui, char keyChar, int keyCode) {
// TODO Auto-generated method stub
@@ -25,17 +36,27 @@ public class EnchantementHandler implements IContainerInputHandler {
ItemStack stackover = gui.manager.getStackMouseOver();
if(stackover == null)
return false;
if(keyID == NEIClientConfig.getKeyBinding("showenchant")){
try{
System.out.printf("==== ENCHANTS ====\n");
if(keyID == NEIClientConfig.getKeyBinding(Constants.BIND_SCREEN_ENCH)){
//try{
int itemEnchantability = stackover.getItem().getItemEnchantability();
if (itemEnchantability == 0){return false;}
Minecraft mc = Minecraft.getMinecraft();
GuiEnchantScreen enchantScreen = new GuiEnchantScreen(mc.currentScreen);
enchantScreen.widStackDisplay.setStack(stackover);
enchantScreen.widStackName.setLabel("\u00a7f" + stackover.getDisplayName());
enchantScreen.widStackEnchantability.setLabel(String.format("\u00a7fEnchantability : %s", itemEnchantability));
for(Enchantment enchant : Enchantment.enchantmentsList){
Enchantment[] enchants = null;
if (stackover.getItem() == Item.book)
enchants = Enchantment.enchantmentsBookList;
else
enchants = Enchantment.enchantmentsList;
for(Enchantment enchant : enchants){
if (enchant == null){continue;}
if (enchant.canApplyAtEnchantingTable(stackover)){
if (enchant.canApplyAtEnchantingTable(stackover) || stackover.getItem() == Item.book){
for (int lvl = enchant.getMinLevel(); lvl <= enchant.getMaxLevel(); lvl++){
int minEnchantEnchantability = enchant.getMinEnchantability(lvl);
int maxEnchantEnchantability = enchant.getMaxEnchantability(lvl);
@@ -54,18 +75,41 @@ public class EnchantementHandler implements IContainerInputHandler {
int meanMinLevel = (int) ((minEnchantEnchantability - meanModifiedEnchantability)/1.0);
int meanMaxLevel = (int) ((maxEnchantEnchantability - meanModifiedEnchantability)/1.0);
System.out.printf("%s [%s / %s / %s / %s]\n", enchant.getTranslatedName(lvl), minLevel, maxLevel, meanMinLevel, meanMaxLevel);
enchantScreen.widTable.addRow(new Label(enchant.getTranslatedName(lvl)),
new Label(String.valueOf(minLevel)),
new Label(String.valueOf(maxLevel)),
//new Label(String.valueOf(meanMinLevel)),
//new Label(String.valueOf(meanMaxLevel)),
new Label("\u00a79\u00a7o"+ this.getEnchantModName(enchant))
);
//String description = this.getEnchantmentToolTip(enchant);
}
}
}
}
catch (NullPointerException e){
System.out.printf("%s\n", e);
}
mc.displayGuiScreen(enchantScreen);
//}
//catch (NullPointerException e){
// System.out.printf("%s\n", e);
//}
}
return false;
}
public String getEnchantModName(Enchantment enchant){
String enchantPath = enchant.getClass().getProtectionDomain().getCodeSource().getLocation().toString();
String enchantModName = "<Unknown>";
for (String s: mod_Waila.instance.modSourceList.keySet())
if (enchantPath.contains(s))
enchantModName = mod_Waila.instance.modSourceList.get(s);
if (enchantModName.equals("Minecraft Coder Pack"))
enchantModName = "Minecraft";
return enchantModName;
}
@Override
public boolean mouseClicked(GuiContainer gui, int mousex, int mousey,
int button) {
@@ -107,4 +151,21 @@ public class EnchantementHandler implements IContainerInputHandler {
}
private String getEnchantmentToolTip(Enchantment enchantment) {
try {
if (EplusApi == null) {
EplusApi = Class.forName("eplus.api.EplusApi");
}
if (Tooltip == null) {
Tooltip = EplusApi.getMethod("getEnchantmentToolTip", Enchantment.class);
}
return String.valueOf(Tooltip.invoke(null, enchantment));
} catch (Exception e) {
return "";
}
}
}
@@ -0,0 +1,152 @@
package mcp.mobius.waila.gui_old.NEI;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import mcp.mobius.waila.Constants;
import mcp.mobius.waila.gui_old.GuiIngameWiki;
import mcp.mobius.waila.gui_old.GuiTechTree;
import mcp.mobius.waila.gui_old.widget.ComponentDisplay;
import mcp.mobius.waila.gui_old.widget.StackDisplay;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.ShapedRecipes;
import net.minecraft.item.crafting.ShapelessRecipes;
import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import codechicken.nei.NEIClientConfig;
import codechicken.nei.forge.IContainerInputHandler;
public class HandlerTechTree implements IContainerInputHandler {
public HandlerTechTree() {
// TODO Auto-generated constructor stub
}
@Override
public boolean keyTyped(GuiContainer gui, char keyChar, int keyCode) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onKeyTyped(GuiContainer gui, char keyChar, int keyID) {
// TODO Auto-generated method stub
}
@Override
public boolean lastKeyTyped(GuiContainer gui, char keyChar, int keyID) {
ItemStack stackover = gui.manager.getStackMouseOver();
if(stackover == null)
return false;
if(keyID == NEIClientConfig.getKeyBinding(Constants.BIND_SCREEN_TECH)){
Minecraft mc = Minecraft.getMinecraft();
GuiTechTree techScreen = new GuiTechTree(mc.currentScreen);
LinkedHashMap<Integer, ArrayList<CraftingTreeNode>> layers = new LinkedHashMap<Integer, ArrayList<CraftingTreeNode>> ();
CraftingTreeNode tree = new CraftingTreeNode(null, stackover, 0, layers);
/*
LinkedHashMap<Integer, ArrayList<CraftingTreeNode>> curratedLayers = new LinkedHashMap<Integer, ArrayList<CraftingTreeNode>> ();
for (int layer : layers.keySet())
curratedLayers.put(layer, new ArrayList<CraftingTreeNode>());
for (int i = 0; i < (layers.size() - 1) ; i++)
for (CraftingTreeNode node : layers.get(i)){
if (node.bottomNodes.size() != 0){
curratedLayers.get(i).add(node);
}
else{
node.layer += 1;
layers.get(i+1).add(node);
}
}
for (CraftingTreeNode node : layers.get(layers.keySet().size()-1))
curratedLayers.get(layers.keySet().size()-1).add(node);
System.out.printf("%s\n", curratedLayers);
*/
/*
for (int layer = curratedLayers.keySet().size() - 1; layer >= 0; layer--){
int offsetX = 0;
for (int icompo = 0; icompo < curratedLayers.get(layer).size(); icompo++){
ComponentDisplay componentDisplay = new ComponentDisplay(techScreen, curratedLayers.get(layer).get(icompo));
componentDisplay.setBackgroundColor(0xddeeeed1);
techScreen.widViewport.addWidget(componentDisplay, offsetX, layer*32, 0);
offsetX += componentDisplay.getWidth() + 8;
}
}
*/
for (int layer = layers.keySet().size() - 1; layer >= 0; layer--){
int offsetX = 0;
for (int icompo = 0; icompo < layers.get(layer).size(); icompo++){
ComponentDisplay componentDisplay = new ComponentDisplay(techScreen, layers.get(layer).get(icompo));
componentDisplay.setBackgroundColor(0xddeeeed1);
if (layer != 0)
componentDisplay.setDrawOverlay(true);
techScreen.widViewport.addWidget(componentDisplay, offsetX, layer*32, 0);
offsetX += componentDisplay.getWidth() + 8;
}
}
mc.displayGuiScreen(techScreen);
}
return false;
}
@Override
public boolean mouseClicked(GuiContainer gui, int mousex, int mousey,
int button) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onMouseClicked(GuiContainer gui, int mousex, int mousey,
int button) {
// TODO Auto-generated method stub
}
@Override
public void onMouseUp(GuiContainer gui, int mousex, int mousey, int button) {
// TODO Auto-generated method stub
}
@Override
public boolean mouseScrolled(GuiContainer gui, int mousex, int mousey,
int scrolled) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onMouseScrolled(GuiContainer gui, int mousex, int mousey,
int scrolled) {
// TODO Auto-generated method stub
}
@Override
public void onMouseDragged(GuiContainer gui, int mousex, int mousey,
int button, long heldTime) {
// TODO Auto-generated method stub
}
}
@@ -0,0 +1,138 @@
package mcp.mobius.waila.gui_old.NEI;
import java.util.LinkedHashMap;
import mcp.mobius.waila.Constants;
import mcp.mobius.waila.mod_Waila;
import mcp.mobius.waila.addons.ConfigHandler;
import mcp.mobius.waila.addons.ExternalModulesHandler;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.gui_old.GuiIngameWiki;
import mcp.mobius.waila.gui_old.widget.Label;
import mcp.mobius.waila.handlers.SummaryProvider;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.item.ItemStack;
import codechicken.nei.NEIClientConfig;
import codechicken.nei.forge.IContainerInputHandler;
public class HandlerWiki implements IContainerInputHandler {
public String getDescriptionString(String modid, String name, String meta){
if (ExternalModulesHandler.instance().hasDocTextModID(modid)){
//Do we have an direct entry for this item ?
if (ExternalModulesHandler.instance().hasDocTextItem(modid, name)){
//We check if we have an exact match, a wildcard match and finally, an meta 0 match
if (ExternalModulesHandler.instance().hasDocTextMeta(modid, name, meta)){
return ExternalModulesHandler.instance().getDocText(modid, name, meta);
} else if (ExternalModulesHandler.instance().hasDocTextSpecificMeta(modid, name, "*")){
return ExternalModulesHandler.instance().getDocText(modid, name, "*");
} else if (ExternalModulesHandler.instance().hasDocTextSpecificMeta(modid, name, "0")){
return ExternalModulesHandler.instance().getDocText(modid, name, "0");
}
} else if (ExternalModulesHandler.instance().getDoxTextWildcardMatch(modid, name) != null) {
String key = ExternalModulesHandler.instance().getDoxTextWildcardMatch(modid, name);
if (ExternalModulesHandler.instance().hasDocTextMeta(modid, key, meta)){
return ExternalModulesHandler.instance().getDocText(modid, key, meta);
} else if (ExternalModulesHandler.instance().hasDocTextSpecificMeta(modid, key, "*")){
return ExternalModulesHandler.instance().getDocText(modid, key, "*");
} else if (ExternalModulesHandler.instance().hasDocTextSpecificMeta(modid, key, "0")){
return ExternalModulesHandler.instance().getDocText(modid, key, "0");
}
}
}
return String.format("No description for %s$$%s",modid, name);
}
@Override
public boolean lastKeyTyped(GuiContainer gui, char keyChar, int keyID) {
ItemStack stackover = gui.manager.getStackMouseOver();
if(stackover == null)
return false;
if(keyID == NEIClientConfig.getKeyBinding(Constants.BIND_SCREEN_WIKI)){
Minecraft mc = Minecraft.getMinecraft();
GuiIngameWiki wikiScreen = new GuiIngameWiki(mc.currentScreen);
wikiScreen.widReader.setText(this.getDescriptionString(mod_Waila.instance.getModID(stackover), stackover.getItemName(), String.valueOf(stackover.getItemDamage())));
wikiScreen.widStack.setStack(stackover);
wikiScreen.widItemName.setLabel(stackover.getDisplayName());
LinkedHashMap<String, String> entries = SummaryProvider.instance().getSummary(stackover, (ConfigHandler.instance()));
int nvalidentries = 0;
for (String s : entries.keySet())
if (entries.get(s) != null)
nvalidentries += 1;
if (nvalidentries == 0)
for (int i = 0; i < 6; i++)
wikiScreen.widTable.addRow(new Label(""), new Label(entries.get("")));
else
for (String s : entries.keySet())
if (entries.get(s) != null)
wikiScreen.widTable.addRow(new Label(s), new Label(entries.get(s)));
mc.displayGuiScreen(wikiScreen);
}
return false;
}
@Override
public boolean keyTyped(GuiContainer gui, char keyChar, int keyCode) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onKeyTyped(GuiContainer gui, char keyChar, int keyID) {
// TODO Auto-generated method stub
}
@Override
public boolean mouseClicked(GuiContainer gui, int mousex, int mousey,
int button) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onMouseClicked(GuiContainer gui, int mousex, int mousey,
int button) {
// TODO Auto-generated method stub
}
@Override
public void onMouseUp(GuiContainer gui, int mousex, int mousey, int button) {
// TODO Auto-generated method stub
}
@Override
public boolean mouseScrolled(GuiContainer gui, int mousex, int mousey,
int scrolled) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onMouseScrolled(GuiContainer gui, int mousex, int mousey,
int scrolled) {
// TODO Auto-generated method stub
}
@Override
public void onMouseDragged(GuiContainer gui, int mousex, int mousey,
int button, long heldTime) {
// TODO Auto-generated method stub
}
}
@@ -0,0 +1,215 @@
package mcp.mobius.waila.gui_old.widget;
import java.util.Collection;
import java.util.HashMap;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.GL11;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureManager;
public abstract class BaseWidget implements IWidget {
protected int width, height;
protected String label;
protected int posX, posY, posZ;
protected GuiScreen parent;
protected FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer;;
protected TextureManager renderEngine = Minecraft.getMinecraft().renderEngine;
protected HashMap<String, IWidget> widgets = new HashMap<String, IWidget>();
protected IWidget[] focusWidget = new IWidget[Mouse.getButtonCount()];
protected IWidget mainFocusWidget = null;
protected int backgroundColor = 0;
public BaseWidget(){}
@Override
public abstract int getWidth();
@Override
public abstract int getHeight();
@Override
public void setWidth(int width) { this.width = width; }
@Override
public void setHeight(int height) { this.height = height; }
@Override
public void setPos (int posX, int posY, int posZ){
this.posX = posX;
this.posY = posY;
this.posZ = posZ;
}
@Override
public int getPosX(){return this.posX;}
@Override
public int getPosY(){return this.posY;}
@Override
public String getLabel(){ return this.label;}
@Override
public void setLabel(String label){ this.label = label; }
@Override
public abstract void draw();
@Override
public void draw(int x, int y, int z){
this.posX = x;
this.posY = y;
this.posZ = z;
GL11.glPushMatrix();
GL11.glTranslatef(0.0f,0.0f, this.posZ);
this.draw();
GL11.glPopMatrix();
}
@Override
public void draw(float scale){
int oldX = this.posX;
int oldY = this.posY;
this.posX /= scale;
this.posY /= scale;
GL11.glPushMatrix();
GL11.glTranslatef(0.0f,0.0f, this.posZ);
this.draw();
GL11.glPopMatrix();
this.posX = oldX;
this.posY = oldY;
}
@Override
public boolean mouseClicked(int mouseX, int mouseY, int buttonID){
IWidget widget = this.getWidgetAtCoordinates(mouseX, mouseY);
if (widget != null){
if (buttonID == 0)
this.mainFocusWidget = widget;
this.focusWidget[buttonID] = widget;
return widget.mouseClicked(mouseX, mouseY, buttonID);
} else
return false;
}
@Override
public boolean mouseReleased(int mouseX, int mouseY, int buttonID){
if (buttonID == 0)
this.mainFocusWidget = null;
if (this.focusWidget[buttonID] != null){
boolean retval = this.focusWidget[buttonID].mouseReleased(mouseX, mouseY, buttonID);
this.focusWidget[buttonID] = null;
return retval;
}
this.focusWidget[buttonID] = null;
return false;
}
@Override
public boolean mouseWheel(int mouseX, int mouseY, int mouseZ){
IWidget widget = this.getWidgetAtCoordinates(mouseX, mouseY);
if (widget != null)
return widget.mouseWheel(mouseX, mouseY, mouseZ);
return false;
}
@Override
public boolean mouseMoved(int mouseX, int mouseY){
if (this.mainFocusWidget != null)
return this.mainFocusWidget.mouseMoved(mouseX, mouseY);
IWidget widget = this.getWidgetAtCoordinates(mouseX, mouseY);
if (widget != null)
return widget.mouseMoved(mouseX, mouseY);
return false;
}
/*
@Override
public boolean mouseDragged(int mouseX, int mouseY, int buttonID, long deltaTime){
IWidget widget = this.getWidgetAtCoordinates(mouseX, mouseY);
if (widget != null)
return widget.mouseDragged(mouseX, mouseY, buttonID, deltaTime);
return false;
}
*/
public void startScissorFilter(int posX, int posY, int width, int height){
ScaledResolution res = new ScaledResolution(Minecraft.getMinecraft().gameSettings,
Minecraft.getMinecraft().displayWidth,
Minecraft.getMinecraft().displayHeight);
int scaleFactor = res.getScaleFactor();
int glLeft = posX * scaleFactor;
int glBottom = (res.getScaledHeight() - (posY + height)) * scaleFactor;
GL11.glScissor(posX*scaleFactor, glBottom, width*scaleFactor, height*scaleFactor);
GL11.glEnable(GL11.GL_SCISSOR_TEST);
}
public void stopScissorFilter(){
GL11.glDisable(GL11.GL_SCISSOR_TEST);
}
@Override
public IWidget getWidgetAtCoordinates(int posX, int posY){
for (IWidget widget : this.getWidgets())
if ((posX >= widget.getPosX()) &&
(posX <= widget.getPosX() + widget.getWidth()) &&
(posY >= widget.getPosY()) &&
(posY <= widget.getPosY() + widget.getHeight()))
return widget;
return null;
}
@Override
public void addWidget(String name, IWidget widget){
this.widgets.put(name, widget);
}
@Override
public Collection<IWidget> getWidgets(){
return this.widgets.values();
}
@Override
public IWidget getWidget(String name){
return this.widgets.get(name);
}
@Override
public void setBackgroundColor(int color){
this.backgroundColor = color;
}
@Override
public void drawBackground(){
if (this.backgroundColor != 0)
this.drawGradientRect(this.posX, this.posY, this.posX+this.getWidth(), this.posY+this.getHeight(), 0.0, this.backgroundColor, this.backgroundColor);
}
public void drawGradientRect(int left, int top, int right, int bottom, double zlevel, int colorStart, int colorStop)
{
float f = (colorStart >> 24 & 255) / 255.0F;
float f1 = (colorStart >> 16 & 255) / 255.0F;
float f2 = (colorStart >> 8 & 255) / 255.0F;
float f3 = (colorStart & 255) / 255.0F;
float f4 = (colorStop >> 24 & 255) / 255.0F;
float f5 = (colorStop >> 16 & 255) / 255.0F;
float f6 = (colorStop >> 8 & 255) / 255.0F;
float f7 = (colorStop & 255) / 255.0F;
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_ALPHA_TEST);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glShadeModel(GL11.GL_SMOOTH);
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.setColorRGBA_F(f1, f2, f3, f);
tessellator.addVertex(right, top, zlevel);
tessellator.addVertex(left, top, zlevel);
tessellator.setColorRGBA_F(f5, f6, f7, f4);
tessellator.addVertex(left, bottom, zlevel);
tessellator.addVertex(right, bottom, zlevel);
tessellator.draw();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glEnable(GL11.GL_TEXTURE_2D);
}
}
Loaded 100 of 133 files, more files were not shown because too many files have changed in this diff. Show more