Doing it right dot jpeg
This commit is contained in:
commit
b958f0d07f
22 changed files with 1582 additions and 0 deletions
22
.gitattributes
vendored
Normal file
22
.gitattributes
vendored
Normal file
|
@ -0,0 +1,22 @@
|
|||
# Auto detect text files and perform LF normalization
|
||||
* text=auto
|
||||
|
||||
# Custom for Visual Studio
|
||||
*.cs diff=csharp
|
||||
*.sln merge=union
|
||||
*.csproj merge=union
|
||||
*.vbproj merge=union
|
||||
*.fsproj merge=union
|
||||
*.dbproj merge=union
|
||||
|
||||
# Standard to msysgit
|
||||
*.doc diff=astextplain
|
||||
*.DOC diff=astextplain
|
||||
*.docx diff=astextplain
|
||||
*.DOCX diff=astextplain
|
||||
*.dot diff=astextplain
|
||||
*.DOT diff=astextplain
|
||||
*.pdf diff=astextplain
|
||||
*.PDF diff=astextplain
|
||||
*.rtf diff=astextplain
|
||||
*.RTF diff=astextplain
|
163
.gitignore
vendored
Normal file
163
.gitignore
vendored
Normal file
|
@ -0,0 +1,163 @@
|
|||
#################
|
||||
## Eclipse
|
||||
#################
|
||||
|
||||
*.pydevproject
|
||||
.project
|
||||
.metadata
|
||||
bin/
|
||||
tmp/
|
||||
*.tmp
|
||||
*.bak
|
||||
*.swp
|
||||
*~.nib
|
||||
local.properties
|
||||
.classpath
|
||||
.settings/
|
||||
.loadpath
|
||||
|
||||
# External tool builders
|
||||
.externalToolBuilders/
|
||||
|
||||
# Locally stored "Eclipse launch configurations"
|
||||
*.launch
|
||||
|
||||
# CDT-specific
|
||||
.cproject
|
||||
|
||||
# PDT-specific
|
||||
.buildpath
|
||||
|
||||
|
||||
#################
|
||||
## Visual Studio
|
||||
#################
|
||||
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
|
||||
# User-specific files
|
||||
*.suo
|
||||
*.user
|
||||
*.sln.docstates
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Rr]elease/
|
||||
*_i.c
|
||||
*_p.c
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.vspscc
|
||||
.builds
|
||||
*.dotCover
|
||||
|
||||
## TODO: If you have NuGet Package Restore enabled, uncomment this
|
||||
#packages/
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish
|
||||
|
||||
# Others
|
||||
[Bb]in
|
||||
[Oo]bj
|
||||
sql
|
||||
TestResults
|
||||
*.Cache
|
||||
ClientBin
|
||||
stylecop.*
|
||||
~$*
|
||||
*.dbmdl
|
||||
Generated_Code #added for RIA/Silverlight projects
|
||||
|
||||
# Backup & report files from converting an old project file to a newer
|
||||
# Visual Studio version. Backup files are not needed, because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
|
||||
|
||||
|
||||
############
|
||||
## Windows
|
||||
############
|
||||
|
||||
# Windows image file caches
|
||||
Thumbs.db
|
||||
|
||||
# Folder config file
|
||||
Desktop.ini
|
||||
|
||||
|
||||
#############
|
||||
## Python
|
||||
#############
|
||||
|
||||
*.py[co]
|
||||
|
||||
# Packages
|
||||
*.egg
|
||||
*.egg-info
|
||||
dist
|
||||
build
|
||||
eggs
|
||||
parts
|
||||
bin
|
||||
var
|
||||
sdist
|
||||
develop-eggs
|
||||
.installed.cfg
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
.coverage
|
||||
.tox
|
||||
|
||||
#Translations
|
||||
*.mo
|
||||
|
||||
#Mr Developer
|
||||
.mr.developer.cfg
|
||||
|
||||
# Mac crap
|
||||
.DS_Store
|
19
machinemuse/powersuits/client/ClientPacketHandler.java
Normal file
19
machinemuse/powersuits/client/ClientPacketHandler.java
Normal file
|
@ -0,0 +1,19 @@
|
|||
package machinemuse.powersuits.client;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.DataInputStream;
|
||||
|
||||
import net.minecraft.network.INetworkManager;
|
||||
import net.minecraft.network.packet.Packet250CustomPayload;
|
||||
import cpw.mods.fml.common.network.IPacketHandler;
|
||||
import cpw.mods.fml.common.network.Player;
|
||||
|
||||
public class ClientPacketHandler implements IPacketHandler {
|
||||
@Override
|
||||
public void onPacketData(INetworkManager manager,
|
||||
Packet250CustomPayload payload, Player player) {
|
||||
DataInputStream data = new DataInputStream(new ByteArrayInputStream(
|
||||
payload.data));
|
||||
}
|
||||
|
||||
}
|
25
machinemuse/powersuits/client/ClientProxy.java
Normal file
25
machinemuse/powersuits/client/ClientProxy.java
Normal file
|
@ -0,0 +1,25 @@
|
|||
package machinemuse.powersuits.client;
|
||||
|
||||
import machinemuse.powersuits.common.CommonProxy;
|
||||
import machinemuse.powersuits.common.PowersuitsMod;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraftforge.client.MinecraftForgeClient;
|
||||
|
||||
public class ClientProxy extends CommonProxy {
|
||||
private static EquipmentRenderer eRenderer = new EquipmentRenderer();
|
||||
|
||||
@Override
|
||||
public void registerRenderers() {
|
||||
for (Item i : PowersuitsMod.allItems) {
|
||||
MinecraftForgeClient.registerItemRenderer(
|
||||
i.shiftedIndex, eRenderer);
|
||||
}
|
||||
// for (Item i : PowersuitsMod.allBlocks) {
|
||||
// MinecraftForgeClient.registerItemRenderer(
|
||||
// i.shiftedIndex, eRenderer);
|
||||
// }
|
||||
|
||||
MinecraftForgeClient.preloadTexture("/gui/tinktablegui.png");
|
||||
}
|
||||
|
||||
}
|
26
machinemuse/powersuits/client/EquipmentRenderer.java
Normal file
26
machinemuse/powersuits/client/EquipmentRenderer.java
Normal file
|
@ -0,0 +1,26 @@
|
|||
package machinemuse.powersuits.client;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
public class EquipmentRenderer implements IItemRenderer {
|
||||
private static final boolean useRenderHelper = true;
|
||||
|
||||
@Override
|
||||
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
|
||||
return useRenderHelper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item,
|
||||
ItemRendererHelper helper) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
|
||||
MuseGui muse = new MuseGui();
|
||||
muse.drawCircleAround(8, 8, 8);
|
||||
}
|
||||
|
||||
}
|
136
machinemuse/powersuits/client/GuiTinkerTable.java
Normal file
136
machinemuse/powersuits/client/GuiTinkerTable.java
Normal file
|
@ -0,0 +1,136 @@
|
|||
package machinemuse.powersuits.client;
|
||||
|
||||
import machinemuse.powersuits.common.ContainerTinkerTable;
|
||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class GuiTinkerTable extends GuiContainer {
|
||||
public IInventory[] armorInventory;
|
||||
|
||||
public GuiTinkerTable(ContainerTinkerTable container) {
|
||||
super(container);
|
||||
this.xSize = 256;
|
||||
this.ySize = 226;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the buttons (and other controls) to the screen in question.
|
||||
*/
|
||||
public void initGui()
|
||||
{
|
||||
super.initGui();
|
||||
}
|
||||
|
||||
public void refresh() {
|
||||
for (int i = 0; i < 4; i++) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// public void drawNthItem(ItemStack stack, int n) {
|
||||
// // TBI
|
||||
// // draw item
|
||||
// // draw a button if it's moddable
|
||||
// }
|
||||
//
|
||||
// public void drawSelection() {
|
||||
// // if(selectedSlot != null) {
|
||||
// // drawCircleAround(selectedSlot.position, renderEngine, selectedSlot);
|
||||
// // }
|
||||
// // for (Augmentation a : Augmentation.getAllAugs()) {
|
||||
// // if (a.canGoInSlot(selectedSlot.getType())) {
|
||||
// //
|
||||
// // }
|
||||
// // }
|
||||
//
|
||||
// }
|
||||
|
||||
// public void drawLayout(AugLayout layout) {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// public void drawBackground() {
|
||||
// this.drawDefaultBackground();
|
||||
// this.drawRectangularBackground();
|
||||
// }
|
||||
//
|
||||
// public void drawScreen(int par1, int par2, float par3) {
|
||||
// super.drawScreen(par1, par2, par3);
|
||||
// drawBackground();
|
||||
// drawItemList();
|
||||
// if (editingItem != null && editingLayout != null) {
|
||||
// drawLayout(editingLayout);
|
||||
// if (selectedSlot != null) {
|
||||
// drawSelection();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// public void drawItemList() {
|
||||
// List<ItemStack> items = new ArrayList<ItemStack>();
|
||||
// for (int i = 0; i < 4; i++) {
|
||||
// ItemStack item = editingPlayer.inventory.armorItemInSlot(i);
|
||||
// this.drawItemAt(new Point2Df(0, 0), this.mc.renderEngine, item);
|
||||
// items.add(item);
|
||||
// }
|
||||
// for (int i = 0; i < 9; i++) {
|
||||
// items.add(editingPlayer.inventory.mainInventory[i]);
|
||||
// }
|
||||
// this.drawItemsOnVerticalLine(items, new Point2Df(-0.9f, 0), 0.9f,
|
||||
// this.mc.renderEngine);
|
||||
// }
|
||||
|
||||
/**
|
||||
* Draw the foreground layer for the GuiContainer (everything in front of
|
||||
* the items)
|
||||
*/
|
||||
protected void drawGuiContainerForegroundLayer(int par1, int par2)
|
||||
{
|
||||
int x = 0;
|
||||
int y = 0;
|
||||
int color = 0;
|
||||
double weight = 0.0;
|
||||
double capacity = 0.0;
|
||||
|
||||
this.fontRenderer.drawString("Weight: " + weight, 8, 104,
|
||||
color);
|
||||
this.fontRenderer.drawString("Capacity: " + capacity, 8, 114,
|
||||
color);
|
||||
this.fontRenderer.drawString("Speed: " + capacity, 8, 124,
|
||||
color);
|
||||
}
|
||||
|
||||
protected void drawAugmentationContainerBackground(int paddingX,
|
||||
int paddingY, int j) {
|
||||
int n = 0; // set N to the number of augs in that item, plus 1
|
||||
for (int i = 0; i < n; i++) {
|
||||
this.drawTexturedModalRect(
|
||||
paddingX + 35, // where on the screen
|
||||
paddingY + 8 + 18 * j,
|
||||
0, // where in the texture
|
||||
227,
|
||||
18 * i, // how much
|
||||
18);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw the background layer for the GuiContainer (everything behind the
|
||||
* items)
|
||||
*/
|
||||
protected void drawGuiContainerBackgroundLayer(float par1, int par2,
|
||||
int par3)
|
||||
{
|
||||
int textureIndex = this.mc.renderEngine
|
||||
.getTexture("/img/tinktablegui.png");
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.mc.renderEngine.bindTexture(textureIndex);
|
||||
int paddingX = (this.width - this.xSize) / 2;
|
||||
int paddingY = (this.height - this.ySize) / 2;
|
||||
int numrows = 5;
|
||||
this.drawTexturedModalRect(paddingX, paddingY, 0, 0, this.xSize,
|
||||
this.ySize);
|
||||
}
|
||||
}
|
147
machinemuse/powersuits/client/MuseGui.java
Normal file
147
machinemuse/powersuits/client/MuseGui.java
Normal file
|
@ -0,0 +1,147 @@
|
|||
package machinemuse.powersuits.client;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.renderer.RenderEngine;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.entity.RenderItem;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class MuseGui extends GuiScreen {
|
||||
protected static RenderItem itemRenderer = new RenderItem();
|
||||
private final boolean usePretty = true;
|
||||
private static final int numSegments = 360;
|
||||
private static final int xcenter = 8;
|
||||
private static final int ycenter = 8;
|
||||
private static final Tessellator tesselator = Tessellator.instance;
|
||||
|
||||
public static final double theta = (2 * Math.PI) / numSegments;
|
||||
|
||||
/**
|
||||
* Adds the buttons (and other controls) to the screen in question.
|
||||
*/
|
||||
public void initGui() {
|
||||
super.initGui();
|
||||
this.controlList.clear();
|
||||
Keyboard.enableRepeatEvents(true);
|
||||
}
|
||||
|
||||
public void drawRectangularBackground() {
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glEnable(GL11.GL_LINE_SMOOTH);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
GL11.glBegin(GL11.GL_QUADS);
|
||||
GL11.glColor4f(0.5f, 0.5f, 0.5f, 0.8f);
|
||||
GL11.glVertex2d(0, 0);
|
||||
GL11.glVertex2d(width - 10, 0);
|
||||
GL11.glVertex2d(width - 10, height - 10);
|
||||
GL11.glVertex2d(0, height - 10);
|
||||
GL11.glEnd();
|
||||
}
|
||||
|
||||
public void drawItemsOnVerticalLine(List<ItemStack> items, Point2Df offset,
|
||||
float lineheight, RenderEngine engine) {
|
||||
if (items.size() < 1) {
|
||||
return;
|
||||
} else if (items.size() < 2) {
|
||||
drawItemAt(offset, engine, items.get(0));
|
||||
} else {
|
||||
int top = (int) (offset.getAbsY(height) - height * lineheight / 2);
|
||||
int bottom = (int) (offset.getAbsY(height) + height * lineheight
|
||||
/ 2);
|
||||
Point2Df position = new Point2Df(offset.x, top * 2.0f / height - 1);
|
||||
int step = (top - bottom) / (items.size() - 1);
|
||||
for (int i = 0; i < items.size(); i++) {
|
||||
drawItemAt(position, engine, items.get(i));
|
||||
position.y += step;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void drawItemAt(Point2Df p, RenderEngine engine,
|
||||
ItemStack item) {
|
||||
itemRenderer.renderItemAndEffectIntoGUI(this.fontRenderer, engine,
|
||||
item, p.getAbsX(width) - xcenter, p.getAbsY(height) - ycenter);
|
||||
}
|
||||
|
||||
public void drawCircleAround(float xoffset, float yoffset, float radius) {
|
||||
int start = (int) (System.currentTimeMillis() / 4 % 360);
|
||||
double x = radius * Math.sin(theta * start);
|
||||
double y = radius * Math.cos(theta * start);
|
||||
double tf = Math.tan(theta);
|
||||
double rf = Math.cos(theta);
|
||||
double tx;
|
||||
double ty;
|
||||
Colour c = new Colour(0.0f, 1.0f, 0.0f, 0.0f);
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glEnable(GL11.GL_LINE_SMOOTH);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
GL11.glBegin(GL11.GL_LINE_LOOP);
|
||||
for (int i = 0; i < numSegments; i++) {
|
||||
GL11.glColor4f(c.r, c.g, c.b, c.a);
|
||||
GL11.glVertex2d(x + xoffset, y + yoffset);
|
||||
tx = y;
|
||||
ty = -x;
|
||||
x += tx * tf;
|
||||
y += ty * tf;
|
||||
x *= rf;
|
||||
y *= rf;
|
||||
c.r += theta / 7;
|
||||
c.b += theta / 7;
|
||||
c.a += theta / 2;
|
||||
}
|
||||
GL11.glEnd();
|
||||
}
|
||||
|
||||
public static class Colour {
|
||||
public float r;
|
||||
public float g;
|
||||
public float b;
|
||||
public float a;
|
||||
|
||||
public Colour(float r, float g, float b, float a) {
|
||||
this.r = r;
|
||||
this.g = g;
|
||||
this.b = b;
|
||||
this.a = a;
|
||||
}
|
||||
|
||||
public Colour(float r, float g, float b) {
|
||||
this(r, g, b, 1.0F);
|
||||
}
|
||||
|
||||
public Colour(int c) {
|
||||
this.r = (c >> 16 & 255) / 255.0F;
|
||||
this.g = (c >> 8 & 255) / 255.0F;
|
||||
this.b = (c & 255) / 255.0F;
|
||||
this.a = 1.0F;
|
||||
}
|
||||
}
|
||||
|
||||
public static class Point2Df {
|
||||
/*
|
||||
* point representation where [-1,-1] is the top left corner of the
|
||||
* screen and [1,1] is the bottom right.
|
||||
*/
|
||||
public float x;
|
||||
public float y;
|
||||
|
||||
public Point2Df(float x, float y) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
public int getAbsX(int width) {
|
||||
return (int) ((x + 1) * width / 2);
|
||||
}
|
||||
|
||||
public int getAbsY(int height) {
|
||||
return (int) ((y + 1) * height / 2);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
8
machinemuse/powersuits/common/AugLayout.java
Normal file
8
machinemuse/powersuits/common/AugLayout.java
Normal file
|
@ -0,0 +1,8 @@
|
|||
package machinemuse.powersuits.common;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public abstract class AugLayout {
|
||||
private List<AugSlot> slots;
|
||||
|
||||
}
|
62
machinemuse/powersuits/common/AugSlot.java
Normal file
62
machinemuse/powersuits/common/AugSlot.java
Normal file
|
@ -0,0 +1,62 @@
|
|||
package machinemuse.powersuits.common;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class AugSlot {
|
||||
private List<AugSlot> connectedSlots;
|
||||
private SlotType type;
|
||||
private ItemAugmentation installedAug;
|
||||
|
||||
public AugSlot(SlotType type) {
|
||||
connectedSlots = new ArrayList<AugSlot>();
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public List<AugSlot> getConnectedSlots() {
|
||||
return connectedSlots;
|
||||
}
|
||||
|
||||
public void connectToSlot(AugSlot other) {
|
||||
if (!this.connectedSlots.contains(other)) {
|
||||
this.connectedSlots.add(other);
|
||||
}
|
||||
if (!other.connectedSlots.contains(this)) {
|
||||
other.connectedSlots.add(this);
|
||||
}
|
||||
}
|
||||
|
||||
// Returns true if successful, false otherwise
|
||||
public boolean installAugmentation(ItemAugmentation aug) {
|
||||
if (aug.canGoInSlot(type)) {
|
||||
installedAug = aug;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void disconnectFromSlot(AugSlot other) {
|
||||
if (!this.connectedSlots.contains(other)) {
|
||||
this.connectedSlots.add(other);
|
||||
}
|
||||
if (!other.connectedSlots.contains(this)) {
|
||||
other.connectedSlots.add(this);
|
||||
}
|
||||
}
|
||||
|
||||
public SlotType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public static enum SlotType {
|
||||
Vision,
|
||||
Hearing,
|
||||
Movement,
|
||||
Generator,
|
||||
PowerConduit,
|
||||
Weapon,
|
||||
Tool,
|
||||
|
||||
}
|
||||
}
|
48
machinemuse/powersuits/common/BlockTinkerTable.java
Normal file
48
machinemuse/powersuits/common/BlockTinkerTable.java
Normal file
|
@ -0,0 +1,48 @@
|
|||
package machinemuse.powersuits.common;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import cpw.mods.fml.common.registry.LanguageRegistry;
|
||||
|
||||
public class BlockTinkerTable extends Block {
|
||||
|
||||
public BlockTinkerTable() {
|
||||
super(Config.getAssignedBlockID(Config.Blocks.TinkerTable),
|
||||
Config.Blocks.TinkerTable.textureIndex,
|
||||
Config.Blocks.TinkerTable.material);
|
||||
setHardness(Config.Blocks.TinkerTable.hardness);
|
||||
setStepSound(Config.Blocks.TinkerTable.stepSound);
|
||||
setBlockName(Config.Blocks.TinkerTable.idName);
|
||||
setCreativeTab(Config.getCreativeTab());
|
||||
LanguageRegistry.addName(this, Config.Blocks.TinkerTable.englishName);
|
||||
MinecraftForge.setBlockHarvestLevel(this,
|
||||
Config.Blocks.TinkerTable.harvestTool,
|
||||
Config.Blocks.TinkerTable.harvestLevel);
|
||||
ItemStack recipeResult = new ItemStack(this);
|
||||
GameRegistry.registerBlock(this);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextureFile() {
|
||||
return CommonProxy.BLOCK_PNG;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called upon block activation (right click on the block.)
|
||||
*/
|
||||
public boolean onBlockActivated(World world, int x, int y,
|
||||
int z, EntityPlayer player, int par6, float par7,
|
||||
float par8, float par9)
|
||||
{
|
||||
if (player.isSneaking()) {
|
||||
return false;
|
||||
}
|
||||
player.openGui(PowersuitsMod.instance, 0, world, x, y, z);
|
||||
return true;
|
||||
}
|
||||
}
|
13
machinemuse/powersuits/common/CommonProxy.java
Normal file
13
machinemuse/powersuits/common/CommonProxy.java
Normal file
|
@ -0,0 +1,13 @@
|
|||
package machinemuse.powersuits.common;
|
||||
|
||||
|
||||
public class CommonProxy {
|
||||
public static String ITEMS_PNG = "/tutorial/generic/items.png";
|
||||
public static String BLOCK_PNG = "/tutorial/generic/block.png";
|
||||
|
||||
// Client stuff
|
||||
public void registerRenderers() {
|
||||
// Nothing here as this is the server side proxy
|
||||
}
|
||||
|
||||
}
|
121
machinemuse/powersuits/common/Config.java
Normal file
121
machinemuse/powersuits/common/Config.java
Normal file
|
@ -0,0 +1,121 @@
|
|||
package machinemuse.powersuits.common;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.StepSound;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.common.Configuration;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
|
||||
public class Config extends Configuration {
|
||||
private static final int[] assignedItemIDs = new int[Items.values().length];
|
||||
private static final int[] assignedBlockIDs = new int[Blocks.values().length];
|
||||
private static Configuration config;
|
||||
|
||||
public static void init(Configuration config) {
|
||||
Config.config = config;
|
||||
config.load();
|
||||
|
||||
// Request block IDs
|
||||
for (Blocks b : Blocks.values()) {
|
||||
assignedBlockIDs[b.ordinal()] =
|
||||
config.getBlock(b.englishName, 1002).getInt();
|
||||
}
|
||||
|
||||
// Request item IDs
|
||||
for (Items i : Items.values()) {
|
||||
assignedItemIDs[i.ordinal()] =
|
||||
config.getItem(i.englishName, 5000).getInt();
|
||||
}
|
||||
config.save();
|
||||
}
|
||||
|
||||
public static CreativeTabs getCreativeTab() {
|
||||
return CreativeTabs.tabMisc;
|
||||
}
|
||||
|
||||
public static int getAssignedItemID(Items item) {
|
||||
if (assignedItemIDs[item.ordinal()] == 0) {
|
||||
assignedItemIDs[item.ordinal()] = config.getItem(item.englishName,
|
||||
1002).getInt();
|
||||
}
|
||||
return assignedItemIDs[item.ordinal()];
|
||||
}
|
||||
|
||||
public static int getAssignedBlockID(Blocks block) {
|
||||
if (assignedBlockIDs[block.ordinal()] == 0) {
|
||||
assignedBlockIDs[block.ordinal()] = config.getBlock(
|
||||
block.englishName, 5000).getInt();
|
||||
}
|
||||
return assignedBlockIDs[block.ordinal()];
|
||||
}
|
||||
|
||||
public static int RegisterRecipes() {
|
||||
ItemStack iron = new ItemStack(Item.ingotIron);
|
||||
ItemStack lapis = new ItemStack(Item.dyePowder, 1);
|
||||
GameRegistry.addRecipe(new ItemStack(new BlockTinkerTable()), " I ",
|
||||
"ILI",
|
||||
" I ", 'I', iron, 'L', lapis);
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static enum Blocks {
|
||||
TinkerTable(1002, 0, "tinkerTable", "Tinker Table",
|
||||
80.0F, Material.iron, Block.soundMetalFootstep,
|
||||
"pickaxe", 1);
|
||||
|
||||
public final int defaultBlockId;
|
||||
public final int textureIndex;
|
||||
public final String idName;
|
||||
public final String englishName;
|
||||
public final float hardness;
|
||||
public final Material material;
|
||||
public final StepSound stepSound;
|
||||
public final String harvestTool;
|
||||
public final int harvestLevel;
|
||||
|
||||
private Blocks(
|
||||
int defaultBlockId, int textureIndex, String idName,
|
||||
String englishName,
|
||||
float hardness, Material material,
|
||||
StepSound stepSound, String harvestTool, int harvestLevel) {
|
||||
this.defaultBlockId = defaultBlockId;
|
||||
this.textureIndex = textureIndex;
|
||||
this.idName = idName;
|
||||
this.englishName = englishName;
|
||||
this.hardness = hardness;
|
||||
this.material = material;
|
||||
this.stepSound = stepSound;
|
||||
this.harvestTool = harvestTool;
|
||||
this.harvestLevel = harvestLevel;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static enum Items {
|
||||
// Icon index, ID name, English name, Armor Type
|
||||
PowerArmorHead(0, "powerArmorHead", "Power Armor Head"),
|
||||
PowerArmorTorso(1, "powerArmorTorso", "Power Armor Torso"),
|
||||
PowerArmorLegs(2, "powerArmorLegs", "Power Armor Legs"),
|
||||
PowerArmorFeet(3, "powerArmorFeet", "Power Armor Feet"),
|
||||
PowerTool(4, "powerTool", "Power Tool"),
|
||||
Augmentation(5, "modularAugmentation", "Modular Augmentation"),
|
||||
|
||||
;
|
||||
|
||||
public final int iconIndex;
|
||||
public final String idName;
|
||||
public final String englishName;
|
||||
|
||||
Items(int iconIndex,
|
||||
String idName, String englishName) {
|
||||
this.iconIndex = iconIndex;
|
||||
this.idName = idName;
|
||||
this.englishName = englishName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
174
machinemuse/powersuits/common/ContainerTinkerTable.java
Normal file
174
machinemuse/powersuits/common/ContainerTinkerTable.java
Normal file
|
@ -0,0 +1,174 @@
|
|||
package machinemuse.powersuits.common;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class ContainerTinkerTable extends Container {
|
||||
EntityPlayer player;
|
||||
private World world;
|
||||
private int posX;
|
||||
private int posY;
|
||||
private int posZ;
|
||||
private final int inventoryTop = 145;
|
||||
public InventoryModularItem[] itemInventories;
|
||||
public SlotArmorInTinkerTable[] armorslots;
|
||||
public ArrayList<SlotAugmentation> augslots;
|
||||
|
||||
public ContainerTinkerTable(EntityPlayer player, World world, int x, int y,
|
||||
int z) {
|
||||
this.player = player;
|
||||
this.world = world;
|
||||
this.posX = x;
|
||||
this.posY = y;
|
||||
this.posZ = z;
|
||||
int id = 0;
|
||||
int slotx = 0;
|
||||
int sloty = 0;
|
||||
|
||||
armorslots = new SlotArmorInTinkerTable[4];
|
||||
itemInventories = new InventoryModularItem[5];
|
||||
augslots = new ArrayList<SlotAugmentation>();
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
armorslots[i] = new SlotArmorInTinkerTable(this,
|
||||
player.inventory,
|
||||
player.inventory.getSizeInventory() - 1 - i,
|
||||
8,
|
||||
8 + i * 18,
|
||||
i);
|
||||
this.addSlotToContainer(armorslots[i]);
|
||||
}
|
||||
|
||||
bindPlayerInventory(player);
|
||||
|
||||
this.update();
|
||||
}
|
||||
|
||||
public void update() {
|
||||
this.inventorySlots.removeAll(augslots);
|
||||
augslots.clear();
|
||||
for (int i = 0; i < 4; i++) {
|
||||
ItemStack stack = armorslots[i].getStack();
|
||||
if (stack != null) {
|
||||
if (stack.getItem() instanceof ItemPowerArmor) {
|
||||
itemInventories[i] = InventoryModularItem
|
||||
.fromItemStack(stack, this);
|
||||
this.bindItemInventory(itemInventories[i], i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void bindItemInventory(InventoryModularItem inv, int row) {
|
||||
for (int i = 0; i < inv.getSizeInventory(); ++i) {
|
||||
SlotAugmentation slot = new SlotAugmentation(
|
||||
inv,
|
||||
i,
|
||||
32 + i * 18,
|
||||
9 + row * 18);
|
||||
this.addSlotToContainer(slot);
|
||||
this.augslots.add(slot);
|
||||
}
|
||||
}
|
||||
|
||||
public void bindPlayerInventory(EntityPlayer player) {
|
||||
for (int i = 0; i < 3; ++i) {
|
||||
for (int j = 0; j < 9; ++j) {
|
||||
this.addSlotToContainer(new Slot(
|
||||
player.inventory,
|
||||
9 + j + i * 9,
|
||||
8 + j * 18,
|
||||
inventoryTop + i * 18));
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
this.addSlotToContainer(new Slot(
|
||||
player.inventory,
|
||||
i,
|
||||
8 + i * 18,
|
||||
inventoryTop + 58));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback for when the crafting gui is closed.
|
||||
*/
|
||||
public void onCraftGuiClosed(EntityPlayer par1EntityPlayer)
|
||||
{
|
||||
}
|
||||
|
||||
public boolean canInteractWith(EntityPlayer par1EntityPlayer)
|
||||
{
|
||||
return par1EntityPlayer.getDistanceSq((double) this.posX + 0.5D,
|
||||
(double) this.posY + 0.5D, (double) this.posZ + 0.5D) <= 64.0D;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when a player shift-clicks on a slot. You must override this or
|
||||
* you will crash when someone does that.
|
||||
*/
|
||||
public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2)
|
||||
{
|
||||
ItemStack var3 = null;
|
||||
Slot var4 = (Slot) this.inventorySlots.get(par2);
|
||||
|
||||
if (var4 != null && var4.getHasStack())
|
||||
{
|
||||
ItemStack var5 = var4.getStack();
|
||||
var3 = var5.copy();
|
||||
|
||||
if (par2 == 0)
|
||||
{
|
||||
if (!this.mergeItemStack(var5, 10, 46, true))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var4.onSlotChange(var5, var3);
|
||||
}
|
||||
else if (par2 >= 10 && par2 < 37)
|
||||
{
|
||||
if (!this.mergeItemStack(var5, 37, 46, false))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else if (par2 >= 37 && par2 < 46)
|
||||
{
|
||||
if (!this.mergeItemStack(var5, 10, 37, false))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else if (!this.mergeItemStack(var5, 10, 46, false))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (var5.stackSize == 0)
|
||||
{
|
||||
var4.putStack((ItemStack) null);
|
||||
}
|
||||
else
|
||||
{
|
||||
var4.onSlotChanged();
|
||||
}
|
||||
|
||||
if (var5.stackSize == var3.stackSize)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var4.onPickupFromSlot(par1EntityPlayer, var5);
|
||||
}
|
||||
|
||||
return var3;
|
||||
}
|
||||
|
||||
}
|
22
machinemuse/powersuits/common/GuiHandler.java
Normal file
22
machinemuse/powersuits/common/GuiHandler.java
Normal file
|
@ -0,0 +1,22 @@
|
|||
package machinemuse.powersuits.common;
|
||||
|
||||
import machinemuse.powersuits.client.GuiTinkerTable;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.world.World;
|
||||
import cpw.mods.fml.common.network.IGuiHandler;
|
||||
|
||||
public class GuiHandler implements IGuiHandler {
|
||||
|
||||
@Override
|
||||
public Object getServerGuiElement(int ID, EntityPlayer player, World world,
|
||||
int x, int y, int z) {
|
||||
return new ContainerTinkerTable(player, world, x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getClientGuiElement(int ID, EntityPlayer player, World world,
|
||||
int x, int y, int z) {
|
||||
return new GuiTinkerTable(new ContainerTinkerTable(player, world, x, y,
|
||||
z));
|
||||
}
|
||||
}
|
219
machinemuse/powersuits/common/InventoryModularItem.java
Normal file
219
machinemuse/powersuits/common/InventoryModularItem.java
Normal file
|
@ -0,0 +1,219 @@
|
|||
package machinemuse.powersuits.common;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
public class InventoryModularItem implements IInventory {
|
||||
|
||||
/** List of the stacks in the crafting matrix. */
|
||||
private ArrayList<ItemStack> stackList;
|
||||
private ItemStack associatedWith;
|
||||
private ContainerTinkerTable container;
|
||||
|
||||
/** the width of the crafting inventory */
|
||||
public InventoryModularItem(ContainerTinkerTable container)
|
||||
{
|
||||
this.container = container;
|
||||
this.stackList = new ArrayList<ItemStack>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new Inventory from the nbt tag list associated with an
|
||||
* itemStack.
|
||||
*/
|
||||
public static InventoryModularItem fromItemStack(ItemStack stack,
|
||||
ContainerTinkerTable container) {
|
||||
InventoryModularItem inv = null;
|
||||
if (stack.getItem() instanceof ItemPowerArmor) {
|
||||
NBTTagCompound tags = stack.getTagCompound();
|
||||
if (tags != null) {
|
||||
inv = fromNBT(tags, container);
|
||||
} else {
|
||||
inv = new InventoryModularItem(container);
|
||||
}
|
||||
inv.associatedWith = stack;
|
||||
inv.addEmptySlot();
|
||||
} else if (stack.getItem() instanceof ItemPowerTool) {
|
||||
NBTTagCompound tags = stack.getTagCompound();
|
||||
if (tags != null) {
|
||||
inv = fromNBT(tags, container);
|
||||
} else {
|
||||
inv = new InventoryModularItem(container);
|
||||
}
|
||||
inv.associatedWith = stack;
|
||||
inv.addEmptySlot();
|
||||
}
|
||||
return inv;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new Inventory from an nbt tag list.
|
||||
*/
|
||||
public static InventoryModularItem fromNBT(NBTTagCompound tags,
|
||||
ContainerTinkerTable container) {
|
||||
InventoryModularItem inv = new InventoryModularItem(container);
|
||||
int[] moduleIDs = tags.getIntArray("Contents");
|
||||
for (int i = 0; i < moduleIDs.length; i++) {
|
||||
inv.stackList.add(new ItemStack(ItemAugmentation.index, 1,
|
||||
moduleIDs[i]));
|
||||
}
|
||||
return inv;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an NBT tag list describing the inventory in its current state,
|
||||
* and associates it with the given ItemStack.
|
||||
*/
|
||||
public void toNBTOfStack(ItemStack stack) {
|
||||
if (stack != null) {
|
||||
stack.setTagCompound(toNBT());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an NBT tag list describing the inventory in its current state.
|
||||
*/
|
||||
public NBTTagCompound toNBT() {
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
int[] moduleIDs = new int[stackList.size()];
|
||||
for (int i = 0; i < stackList.size(); i++) {
|
||||
if (stackList.get(i) != null) {
|
||||
moduleIDs[i] = stackList.get(i).getItemDamage();
|
||||
} else {
|
||||
moduleIDs[i] = -1;
|
||||
}
|
||||
}
|
||||
nbt.setIntArray("Contents", moduleIDs);
|
||||
return nbt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of slots in the inventory.
|
||||
*/
|
||||
public int getSizeInventory()
|
||||
{
|
||||
return this.stackList.size();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the stack in slot i
|
||||
*/
|
||||
public ItemStack getStackInSlot(int par1)
|
||||
{
|
||||
return par1 >= this.getSizeInventory() ? null : this.stackList
|
||||
.get(par1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the inventory.
|
||||
*/
|
||||
public String getInvName()
|
||||
{
|
||||
return "container.crafting";
|
||||
}
|
||||
|
||||
/**
|
||||
* When some containers are closed they call this on each slot, then drop
|
||||
* whatever it returns as an EntityItem - like when you close a workbench
|
||||
* GUI.
|
||||
*/
|
||||
public ItemStack getStackInSlotOnClosing(int par1)
|
||||
{
|
||||
if (this.stackList.get(par1) != null)
|
||||
{
|
||||
ItemStack var2 = this.stackList.get(par1);
|
||||
this.stackList.remove(par1);
|
||||
return var2;
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes from an inventory slot (first arg) up to a specified number
|
||||
* (second arg) of items and returns them in a new stack.
|
||||
*/
|
||||
public ItemStack decrStackSize(int index, int number)
|
||||
{
|
||||
if (this.stackList.get(index) != null)
|
||||
{
|
||||
ItemStack var3;
|
||||
|
||||
if (this.stackList.get(index).stackSize <= number)
|
||||
{
|
||||
var3 = this.stackList.get(index);
|
||||
this.stackList.remove(index);
|
||||
return var3;
|
||||
}
|
||||
else
|
||||
{
|
||||
var3 = this.stackList.get(index).splitStack(number);
|
||||
|
||||
if (this.stackList.get(index).stackSize == 0)
|
||||
{
|
||||
this.stackList.remove(index);
|
||||
}
|
||||
|
||||
return var3;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the given item stack to the specified slot in the inventory (can be
|
||||
* crafting or armor sections).
|
||||
*/
|
||||
public void setInventorySlotContents(int index, ItemStack stack)
|
||||
{
|
||||
this.stackList.set(index, stack);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the maximum stack size for a inventory slot. Seems to always be
|
||||
* 64, possibly will be extended. *Isn't this more of a set than a get?*
|
||||
*/
|
||||
public int getInventoryStackLimit()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when an the contents of an Inventory change, usually
|
||||
*/
|
||||
public void onInventoryChanged() {
|
||||
if (this.associatedWith != null) {
|
||||
this.toNBTOfStack(associatedWith);
|
||||
}
|
||||
container.update();
|
||||
}
|
||||
|
||||
public void addEmptySlot() {
|
||||
this.stackList.add(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Do not make give this method the name canInteractWith because it clashes
|
||||
* with Container
|
||||
*/
|
||||
public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public void openChest() {
|
||||
}
|
||||
|
||||
public void closeChest() {
|
||||
}
|
||||
|
||||
}
|
77
machinemuse/powersuits/common/ItemAugmentation.java
Normal file
77
machinemuse/powersuits/common/ItemAugmentation.java
Normal file
|
@ -0,0 +1,77 @@
|
|||
package machinemuse.powersuits.common;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
|
||||
public class ItemAugmentation extends Item {
|
||||
static List<ItemAugmentation> allAugs = new ArrayList<ItemAugmentation>();
|
||||
public static int index;
|
||||
|
||||
public ItemAugmentation(Config.Items item) {
|
||||
super(Config.getAssignedItemID(item));
|
||||
index = shiftedIndex;
|
||||
this.setHasSubtypes(true);
|
||||
this.setMaxDamage(0);
|
||||
allAugs.add(this);
|
||||
}
|
||||
|
||||
public static List<ItemAugmentation> getAllAugs() {
|
||||
return allAugs;
|
||||
}
|
||||
|
||||
public boolean canGoInSlot(AugSlot.SlotType type) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static enum AugTypes {
|
||||
Armor("armor", "Armor Plate", 1),
|
||||
SteamReceptacle("steamReceptacle", "Steam Receptacle", 2),
|
||||
|
||||
;
|
||||
|
||||
String idName;
|
||||
String englishName;
|
||||
int id;
|
||||
|
||||
private AugTypes(String idName, String englishName, int id) {
|
||||
this.idName = idName;
|
||||
this.englishName = englishName;
|
||||
this.id = id;
|
||||
}
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
/**
|
||||
* Gets an icon index based on an item's damage value
|
||||
*/
|
||||
public int getIconFromDamage(int par1)
|
||||
{
|
||||
return this.iconIndex;
|
||||
}
|
||||
|
||||
public String getItemNameIS(ItemStack par1ItemStack)
|
||||
{
|
||||
int var2 = MathHelper.clamp_int(par1ItemStack.getItemDamage(), 0, 15);
|
||||
return "augmentation." + AugTypes.values()[var2].idName;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
/**
|
||||
* returns a list of items with the same ID, but different meta (eg: dye returns 16 items)
|
||||
*/
|
||||
public void getSubItems(int id, CreativeTabs creativeTab,
|
||||
List tabItems)
|
||||
{
|
||||
for (AugTypes i : AugTypes.values())
|
||||
{
|
||||
tabItems.add(new ItemStack(id, 1, i.id));
|
||||
}
|
||||
}
|
||||
}
|
60
machinemuse/powersuits/common/ItemPowerArmor.java
Normal file
60
machinemuse/powersuits/common/ItemPowerArmor.java
Normal file
|
@ -0,0 +1,60 @@
|
|||
package machinemuse.powersuits.common;
|
||||
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.EnumArmorMaterial;
|
||||
import net.minecraft.item.ItemArmor;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraftforge.common.ISpecialArmor;
|
||||
import cpw.mods.fml.common.registry.LanguageRegistry;
|
||||
|
||||
public class ItemPowerArmor extends ItemArmor implements ISpecialArmor {
|
||||
protected ItemPowerArmor(Config.Items item) {
|
||||
super(Config.getAssignedItemID(item), // itemID
|
||||
EnumArmorMaterial.IRON, // Material
|
||||
item.iconIndex, // Texture index
|
||||
item.ordinal()); // armor type.
|
||||
setMaxStackSize(1);
|
||||
setCreativeTab(Config.getCreativeTab());
|
||||
setIconIndex(item.iconIndex);
|
||||
setItemName(item.idName);
|
||||
LanguageRegistry.addName(this, item.englishName);
|
||||
}
|
||||
|
||||
public String getTextureFile() {
|
||||
return CommonProxy.ITEMS_PNG;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ArmorProperties getProperties(EntityLiving player, ItemStack armor,
|
||||
DamageSource source, double damage, int slot) {
|
||||
// Order in which this armor is assessed for damage.
|
||||
int priority = 1;
|
||||
|
||||
// How much of incoming damage is absorbed by this armor piece.
|
||||
// 1.0 = absorbs all damage
|
||||
// 0.5 = 50% damage to item, 50% damage carried over
|
||||
double absorbRatio = 0.1;
|
||||
|
||||
// Maximum damage absorbed by this piece
|
||||
int absorbMax = 2;
|
||||
|
||||
ArmorProperties props = new ArmorProperties(priority, absorbRatio,
|
||||
absorbMax);
|
||||
return props;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slot) {
|
||||
// How many half-shields of armor display on the player's gui from this
|
||||
// piece
|
||||
return 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void damageArmor(EntityLiving entity, ItemStack stack,
|
||||
DamageSource source, int damage, int slot) {
|
||||
// Damage the armor's durability
|
||||
}
|
||||
}
|
12
machinemuse/powersuits/common/ItemPowerTool.java
Normal file
12
machinemuse/powersuits/common/ItemPowerTool.java
Normal file
|
@ -0,0 +1,12 @@
|
|||
package machinemuse.powersuits.common;
|
||||
|
||||
import net.minecraft.item.Item;
|
||||
|
||||
public class ItemPowerTool extends Item {
|
||||
|
||||
public ItemPowerTool(int par1) {
|
||||
super(par1);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
}
|
68
machinemuse/powersuits/common/PowersuitsMod.java
Normal file
68
machinemuse/powersuits/common/PowersuitsMod.java
Normal file
|
@ -0,0 +1,68 @@
|
|||
package machinemuse.powersuits.common;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import machinemuse.powersuits.client.ClientPacketHandler;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraftforge.common.Configuration;
|
||||
import cpw.mods.fml.common.Mod;
|
||||
import cpw.mods.fml.common.Mod.Init;
|
||||
import cpw.mods.fml.common.Mod.Instance;
|
||||
import cpw.mods.fml.common.Mod.PostInit;
|
||||
import cpw.mods.fml.common.Mod.PreInit;
|
||||
import cpw.mods.fml.common.SidedProxy;
|
||||
import cpw.mods.fml.common.event.FMLInitializationEvent;
|
||||
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
|
||||
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
||||
import cpw.mods.fml.common.network.NetworkMod;
|
||||
import cpw.mods.fml.common.network.NetworkMod.SidedPacketHandler;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry;
|
||||
|
||||
@Mod(modid = "mmmPowersuits", name = "MachineMuse Modular Powersuits", version = "0.0.1")
|
||||
@NetworkMod(clientSideRequired = true, serverSideRequired = true,
|
||||
clientPacketHandlerSpec =
|
||||
@SidedPacketHandler(channels = { "mmPowersuits" }, packetHandler = ClientPacketHandler.class),
|
||||
serverPacketHandlerSpec =
|
||||
@SidedPacketHandler(channels = { "mmPowersuits" }, packetHandler = ServerPacketHandler.class))
|
||||
public class PowersuitsMod {
|
||||
|
||||
// The instance of your mod that Forge uses.
|
||||
@Instance("PowersuitsMod")
|
||||
public static PowersuitsMod instance;
|
||||
|
||||
// Says where the client and server 'proxy' code is loaded.
|
||||
@SidedProxy(clientSide = "machinemuse.powersuits.client.ClientProxy", serverSide = "machinemuse.powersuits.common.CommonProxy")
|
||||
public static CommonProxy proxy;
|
||||
|
||||
@PreInit
|
||||
public void preInit(FMLPreInitializationEvent event) {
|
||||
instance = this;
|
||||
Config.init(new Configuration(
|
||||
event.getSuggestedConfigurationFile()));
|
||||
}
|
||||
|
||||
public static List<Block> allBlocks = new ArrayList<Block>();
|
||||
public static List<Item> allItems = new ArrayList<Item>();
|
||||
public static GuiHandler guiHandler = new GuiHandler();
|
||||
|
||||
@Init
|
||||
public void load(FMLInitializationEvent event) {
|
||||
allBlocks.add(new BlockTinkerTable());
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
allItems.add(new ItemPowerArmor(
|
||||
Config.Items.values()[i]));
|
||||
}
|
||||
allItems.add(new ItemAugmentation(Config.Items.Augmentation));
|
||||
|
||||
proxy.registerRenderers();
|
||||
NetworkRegistry.instance().registerGuiHandler(this, guiHandler);
|
||||
}
|
||||
|
||||
@PostInit
|
||||
public void postInit(FMLPostInitializationEvent event) {
|
||||
// Stub Method
|
||||
}
|
||||
}
|
22
machinemuse/powersuits/common/ServerPacketHandler.java
Normal file
22
machinemuse/powersuits/common/ServerPacketHandler.java
Normal file
|
@ -0,0 +1,22 @@
|
|||
package machinemuse.powersuits.common;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.DataInputStream;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.network.INetworkManager;
|
||||
import net.minecraft.network.packet.Packet250CustomPayload;
|
||||
import cpw.mods.fml.common.network.IPacketHandler;
|
||||
import cpw.mods.fml.common.network.Player;
|
||||
|
||||
public class ServerPacketHandler implements IPacketHandler {
|
||||
|
||||
@Override
|
||||
public void onPacketData(INetworkManager manager,
|
||||
Packet250CustomPayload packet, Player player) {
|
||||
DataInputStream data = new DataInputStream(new ByteArrayInputStream(
|
||||
packet.data));
|
||||
EntityPlayer sender = (EntityPlayer) player;
|
||||
}
|
||||
|
||||
}
|
85
machinemuse/powersuits/common/SlotArmorInTinkerTable.java
Normal file
85
machinemuse/powersuits/common/SlotArmorInTinkerTable.java
Normal file
|
@ -0,0 +1,85 @@
|
|||
package machinemuse.powersuits.common;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemArmor;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
|
||||
public class SlotArmorInTinkerTable extends Slot {
|
||||
/**
|
||||
* The armor type that can be placed on that slot, it uses the same values
|
||||
* of armorType field on ItemArmor.
|
||||
*/
|
||||
final int armorType;
|
||||
final ContainerTinkerTable table;
|
||||
private ItemStack stackCache;
|
||||
|
||||
/**
|
||||
* Constructor. Takes an inventory and an index, x and y locations for the
|
||||
* icon, and armorType.
|
||||
*/
|
||||
SlotArmorInTinkerTable(ContainerTinkerTable table, IInventory inventory,
|
||||
int index, int x, int y,
|
||||
int armorType)
|
||||
{
|
||||
super(inventory, index, x, y);
|
||||
this.armorType = armorType;
|
||||
this.table = table;
|
||||
this.stackCache = this.getStack();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the maximum stack size for a given slot (usually the same as
|
||||
* getInventoryStackLimit(), but 1 in the case of armor slots)
|
||||
*/
|
||||
public int getSlotStackLimit()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the stack is a valid item for this slot. Always true beside for
|
||||
* the armor slots.
|
||||
*/
|
||||
public boolean isItemValid(ItemStack stack)
|
||||
{
|
||||
if (stack == null) {
|
||||
return false;
|
||||
} else {
|
||||
Item stackType = (Item) stack.getItem();
|
||||
if (stack.getItem() instanceof ItemArmor) {
|
||||
if (((ItemArmor) stackType).armorType == this.armorType) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else if (stackType.shiftedIndex == Block.pumpkin.blockID
|
||||
&& this.armorType == 0) {
|
||||
return true;
|
||||
} else if (stackType.shiftedIndex == Item.skull.shiftedIndex
|
||||
&& this.armorType == 0) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
/**
|
||||
* Returns the icon index on items.png that is used as background image of the slot.
|
||||
*/
|
||||
public int getBackgroundIconIndex()
|
||||
{
|
||||
return 15 + this.armorType * 16;
|
||||
}
|
||||
|
||||
public void onSlotChanged() {
|
||||
super.onSlotChanged();
|
||||
table.update();
|
||||
}
|
||||
}
|
53
machinemuse/powersuits/common/SlotAugmentation.java
Normal file
53
machinemuse/powersuits/common/SlotAugmentation.java
Normal file
|
@ -0,0 +1,53 @@
|
|||
package machinemuse.powersuits.common;
|
||||
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.asm.SideOnly;
|
||||
|
||||
public class SlotAugmentation extends Slot {
|
||||
|
||||
public SlotAugmentation(IInventory par1iInventory, int par2, int par3,
|
||||
int par4) {
|
||||
super(par1iInventory, par2, par3, par4);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the maximum stack size for a given slot (usually the same as
|
||||
* getInventoryStackLimit(), but 1 in the case of armor slots)
|
||||
*/
|
||||
public int getSlotStackLimit()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the stack is a valid item for this slot. Always true beside for
|
||||
* the armor slots.
|
||||
*/
|
||||
public boolean isItemValid(ItemStack stack)
|
||||
{
|
||||
if (stack == null) {
|
||||
return false;
|
||||
} else {
|
||||
Item stackType = (Item) stack.getItem();
|
||||
if (stack.getItem() instanceof ItemAugmentation) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
/**
|
||||
* Returns the icon index on items.png that is used as background image of the slot.
|
||||
*/
|
||||
public int getBackgroundIconIndex()
|
||||
{
|
||||
return 18;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue