Fluid Barrel container item defined. DataFixing added.
This commit is contained in:
parent
48748a25c5
commit
43687d835b
6 changed files with 139 additions and 3 deletions
|
@ -387,6 +387,9 @@ public class EdFluidBarrel
|
|||
return (nbt.isEmpty()) ? (FluidStack.EMPTY) : (FluidStack.loadFluidStackFromNBT(nbt));
|
||||
}
|
||||
|
||||
public static ItemStack setFluid(ItemStack stack, FluidStack fs)
|
||||
{ write_fluid_nbt(stack, fs.writeToNBT(new CompoundNBT())); return stack; }
|
||||
|
||||
@Override
|
||||
public int getItemStackLimit(ItemStack stack)
|
||||
{ return (!getFluid(stack).isEmpty()) ? 1 : super.getItemStackLimit(stack); }
|
||||
|
@ -406,6 +409,18 @@ public class EdFluidBarrel
|
|||
@Override
|
||||
public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt)
|
||||
{ return new Fluidics.FluidContainerItemCapabilityWrapper(stack, capacity_, item_fluid_handler_transfer_rate_, (s)->read_fluid_nbt(s), (s,n)->write_fluid_nbt(s,n), e->true); }
|
||||
|
||||
@Override
|
||||
public boolean hasContainerItem(ItemStack stack)
|
||||
{ return true; }
|
||||
|
||||
@Override
|
||||
public ItemStack getContainerItem(ItemStack stack)
|
||||
{
|
||||
FluidStack fs = getFluid(stack);
|
||||
fs.shrink(1000);
|
||||
return setFluid(stack, fs);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* @file DataFixing.java
|
||||
* @author Stefan Wilhelm (wile)
|
||||
* @copyright (C) 2020 Stefan Wilhelm
|
||||
* @license MIT (see https://opensource.org/licenses/MIT)
|
||||
*
|
||||
* Data fixing and mapping correction functionality encapsulation.
|
||||
*/
|
||||
package wile.engineersdecor.libmc.detail;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.event.RegistryEvent.MissingMappings.Mapping;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class DataFixing
|
||||
{
|
||||
private static String modid = "";
|
||||
private static Map<String, String> item_registry_renaming = new HashMap<>();
|
||||
private static Map<String, String> block_registry_renaming = new HashMap<>();
|
||||
|
||||
public static void init(String mod_id, @Nullable Map<String, String> item_renaming, @Nullable Map<String, String> block_renaming)
|
||||
{
|
||||
modid = mod_id;
|
||||
block_registry_renaming = new HashMap<>();
|
||||
item_registry_renaming = new HashMap<>();
|
||||
if(item_renaming!=null) item_registry_renaming.putAll(item_renaming);
|
||||
if(block_renaming!=null) { block_registry_renaming.putAll(block_renaming); item_registry_renaming.putAll(block_renaming); }
|
||||
}
|
||||
|
||||
public static void onDataFixMissingItemMapping(net.minecraftforge.event.RegistryEvent.MissingMappings<Item> event)
|
||||
{
|
||||
// Handler registered in main mod event subscription.
|
||||
for(Mapping<Item> mapping: event.getMappings()) {
|
||||
if(mapping.key.getNamespace() != modid) continue;
|
||||
final String rm = item_registry_renaming.getOrDefault(mapping.key.getPath(), "");
|
||||
if(rm.isEmpty()) continue;
|
||||
final Item item = ForgeRegistries.ITEMS.getValue(new ResourceLocation(modid, rm));
|
||||
if((item==null) || (item==Items.AIR)) continue;
|
||||
mapping.remap(item);
|
||||
}
|
||||
}
|
||||
|
||||
public static void onDataFixMissingBlockMapping(net.minecraftforge.event.RegistryEvent.MissingMappings<Block> event)
|
||||
{
|
||||
// Handler registered in main mod event subscription.
|
||||
for(Mapping<Block> mapping: event.getMappings()) {
|
||||
if(mapping.key.getNamespace() != modid) continue;
|
||||
final String rm = block_registry_renaming.getOrDefault(mapping.key.getPath(), "");
|
||||
if(rm.isEmpty()) continue;
|
||||
final Block block = ForgeRegistries.BLOCKS.getValue(new ResourceLocation(modid, rm));
|
||||
if((block==null) || (block==Blocks.AIR)) continue;
|
||||
mapping.remap(block);
|
||||
}
|
||||
}
|
||||
|
||||
// @todo: Find a way to register blockstate data fixing.
|
||||
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
{
|
||||
"type": "forge:conditional",
|
||||
"recipes": [
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"type": "engineersdecor:optional",
|
||||
"result": "engineersdecor:old_industrial_wood_planks",
|
||||
"required": ["#forge:treated_wood"]
|
||||
}
|
||||
],
|
||||
"recipe": {
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"WW",
|
||||
"WC"
|
||||
],
|
||||
"key": {
|
||||
"C": { "item": "minecraft:charcoal" },
|
||||
"W": { "tag" : "forge:treated_wood" }
|
||||
},
|
||||
"result": {
|
||||
"item": "engineersdecor:old_industrial_wood_planks",
|
||||
"count": 4
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"conditions": [
|
||||
{
|
||||
"type": "engineersdecor:optional",
|
||||
"result": "engineersdecor:old_industrial_wood_planks"
|
||||
}
|
||||
],
|
||||
"recipe": {
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"WW",
|
||||
"WC"
|
||||
],
|
||||
"key": {
|
||||
"C": { "item": "minecraft:charcoal" },
|
||||
"W": { "tag": "minecraft:planks" }
|
||||
},
|
||||
"result": {
|
||||
"item": "engineersdecor:old_industrial_wood_planks",
|
||||
"count": 4
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue