Skip to content

Commit

Permalink
Weaponry booooooook
Browse files Browse the repository at this point in the history
  • Loading branch information
bonii-xx committed Oct 29, 2014
1 parent b291c26 commit 6cd7b49
Show file tree
Hide file tree
Showing 7 changed files with 94 additions and 85 deletions.
1 change: 1 addition & 0 deletions resources/assets/tinker/lang/en_US.lang
Expand Up @@ -431,6 +431,7 @@ item.tconstruct.manual.beginner.name=Materials and You: Volume 1
item.tconstruct.manual.toolstation.name=Materials and You: Volume 2
item.tconstruct.manual.smeltery.name=Mighty Smelting
item.tconstruct.manual.diary.name=Diary of a Tinker
item.tconstruct.manual.weaponry.name=Tinkers' Weaponry

item.tconstruct.bucket.Iron.name=Molten Iron Bucket
item.tconstruct.bucket.Gold.name=Molten Gold Bucket
Expand Down
44 changes: 32 additions & 12 deletions resources/assets/tinker/manuals/en_US/weaponry.xml
Expand Up @@ -12,23 +12,23 @@ By Sheriff Bownana</text>
<text>Table of Contents</text>
<link>
<text>Introduction</text>
<icon>smelterybook</icon>
<icon>weaponrybook</icon>
<jump>3</jump>
</link>
<link>
<text>Throwing Weapons</text>
<icon>castingtable</icon>
<icon>throwingknifeIcon</icon>
<jump>5</jump>
</link>
<link>
<text>Projectile Weapons</text>
<icon>smeltery</icon>
<jump>5</jump>
<icon>shortbowIcon</icon>
<jump>7</jump>
</link>
<link>
<text>Projectiles</text>
<icon>liquidiron</icon>
<jump>9</jump>
<icon>arrowIcon</icon>
<jump>10</jump>
</link>
</page>

Expand Down Expand Up @@ -67,7 +67,11 @@ Throwing knifes stack up to a moderate amount, and deal moderate damage.

Shuriken:
Small delicate projectiles put together from 4 parts, that are thrown from the wrist. Because of this you don't need to take aim and can throw them directly.
Since they're so small you can carry many of them, however they don't deal much damage.
Since they're so small you can carry many of them, however they don't deal much damage.</text>
</page>

<page type="text">
<text>

Javelin:
This is a hybrid between a melee and a ranged weapon, consisting of an arrow head on two tough tool rods. It deals moderate damage as a melee weapon, but to unleash its true potential you have to throw it at your enemy.
Expand All @@ -80,12 +84,20 @@ The throwing has a small windup. Because of their size you can only carry a few,
Shortbow:
Put together from two bow limbs and a bowstring, this weapon is a fast and handy bow. Keep in mind that inflexible materials like stone can hardly be drawn back and can't accelerate projectiles well. Organic materials are favoured for quick bows, while metals require lots of strengt to draw back, but provide more power.
The bow requires arrows as ammo.
Offensive modifiers on bows do not count for arrows. The only modifiers affecting its ranged performance are Redstone and lapis.
Offensive modifiers on bows do not count for arrows. The only modifiers affecting its ranged performance are Redstone and lapis.</text>
</page>

<page type="text">
<text>

Longbow:
The big brother. This bow is much bigger, requiring more time to pull it back, but boy oh boy are those arrows fast.
Because of this the longbow performs slightly better against armored targets. Furthermore this makes the longbow less accurate with very light arrows.
The longbow is constructed from two bow limbs, a bowstring and a large plate.
The longbow is constructed from two bow limbs, a bowstring and a large plate.</text>
</page>

<page type="text">
<text>

Crossbow:
Those pesky metals are such a pain to pull back. Luckily a tinkerer knows how to help himself! The crossbow allows you to pre-load it with a bolt, and have it ready instantly to fire. Since this allows for much more power, it can shoot heavier projectiles, resulting in more damage and armor penetration.
Expand All @@ -99,7 +111,11 @@ For these projectiles goes: The heavier the projectile, the more damage carries
Arrows:
The bread and butter of every ranger. Arrows can be built from many different materials. It needs an arrow head, a shaft and a fletching.
The choice of materials allows a balance between damage, arrow-count, accuracy and fragility. The head material is crucial for its weight.
A fragile arrow has a chance to break on impact with terrain. Arrows always break when they hit a target, however the reinforced trait gives a chance for the arrow to survive the impact.
A fragile arrow has a chance to break on impact with terrain. Arrows always break when they hit a target, however the reinforced trait gives a chance for the arrow to survive the impact.</text>
</page>

<page type="text">
<text>

Valid Shaft Materials:
* Stick
Expand All @@ -111,14 +127,18 @@ Valid Fletching Materials:
* Leaves
* Slimeleaves
* Feathers
* Slime
* Slime</text>
</page>

<page type="text">
<text>

Bolts:
Crafting bolts is a delicate process. First you need a core in the form of a tool rod.
Take this tool rod to a smeltery and put it into a Casting Table. Pour some metal onto it to coat the tip with a more damaging material.
After this process, add a fletching and your bolts are ready to be used.

Since the bolts consist of a harder core and tip they carry more weight than regular arrows, making them perfect to fight armored targets.
Since the bolts consist of a harder core and tip they carry more weight than regular arrows, making them perfect to fight armored targets.</text>
</page>

</book>
106 changes: 38 additions & 68 deletions src/main/java/tconstruct/client/TProxyClient.java
Expand Up @@ -3,6 +3,7 @@
import java.io.InputStream;
import java.text.DecimalFormat;
import javax.xml.parsers.*;

import mantle.client.SmallFontRenderer;
import mantle.lib.client.MantleClientRegistry;
import net.minecraft.client.Minecraft;
Expand All @@ -17,8 +18,7 @@
import tconstruct.common.TProxyCommon;
import tconstruct.tools.items.ManualInfo;

public class TProxyClient extends TProxyCommon
{
public class TProxyClient extends TProxyCommon {
public static DecimalFormat df = new DecimalFormat("##.#");

/* TODO: Split this class up into its respective parts */
Expand All @@ -27,15 +27,13 @@ public class TProxyClient extends TProxyCommon
public static Minecraft mc;
public static RenderItem itemRenderer = new RenderItem();

public void initialize ()
{
public void initialize() {
registerRenderer();
readManuals();
}

/* Registers any rendering code. */
public void registerRenderer ()
{
public void registerRenderer() {
Minecraft mc = Minecraft.getMinecraft();
smallFontRenderer = new SmallFontRenderer(mc.gameSettings, new ResourceLocation("textures/font/ascii.png"), mc.renderEngine, false);
}
Expand All @@ -44,68 +42,45 @@ public void registerRenderer ()
public static Document volume1;
public static Document volume2;
public static Document smelter;
public static Document weaponry;
public static ManualInfo manualData;

public void readManuals ()
{
public void readManuals() {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
String CurrentLanguage = Minecraft.getMinecraft().getLanguageManager().getCurrentLanguage().getLanguageCode();

Document diary_cl = readManual("/assets/tinker/manuals/" + CurrentLanguage + "/diary.xml", dbFactory);
Document volume1_cl = readManual("/assets/tinker/manuals/" + CurrentLanguage + "/firstday.xml", dbFactory);
Document volume2_cl = readManual("/assets/tinker/manuals/" + CurrentLanguage + "/materials.xml", dbFactory);
Document smelter_cl = readManual("/assets/tinker/manuals/" + CurrentLanguage + "/smeltery.xml", dbFactory);

diary = readManual("/assets/tinker/manuals/en_US/diary.xml", dbFactory);
volume1 = readManual("/assets/tinker/manuals/en_US/firstday.xml", dbFactory);
volume2 = readManual("/assets/tinker/manuals/en_US/materials.xml", dbFactory);
smelter = readManual("/assets/tinker/manuals/en_US/smeltery.xml", dbFactory);

if(diary_cl != null)
{
diary = diary_cl;
}

if(volume1_cl != null)
{
volume1 = volume1_cl;
}

if(volume2_cl != null)
{
volume2 = volume2_cl;
}

if(smelter_cl != null)
{
smelter = smelter_cl;
}

initManualIcons();
String CurrentLanguage = Minecraft.getMinecraft().getLanguageManager().getCurrentLanguage().getLanguageCode();

Document diary_cl = readManual("/assets/tinker/manuals/" + CurrentLanguage + "/diary.xml", dbFactory);
Document volume1_cl = readManual("/assets/tinker/manuals/" + CurrentLanguage + "/firstday.xml", dbFactory);
Document volume2_cl = readManual("/assets/tinker/manuals/" + CurrentLanguage + "/materials.xml", dbFactory);
Document smelter_cl = readManual("/assets/tinker/manuals/" + CurrentLanguage + "/smeltery.xml", dbFactory);
Document weaponry_cl = readManual("/assets/tinker/manuals/" + CurrentLanguage + "/weaponry.xml", dbFactory);

diary = diary_cl != null ? diary_cl : readManual("/assets/tinker/manuals/en_US/diary.xml", dbFactory);
volume1 = volume1_cl != null ? volume1_cl : readManual("/assets/tinker/manuals/en_US/firstday.xml", dbFactory);
volume2 = volume2_cl != null ? volume2_cl : readManual("/assets/tinker/manuals/en_US/materials.xml", dbFactory);
smelter = smelter_cl != null ? smelter_cl : readManual("/assets/tinker/manuals/en_US/smeltery.xml", dbFactory);
weaponry = weaponry_cl != null ? weaponry_cl : readManual("/assets/tinker/manuals/en_US/weaponry.xml", dbFactory);

initManualIcons();
initManualRecipes();
initManualPages();
manualData = new ManualInfo();
}

Document readManual (String location, DocumentBuilderFactory dbFactory)
{
try
{
Document readManual(String location, DocumentBuilderFactory dbFactory) {
try {
InputStream stream = TConstruct.class.getResourceAsStream(location);
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(stream);
doc.getDocumentElement().normalize();
return doc;
}
catch (Exception e)
{
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

public void initManualIcons ()
{
public void initManualIcons() {
MantleClientRegistry.registerManualIcon("torch", new ItemStack(Blocks.torch));
MantleClientRegistry.registerManualIcon("sapling", new ItemStack(Blocks.sapling));
MantleClientRegistry.registerManualIcon("workbench", new ItemStack(Blocks.crafting_table));
Expand All @@ -121,34 +96,29 @@ public void initManualIcons ()
MantleClientRegistry.registerManualIcon("netherrack", new ItemStack(Blocks.netherrack));
}

public void initManualRecipes ()
{
public void initManualRecipes() {
}

void initManualPages ()
{
void initManualPages() {

}

public static Document getManualFromStack (ItemStack stack)
{
switch (stack.getItemDamage())
{
case 0:
return volume1;
case 1:
return volume2;
case 2:
return smelter;
case 3:
return diary;
public static Document getManualFromStack(ItemStack stack) {
switch (stack.getItemDamage()) {
case 0:
return volume1;
case 1:
return volume2;
case 2:
return smelter;
case 3:
return diary;
}

return null;
}

public void recalculateHealth ()
{
public void recalculateHealth() {
ArmorProxyClient.armorExtended.recalculateHealth(mc.thePlayer, TPlayerStats.get(mc.thePlayer));
}

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/tconstruct/tools/ToolProxyClient.java
Expand Up @@ -101,8 +101,8 @@ public void registerManualIcons ()
MantleClientRegistry.registerManualIcon("frypanicon", ToolBuilder.instance.buildTool(new ItemStack(TinkerTools.frypanHead, 1, 10), new ItemStack(TinkerTools.toolRod, 1, 11), null, ""));
MantleClientRegistry.registerManualIcon("battlesignicon", ToolBuilder.instance.buildTool(new ItemStack(TinkerTools.signHead, 1, 10), new ItemStack(TinkerTools.toolRod, 1, 11), null, ""));
MantleClientRegistry.registerManualIcon("chiselicon", ToolBuilder.instance.buildTool(new ItemStack(TinkerTools.chiselHead, 1, 10), new ItemStack(TinkerTools.toolRod, 1, 11), null, ""));
MantleClientRegistry.registerManualIcon("shortbowIcon", ToolBuilder.instance.buildTool(new ItemStack(TinkerTools.toolRod, 1, 10), new ItemStack(TinkerWeaponry.bowstring, 1, 0), new ItemStack(TinkerTools.toolRod, 1, 12), ""));
MantleClientRegistry.registerManualIcon("arrowIcon", ToolBuilder.instance.buildTool(new ItemStack(TinkerWeaponry.arrowhead, 1, 10), new ItemStack(TinkerTools.toolRod, 1, 11), new ItemStack(TinkerWeaponry.fletching, 1, 0), ""));
//MantleClientRegistry.registerManualIcon("shortbowIcon", ToolBuilder.instance.buildTool(new ItemStack(TinkerTools.toolRod, 1, 10), new ItemStack(TinkerWeaponry.bowstring, 1, 0), new ItemStack(TinkerTools.toolRod, 1, 12), ""));
//MantleClientRegistry.registerManualIcon("arrowIcon", ToolBuilder.instance.buildTool(new ItemStack(TinkerWeaponry.arrowhead, 1, 10), new ItemStack(TinkerTools.toolRod, 1, 11), new ItemStack(TinkerWeaponry.fletching, 1, 0), ""));

MantleClientRegistry.registerManualIcon("hammericon", ToolBuilder.instance.buildTool(new ItemStack(TinkerTools.hammerHead, 1, 10), new ItemStack(TinkerTools.toughRod, 1, 11), new ItemStack(TinkerTools.largePlate, 1, 12), new ItemStack(TinkerTools.largePlate, 8), ""));
MantleClientRegistry.registerManualIcon("lumbericon", ToolBuilder.instance.buildTool(new ItemStack(TinkerTools.broadAxeHead, 1, 10), new ItemStack(TinkerTools.toughRod, 1, 11), new ItemStack(TinkerTools.largePlate, 1, 12), new ItemStack(TinkerTools.toughBinding, 8), ""));
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/tconstruct/tools/items/Manual.java
Expand Up @@ -18,8 +18,8 @@

public class Manual extends CraftingItem
{
static String[] name = new String[] { "beginner", "toolstation", "smeltery", "diary" };
static String[] textureName = new String[] { "tinkerbook_diary", "tinkerbook_toolstation", "tinkerbook_smeltery", "tinkerbook_blue" };
static String[] name = new String[] { "beginner", "toolstation", "smeltery", "diary", "weaponry" };
static String[] textureName = new String[] { "tinkerbook_diary", "tinkerbook_toolstation", "tinkerbook_smeltery", "tinkerbook_blue", "tinkerbook_green" };

public Manual()
{
Expand Down Expand Up @@ -50,6 +50,8 @@ private BookData getData (ItemStack stack)
return TProxyClient.manualData.toolStation;
case 2:
return TProxyClient.manualData.smeltery;
case 4:
return TProxyClient.manualData.weaponry;
default:
return TProxyClient.manualData.diary;
}
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/tconstruct/tools/items/ManualInfo.java
Expand Up @@ -16,6 +16,7 @@ public class ManualInfo
BookData toolStation = new BookData();
BookData smeltery = new BookData();
BookData diary = new BookData();
BookData weaponry = new BookData();

/* diary = readManual("/assets/tinker/manuals/diary.xml", dbFactory);
volume1 = readManual("/assets/tinker/manuals/firstday.xml", dbFactory);
Expand All @@ -29,7 +30,7 @@ public ManualInfo()
toolStation = initManual(toolStation, "tconstruct.manual.toolstation", "\u00a7o" + StatCollector.translateToLocal("manual2.tooltip"), side == Side.CLIENT ? TProxyClient.volume2 : null, "tinker:tinkerbook_toolstation");
smeltery = initManual(smeltery, "tconstruct.manual.smeltery", "\u00a7o" + StatCollector.translateToLocal("manual3.tooltip"), side == Side.CLIENT ? TProxyClient.smelter : null, "tinker:tinkerbook_smeltery");
diary = initManual(diary, "tconstruct.manual.diary", "\u00a7o" + StatCollector.translateToLocal("manual4.tooltip"), side == Side.CLIENT ? TProxyClient.diary : null, "tinker:tinkerbook_blue");

weaponry = initManual(weaponry, "tconstruct.manual.weaponry", "\u00a7o" + StatCollector.translateToLocal("manual5.tooltip"), side == Side.CLIENT ? TProxyClient.weaponry : null, "tinker:tinkerbook_green");
}

public BookData initManual (BookData data, String unlocName, String toolTip, Document xmlDoc, String itemImage)
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/tconstruct/weaponry/WeaponryClientProxy.java
@@ -1,6 +1,9 @@
package tconstruct.weaponry;

import mantle.lib.client.MantleClientRegistry;
import net.minecraft.init.Items;
import tconstruct.client.AmmoItemRenderer;
import tconstruct.library.crafting.ToolBuilder;
import tconstruct.library.entity.ProjectileBase;
import tconstruct.weaponry.client.AmmoSlotHandler;
import tconstruct.weaponry.client.CrosshairHandler;
Expand Down Expand Up @@ -39,6 +42,7 @@ public void init() {
registerMaterialRendering();

buttons();
registerManualIcons();
}

private void registerRenderers()
Expand Down Expand Up @@ -159,4 +163,15 @@ private void buttons()
TConstructClientRegistry.addTierTwoButton(icons[i][0], icons[i][1], icons[i][2], coords[i*2], coords[i*2+1], tools[i].getLocalizedToolName(), locString, Reference.RESOURCE, tex);
}
}


/* Manual Stuff */
public void registerManualIcons ()
{
MantleClientRegistry.registerManualIcon("throwingknifeIcon", ToolBuilder.instance.buildTool(new ItemStack(TinkerTools.knifeBlade, 1, TinkerTools.MaterialID.Iron), new ItemStack(TinkerTools.toolRod, 1, 11), null, ""));
MantleClientRegistry.registerManualIcon("shortbowIcon", ToolBuilder.instance.buildTool(new ItemStack(TinkerWeaponry.partBowLimb, 1, TinkerTools.MaterialID.Wood), new ItemStack(TinkerWeaponry.bowstring, 1, 0), new ItemStack(TinkerWeaponry.partBowLimb, 1, TinkerTools.MaterialID.Wood), ""));
MantleClientRegistry.registerManualIcon("arrowIcon", ToolBuilder.instance.buildTool(new ItemStack(TinkerWeaponry.arrowhead, 1, TinkerTools.MaterialID.Flint), new ItemStack(Items.stick), new ItemStack(TinkerWeaponry.fletching, 1, 0), ""));

MantleClientRegistry.registerManualIcon("weaponrybook", new ItemStack(TinkerTools.manualBook, 1, 4));
}
}

0 comments on commit 6cd7b49

Please sign in to comment.