Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,8 +1,52 @@
package jp.MinecraftModderJapan.ModCooperationAPI;

import jp.MinecraftModderJapan.ModCooperationAPI.api.entity.IBreedable;
import jp.MinecraftModderJapan.ModCooperationAPI.api.entity.IRidden;
import jp.MinecraftModderJapan.ModCooperationAPI.api.item.IBook;
import jp.MinecraftModderJapan.ModCooperationAPI.api.item.IFood;
import net.minecraft.nbt.NBTBase;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityManager;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import org.apache.commons.lang3.NotImplementedException;

import java.util.concurrent.Callable;

@Mod(modid = ModCooperationAPI.MOD_ID)
public class ModCooperationAPI{
public static final String MOD_ID = "jp.MinecraftModderJapan.ModCooperationAPI";

@EventHandler
private void preInit(FMLPreInitializationEvent event){
registerCaps();
}

private void registerCaps(){
registerCap(IBook.class);
registerCap(IFood.class);
registerCap(IBreedable.class);
registerCap(IRidden.class);
}

private <T> void registerCap(Class<T> clazz){
CapabilityManager.INSTANCE.register(clazz, new Capability.IStorage<T>(){
@Override
public NBTBase writeNBT(Capability<T> capability, T instance, EnumFacing side){
throw new NotImplementedException("No default implementation");
}

@Override
public void readNBT(Capability<T> capability, T instance, EnumFacing side, NBTBase nbt){
throw new NotImplementedException("No default implementation");
}
}, new Callable<T>(){
@Override
public T call() throws Exception{
throw new NotImplementedException("No default implementation");
}
});
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package jp.MinecraftModderJapan.ModCooperationAPI.api.entity;

import net.minecraft.item.ItemStack;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityInject;

import javax.annotation.Nonnull;

Expand All @@ -14,6 +16,9 @@
* @since 1.0
*/
public interface IBreedable{
@CapabilityInject(IBreedable.class)
Capability<IBreedable> CAPABILITY = null;

/**
* @param stack
* the Item
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package jp.MinecraftModderJapan.ModCooperationAPI.api.entity;

import net.minecraft.entity.Entity;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityInject;

import javax.annotation.Nonnull;

Expand All @@ -14,6 +16,9 @@
* @since 1.0
*/
public interface IRidden{
@CapabilityInject(IRidden.class)
Capability<IRidden> CAPABILITY = null;

/**
* 乗る。
* <br>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityInject;

import javax.annotation.Nonnull;

Expand All @@ -15,6 +17,8 @@
* @since 1.0
*/
public interface IBook{
@CapabilityInject(IBook.class)
Capability<IBook> CAPABILITY = null;

/**
* GUIを持っているか。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityInject;

import javax.annotation.Nonnull;

Expand All @@ -15,6 +17,9 @@
* @since 1.0
*/
public interface IFood{
@CapabilityInject(IFood.class)
Capability<IFood> CAPABILITY = null;

/**
* この食べ物を食べることによって、どのくらい満腹度が回復するか取得します。
* <br>
Expand Down