Skip to content

Commit

Permalink
Improve module model handling and Clean Up
Browse files Browse the repository at this point in the history
  • Loading branch information
Nedelosk committed Sep 24, 2016
1 parent 88d5abd commit b75acd1
Show file tree
Hide file tree
Showing 58 changed files with 543 additions and 516 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ forestry_version=5.2.9.+

version_major=1
version_minor=5
version_patch=1
version_patch=2

curse_project_id=233073
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
import de.nedelosk.modularmachines.api.modular.handlers.IModularHandler;

public interface IAssemblerContainer extends IContainerBase<IModularHandler> {

boolean transferStack();

boolean hasStorageChange();

void setHasStorageChange(boolean hasChange);

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

import de.nedelosk.modularmachines.api.gui.IContainerBase;
import de.nedelosk.modularmachines.api.modules.storage.IStoragePage;
import net.minecraft.item.ItemStack;
import net.minecraftforge.items.IItemHandler;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package de.nedelosk.modularmachines.api.modular.assembler;

import de.nedelosk.modularmachines.api.gui.IContainerBase;
import de.nedelosk.modularmachines.api.modular.handlers.IModularHandler;
import de.nedelosk.modularmachines.api.modules.IModule;
import de.nedelosk.modularmachines.api.modules.ModuleManager;
import de.nedelosk.modularmachines.api.modules.items.IModuleContainer;
import de.nedelosk.modularmachines.api.modules.position.IStoragePosition;
import de.nedelosk.modularmachines.api.modules.storage.IStorageModule;
import de.nedelosk.modularmachines.api.modules.storage.IStoragePage;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.SlotItemHandler;
Expand Down Expand Up @@ -44,7 +41,7 @@ public void onSlotChanged() {
container.setHasStorageChange(true);
}
}

@Override
public boolean isItemValid(ItemStack stack) {
IModuleContainer container = ModuleManager.getContainerFromItem(stack);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package de.nedelosk.modularmachines.api.modules;

import java.util.List;
import java.util.Map;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
Expand All @@ -12,7 +13,6 @@
import de.nedelosk.modularmachines.api.modules.handlers.IModulePage;
import de.nedelosk.modularmachines.api.modules.items.IModuleContainer;
import de.nedelosk.modularmachines.api.modules.models.IModelHandler;
import de.nedelosk.modularmachines.api.modules.models.IModelInitHandler;
import de.nedelosk.modularmachines.api.modules.state.IModuleState;
import de.nedelosk.modularmachines.api.modules.state.IModuleStateClient;
import de.nedelosk.modularmachines.api.modules.storage.IStorage;
Expand Down Expand Up @@ -75,7 +75,7 @@ public interface IModule extends IForgeRegistryEntry<IModule>, IModuleProperties
/* MODULE CONTAINERS */
@Nullable
@SideOnly(Side.CLIENT)
List<IModelInitHandler> getInitModelHandlers(@Nullable IModuleContainer container);
Map<ResourceLocation, ResourceLocation> getModelLocations(@Nullable IModuleContainer container);

/**
* Add a tooltip to a item that are registered for a module container with this module.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package de.nedelosk.modularmachines.api.modules;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import com.google.common.collect.Lists;

Expand All @@ -15,7 +16,6 @@
import de.nedelosk.modularmachines.api.modules.items.IModuleContainer;
import de.nedelosk.modularmachines.api.modules.items.IModuleProvider;
import de.nedelosk.modularmachines.api.modules.models.IModelHandler;
import de.nedelosk.modularmachines.api.modules.models.IModelInitHandler;
import de.nedelosk.modularmachines.api.modules.position.IModulePositioned;
import de.nedelosk.modularmachines.api.modules.position.IModulePostion;
import de.nedelosk.modularmachines.api.modules.state.IModuleState;
Expand Down Expand Up @@ -159,7 +159,7 @@ public boolean isClean(IModuleState state) {
@SideOnly(Side.CLIENT)
@Override
public ResourceLocation getWindowLocation(IModuleContainer container) {
return new ResourceLocation("modularmachines:module/" + container.getMaterial().getName().toLowerCase(Locale.ENGLISH)+ "/windows/" + getSize(container).getName());
return null;
}

@Override
Expand Down Expand Up @@ -221,10 +221,10 @@ public List<IModulePage> createPages(IModuleState state) {
return new ArrayList<>();
}

@Override
@SideOnly(Side.CLIENT)
public List<IModelInitHandler> getInitModelHandlers(IModuleContainer container) {
return new ArrayList<>();
@Override
public Map<ResourceLocation, ResourceLocation> getModelLocations(IModuleContainer container) {
return Collections.emptyMap();
}

@SideOnly(Side.CLIENT)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package de.nedelosk.modularmachines.api.modules;

import de.nedelosk.modularmachines.api.modular.IModular;
import de.nedelosk.modularmachines.api.modules.items.IModuleContainer;
import de.nedelosk.modularmachines.api.modules.state.IModuleState;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
Expand All @@ -10,19 +9,6 @@

public class ModuleEvents {

public static class ModuleModelInitEvent extends Event {

private final IModuleContainer moduleContainer;

public ModuleModelInitEvent(IModuleContainer moduleContainer) {
this.moduleContainer = moduleContainer;
}

public IModuleContainer getContainer() {
return moduleContainer;
}
}

public static abstract class ModuleStateEvent extends Event {

private final IModuleState state;
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,19 +1,7 @@
package de.nedelosk.modularmachines.api.modules.models;

import java.util.Locale;

import com.google.common.base.Function;

import de.nedelosk.modularmachines.api.modules.EnumModuleSizes;
import de.nedelosk.modularmachines.api.modules.IModule;
import de.nedelosk.modularmachines.api.modules.items.IModuleContainer;
import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.vertex.VertexFormat;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.IModel;
import net.minecraftforge.client.model.ModelLoaderRegistry;
import net.minecraftforge.common.model.IModelState;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

Expand All @@ -22,13 +10,6 @@ public abstract class ModelHandler<M extends IModule> implements IModelHandler<M

public IBakedModel bakedModel;
public boolean needReload;
public String modelFolder;
public IModuleContainer container;

public ModelHandler(String modelFolder, IModuleContainer container) {
this.modelFolder = modelFolder;
this.container = container;
}

@Override
public void setNeedReload(boolean needReload) {
Expand All @@ -44,93 +25,4 @@ public boolean needReload() {
public IBakedModel getModel() {
return bakedModel;
}

public ResourceLocation getModelLocation(){
return getModelLocation(container, modelFolder);
}

public ResourceLocation getModelLocation(boolean status){
return getModelLocation(container, modelFolder, status);
}

public ResourceLocation getModelLocation(String prefix){
return getModelLocation(container, modelFolder, prefix);
}

public ResourceLocation getModelLocation(String prefix, boolean useSize){
return getModelLocation(container, modelFolder, prefix, useSize);
}

public ResourceLocation getModelLocation(EnumModuleSizes size){
return getModelLocation(container, modelFolder, size);
}

public static ResourceLocation getModelLocation(IModuleContainer container, String modelFolder){
return getModelLocation(container, modelFolder, null, true, false, false);
}

public static ResourceLocation getModelLocation(IModuleContainer container, String modelFolder, boolean status){
return getModelLocation(container, modelFolder, null, true, true, status);
}

public static ResourceLocation getModelLocation(IModuleContainer container, String modelFolder, String prefix){
return getModelLocation(container, modelFolder, prefix, false, false, false);
}

public static ResourceLocation getModelLocation(IModuleContainer container, String modelFolder, EnumModuleSizes size){
return getModelLocation(container, modelFolder, "", size != null, false, false);
}

public static ResourceLocation getModelLocation(IModuleContainer container, String modelFolder, String prefix, boolean useSize){
return getModelLocation(container, modelFolder, prefix, useSize, false, false);
}

public static ResourceLocation getModelLocation(IModuleContainer container, String modelFolder, String prefix, boolean useSize, boolean useStatus, boolean status){
String preFixNew = prefix;
if(preFixNew == null){
preFixNew = "";
}
if(useSize){
if(!preFixNew.isEmpty()){
preFixNew+="_";
}
preFixNew+= container.getModule().getSize(container).getName();
}
if(useStatus){
preFixNew+= "_" + (status ? "on" : "off");
}
return new ResourceLocation(Loader.instance().activeModContainer().getModId(), "module/" + container.getMaterial().getName().toLowerCase(Locale.ENGLISH) + "/" + modelFolder + "/" + preFixNew);
}

public IBakedModel getBakedModel(ResourceLocation loc, IModelState modelState, VertexFormat format, Function bakedTextureGetter){
IModel model = getModelOrDefault(loc, new ResourceLocation(loc.toString().replace(container.getMaterial().getName().toLowerCase(Locale.ENGLISH), "default")));
if(model != null){
return model.bake(modelState, format, bakedTextureGetter);
}
return null;
}

public IBakedModel getBakedModel(ResourceLocation loc, ResourceLocation locDefault, IModelState modelState, VertexFormat format, Function bakedTextureGetter){
IModel model = getModelOrDefault(loc, locDefault);
if(model != null){
return model.bake(modelState, format, bakedTextureGetter);
}
return null;
}

public IModel getModelOrDefault(ResourceLocation loc){
return getModelOrDefault(loc, new ResourceLocation(loc.toString().replace(container.getMaterial().getName().toLowerCase(Locale.ENGLISH), "default")));
}

public static IModel getModelOrDefault(ResourceLocation loc, ResourceLocation locDefault){
try{
return ModelLoaderRegistry.getModel(loc);
}catch(Exception e){
try {
return ModelLoaderRegistry.getModel(locDefault);
} catch (Exception e1) {
return null;
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import com.google.common.base.Function;

import de.nedelosk.modularmachines.api.modules.IModule;
import de.nedelosk.modularmachines.api.modules.items.IModuleContainer;
import de.nedelosk.modularmachines.api.modules.position.EnumStoragePositions;
import de.nedelosk.modularmachines.api.modules.position.IStoragePosition;
import de.nedelosk.modularmachines.api.modules.state.IModuleState;
Expand All @@ -22,24 +21,16 @@
import net.minecraftforge.fml.relauncher.SideOnly;

@SideOnly(Side.CLIENT)
public class ModelHandlerCasing extends ModelHandler implements IModelHandler, IModelInitHandler {
public class ModelHandlerCasing extends ModelHandler implements IModelHandler {

private final ResourceLocation casing;
private final ResourceLocation casing_left;
private final ResourceLocation casing_right;

public ModelHandlerCasing(IModuleContainer container) {
super("casings", container);
casing = getModelLocation("casing");
casing_left = getModelLocation("side_left");
casing_right= getModelLocation("side_right");
}

@Override
public void initModels(IModuleContainer container) {
getModelOrDefault(casing);
getModelOrDefault(casing_left);
getModelOrDefault(casing_right);
public ModelHandlerCasing(ResourceLocation... locations) {
casing = locations[0];
casing_left = locations[1];
casing_right= locations[2];
}

@Override
Expand All @@ -48,17 +39,17 @@ public void reload(IModuleState state, IStorage storage, IModelState modelState,
if(state.getModular() != null){
Set<IStoragePosition> positions = state.getModular().getStorages().keySet();
if(!positions.contains(EnumStoragePositions.LEFT)){
models.add(getBakedModel(casing_left, modelState, format, bakedTextureGetter));
models.add(ModuleModelLoader.getModel(casing_left, format));
}
if(!positions.contains(EnumStoragePositions.RIGHT)){
models.add(getBakedModel(casing_right, modelState, format, bakedTextureGetter));
models.add(ModuleModelLoader.getModel(casing_right, format));
}
}
models.add(getBakedModel(casing, modelState, format, bakedTextureGetter));
models.add(ModuleModelLoader.getModel(casing, format));
for(IModuleState moduleState : ((IModuleStorage)storage).getModules()){
IModule module = moduleState.getModule();
if(((IModuleStateClient)moduleState).getModelHandler() != null){
models.add(ModuleModelHelper.getModel(moduleState, storage, modelState, format));
models.add(ModuleModelLoader.getModel(moduleState, storage, modelState, format));
}
}
bakedModel = new BakedMultiModel(models);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.google.common.base.Function;

import de.nedelosk.modularmachines.api.modules.items.IModuleContainer;
import de.nedelosk.modularmachines.api.modules.state.IModuleState;
import de.nedelosk.modularmachines.api.modules.storage.IStorage;
import net.minecraft.client.renderer.vertex.VertexFormat;
Expand All @@ -12,22 +11,16 @@
import net.minecraftforge.fml.relauncher.SideOnly;

@SideOnly(Side.CLIENT)
public class ModelHandlerDefault extends ModelHandler implements IModelHandler, IModelInitHandler {
public class ModelHandlerDefault extends ModelHandler implements IModelHandler {

protected ResourceLocation location;

public ModelHandlerDefault(String modelFolder, IModuleContainer container, ResourceLocation location) {
super(modelFolder, container);
public ModelHandlerDefault(ResourceLocation location) {
this.location = location;
}

@Override
public void initModels(IModuleContainer container) {
getModelOrDefault(location);
}

@Override
public void reload(IModuleState state, IStorage storage, IModelState modelState, VertexFormat format, Function bakedTextureGetter) {
bakedModel = getBakedModel(location, modelState, format, bakedTextureGetter);
bakedModel = ModuleModelLoader.getModel(location, format);
}
}

This file was deleted.

Loading

0 comments on commit b75acd1

Please sign in to comment.