Start altering recipes, and adding a new dye
6
.gitignore
vendored
|
@ -25,4 +25,8 @@ run
|
||||||
forge*changelog.txt
|
forge*changelog.txt
|
||||||
|
|
||||||
.private
|
.private
|
||||||
.vscode
|
.vscode
|
||||||
|
|
||||||
|
src/generated/resources
|
||||||
|
run
|
||||||
|
run-data
|
||||||
|
|
|
@ -60,8 +60,8 @@ minecraft {
|
||||||
// The access transformer file can be anywhere in the project.
|
// The access transformer file can be anywhere in the project.
|
||||||
// However, it must be at "META-INF/accesstransformer.cfg" in the final mod jar to be loaded by Forge.
|
// However, it must be at "META-INF/accesstransformer.cfg" in the final mod jar to be loaded by Forge.
|
||||||
// This default location is a best practice to automatically put the file in the right place in the final jar.
|
// This default location is a best practice to automatically put the file in the right place in the final jar.
|
||||||
// See https://docs.minecraftforge.net/en/latest/advanced/accesstransformers/ for more information.
|
// See https://docs.neoforged.net/docs/1.20.x/advanced/accesstransformers/ for more information.
|
||||||
// accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
|
accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
|
||||||
|
|
||||||
// Default run configurations.
|
// Default run configurations.
|
||||||
// These can be tweaked, removed, or duplicated as needed.
|
// These can be tweaked, removed, or duplicated as needed.
|
||||||
|
@ -183,6 +183,7 @@ dependencies {
|
||||||
// For more info:
|
// For more info:
|
||||||
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
|
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
|
||||||
// http://www.gradle.org/docs/current/userguide/dependency_management.html
|
// http://www.gradle.org/docs/current/userguide/dependency_management.html
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// This block of code expands all declared replace properties in the specified resource targets.
|
// This block of code expands all declared replace properties in the specified resource targets.
|
||||||
|
|
|
@ -21,10 +21,7 @@ import dev.zontreck.otemod.effects.ModEffects;
|
||||||
import dev.zontreck.otemod.enchantments.FlightEnchantment;
|
import dev.zontreck.otemod.enchantments.FlightEnchantment;
|
||||||
import dev.zontreck.otemod.enchantments.NightVisionEnchantment;
|
import dev.zontreck.otemod.enchantments.NightVisionEnchantment;
|
||||||
import dev.zontreck.otemod.events.EventHandler;
|
import dev.zontreck.otemod.events.EventHandler;
|
||||||
import dev.zontreck.otemod.implementation.CreativeModeTabs;
|
import dev.zontreck.otemod.implementation.*;
|
||||||
import dev.zontreck.otemod.implementation.InventoryBackup;
|
|
||||||
import dev.zontreck.otemod.implementation.Messages;
|
|
||||||
import dev.zontreck.otemod.implementation.PlayerFirstJoinTag;
|
|
||||||
import dev.zontreck.otemod.implementation.compressor.CompressionChamberScreen;
|
import dev.zontreck.otemod.implementation.compressor.CompressionChamberScreen;
|
||||||
import dev.zontreck.otemod.implementation.vault.*;
|
import dev.zontreck.otemod.implementation.vault.*;
|
||||||
import dev.zontreck.otemod.integrations.KeyBindings;
|
import dev.zontreck.otemod.integrations.KeyBindings;
|
||||||
|
@ -152,6 +149,10 @@ public class OTEMod
|
||||||
private void setup(final FMLCommonSetupEvent event)
|
private void setup(final FMLCommonSetupEvent event)
|
||||||
{
|
{
|
||||||
ModMessages.register();
|
ModMessages.register();
|
||||||
|
|
||||||
|
event.enqueueWork(()->{
|
||||||
|
ModDyes.UpdateBlockEntities();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,13 +2,21 @@ package dev.zontreck.otemod.blocks;
|
||||||
|
|
||||||
import dev.zontreck.otemod.OTEMod;
|
import dev.zontreck.otemod.OTEMod;
|
||||||
import dev.zontreck.otemod.implementation.CreativeModeTabs;
|
import dev.zontreck.otemod.implementation.CreativeModeTabs;
|
||||||
|
import dev.zontreck.otemod.implementation.ModDyes;
|
||||||
|
import dev.zontreck.otemod.mixins.DyeColorMixin;
|
||||||
|
import net.minecraft.client.resources.model.Material;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.world.item.BlockItem;
|
import net.minecraft.world.item.BlockItem;
|
||||||
|
import net.minecraft.world.item.DyeColor;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.level.BlockGetter;
|
import net.minecraft.world.level.BlockGetter;
|
||||||
import net.minecraft.world.level.block.*;
|
import net.minecraft.world.level.block.*;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
import net.minecraft.world.level.block.entity.ShulkerBoxBlockEntity;
|
||||||
import net.minecraft.world.level.block.state.BlockBehaviour;
|
import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.block.state.properties.BedPart;
|
||||||
|
import net.minecraft.world.level.material.MapColor;
|
||||||
import net.minecraftforge.eventbus.api.IEventBus;
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
import net.minecraftforge.registries.DeferredRegister;
|
import net.minecraftforge.registries.DeferredRegister;
|
||||||
import net.minecraftforge.registries.ForgeRegistries;
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
|
@ -17,6 +25,18 @@ import net.minecraftforge.registries.RegistryObject;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class ModBlocks {
|
public class ModBlocks {
|
||||||
|
|
||||||
|
private static BlockBehaviour.StatePredicate shulkerState = (p_152653_, p_152654_, p_152655_) -> {
|
||||||
|
BlockEntity blockentity = p_152654_.getBlockEntity(p_152655_);
|
||||||
|
if (!(blockentity instanceof ShulkerBoxBlockEntity)) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
ShulkerBoxBlockEntity shulkerboxblockentity = (ShulkerBoxBlockEntity)blockentity;
|
||||||
|
return shulkerboxblockentity.isClosed();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
public static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, OTEMod.MOD_ID);
|
public static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, OTEMod.MOD_ID);
|
||||||
public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, OTEMod.MOD_ID);
|
public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, OTEMod.MOD_ID);
|
||||||
|
|
||||||
|
@ -198,4 +218,14 @@ public class ModBlocks {
|
||||||
|
|
||||||
public static final RegistryObject<Block> DIRTY_RED_POOL_TILE_SLAB = registerWithItem(BLOCKS.register("dirty_red_pool_tile_slab", ()->new SlabBlock(stone)), new Item.Properties());
|
public static final RegistryObject<Block> DIRTY_RED_POOL_TILE_SLAB = registerWithItem(BLOCKS.register("dirty_red_pool_tile_slab", ()->new SlabBlock(stone)), new Item.Properties());
|
||||||
|
|
||||||
|
public static final RegistryObject<Block> DARK_RED_WOOL = registerWithItem(BLOCKS.register("dark_red_wool", ()->new Block(BlockBehaviour.Properties.copy(Blocks.RED_WOOL))), new Item.Properties());
|
||||||
|
|
||||||
|
public static final RegistryObject<Block> DARK_RED_CARPET = registerWithItem(BLOCKS.register("dark_red_carpet", ()->new CarpetBlock(BlockBehaviour.Properties.copy(Blocks.RED_CARPET))), new Item.Properties());
|
||||||
|
|
||||||
|
public static final RegistryObject<Block> DARK_RED_BED = registerWithItem(BLOCKS.register("dark_red_bed", ()->new BedBlock(DyeColor.byName("dark_red", DyeColor.RED), BlockBehaviour.Properties.copy(Blocks.RED_BED).mapColor((X)->{
|
||||||
|
return X.getValue(BedBlock.PART) == BedPart.FOOT ? ModDyes.DARK_RED.getMapColor() : MapColor.WOOL;
|
||||||
|
}).noOcclusion())), new Item.Properties().stacksTo(1));
|
||||||
|
|
||||||
|
public static final RegistryObject<Block> DARK_RED_SHULKER_BOX = registerWithItem((BLOCKS.register("dark_red_shulker_box", ()->new ShulkerBoxBlock(ModDyes.DARK_RED, BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_RED).strength(2.0F).dynamicShape().noOcclusion().isSuffocating(shulkerState).isViewBlocking(shulkerState)))), new Item.Properties().stacksTo(1));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,10 +6,7 @@ import dev.zontreck.otemod.items.DeprecatedModItems;
|
||||||
import net.minecraft.data.PackOutput;
|
import net.minecraft.data.PackOutput;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.*;
|
||||||
import net.minecraft.world.level.block.Blocks;
|
|
||||||
import net.minecraft.world.level.block.SlabBlock;
|
|
||||||
import net.minecraft.world.level.block.StairBlock;
|
|
||||||
import net.minecraft.world.level.block.state.BlockBehaviour;
|
import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||||
import net.minecraftforge.client.model.generators.BlockStateProvider;
|
import net.minecraftforge.client.model.generators.BlockStateProvider;
|
||||||
import net.minecraftforge.client.model.generators.ModelFile;
|
import net.minecraftforge.client.model.generators.ModelFile;
|
||||||
|
@ -64,18 +61,30 @@ public class ModBlockStatesProvider extends BlockStateProvider
|
||||||
blockWithItem(ModBlocks.DIRTY_RED_POOL_TILE);
|
blockWithItem(ModBlocks.DIRTY_RED_POOL_TILE);
|
||||||
stairBlock(ModBlocks.DIRTY_RED_POOL_TILE_STAIRS, ModBlocks.DIRTY_RED_POOL_TILE);
|
stairBlock(ModBlocks.DIRTY_RED_POOL_TILE_STAIRS, ModBlocks.DIRTY_RED_POOL_TILE);
|
||||||
slabBlock(ModBlocks.DIRTY_RED_POOL_TILE_SLAB, ModBlocks.DIRTY_RED_POOL_TILE);
|
slabBlock(ModBlocks.DIRTY_RED_POOL_TILE_SLAB, ModBlocks.DIRTY_RED_POOL_TILE);
|
||||||
|
blockWithItem(ModBlocks.DARK_RED_WOOL);
|
||||||
|
carpetBlock(ModBlocks.DARK_RED_CARPET, ModBlocks.DARK_RED_WOOL);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void blockWithItem(RegistryObject<Block> blockRegistryObject)
|
private void blockWithItem(RegistryObject<Block> blockRegistryObject)
|
||||||
{
|
{
|
||||||
simpleBlockWithItem(blockRegistryObject.get(), cubeAll(blockRegistryObject.get()));
|
simpleBlockWithItem(blockRegistryObject.get(), cubeAll(blockRegistryObject.get()));
|
||||||
}
|
}
|
||||||
|
private void blockWithItem(RegistryObject<Block> blockRegistryObject, ModelFile model)
|
||||||
|
{
|
||||||
|
simpleBlockWithItem(blockRegistryObject.get(), model);
|
||||||
|
}
|
||||||
|
|
||||||
private void stairBlock(RegistryObject<Block> blk, RegistryObject<Block> texture)
|
private void stairBlock(RegistryObject<Block> blk, RegistryObject<Block> texture)
|
||||||
{
|
{
|
||||||
stairsBlock((StairBlock) blk.get(), blockTexture(texture.get()));
|
stairsBlock((StairBlock) blk.get(), blockTexture(texture.get()));
|
||||||
simpleBlockItem(blk.get(), stairsModel(blk.get(), texture.get()));
|
simpleBlockItem(blk.get(), stairsModel(blk.get(), texture.get()));
|
||||||
}
|
}
|
||||||
|
private void carpetBlock(RegistryObject<Block> blk, RegistryObject<Block> texture)
|
||||||
|
{
|
||||||
|
simpleBlockWithItem(blk.get(), carpetModel(blk.get(), texture.get()));
|
||||||
|
}
|
||||||
|
|
||||||
private String name(Block block) {
|
private String name(Block block) {
|
||||||
return this.key(block).getPath();
|
return this.key(block).getPath();
|
||||||
|
@ -86,6 +95,9 @@ public class ModBlockStatesProvider extends BlockStateProvider
|
||||||
public ModelFile stairsModel(Block block, Block texture) {
|
public ModelFile stairsModel(Block block, Block texture) {
|
||||||
return this.models().stairs(name(block), blockTexture(texture), blockTexture(texture), blockTexture(texture));
|
return this.models().stairs(name(block), blockTexture(texture), blockTexture(texture), blockTexture(texture));
|
||||||
}
|
}
|
||||||
|
public ModelFile carpetModel(Block block, Block texture) {
|
||||||
|
return this.models().carpet(name(block), blockTexture(texture));
|
||||||
|
}
|
||||||
public ModelFile slabModel(Block block, Block texture) {
|
public ModelFile slabModel(Block block, Block texture) {
|
||||||
return this.models().slab(name(block), blockTexture(texture), blockTexture(texture), blockTexture(texture));
|
return this.models().slab(name(block), blockTexture(texture), blockTexture(texture), blockTexture(texture));
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,6 +51,11 @@ public class ModItemModelsProvider extends ItemModelProvider
|
||||||
item(ModItems.MIAB);
|
item(ModItems.MIAB);
|
||||||
item(ModItems.EMPTY_SPAWN_EGG);
|
item(ModItems.EMPTY_SPAWN_EGG);
|
||||||
item(ModItems.GENERIC_DEPRECATED_ITEM);
|
item(ModItems.GENERIC_DEPRECATED_ITEM);
|
||||||
|
item(ModItems.WHITE_BRICK);
|
||||||
|
item(ModItems.BLUE_BRICK);
|
||||||
|
item(ModItems.LIGHT_BLUE_BRICK);
|
||||||
|
item(ModItems.CYAN_BRICK);
|
||||||
|
item(ModItems.DARK_RED_DYE);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -96,6 +96,11 @@ public class ModBlockLootTablesProvider extends BlockLootSubProvider
|
||||||
dropSelf(ModBlocks.FILTHY_RED_POOL_LIGHT.get());
|
dropSelf(ModBlocks.FILTHY_RED_POOL_LIGHT.get());
|
||||||
dropSelf(ModBlocks.DIRTY_RED_POOL_TILE_STAIRS.get());
|
dropSelf(ModBlocks.DIRTY_RED_POOL_TILE_STAIRS.get());
|
||||||
dropSelf(ModBlocks.DIRTY_RED_POOL_TILE_SLAB.get());
|
dropSelf(ModBlocks.DIRTY_RED_POOL_TILE_SLAB.get());
|
||||||
|
dropSelf(ModBlocks.DARK_RED_WOOL.get());
|
||||||
|
dropSelf(ModBlocks.DARK_RED_CARPET.get());
|
||||||
|
dropSelf(ModBlocks.DARK_RED_BED.get());
|
||||||
|
add(ModBlocks.DARK_RED_SHULKER_BOX.get(), createShulkerBoxDrop(ModBlocks.DARK_RED_SHULKER_BOX.get()));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
package dev.zontreck.otemod.implementation;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
import dev.zontreck.otemod.blocks.ModBlocks;
|
||||||
|
import net.minecraft.world.item.DyeColor;
|
||||||
|
import net.minecraft.world.level.block.Block;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class ModDyes
|
||||||
|
{
|
||||||
|
public static List<DyeColor> DYES = new ArrayList<>();
|
||||||
|
|
||||||
|
public static DyeColor DARK_RED;
|
||||||
|
|
||||||
|
static {
|
||||||
|
DARK_RED = DyeColor.byName("dark_red", DyeColor.WHITE);
|
||||||
|
DYES.add(DARK_RED);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void UpdateBlockEntities()
|
||||||
|
{
|
||||||
|
Set<Block> shulkerSet = BlockEntityType.SHULKER_BOX.validBlocks;
|
||||||
|
List<Block> shulkerList = new ArrayList<>();
|
||||||
|
for(Block shulker : shulkerSet)
|
||||||
|
{
|
||||||
|
shulkerList.add(shulker);
|
||||||
|
}
|
||||||
|
shulkerList.add(ModBlocks.DARK_RED_SHULKER_BOX.get());
|
||||||
|
BlockEntityType.SHULKER_BOX.validBlocks = ImmutableSet.copyOf(shulkerList);
|
||||||
|
|
||||||
|
|
||||||
|
Set<Block> bedSet = BlockEntityType.BED.validBlocks;
|
||||||
|
List<Block> bedList = new ArrayList<>();
|
||||||
|
for (Block bed : bedSet) {
|
||||||
|
bedList.add(bed);
|
||||||
|
}
|
||||||
|
bedList.add(ModBlocks.DARK_RED_BED.get());
|
||||||
|
|
||||||
|
BlockEntityType.BED.validBlocks = ImmutableSet.copyOf(bedList);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -60,6 +60,16 @@ public class ModItems {
|
||||||
|
|
||||||
public static final RegistryObject<Item> GENERIC_DEPRECATED_ITEM = CreativeModeTabs.addToOTEModTab(ITEMS.register("deprecated", ()->new DeprecatedItem()));
|
public static final RegistryObject<Item> GENERIC_DEPRECATED_ITEM = CreativeModeTabs.addToOTEModTab(ITEMS.register("deprecated", ()->new DeprecatedItem()));
|
||||||
|
|
||||||
|
public static final RegistryObject<Item> WHITE_BRICK = CreativeModeTabs.addToOTEModTab(ITEMS.register("white_brick", ()->new Item(new Item.Properties())));
|
||||||
|
|
||||||
|
public static final RegistryObject<Item> BLUE_BRICK = CreativeModeTabs.addToOTEModTab(ITEMS.register("blue_brick", ()->new Item(new Item.Properties())));
|
||||||
|
|
||||||
|
public static final RegistryObject<Item> LIGHT_BLUE_BRICK = CreativeModeTabs.addToOTEModTab(ITEMS.register("light_blue_brick", ()->new Item(new Item.Properties())));
|
||||||
|
|
||||||
|
public static final RegistryObject<Item> CYAN_BRICK = CreativeModeTabs.addToOTEModTab(ITEMS.register("cyan_brick", ()->new Item(new Item.Properties())));
|
||||||
|
|
||||||
|
public static final RegistryObject<Item> DARK_RED_DYE = CreativeModeTabs.addToOTEModTab(ITEMS.register("dark_red_dye", ()->new Item(new Item.Properties())));
|
||||||
|
|
||||||
|
|
||||||
//public static final RegistryObject<Item> POSSUM_SPAWN_EGG = ITEMS.register("possum_spawn_egg", () -> new ForgeSpawnEggItem(ModEntityTypes.POSSUM, 0x938686, 0xc68787, new Item.Properties())));
|
//public static final RegistryObject<Item> POSSUM_SPAWN_EGG = ITEMS.register("possum_spawn_egg", () -> new ForgeSpawnEggItem(ModEntityTypes.POSSUM, 0x938686, 0xc68787, new Item.Properties())));
|
||||||
|
|
||||||
|
|
56
src/main/java/dev/zontreck/otemod/mixins/DyeColorMixin.java
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
package dev.zontreck.otemod.mixins;
|
||||||
|
|
||||||
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||||
|
import net.minecraft.world.item.DyeColor;
|
||||||
|
import net.minecraft.world.level.material.MapColor;
|
||||||
|
import org.spongepowered.asm.mixin.Final;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Mutable;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Invoker;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Mixin(DyeColor.class)
|
||||||
|
public abstract class DyeColorMixin {
|
||||||
|
@Shadow
|
||||||
|
@Final
|
||||||
|
@Mutable
|
||||||
|
public static DyeColor[] $VALUES;
|
||||||
|
private static final DyeColor DARK_RED = addVariant("DARK_RED", "dark_red", 128000001, MapColor.COLOR_RED, 128000001, 128000001);
|
||||||
|
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
@Final
|
||||||
|
@Mutable
|
||||||
|
private static final DyeColor[] BY_ID = Arrays.stream($VALUES).sorted(Comparator.comparingInt(DyeColor::getId)).toArray((p_41067_) -> {
|
||||||
|
return new DyeColor[p_41067_];
|
||||||
|
});
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
@Final
|
||||||
|
@Mutable
|
||||||
|
private static final Int2ObjectOpenHashMap<DyeColor> BY_FIREWORK_COLOR = new Int2ObjectOpenHashMap<>(Arrays.stream($VALUES).collect(Collectors.toMap((p_41064_) -> {
|
||||||
|
return p_41064_.getFireworkColor();
|
||||||
|
}, (p_41056_) -> {
|
||||||
|
return p_41056_;
|
||||||
|
})));
|
||||||
|
|
||||||
|
@Shadow @Final private int id;
|
||||||
|
|
||||||
|
@Invoker("<init>")
|
||||||
|
public static DyeColor invokeInit(String internalName, int internalId, int id, String p_41047_, int p_41048_, MapColor p_41049_, int p_41050_, int p_41051_) {
|
||||||
|
throw new AssertionError();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static DyeColor addVariant(String internalName, String p_41047_, int p_41048_, MapColor p_41049_, int p_41050_, int p_41051_) {
|
||||||
|
ArrayList<DyeColor> variants = new ArrayList<DyeColor>(Arrays.asList(DyeColorMixin.$VALUES));
|
||||||
|
DyeColor color = DyeColorMixin.invokeInit(internalName, variants.get(variants.size() - 1).ordinal() + 1, variants.get(variants.size() - 1).ordinal() + 1, p_41047_, p_41048_, p_41049_, p_41050_, p_41051_);
|
||||||
|
variants.add(color);
|
||||||
|
DyeColorMixin.$VALUES = variants.toArray(new DyeColor[0]);
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
package dev.zontreck.otemod.mixins;
|
||||||
|
|
||||||
|
import dev.zontreck.otemod.blocks.ModBlocks;
|
||||||
|
import dev.zontreck.otemod.implementation.ModDyes;
|
||||||
|
import net.minecraft.world.item.DyeColor;
|
||||||
|
import net.minecraft.world.level.block.Block;
|
||||||
|
import net.minecraft.world.level.block.Blocks;
|
||||||
|
import net.minecraft.world.level.block.ShulkerBoxBlock;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||||
|
|
||||||
|
@Mixin(ShulkerBoxBlock.class)
|
||||||
|
public class ShulkerBoxBlockMixin {
|
||||||
|
|
||||||
|
@Inject(locals = LocalCapture.CAPTURE_FAILHARD,
|
||||||
|
method = "getBlockByColor",
|
||||||
|
at = @At(value = "HEAD"),
|
||||||
|
cancellable = true
|
||||||
|
)
|
||||||
|
private static void getBlockByColorInject(DyeColor p_56191_, CallbackInfoReturnable<Block> cir) {
|
||||||
|
if (p_56191_ == null) {
|
||||||
|
cir.setReturnValue(Blocks.SHULKER_BOX);
|
||||||
|
} else {
|
||||||
|
if(p_56191_ == ModDyes.DARK_RED)
|
||||||
|
{
|
||||||
|
cir.setReturnValue(ModBlocks.DARK_RED_SHULKER_BOX.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
47
src/main/java/dev/zontreck/otemod/mixins/ShulkerMixin.java
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
package dev.zontreck.otemod.mixins;
|
||||||
|
|
||||||
|
|
||||||
|
import net.minecraft.network.syncher.EntityDataAccessor;
|
||||||
|
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||||
|
import net.minecraft.network.syncher.SynchedEntityData;
|
||||||
|
import net.minecraft.world.entity.EntityType;
|
||||||
|
import net.minecraft.world.entity.animal.AbstractGolem;
|
||||||
|
import net.minecraft.world.entity.monster.Shulker;
|
||||||
|
import net.minecraft.world.item.DyeColor;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||||
|
|
||||||
|
@Mixin(Shulker.class)
|
||||||
|
public abstract class ShulkerMixin extends AbstractGolem {
|
||||||
|
@Shadow
|
||||||
|
protected static final EntityDataAccessor<Byte> DATA_COLOR_ID = SynchedEntityData.defineId(Shulker.class, EntityDataSerializers.BYTE);
|
||||||
|
|
||||||
|
protected ShulkerMixin(EntityType<? extends AbstractGolem> p_27508_, Level p_27509_) {
|
||||||
|
super(p_27508_, p_27509_);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject(locals = LocalCapture.CAPTURE_FAILHARD,
|
||||||
|
method = "getColor",
|
||||||
|
at = @At(shift = At.Shift.BEFORE, value = "RETURN"),
|
||||||
|
cancellable = true
|
||||||
|
)
|
||||||
|
private void getColorInject(CallbackInfoReturnable<DyeColor> cir) {
|
||||||
|
byte b0 = this.entityData.get(DATA_COLOR_ID);
|
||||||
|
cir.setReturnValue( b0 != 64 && b0 <= 63 ? DyeColor.byId(b0) : null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject(locals = LocalCapture.CAPTURE_FAILHARD,
|
||||||
|
method = "defineSynchedData",
|
||||||
|
at = @At(shift = At.Shift.BEFORE, value = "TAIL"),
|
||||||
|
cancellable = true
|
||||||
|
)
|
||||||
|
private void defineSynchedDataInject(CallbackInfo ci) {
|
||||||
|
this.entityData.set(DATA_COLOR_ID, (byte)64);
|
||||||
|
}
|
||||||
|
}
|
1
src/main/resources/META-INF/accesstransformer.cfg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
public-f net.minecraft.world.level.block.entity.BlockEntityType f_58915_ #validBlocks
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": {
|
||||||
|
"model": "minecraft:block/bed"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": {
|
||||||
|
"model": "otemod:block/dark_red_shulker_box"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -39,6 +39,11 @@
|
||||||
"item.otemod.encased_singularity": "Encased Singualrity",
|
"item.otemod.encased_singularity": "Encased Singualrity",
|
||||||
"item.otemod.encased_singularity.desc": "A singularity encased in stone, ready to be further compressed into bedrock",
|
"item.otemod.encased_singularity.desc": "A singularity encased in stone, ready to be further compressed into bedrock",
|
||||||
"item.otemod.deprecated": "Deprecated Item",
|
"item.otemod.deprecated": "Deprecated Item",
|
||||||
|
"item.otemod.white_brick": "White Brick",
|
||||||
|
"item.otemod.blue_brick": "Blue Brick",
|
||||||
|
"item.otemod.light_blue_brick": "Light Blue Brick",
|
||||||
|
"item.otemod.cyan_brick": "Cyan Brick",
|
||||||
|
"item.otemod.dark_red_dye": "Dark Red Dye",
|
||||||
|
|
||||||
|
|
||||||
"block.otemod.eternium_ore_block": "Eternium Ore",
|
"block.otemod.eternium_ore_block": "Eternium Ore",
|
||||||
|
@ -102,6 +107,10 @@
|
||||||
"block.otemod.dirty_red_pool_tile": "Dirty Red Pool Tile",
|
"block.otemod.dirty_red_pool_tile": "Dirty Red Pool Tile",
|
||||||
"block.otemod.dirty_red_pool_tile_stairs": "Dirty Red Pool Tile Stairs",
|
"block.otemod.dirty_red_pool_tile_stairs": "Dirty Red Pool Tile Stairs",
|
||||||
"block.otemod.dirty_red_pool_tile_slab": "Dirty Red Pool Tile Slab",
|
"block.otemod.dirty_red_pool_tile_slab": "Dirty Red Pool Tile Slab",
|
||||||
|
"block.otemod.dark_red_wool": "Dark Red Wool",
|
||||||
|
"block.otemod.dark_red_carpet": "Dark Red Carpet",
|
||||||
|
"block.otemod.dark_red_bed": "Dark Red Bed",
|
||||||
|
"block.otemod.dark_red_shulker_box": "Dark Red Shulker Box",
|
||||||
|
|
||||||
|
|
||||||
"enchantment.otemod.mob_egging": "Mob Egging",
|
"enchantment.otemod.mob_egging": "Mob Egging",
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": {
|
||||||
|
"model": "minecraft:block/bed"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"textures": {
|
||||||
|
"particle": "otemod:block/dark_red_shulker_box"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:item/template_bed",
|
||||||
|
"textures": {
|
||||||
|
"particle": "otemod:block/dark_red_wool"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:item/template_shulker_box",
|
||||||
|
"textures": {
|
||||||
|
"particle": "otemod:block/dark_red_shulker_box"
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 363 B |
After Width: | Height: | Size: 423 B |
Before Width: | Height: | Size: 455 B |
BIN
src/main/resources/assets/otemod/textures/item/blue_brick.png
Normal file
After Width: | Height: | Size: 280 B |
BIN
src/main/resources/assets/otemod/textures/item/cyan_brick.png
Normal file
After Width: | Height: | Size: 283 B |
After Width: | Height: | Size: 280 B |
After Width: | Height: | Size: 266 B |
BIN
src/main/resources/assets/otemod/textures/item/dark_red_dye.png
Normal file
After Width: | Height: | Size: 343 B |
After Width: | Height: | Size: 280 B |
BIN
src/main/resources/assets/otemod/textures/item/red_brick.png
Normal file
After Width: | Height: | Size: 272 B |
BIN
src/main/resources/assets/otemod/textures/item/white_brick.png
Normal file
After Width: | Height: | Size: 277 B |
6
src/main/resources/data/minecraft/tags/blocks/beds.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"replace": false,
|
||||||
|
"values": [
|
||||||
|
"otemod:dark_red_bed"
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"replace": false,
|
||||||
|
"values": [
|
||||||
|
"otemod:dark_red_shulker_box"
|
||||||
|
]
|
||||||
|
}
|
6
src/main/resources/data/minecraft/tags/blocks/wool.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"replace": false,
|
||||||
|
"values": [
|
||||||
|
"otemod:dark_red_wool"
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"replace": false,
|
||||||
|
"values": [
|
||||||
|
"otemod:dark_red_carpet"
|
||||||
|
]
|
||||||
|
}
|
6
src/main/resources/data/minecraft/tags/items/beds.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"replace": false,
|
||||||
|
"values": [
|
||||||
|
"otemod:dark_red_bed"
|
||||||
|
]
|
||||||
|
}
|
6
src/main/resources/data/minecraft/tags/items/dyes.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"replace": false,
|
||||||
|
"values": [
|
||||||
|
"otemod:dark_red_dye"
|
||||||
|
]
|
||||||
|
}
|
6
src/main/resources/data/minecraft/tags/items/wool.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"replace": false,
|
||||||
|
"values": [
|
||||||
|
"otemod:dark_red_wool"
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"replace": false,
|
||||||
|
"values": [
|
||||||
|
"otemod:dark_red_carpet"
|
||||||
|
]
|
||||||
|
}
|
15
src/main/resources/data/otemod/recipes/blue_brick.json
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"ingredients": [
|
||||||
|
{
|
||||||
|
"item": "minecraft:blue_dye"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:brick"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "otemod:blue_brick",
|
||||||
|
"count": 1
|
||||||
|
}
|
||||||
|
}
|
15
src/main/resources/data/otemod/recipes/cyan_brick.json
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"ingredients": [
|
||||||
|
{
|
||||||
|
"item": "minecraft:brick"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:cyan_dye"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "otemod:cyan_brick",
|
||||||
|
"count": 1
|
||||||
|
}
|
||||||
|
}
|
19
src/main/resources/data/otemod/recipes/dark_red_bed.json
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"pattern": [
|
||||||
|
"CCC",
|
||||||
|
"DDD"
|
||||||
|
],
|
||||||
|
"key": {
|
||||||
|
"C": {
|
||||||
|
"item": "otemod:dark_red_wool"
|
||||||
|
},
|
||||||
|
"D": {
|
||||||
|
"tag": "forge:wooden_planks"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"item": "otemod:dark_red_bed",
|
||||||
|
"count": 1
|
||||||
|
}
|
||||||
|
}
|
63
src/main/resources/data/otemod/recipes/dye_dark_red_bed.json
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"category": "building",
|
||||||
|
"group": "bed",
|
||||||
|
"ingredients": [
|
||||||
|
{
|
||||||
|
"item": "otemod:dark_red_dye"
|
||||||
|
},
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"item": "minecraft:black_bed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:brown_bed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:cyan_bed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:gray_bed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:green_bed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:light_blue_bed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:light_gray_bed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:lime_bed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:magenta_bed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:orange_bed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:pink_bed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:purple_bed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:red_bed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:yellow_bed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:white_bed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:blue_bed"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "otemod:dark_red_bed"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,63 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"category": "building",
|
||||||
|
"group": "carpet",
|
||||||
|
"ingredients": [
|
||||||
|
{
|
||||||
|
"item": "otemod:dark_red_dye"
|
||||||
|
},
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"item": "minecraft:black_carpet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:blue_carpet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:brown_carpet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:cyan_carpet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:gray_carpet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:green_carpet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:light_blue_carpet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:light_gray_carpet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:lime_carpet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:magenta_carpet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:orange_carpet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:pink_carpet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:purple_carpet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:red_carpet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:yellow_carpet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:white_carpet"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "otemod:dark_red_carpet"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,63 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"category": "building",
|
||||||
|
"group": "wool",
|
||||||
|
"ingredients": [
|
||||||
|
{
|
||||||
|
"item": "otemod:dark_red_dye"
|
||||||
|
},
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"item": "minecraft:black_wool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:blue_wool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:brown_wool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:cyan_wool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:gray_wool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:green_wool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:light_blue_wool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:light_gray_wool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:lime_wool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:magenta_wool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:orange_wool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:pink_wool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:purple_wool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:yellow_wool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:white_wool"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:red_wool"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "otemod:dark_red_wool"
|
||||||
|
}
|
||||||
|
}
|
15
src/main/resources/data/otemod/recipes/light_blue_brick.json
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"ingredients": [
|
||||||
|
{
|
||||||
|
"item": "minecraft:brick"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:light_blue_dye"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "otemod:light_blue_brick",
|
||||||
|
"count": 1
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
"type": "minecraft:crafting_shaped",
|
|
||||||
"pattern": [
|
|
||||||
"AAA",
|
|
||||||
"ABA",
|
|
||||||
"AAA"
|
|
||||||
],
|
|
||||||
"key": {
|
|
||||||
"A": {
|
|
||||||
"item": "minecraft:lime_wool"
|
|
||||||
},
|
|
||||||
"B": {
|
|
||||||
"item": "minecraft:obsidian"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"result": {
|
|
||||||
"item": "otemod:lime",
|
|
||||||
"count": 4
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
"type": "minecraft:crafting_shaped",
|
|
||||||
"pattern": [
|
|
||||||
"A ",
|
|
||||||
"AA ",
|
|
||||||
"AAA"
|
|
||||||
],
|
|
||||||
"key": {
|
|
||||||
"A": {
|
|
||||||
"item": "otemod:lime"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"result": {
|
|
||||||
"item": "otemod:lime_stairs",
|
|
||||||
"count": 4
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
"type": "minecraft:crafting_shaped",
|
|
||||||
"pattern": [
|
|
||||||
"ABA",
|
|
||||||
"BAB",
|
|
||||||
"ABA"
|
|
||||||
],
|
|
||||||
"key": {
|
|
||||||
"A": {
|
|
||||||
"item": "otemod:lime"
|
|
||||||
},
|
|
||||||
"B": {
|
|
||||||
"item": "otemod:whiteout"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"result": {
|
|
||||||
"item": "otemod:lime_tile",
|
|
||||||
"count": 2
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
"type": "minecraft:crafting_shaped",
|
|
||||||
"pattern": [
|
|
||||||
"AAA",
|
|
||||||
"BAB",
|
|
||||||
"AAA"
|
|
||||||
],
|
|
||||||
"key": {
|
|
||||||
"A": {
|
|
||||||
"item": "otemod:lime"
|
|
||||||
},
|
|
||||||
"B": {
|
|
||||||
"item": "otemod:whiteout"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"result": {
|
|
||||||
"item": "otemod:lime_tile_br",
|
|
||||||
"count": 2
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
"type": "minecraft:crafting_shaped",
|
|
||||||
"pattern": [
|
|
||||||
"AAA",
|
|
||||||
"BAB",
|
|
||||||
"ABA"
|
|
||||||
],
|
|
||||||
"key": {
|
|
||||||
"A": {
|
|
||||||
"item": "otemod:lime"
|
|
||||||
},
|
|
||||||
"B": {
|
|
||||||
"item": "otemod:whiteout"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"result": {
|
|
||||||
"item": "otemod:lime_tile_to_wall",
|
|
||||||
"count": 2
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
"type": "minecraft:crafting_shaped",
|
|
||||||
"pattern": [
|
|
||||||
"AAA",
|
|
||||||
"AAA",
|
|
||||||
"BAB"
|
|
||||||
],
|
|
||||||
"key": {
|
|
||||||
"A": {
|
|
||||||
"item": "otemod:lime"
|
|
||||||
},
|
|
||||||
"B": {
|
|
||||||
"item": "otemod:whiteout"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"result": {
|
|
||||||
"item": "otemod:lime_wall_variant_1",
|
|
||||||
"count": 2
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
"type": "minecraft:crafting_shaped",
|
|
||||||
"pattern": [
|
|
||||||
"BAB",
|
|
||||||
"AAA",
|
|
||||||
"BAB"
|
|
||||||
],
|
|
||||||
"key": {
|
|
||||||
"A": {
|
|
||||||
"item": "otemod:lime"
|
|
||||||
},
|
|
||||||
"B": {
|
|
||||||
"item": "otemod:whiteout"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"result": {
|
|
||||||
"item": "otemod:lime_wall_variant_2",
|
|
||||||
"count": 2
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -7,13 +7,13 @@
|
||||||
],
|
],
|
||||||
"key": {
|
"key": {
|
||||||
"A": {
|
"A": {
|
||||||
"item": "minecraft:white_concrete"
|
"item": "otemod:blue_brick"
|
||||||
},
|
},
|
||||||
"B": {
|
"B": {
|
||||||
"item": "minecraft:blue_terracotta"
|
"item": "otemod:cyan_brick"
|
||||||
},
|
},
|
||||||
"C": {
|
"C": {
|
||||||
"item": "minecraft:cyan_terracotta"
|
"item": "otemod:light_blue_brick"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"result": {
|
"result": {
|
||||||
|
|
|
@ -1,15 +1,13 @@
|
||||||
{
|
{
|
||||||
"type": "minecraft:crafting_shaped",
|
"type": "minecraft:crafting_shaped",
|
||||||
"pattern": [
|
"pattern": [
|
||||||
"AB",
|
"AAA",
|
||||||
"BA"
|
"AAA",
|
||||||
|
"AAA"
|
||||||
],
|
],
|
||||||
"key": {
|
"key": {
|
||||||
"A": {
|
"A": {
|
||||||
"item": "minecraft:white_concrete"
|
"item": "otemod:white_brick"
|
||||||
},
|
|
||||||
"B": {
|
|
||||||
"item": "minecraft:white_terracotta"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"result": {
|
"result": {
|
||||||
|
|
15
src/main/resources/data/otemod/recipes/white_brick.json
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"ingredients": [
|
||||||
|
{
|
||||||
|
"item": "minecraft:brick"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item": "minecraft:white_dye"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "otemod:white_brick",
|
||||||
|
"count": 1
|
||||||
|
}
|
||||||
|
}
|
14
src/main/resources/otemod.mixins.json
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"required": true,
|
||||||
|
"package": "dev.zontreck.otemod.mixins",
|
||||||
|
"compatibilityLevel": "JAVA_17",
|
||||||
|
"refmap": "otemod.refmap.json",
|
||||||
|
"mixins": [
|
||||||
|
"DyeColorMixin",
|
||||||
|
"ShulkerBoxBlockMixin",
|
||||||
|
"ShulkerMixin"
|
||||||
|
],
|
||||||
|
"injectors": {
|
||||||
|
"defaultRequire": 1
|
||||||
|
}
|
||||||
|
}
|