Last active
May 8, 2020 02:38
-
-
Save hanetzer/c30a8a7fdbf0ce8dbd342b54448250b9 to your computer and use it in GitHub Desktop.
IItemPropertyOverride
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package slimeknights.tconstruct.blocks; | |
import com.google.common.collect.ImmutableSet; | |
import net.minecraft.block.Block; | |
import net.minecraft.client.renderer.RenderType; | |
import net.minecraft.client.renderer.RenderTypeLookup; | |
import net.minecraft.item.Item; | |
import net.minecraft.tileentity.TileEntityType; | |
import net.minecraftforge.event.RegistryEvent; | |
import net.minecraftforge.eventbus.api.SubscribeEvent; | |
import net.minecraftforge.fml.common.Mod; | |
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; | |
import net.minecraftforge.registries.ObjectHolder; | |
import slimeknights.tconstruct.TConstruct; | |
import slimeknights.tconstruct.common.registry.BlockItemRegistryAdapter; | |
import slimeknights.tconstruct.common.registry.BlockRegistryAdapter; | |
import slimeknights.tconstruct.library.TinkerRegistry; | |
import slimeknights.tconstruct.smeltery.block.SearedBlock; | |
import slimeknights.tconstruct.smeltery.block.SearedGlassBlock; | |
import slimeknights.tconstruct.smeltery.block.SearedSlabBlock; | |
import slimeknights.tconstruct.smeltery.block.SearedStairsBlock; | |
import slimeknights.tconstruct.smeltery.block.SearedTankBlock; | |
import slimeknights.tconstruct.smeltery.item.TankItem; | |
import slimeknights.tconstruct.smeltery.tileentity.TankTileEntity; | |
import static slimeknights.tconstruct.common.TinkerPulse.injected; | |
@ObjectHolder(TConstruct.modID) | |
@Mod.EventBusSubscriber(modid = TConstruct.modID, bus = Mod.EventBusSubscriber.Bus.MOD) | |
public class SmelteryBlocks { | |
public static final SearedBlock seared_stone = injected(); | |
public static final SearedSlabBlock seared_stone_slab = injected(); | |
public static final SearedStairsBlock seared_stone_stairs = injected(); | |
public static final SearedBlock seared_cobble = injected(); | |
public static final SearedSlabBlock seared_cobble_slab = injected(); | |
public static final SearedStairsBlock seared_cobble_stairs = injected(); | |
public static final SearedBlock seared_paver = injected(); | |
public static final SearedSlabBlock seared_paver_slab = injected(); | |
public static final SearedStairsBlock seared_paver_stairs = injected(); | |
public static final SearedBlock seared_bricks = injected(); | |
public static final SearedSlabBlock seared_bricks_slab = injected(); | |
public static final SearedStairsBlock seared_bricks_stairs = injected(); | |
public static final SearedBlock seared_cracked_bricks = injected(); | |
public static final SearedSlabBlock seared_cracked_bricks_slab = injected(); | |
public static final SearedStairsBlock seared_cracked_bricks_stairs = injected(); | |
public static final SearedBlock seared_fancy_bricks = injected(); | |
public static final SearedSlabBlock seared_fancy_bricks_slab = injected(); | |
public static final SearedStairsBlock seared_fancy_bricks_stairs = injected(); | |
public static final SearedBlock seared_square_bricks = injected(); | |
public static final SearedSlabBlock seared_square_bricks_slab = injected(); | |
public static final SearedStairsBlock seared_square_bricks_stairs = injected(); | |
public static final SearedBlock seared_small_bricks = injected(); | |
public static final SearedSlabBlock seared_small_bricks_slab = injected(); | |
public static final SearedStairsBlock seared_small_bricks_stairs = injected(); | |
public static final SearedBlock seared_triangle_bricks = injected(); | |
public static final SearedSlabBlock seared_triangle_bricks_slab = injected(); | |
public static final SearedStairsBlock seared_triangle_bricks_stairs = injected(); | |
public static final SearedBlock seared_creeper = injected(); | |
public static final SearedSlabBlock seared_creeper_slab = injected(); | |
public static final SearedStairsBlock seared_creeper_stairs = injected(); | |
public static final SearedBlock seared_road = injected(); | |
public static final SearedSlabBlock seared_road_slab = injected(); | |
public static final SearedStairsBlock seared_road_stairs = injected(); | |
public static final SearedBlock seared_tile = injected(); | |
public static final SearedSlabBlock seared_tile_slab = injected(); | |
public static final SearedStairsBlock seared_tile_stairs = injected(); | |
public static final SearedGlassBlock seared_glass = injected(); | |
public static final SearedTankBlock seared_tank = injected(); | |
public static final SearedTankBlock seared_gauge = injected(); | |
public static final SearedTankBlock seared_window = injected(); | |
public static ImmutableSet<Block> validSmelteryBlocks; | |
public static ImmutableSet<Block> searedStairsSlabs; | |
public static ImmutableSet<Block> validTinkerTankBlocks; | |
public static ImmutableSet<Block> validTinkerTankFloorBlocks; | |
@SubscribeEvent | |
static void registerBlocks(final RegistryEvent.Register<Block> event) { | |
BlockRegistryAdapter registry = new BlockRegistryAdapter(event.getRegistry()); | |
registry.registerSmelterySlabsAndStairs(new SearedBlock(BlockProperties.SMELTERY), "seared_stone"); | |
registry.registerSmelterySlabsAndStairs(new SearedBlock(BlockProperties.SMELTERY), "seared_cobble"); | |
registry.registerSmelterySlabsAndStairs(new SearedBlock(BlockProperties.SMELTERY), "seared_bricks"); | |
registry.registerSmelterySlabsAndStairs(new SearedBlock(BlockProperties.SMELTERY), "seared_cracked_bricks"); | |
registry.registerSmelterySlabsAndStairs(new SearedBlock(BlockProperties.SMELTERY), "seared_fancy_bricks"); | |
registry.registerSmelterySlabsAndStairs(new SearedBlock(BlockProperties.SMELTERY), "seared_square_bricks"); | |
registry.registerSmelterySlabsAndStairs(new SearedBlock(BlockProperties.SMELTERY), "seared_small_bricks"); | |
registry.registerSmelterySlabsAndStairs(new SearedBlock(BlockProperties.SMELTERY), "seared_triangle_bricks"); | |
registry.registerSmelterySlabsAndStairs(new SearedBlock(BlockProperties.SMELTERY), "seared_creeper"); | |
registry.registerSmelterySlabsAndStairs(new SearedBlock(BlockProperties.SMELTERY), "seared_paver"); | |
registry.registerSmelterySlabsAndStairs(new SearedBlock(BlockProperties.SMELTERY), "seared_road"); | |
registry.registerSmelterySlabsAndStairs(new SearedBlock(BlockProperties.SMELTERY), "seared_tile"); | |
registry.register(new SearedGlassBlock(BlockProperties.SMELTERY_GLASS), "seared_glass"); | |
registry.register(new SearedTankBlock(BlockProperties.SMELTERY_GLASS), "seared_tank"); | |
registry.register(new SearedTankBlock(BlockProperties.SMELTERY_GLASS), "seared_gauge"); | |
registry.register(new SearedTankBlock(BlockProperties.SMELTERY_GLASS), "seared_window"); | |
} | |
@SubscribeEvent | |
static void registerBlockItems(final RegistryEvent.Register<Item> event) { | |
BlockItemRegistryAdapter registry = new BlockItemRegistryAdapter(event.getRegistry(), TinkerRegistry.tabSmeltery); | |
registry.registerBlockItem(seared_stone); | |
registry.registerBlockItem(seared_stone_slab); | |
registry.registerBlockItem(seared_stone_stairs); | |
registry.registerBlockItem(seared_cobble); | |
registry.registerBlockItem(seared_cobble_slab); | |
registry.registerBlockItem(seared_cobble_stairs); | |
registry.registerBlockItem(seared_bricks); | |
registry.registerBlockItem(seared_bricks_slab); | |
registry.registerBlockItem(seared_bricks_stairs); | |
registry.registerBlockItem(seared_cracked_bricks); | |
registry.registerBlockItem(seared_cracked_bricks_slab); | |
registry.registerBlockItem(seared_cracked_bricks_stairs); | |
registry.registerBlockItem(seared_fancy_bricks); | |
registry.registerBlockItem(seared_fancy_bricks_slab); | |
registry.registerBlockItem(seared_fancy_bricks_stairs); | |
registry.registerBlockItem(seared_square_bricks); | |
registry.registerBlockItem(seared_square_bricks_slab); | |
registry.registerBlockItem(seared_square_bricks_stairs); | |
registry.registerBlockItem(seared_small_bricks); | |
registry.registerBlockItem(seared_small_bricks_slab); | |
registry.registerBlockItem(seared_small_bricks_stairs); | |
registry.registerBlockItem(seared_triangle_bricks); | |
registry.registerBlockItem(seared_triangle_bricks_slab); | |
registry.registerBlockItem(seared_triangle_bricks_stairs); | |
registry.registerBlockItem(seared_creeper); | |
registry.registerBlockItem(seared_creeper_slab); | |
registry.registerBlockItem(seared_creeper_stairs); | |
registry.registerBlockItem(seared_paver); | |
registry.registerBlockItem(seared_paver_slab); | |
registry.registerBlockItem(seared_paver_stairs); | |
registry.registerBlockItem(seared_road); | |
registry.registerBlockItem(seared_road_slab); | |
registry.registerBlockItem(seared_road_stairs); | |
registry.registerBlockItem(seared_tile); | |
registry.registerBlockItem(seared_tile_slab); | |
registry.registerBlockItem(seared_tile_stairs); | |
registry.registerBlockItem(seared_glass); | |
registry.registerBlockItem(new TankItem(seared_tank, new Item.Properties().group(TinkerRegistry.tabSmeltery))); | |
registry.registerBlockItem(seared_gauge); | |
registry.registerBlockItem(seared_window); | |
ImmutableSet.Builder<Block> builder = ImmutableSet.builder(); | |
builder.add(seared_stone); | |
builder.add(seared_cobble); | |
builder.add(seared_bricks); | |
builder.add(seared_cracked_bricks); | |
builder.add(seared_fancy_bricks); | |
builder.add(seared_square_bricks); | |
builder.add(seared_small_bricks); | |
builder.add(seared_triangle_bricks); | |
builder.add(seared_creeper); | |
builder.add(seared_paver); | |
builder.add(seared_road); | |
builder.add(seared_tile); | |
builder.add(seared_tank); | |
builder.add(seared_gauge); | |
builder.add(seared_window); | |
//builder.add(smelteryIO); | |
builder.add(seared_glass); | |
validSmelteryBlocks = builder.build(); | |
validTinkerTankBlocks = builder.build(); // same blocks right now | |
validTinkerTankFloorBlocks = ImmutableSet.of(seared_stone, seared_cobble, seared_bricks, seared_cracked_bricks, seared_fancy_bricks, seared_square_bricks, seared_small_bricks, seared_triangle_bricks, seared_creeper, seared_paver, seared_road, seared_tile, seared_glass);//, smelteryIO); | |
// seared furnace ceiling blocks, no smelteryIO or seared glass | |
// does not affect sides, those are forced to use seared blocks/tanks where relevant | |
builder = ImmutableSet.builder(); | |
builder.add(seared_stone); | |
builder.add(seared_cobble); | |
builder.add(seared_bricks); | |
builder.add(seared_cracked_bricks); | |
builder.add(seared_fancy_bricks); | |
builder.add(seared_square_bricks); | |
builder.add(seared_small_bricks); | |
builder.add(seared_triangle_bricks); | |
builder.add(seared_creeper); | |
builder.add(seared_paver); | |
builder.add(seared_road); | |
builder.add(seared_tile); | |
builder.add(seared_stone_slab); | |
builder.add(seared_cobble_slab); | |
builder.add(seared_bricks_slab); | |
builder.add(seared_cracked_bricks_slab); | |
builder.add(seared_fancy_bricks_slab); | |
builder.add(seared_square_bricks_slab); | |
builder.add(seared_small_bricks_slab); | |
builder.add(seared_triangle_bricks_slab); | |
builder.add(seared_creeper_slab); | |
builder.add(seared_paver_slab); | |
builder.add(seared_road_slab); | |
builder.add(seared_tile_slab); | |
builder.add(seared_stone_stairs); | |
builder.add(seared_cobble_stairs); | |
builder.add(seared_bricks_stairs); | |
builder.add(seared_cracked_bricks_stairs); | |
builder.add(seared_fancy_bricks_stairs); | |
builder.add(seared_square_bricks_stairs); | |
builder.add(seared_small_bricks_stairs); | |
builder.add(seared_triangle_bricks_stairs); | |
builder.add(seared_creeper_stairs); | |
builder.add(seared_paver_stairs); | |
builder.add(seared_road_stairs); | |
builder.add(seared_tile_stairs); | |
searedStairsSlabs = builder.build(); | |
} | |
@SubscribeEvent | |
static void clientSetup(final FMLClientSetupEvent event) { | |
RenderTypeLookup.setRenderLayer(seared_glass, (layer) -> layer == RenderType.getCutout()); | |
RenderTypeLookup.setRenderLayer(seared_tank, (layer) -> layer == RenderType.getCutout()); | |
RenderTypeLookup.setRenderLayer(seared_gauge, (layer) -> layer == RenderType.getCutout()); | |
RenderTypeLookup.setRenderLayer(seared_window, (layer) -> layer == RenderType.getCutout()); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"parent": "minecraft:block/cube_column", | |
"textures": { | |
"particle": "tconstruct:block/smeltery/tank/seared_tank_side", | |
"top": "tconstruct:block/smeltery/tank/seared_tank_top", | |
"side": "tconstruct:block/smeltery/tank/seared_tank_side" | |
}, | |
"elements": [ | |
{ | |
"from": [ 0, 0, 0 ], | |
"to": [ 16, 16, 16 ], | |
"faces": { | |
"down": { "texture": "#top" }, | |
"up": { "texture": "#top" }, | |
"north": { "texture": "#side" }, | |
"south": { "texture": "#side" }, | |
"west": { "texture": "#side" }, | |
"east": { "texture": "#side" } | |
} | |
}, | |
{ | |
"from": [ 3, 16, 3 ], | |
"to": [ 13, 17, 13 ], | |
"faces": { | |
"up": { "texture": "#top" }, | |
"north": { | |
"uv": [ 0, 0, 10, 1 ], | |
"texture": "#side" | |
}, | |
"south": { | |
"uv": [ 0, 0, 10, 1], | |
"texture": "#side" | |
}, | |
"west": { | |
"uv": [ 0, 0, 10, 1], | |
"texture": "#side" | |
}, | |
"east": { | |
"uv": [ 0, 0, 10, 1], | |
"texture": "#side" | |
} | |
} | |
} | |
], | |
"overrides": [ | |
{ "predicate": { "tconstruct:amount": 0.0000 }, "model": "tconstruct:block/smeltery/tank/tank" }, | |
{ "predicate": { "tconstruct:amount": 0.0001 }, "model": "tconstruct:block/smeltery/tank/tank/0" }, | |
{ "predicate": { "tconstruct:amount": 0.0625 }, "model": "tconstruct:block/smeltery/tank/tank/1" }, | |
{ "predicate": { "tconstruct:amount": 0.1875 }, "model": "tconstruct:block/smeltery/tank/tank/2" }, | |
{ "predicate": { "tconstruct:amount": 0.3125 }, "model": "tconstruct:block/smeltery/tank/tank/3" }, | |
{ "predicate": { "tconstruct:amount": 0.4375 }, "model": "tconstruct:block/smeltery/tank/tank/4" }, | |
{ "predicate": { "tconstruct:amount": 0.5625 }, "model": "tconstruct:block/smeltery/tank/tank/5" }, | |
{ "predicate": { "tconstruct:amount": 0.6875 }, "model": "tconstruct:block/smeltery/tank/tank/6" }, | |
{ "predicate": { "tconstruct:amount": 0.8125 }, "model": "tconstruct:block/smeltery/tank/tank/7" }, | |
{ "predicate": { "tconstruct:amount": 0.9375 }, "model": "tconstruct:block/smeltery/tank/tank/8" } | |
] | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"parent": "block/block", | |
"textures": { | |
"top": "tconstruct:block/smeltery/tank/seared_tank_top", | |
"side": "tconstruct:block/smeltery/tank/seared_tank_side", | |
"fluid": "minecraft:block/water_still" | |
}, | |
"elements": [ | |
{ "from": [ 0, 0, 0 ], | |
"to": [ 16, 16, 16 ], | |
"faces": { | |
"down": { "texture": "#top" }, | |
"up": { "texture": "#top" }, | |
"north": { "texture": "#side" }, | |
"south": { "texture": "#side" }, | |
"west": { "texture": "#side" }, | |
"east": { "texture": "#side" } | |
} | |
}, | |
{ "from": [ 3, 16, 3 ], | |
"to": [ 13, 17, 13 ], | |
"faces": { | |
"up": { "texture": "#top" }, | |
"north": { | |
"uv": [ 0, 0, 10, 1 ], | |
"texture": "#side" | |
}, | |
"south": { | |
"uv": [ 0, 0, 10, 1 ], | |
"texture": "#side" | |
}, | |
"west": { | |
"uv": [ 0, 0, 10, 1 ], | |
"texture": "#side" | |
}, | |
"east": { | |
"uv": [ 0, 0, 10, 1 ], | |
"texture": "#side" | |
} | |
} | |
}, | |
{ "from": [ 0.08, 0.08, 0.08 ], | |
"to": [ 15.92, 0.08, 15.92 ], | |
"faces": { | |
"down": { "texture": "#fluid", "tintindex": 0 }, | |
"up": { "texture": "#fluid", "tintindex": 0 } | |
} | |
} | |
] | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package slimeknights.tconstruct.smeltery.item; | |
import net.minecraft.block.Block; | |
import net.minecraft.entity.LivingEntity; | |
import net.minecraft.item.BlockItem; | |
import net.minecraft.item.IItemPropertyGetter; | |
import net.minecraft.item.ItemStack; | |
import net.minecraft.util.ResourceLocation; | |
import net.minecraft.world.World; | |
import net.minecraftforge.api.distmarker.Dist; | |
import net.minecraftforge.api.distmarker.OnlyIn; | |
import net.minecraftforge.fluids.FluidStack; | |
import slimeknights.tconstruct.smeltery.tileentity.TankTileEntity; | |
import javax.annotation.Nullable; | |
public class TankItem extends BlockItem { | |
public TankItem(Block blockIn, Properties builder) { | |
super(blockIn, builder); | |
this.addPropertyOverride(new ResourceLocation("tconstruct:amount"), TankCapacityGetter.INSTANCE); | |
} | |
public enum TankCapacityGetter implements IItemPropertyGetter { | |
INSTANCE; | |
@OnlyIn(Dist.CLIENT) | |
@Override | |
public float call(ItemStack stack, @Nullable World worldIn, @Nullable LivingEntity entity) { | |
if (!stack.hasTag()) { | |
return 0; | |
} | |
FluidStack fluid = FluidStack.loadFluidStackFromNBT(stack.getTag()); | |
if (fluid != null && fluid.getAmount() > 0) { | |
return (float)fluid.getAmount() / TankTileEntity.CAPACITY; | |
} | |
return 0; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment