Skip to content

Commit

Permalink
Improve storage module system and add battery models
Browse files Browse the repository at this point in the history
  • Loading branch information
Nedelosk committed Sep 17, 2016
1 parent 2cf283e commit 639dcf7
Show file tree
Hide file tree
Showing 175 changed files with 3,180 additions and 2,035 deletions.
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ dependencies {
deobfCompile "mezz.jei:jei_${mcversion}:${jei_version}:api"
runtime "mezz.jei:jei_${mcversion}:${jei_version}"
deobfCompile "net.industrial-craft:industrialcraft-2:${ic2_version}:api"
deobfCompile "net.industrial-craft:industrialcraft-2:${ic2_version}:dev"
//deobfCompile "mcp.mobius.waila:Waila:${waila_version}_1.9.4"
deobfCompile "mcjty.theoneprobe:TheOneProbe:${top_version}"
deobfCompile "slimeknights.mantle:Mantle:${mcversion}-${mantle_version}"
Expand Down
10 changes: 5 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
mcversion=1.10.2
forgeversion=12.18.1.2056
forgeversion=12.18.1.2089
mcp_mappings=snapshot_20160525

tesla_version=1.10.2-1.2.1.46
jei_version=3.8.0.240
ic2_version=2.6.46-ex110
jei_version=3.9.3.252
ic2_version=2.6.68-ex110
waila_version=1.7.0-B3
top_version=1.10-1.0.15-28
mantle_version=0.10.4.+
forestry_version=5.2.9.+

version_major=1
version_minor=4
version_patch=2
version_minor=5
version_patch=0

curse_project_id=233073
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,14 @@
import de.nedelosk.modularmachines.api.modules.ModuleEvents;
import de.nedelosk.modularmachines.api.modules.items.IModuleContainer;
import de.nedelosk.modularmachines.api.modules.items.IModuleProvider;
import de.nedelosk.modularmachines.api.modules.position.EnumStoragePositions;
import de.nedelosk.modularmachines.api.modules.position.IStoragePosition;
import de.nedelosk.modularmachines.api.modules.state.IModuleState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityInject;
Expand All @@ -41,6 +44,7 @@ public class ModularMachinesApi {
private static final List<HeatLevel> HEAT_LEVELS = new ArrayList<>();
private static final List<IModuleContainer> modulesWithDefaultItem = new ArrayList<>();
private static final Map<IMetalMaterial, ItemStack[]> materialsWithHolder = new HashMap<>();
public static final List<IStoragePosition> DEFAULT_STORAGES = new ArrayList<>();

public static Item defaultModuleItem;
public static Item defaultHolderItem;
Expand All @@ -49,6 +53,28 @@ public class ModularMachinesApi {
public static final int STEAM_PER_UNIT_WATER = 160;
public static final float BOILING_POINT = 100;

static{
registerType(new HeatLevel(COLD_TEMP, 0.1, 0.02));
registerType(new HeatLevel(50, 0.085, 0.035));
registerType(new HeatLevel(100, 0.075, 0.045));
registerType(new HeatLevel(150, 0.065, 0.050));
registerType(new HeatLevel(200, 0.035, 0.055));
registerType(new HeatLevel(250, 0.030, 0.060));
registerType(new HeatLevel(300, 0.025, 0.065));
registerType(new HeatLevel(400, 0.020, 0.065));
registerType(new HeatLevel(500, 0.015, 0.075));
registerType(new HeatLevel(750, 0.005, 0.085));

DEFAULT_STORAGES.add(EnumStoragePositions.CASING);
DEFAULT_STORAGES.add(EnumStoragePositions.LEFT);
DEFAULT_STORAGES.add(EnumStoragePositions.RIGHT);
DEFAULT_STORAGES.add(EnumStoragePositions.TOP);
DEFAULT_STORAGES.add(EnumStoragePositions.BACK);
}

private ModularMachinesApi() {
}

/**
* @return The matching module container for the stack.
*/
Expand All @@ -75,6 +101,28 @@ public static IModuleContainer getContainerFromItem(ItemStack stack, IModular mo
return null;
}

public static NBTTagCompound writeStateToNBT(IModular modular, IModuleState moduleState){
if(moduleState != null && moduleState.getContainer() != null){
NBTTagCompound compoundTag = moduleState.serializeNBT();
compoundTag.setString("Container", moduleState.getContainer().getRegistryName().toString());
MinecraftForge.EVENT_BUS.post(new ModuleEvents.ModuleStateSaveEvent(moduleState, compoundTag));
return compoundTag;
}
return null;
}

public static IModuleState loadStateFromNBT(IModular modular, NBTTagCompound compoundTag){
ResourceLocation loc = new ResourceLocation(compoundTag.getString("Container"));
IModuleContainer container = MODULE_CONTAINERS.getValue(loc);
if(container != null){
IModuleState state = ModularMachinesApi.createModuleState(modular, container);
state.deserializeNBT(compoundTag);
MinecraftForge.EVENT_BUS.post(new ModuleEvents.ModuleStateLoadEvent(state, compoundTag));
return state;
}
return null;
}

/**
* Write a modular to a item stack.
*/
Expand Down Expand Up @@ -214,19 +262,6 @@ public static Collection<IMetalMaterial> getMaterialsWithHolder() {
return materialsWithHolder.keySet();
}

static{
registerType(new HeatLevel(COLD_TEMP, 0.1, 0.02));
registerType(new HeatLevel(50, 0.085, 0.035));
registerType(new HeatLevel(100, 0.075, 0.045));
registerType(new HeatLevel(150, 0.065, 0.050));
registerType(new HeatLevel(200, 0.035, 0.055));
registerType(new HeatLevel(250, 0.030, 0.060));
registerType(new HeatLevel(300, 0.025, 0.065));
registerType(new HeatLevel(400, 0.020, 0.065));
registerType(new HeatLevel(500, 0.015, 0.075));
registerType(new HeatLevel(750, 0.005, 0.085));
}

public static void registerType(HeatLevel heatLevel){
if(!HEAT_LEVELS.contains(heatLevel)){
HEAT_LEVELS.add(heatLevel);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
package de.nedelosk.modularmachines.api.gui;

import java.util.List;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot;

public interface IContainerBase<T extends IGuiHandler> {

T getHandler();

List<Slot> getSlots();

EntityPlayer getPlayer();
}
33 changes: 32 additions & 1 deletion src/main/java/de/nedelosk/modularmachines/api/gui/Page.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.translation.I18n;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

Expand Down Expand Up @@ -46,12 +48,36 @@ public void drawForeground(FontRenderer fontRenderer, int mouseX, int mouseY) {
@SideOnly(Side.CLIENT)
@Override
public void drawBackground(int mouseX, int mouseY) {
if(gui != null){
if(gui != null && getGuiTexture() != null){
Minecraft.getMinecraft().renderEngine.bindTexture(getGuiTexture());
gui.getGui().drawTexturedModalRect(gui.getGuiLeft(), gui.getGuiTop(), 0, 0, getXSize(), getYSize());
}

drawPlayerInventory();
}

@SideOnly(Side.CLIENT)
protected void drawPlayerInventory() {
if(gui != null && getInventoryTexture() != null && getPlayerInvPosition() >= 0){
GlStateManager.enableAlpha();
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
Minecraft.getMinecraft().renderEngine.bindTexture(getInventoryTexture());
int invPosition = getPlayerInvPosition();
gui.getGui().drawTexturedModalRect(gui.getGuiLeft() + 7, gui.getGuiTop() + invPosition, 0, 0, 162, 76);
GlStateManager.disableAlpha();
}
}

@SideOnly(Side.CLIENT)
protected ResourceLocation getInventoryTexture() {
return new ResourceLocation("modularmachines:textures/gui/inventory_player.png");
}

public int getPlayerInvPosition() {
return -1;
}


@SideOnly(Side.CLIENT)
@Override
public void drawFrontBackground(int mouseX, int mouseY) {
Expand Down Expand Up @@ -101,4 +127,9 @@ public void setGui(IGuiProvider gui) {
this.gui = gui;
}

@Override
public String getPageTitle(){
return I18n.translateToLocal(title);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package de.nedelosk.modularmachines.api.modular;

import javax.annotation.Nullable;

import de.nedelosk.modularmachines.api.modules.position.IStoragePosition;
import de.nedelosk.modularmachines.api.modules.storage.IItemHandlerStorage;
import net.minecraft.item.ItemStack;
import net.minecraftforge.items.ItemStackHandler;

public class AssemblerItemHandler extends ItemStackHandler implements IItemHandlerStorage {

protected IModularAssembler assembler;
protected IStoragePosition position;

public AssemblerItemHandler(ItemStack[] stacks, @Nullable IModularAssembler assembler, @Nullable IStoragePosition position){
super(stacks);

this.assembler = assembler;
this.position = position;
}

public AssemblerItemHandler(int size, @Nullable IModularAssembler assembler) {
this(size, assembler, null);
}

public AssemblerItemHandler(int size, @Nullable IModularAssembler assembler, @Nullable IStoragePosition position) {
super(size);

this.assembler = assembler;
this.position = position;
}

@Override
public void setAssembler(IModularAssembler assembler) {
this.assembler = assembler;
}

@Override
public void setPosition(IStoragePosition position) {
this.position = position;
}

@Override
public IStoragePosition getPosition() {
return position;
}

@Override
public IModularAssembler getAssembler() {
return assembler;
}

@Override
protected int getStackLimit(int slot, ItemStack stack) {
return 1;
}

@Override
protected void onContentsChanged(int slot) {
if(assembler != null){
assembler.updatePages(position);
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package de.nedelosk.modularmachines.api.modular;


public interface IAssemblerGui {

void setHasChange();

}
Loading

0 comments on commit 639dcf7

Please sign in to comment.