Add the gamemode inventory backup function
|
@ -118,9 +118,6 @@ repositories {
|
|||
|
||||
// If you have mod jar dependencies in ./libs, you can declare them as a repository like so.
|
||||
// See https://docs.gradle.org/current/userguide/declaring_repositories.html#sub:flat_dir_resolver
|
||||
// flatDir {
|
||||
// dir 'libs'
|
||||
// }
|
||||
|
||||
maven {
|
||||
name = "Aria's Creations Caches"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
org.gradle.jvmargs=-Xmx3G
|
||||
org.gradle.daemon=false
|
||||
|
||||
libzontreck=1.9.121423.1700
|
||||
libzontreck=1.9.121823.1318
|
||||
|
||||
## Environment Properties
|
||||
|
||||
|
|
|
@ -6,9 +6,7 @@ import net.minecraft.core.BlockPos;
|
|||
import net.minecraft.world.item.BlockItem;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.SoundType;
|
||||
import net.minecraft.world.level.block.*;
|
||||
import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.eventbus.api.IEventBus;
|
||||
|
@ -78,6 +76,34 @@ public class ModBlocks {
|
|||
|
||||
public static final RegistryObject<Item> STABLE_SINGULARITY_I = CreativeModeTabs.addToOTEModTab(ITEMS.register("stable_singularity", ()->new BlockItem(STABLE_SINGULARITY.get(), new Item.Properties())));
|
||||
|
||||
public static final RegistryObject<Block> LIMINAL_TILES = BLOCKS.register("liminal_tiles", ()-> new Block(BlockBehaviour.Properties.copy(Blocks.BEDROCK)));
|
||||
|
||||
public static final RegistryObject<Item> LIMINAL_TILES_I = CreativeModeTabs.addToOTEModTab(ITEMS.register("liminal_tiles", ()->new BlockItem(LIMINAL_TILES.get(), new Item.Properties())));
|
||||
|
||||
public static final RegistryObject<Block> BLACK = BLOCKS.register("black", ()->new Block(BlockBehaviour.Properties.copy(Blocks.BEDROCK)));
|
||||
|
||||
public static final RegistryObject<Item> BLOCK_I = CreativeModeTabs.addToOTEModTab(ITEMS.register("black", ()->new FoiledBlockItem(BLACK.get(), new Item.Properties().stacksTo(128))));
|
||||
|
||||
public static final RegistryObject<Block> LIMINAL_TILE_STAIRS = BLOCKS.register("liminal_tile_stairs", ()->new StairBlock(LIMINAL_TILES.get()::defaultBlockState, BlockBehaviour.Properties.copy(Blocks.BEDROCK).destroyTime(1000).strength(1000)));
|
||||
|
||||
public static final RegistryObject<Item> LIMINAL_TILE_STAIRS_I = CreativeModeTabs.addToOTEModTab(ITEMS.register("liminal_tile_stairs", ()->new BlockItem(LIMINAL_TILE_STAIRS.get(), new Item.Properties())));
|
||||
|
||||
public static final RegistryObject<Block> LIMINAL_TILE_SLAB = BLOCKS.register("liminal_tile_slab", ()->new SlabBlock(BlockBehaviour.Properties.copy(Blocks.BEDROCK)));
|
||||
|
||||
public static final RegistryObject<Item> LIMINAL_TILE_SLAB_I = CreativeModeTabs.addToOTEModTab(ITEMS.register("liminal_tile_slab", ()->new BlockItem(LIMINAL_TILE_SLAB.get(), new Item.Properties())));
|
||||
|
||||
public static final RegistryObject<Block> LIMINAL_WINDOW = BLOCKS.register("liminal_window", () -> new ParallaxWindow(15));
|
||||
|
||||
public static final RegistryObject<Item> LIMINAL_WINDOW_I = CreativeModeTabs.addToOTEModTab(ITEMS.register("liminal_window", () -> new BlockItem(LIMINAL_WINDOW.get(), new Item.Properties())));
|
||||
|
||||
/*
|
||||
|
||||
|
||||
public static final class_2248 LIMINAL_WINDOW_NOON = (class_2248)createBlock("liminal_window_noon", new LiminalWindowBlock(QuiltBlockSettings.method_9630((class_4970)class_2246.field_31037).method_9626(class_2498.field_11537)), true, (class_1761)ModItems.LIMINAL_POOLS_ITEM_GROUP);
|
||||
|
||||
public static final class_2248 LIMINAL_WINDOW_DUSK = (class_2248)createBlock("liminal_window_dusk", new LiminalWindowBlock(QuiltBlockSettings.method_9630((class_4970)class_2246.field_31037).method_9626(class_2498.field_11537)), true, (class_1761)ModItems.LIMINAL_POOLS_ITEM_GROUP);
|
||||
|
||||
public static final class_2248 LIMINAL_WINDOW_ABYSS = (class_2248)createBlock("liminal_window_abyss", new LiminalWindowBlock(QuiltBlockSettings.method_9630((class_4970)class_2246.field_31037).method_9626(class_2498.field_11537)), true, (class_1761)ModItems.LIMINAL_POOLS_ITEM_GROUP);*/
|
||||
|
||||
|
||||
private static boolean never(BlockState p_50806_, BlockGetter p_50807_, BlockPos p_50808_) {
|
||||
|
|
30
src/main/java/dev/zontreck/otemod/blocks/ParallaxWindow.java
Normal file
|
@ -0,0 +1,30 @@
|
|||
package dev.zontreck.otemod.blocks;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.block.*;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.properties.DirectionProperty;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class ParallaxWindow extends BaseEntityBlock
|
||||
{
|
||||
protected static final double OFFSET = 0.0625;
|
||||
|
||||
public ParallaxWindow(int light) {
|
||||
super(Properties.copy(Blocks.BEDROCK).lightLevel(x->light).sound(SoundType.GLASS));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean propagatesSkylightDown(BlockState pState, BlockGetter pReader, BlockPos pPos) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -2,6 +2,7 @@ package dev.zontreck.otemod.blocks.entity;
|
|||
|
||||
import dev.zontreck.otemod.OTEMod;
|
||||
import dev.zontreck.otemod.blocks.ModBlocks;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraftforge.eventbus.api.IEventBus;
|
||||
import net.minecraftforge.registries.DeferredRegister;
|
||||
|
@ -16,6 +17,10 @@ public class ModEntities {
|
|||
|
||||
public static final RegistryObject <BlockEntityType <MagicalScrubberBlockEntity>> MAGICAL_SCRUBBER = ENTITIES.register("magical_scrubber", ()-> BlockEntityType.Builder.of(MagicalScrubberBlockEntity::new, ModBlocks.MAGICAL_SCRUBBER.get()).build(null));
|
||||
|
||||
public static final ResourceLocation PARALLAX_BLOCK = new ResourceLocation(OTEMod.MOD_ID, "parallax_block");
|
||||
|
||||
public static final RegistryObject <BlockEntityType <ParallaxWindowEntity>> PARALLAX_WINDOW_ENTITY = ENTITIES.register("parallax_window", ()->BlockEntityType.Builder.of(ParallaxWindowEntity::new, ModBlocks.LIMINAL_WINDOW.get()).build(null));
|
||||
|
||||
|
||||
public static void register(IEventBus eventBus)
|
||||
{
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
package dev.zontreck.otemod.blocks.entity;
|
||||
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import org.joml.Matrix4f;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class ParallaxWindowEntity extends BlockEntity
|
||||
{
|
||||
public enum SkyType
|
||||
{
|
||||
Level1
|
||||
}
|
||||
|
||||
public ParallaxWindowEntity(BlockPos pPos, BlockState pBlockState) {
|
||||
super(ModEntities.PARALLAX_WINDOW_ENTITY.get(), pPos, pBlockState);
|
||||
}
|
||||
|
||||
private SkyType skyType = SkyType.Level1;
|
||||
|
||||
public SkyType getSkyType() {
|
||||
return skyType;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void saveAdditional(CompoundTag compoundTag) {
|
||||
compoundTag.putString("skyType", this.skyType.name());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(CompoundTag compoundTag) {
|
||||
if (!compoundTag.contains("skyType")) {
|
||||
return;
|
||||
}
|
||||
this.skyType = SkyType.valueOf(compoundTag.getString("skyType"));
|
||||
}
|
||||
|
||||
|
||||
private final Boolean[] shouldRender = new Boolean[6];
|
||||
|
||||
public boolean shouldRenderFace(Direction direction) {
|
||||
int index = direction.ordinal();
|
||||
|
||||
if (shouldRender[index] == null) {
|
||||
shouldRender[index] = level == null || Block.shouldRenderFace(getBlockState(), level, getBlockPos(), direction, getBlockPos().relative(direction));
|
||||
}
|
||||
|
||||
return shouldRender[index];
|
||||
}
|
||||
|
||||
public void neighborChanged() {
|
||||
Arrays.fill(shouldRender, null);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
package dev.zontreck.otemod.client.renderer;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import dev.zontreck.otemod.blocks.ParallaxWindow;
|
||||
import dev.zontreck.otemod.blocks.entity.ParallaxWindowEntity;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
|
||||
import net.minecraft.core.Direction;
|
||||
import org.joml.Matrix4f;
|
||||
|
||||
public class ParallaxWindowEntityRenderer implements BlockEntityRenderer<ParallaxWindowEntity>
|
||||
{
|
||||
|
||||
@Override
|
||||
public void render(ParallaxWindowEntity parallaxWindowEntity, float v, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int i1) {
|
||||
|
||||
Matrix4f m4f = poseStack.last().pose();
|
||||
var renderType = switch (parallaxWindowEntity.getSkyType()) {
|
||||
|
||||
case Level1 -> RenderType.endPortal();
|
||||
};
|
||||
renderCube(parallaxWindowEntity, m4f, multiBufferSource.getBuffer(renderType));
|
||||
}
|
||||
|
||||
|
||||
private void renderCube(ParallaxWindowEntity entity, Matrix4f matrix, VertexConsumer buffer) {
|
||||
renderFace(entity, matrix, buffer, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, Direction.SOUTH);
|
||||
renderFace(entity, matrix, buffer, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, Direction.NORTH);
|
||||
renderFace(entity, matrix, buffer, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, Direction.EAST);
|
||||
renderFace(entity, matrix, buffer, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, Direction.WEST);
|
||||
renderFace(entity, matrix, buffer, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, Direction.DOWN);
|
||||
renderFace(entity, matrix, buffer, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, Direction.UP);
|
||||
}
|
||||
|
||||
private void renderFace(ParallaxWindowEntity entity, Matrix4f matrix, VertexConsumer buffer, float f, float g, float h, float i, float j, float k, float l, float m, Direction direction) {
|
||||
if (entity.shouldRenderFace(direction)) {
|
||||
buffer.vertex(matrix, f, h, j).endVertex();
|
||||
buffer.vertex(matrix, g, h, k).endVertex();
|
||||
buffer.vertex(matrix, g, i, l).endVertex();
|
||||
buffer.vertex(matrix, f, i, m).endVertex();
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public int getViewDistance() {
|
||||
return 256;
|
||||
}
|
||||
}
|
|
@ -12,6 +12,7 @@ import dev.zontreck.otemod.configs.OTEServerConfig;
|
|||
import dev.zontreck.otemod.enchantments.MobEggEnchantment;
|
||||
import dev.zontreck.otemod.enchantments.ModEnchantments;
|
||||
import dev.zontreck.otemod.implementation.DeathMessages;
|
||||
import dev.zontreck.otemod.implementation.InventoryBackup;
|
||||
import dev.zontreck.otemod.items.tags.ItemStatType;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
|
@ -22,11 +23,14 @@ import net.minecraft.world.entity.item.ItemEntity;
|
|||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.enchantment.Enchantments;
|
||||
import net.minecraft.world.level.GameType;
|
||||
import net.minecraftforge.common.ForgeSpawnEggItem;
|
||||
import net.minecraftforge.event.entity.living.LivingDeathEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingDropsEvent;
|
||||
import net.minecraftforge.event.entity.player.PlayerEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.items.ItemStackHandler;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Date;
|
||||
|
@ -137,5 +141,24 @@ public class EventHandler {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onGameModeChanged(PlayerEvent.PlayerChangeGameModeEvent event)
|
||||
{
|
||||
ServerPlayer player = (ServerPlayer) event.getEntity();
|
||||
|
||||
InventoryBackup backup = new InventoryBackup(player, event.getCurrentGameMode());
|
||||
InventoryBackup restore = new InventoryBackup(player, event.getNewGameMode());
|
||||
|
||||
restore.restore();
|
||||
backup.save();
|
||||
|
||||
if(event.getNewGameMode() == GameType.CREATIVE)
|
||||
{
|
||||
player.getInventory().clearContent();
|
||||
return;
|
||||
}
|
||||
restore.apply();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -21,7 +21,12 @@ public class DeathMessages {
|
|||
messages.add("!Dark_Red![1]!Dark_Red! experienced their [0] death, while running away in fear from [2]");
|
||||
messages.add("!Dark_Red![1] was eaten alive by [2]");
|
||||
messages.add("!Dark_Red!For their [0] death, [1]!Dark_Red! got a little bit too careless!");
|
||||
messages.add("!Dark_Red!Not all whimpering messes are good, as [1]!Dark_Red! is evidence of.");
|
||||
messages.add("!Dark_Red![0]!? Seriously?! Come on! [1]!Dark_Red! you can do better than this!");
|
||||
messages.add("!Dark_Red!What is that... the [0]th time? For fucks sake, I'm not even surprised anymore.");
|
||||
|
||||
|
||||
messages_falling.add("!Dark_Red![1]!Dark_Red!... oh my dear sweet [1]!Dark_Red!, oh you sweet summer child with ribbons in your hair... you cannot in fact, fly, (yet)");
|
||||
messages_falling.add("!Dark_Red![1]!Dark_Red! clearly had the delusion they could fly.... their [0] death says otherwise.");
|
||||
messages_falling.add("!Dark_Red![1]!Dark_Red! tried flying, but forgot their wings");
|
||||
}
|
||||
|
|
|
@ -0,0 +1,74 @@
|
|||
package dev.zontreck.otemod.implementation;
|
||||
|
||||
import dev.zontreck.otemod.database.OTEDatastore;
|
||||
import net.minecraft.nbt.*;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.entity.player.Inventory;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.GameType;
|
||||
import net.minecraftforge.items.ItemStackHandler;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class InventoryBackup extends OTEDatastore
|
||||
{
|
||||
ServerPlayer player;
|
||||
File my_file;
|
||||
|
||||
ListTag list;
|
||||
public static final Path FILE_TREE_PATH = of("gamemode_inventories");
|
||||
|
||||
public InventoryBackup(ServerPlayer player, GameType mode)
|
||||
{
|
||||
this.player = player;
|
||||
var temp = FILE_TREE_PATH.resolve(player.getStringUUID());
|
||||
if(!temp.toFile().exists()) temp.toFile().mkdir();
|
||||
|
||||
my_file = temp.resolve(mode.getName() + ".nbt").toFile();
|
||||
}
|
||||
|
||||
public void restore()
|
||||
{
|
||||
try {
|
||||
CompoundTag tag = NbtIo.read(my_file);
|
||||
list = tag.getList("inventory", Tag.TAG_COMPOUND);
|
||||
|
||||
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void save()
|
||||
{
|
||||
try{
|
||||
CompoundTag tag = new CompoundTag();
|
||||
list.clear();
|
||||
list = player.getInventory().save(list);
|
||||
tag.put("inventory", list);
|
||||
|
||||
NbtIo.write(tag, my_file);
|
||||
|
||||
}catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void apply()
|
||||
{
|
||||
try {
|
||||
player.getInventory().load(list);
|
||||
}catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package dev.zontreck.otemod.items;
|
||||
|
||||
import dev.zontreck.otemod.OTEMod;
|
||||
import dev.zontreck.otemod.blocks.FoiledBlockItem;
|
||||
import dev.zontreck.otemod.entities.ModEntityTypes;
|
||||
import dev.zontreck.otemod.implementation.CreativeModeTabs;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
|
@ -52,6 +53,8 @@ public class ModItems {
|
|||
|
||||
public static final RegistryObject<Item> VAULT_RAW_ORE = CreativeModeTabs.addToOTEModTab(ITEMS.register("raw_vault_steel_ore", () -> new Item(new Item.Properties().stacksTo(64))));
|
||||
|
||||
public static final RegistryObject<Item> POSS_BALL = CreativeModeTabs.addToOTEModTab(ITEMS.register("poss_ball", () -> new PossBallItem(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())));
|
||||
|
||||
|
|
27
src/main/java/dev/zontreck/otemod/items/PossBallItem.java
Normal file
|
@ -0,0 +1,27 @@
|
|||
package dev.zontreck.otemod.items;
|
||||
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResultHolder;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
|
||||
public class PossBallItem extends Item
|
||||
{
|
||||
public PossBallItem(Properties pProperties) {
|
||||
super(pProperties);
|
||||
}
|
||||
|
||||
public boolean contents=false;
|
||||
@Override
|
||||
public boolean isFoil(ItemStack pStack) {
|
||||
return contents;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionResultHolder<ItemStack> use(Level pLevel, Player pPlayer, InteractionHand pUsedHand) {
|
||||
contents = !contents;
|
||||
return super.use(pLevel, pPlayer, pUsedHand);
|
||||
}
|
||||
}
|
7
src/main/resources/assets/otemod/blockstates/black.json
Normal file
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"variants": {
|
||||
"": {
|
||||
"model": "otemod:block/black"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"variants": {
|
||||
"type=bottom": {
|
||||
"model": "otemod:block/liminal_tile_slab"
|
||||
},
|
||||
"type=double": {
|
||||
"model": "otemod:block/liminal_tiles"
|
||||
},
|
||||
"type=top": {
|
||||
"model": "otemod:block/liminal_tile_slab_top"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,209 @@
|
|||
{
|
||||
"variants": {
|
||||
"facing=east,half=bottom,shape=inner_left": {
|
||||
"model": "otemod:block/liminal_tile_stairs_inner",
|
||||
"uvlock": true,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,half=bottom,shape=inner_right": {
|
||||
"model": "otemod:block/liminal_tile_stairs_inner"
|
||||
},
|
||||
"facing=east,half=bottom,shape=outer_left": {
|
||||
"model": "otemod:block/liminal_tile_stairs_outer",
|
||||
"uvlock": true,
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,half=bottom,shape=outer_right": {
|
||||
"model": "otemod:block/liminal_tile_stairs_outer"
|
||||
},
|
||||
"facing=east,half=bottom,shape=straight": {
|
||||
"model": "otemod:block/liminal_tile_stairs"
|
||||
},
|
||||
"facing=east,half=top,shape=inner_left": {
|
||||
"model": "otemod:block/liminal_tile_stairs_inner",
|
||||
"uvlock": true,
|
||||
"x": 180
|
||||
},
|
||||
"facing=east,half=top,shape=inner_right": {
|
||||
"model": "otemod:block/liminal_tile_stairs_inner",
|
||||
"uvlock": true,
|
||||
"x": 180,
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,half=top,shape=outer_left": {
|
||||
"model": "otemod:block/liminal_tile_stairs_outer",
|
||||
"uvlock": true,
|
||||
"x": 180
|
||||
},
|
||||
"facing=east,half=top,shape=outer_right": {
|
||||
"model": "otemod:block/liminal_tile_stairs_outer",
|
||||
"uvlock": true,
|
||||
"x": 180,
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,half=top,shape=straight": {
|
||||
"model": "otemod:block/liminal_tile_stairs",
|
||||
"uvlock": true,
|
||||
"x": 180
|
||||
},
|
||||
"facing=north,half=bottom,shape=inner_left": {
|
||||
"model": "otemod:block/liminal_tile_stairs_inner",
|
||||
"uvlock": true,
|
||||
"y": 180
|
||||
},
|
||||
"facing=north,half=bottom,shape=inner_right": {
|
||||
"model": "otemod:block/liminal_tile_stairs_inner",
|
||||
"uvlock": true,
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,half=bottom,shape=outer_left": {
|
||||
"model": "otemod:block/liminal_tile_stairs_outer",
|
||||
"uvlock": true,
|
||||
"y": 180
|
||||
},
|
||||
"facing=north,half=bottom,shape=outer_right": {
|
||||
"model": "otemod:block/liminal_tile_stairs_outer",
|
||||
"uvlock": true,
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,half=bottom,shape=straight": {
|
||||
"model": "otemod:block/liminal_tile_stairs",
|
||||
"uvlock": true,
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,half=top,shape=inner_left": {
|
||||
"model": "otemod:block/liminal_tile_stairs_inner",
|
||||
"uvlock": true,
|
||||
"x": 180,
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,half=top,shape=inner_right": {
|
||||
"model": "otemod:block/liminal_tile_stairs_inner",
|
||||
"uvlock": true,
|
||||
"x": 180
|
||||
},
|
||||
"facing=north,half=top,shape=outer_left": {
|
||||
"model": "otemod:block/liminal_tile_stairs_outer",
|
||||
"uvlock": true,
|
||||
"x": 180,
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,half=top,shape=outer_right": {
|
||||
"model": "otemod:block/liminal_tile_stairs_outer",
|
||||
"uvlock": true,
|
||||
"x": 180
|
||||
},
|
||||
"facing=north,half=top,shape=straight": {
|
||||
"model": "otemod:block/liminal_tile_stairs",
|
||||
"uvlock": true,
|
||||
"x": 180,
|
||||
"y": 270
|
||||
},
|
||||
"facing=south,half=bottom,shape=inner_left": {
|
||||
"model": "otemod:block/liminal_tile_stairs_inner"
|
||||
},
|
||||
"facing=south,half=bottom,shape=inner_right": {
|
||||
"model": "otemod:block/liminal_tile_stairs_inner",
|
||||
"uvlock": true,
|
||||
"y": 90
|
||||
},
|
||||
"facing=south,half=bottom,shape=outer_left": {
|
||||
"model": "otemod:block/liminal_tile_stairs_outer"
|
||||
},
|
||||
"facing=south,half=bottom,shape=outer_right": {
|
||||
"model": "otemod:block/liminal_tile_stairs_outer",
|
||||
"uvlock": true,
|
||||
"y": 90
|
||||
},
|
||||
"facing=south,half=bottom,shape=straight": {
|
||||
"model": "otemod:block/liminal_tile_stairs",
|
||||
"uvlock": true,
|
||||
"y": 90
|
||||
},
|
||||
"facing=south,half=top,shape=inner_left": {
|
||||
"model": "otemod:block/liminal_tile_stairs_inner",
|
||||
"uvlock": true,
|
||||
"x": 180,
|
||||
"y": 90
|
||||
},
|
||||
"facing=south,half=top,shape=inner_right": {
|
||||
"model": "otemod:block/liminal_tile_stairs_inner",
|
||||
"uvlock": true,
|
||||
"x": 180,
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,half=top,shape=outer_left": {
|
||||
"model": "otemod:block/liminal_tile_stairs_outer",
|
||||
"uvlock": true,
|
||||
"x": 180,
|
||||
"y": 90
|
||||
},
|
||||
"facing=south,half=top,shape=outer_right": {
|
||||
"model": "otemod:block/liminal_tile_stairs_outer",
|
||||
"uvlock": true,
|
||||
"x": 180,
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,half=top,shape=straight": {
|
||||
"model": "otemod:block/liminal_tile_stairs",
|
||||
"uvlock": true,
|
||||
"x": 180,
|
||||
"y": 90
|
||||
},
|
||||
"facing=west,half=bottom,shape=inner_left": {
|
||||
"model": "otemod:block/liminal_tile_stairs_inner",
|
||||
"uvlock": true,
|
||||
"y": 90
|
||||
},
|
||||
"facing=west,half=bottom,shape=inner_right": {
|
||||
"model": "otemod:block/liminal_tile_stairs_inner",
|
||||
"uvlock": true,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,half=bottom,shape=outer_left": {
|
||||
"model": "otemod:block/liminal_tile_stairs_outer",
|
||||
"uvlock": true,
|
||||
"y": 90
|
||||
},
|
||||
"facing=west,half=bottom,shape=outer_right": {
|
||||
"model": "otemod:block/liminal_tile_stairs_outer",
|
||||
"uvlock": true,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,half=bottom,shape=straight": {
|
||||
"model": "otemod:block/liminal_tile_stairs",
|
||||
"uvlock": true,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,half=top,shape=inner_left": {
|
||||
"model": "otemod:block/liminal_tile_stairs_inner",
|
||||
"uvlock": true,
|
||||
"x": 180,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,half=top,shape=inner_right": {
|
||||
"model": "otemod:block/liminal_tile_stairs_inner",
|
||||
"uvlock": true,
|
||||
"x": 180,
|
||||
"y": 270
|
||||
},
|
||||
"facing=west,half=top,shape=outer_left": {
|
||||
"model": "otemod:block/liminal_tile_stairs_outer",
|
||||
"uvlock": true,
|
||||
"x": 180,
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,half=top,shape=outer_right": {
|
||||
"model": "otemod:block/liminal_tile_stairs_outer",
|
||||
"uvlock": true,
|
||||
"x": 180,
|
||||
"y": 270
|
||||
},
|
||||
"facing=west,half=top,shape=straight": {
|
||||
"model": "otemod:block/liminal_tile_stairs",
|
||||
"uvlock": true,
|
||||
"x": 180,
|
||||
"y": 180
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"variants": {
|
||||
"": {
|
||||
"model": "otemod:block/liminal_tiles"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"variants": {
|
||||
"facing=down": {
|
||||
"model": "otemod:block/liminal_window_abyss",
|
||||
"x": 180
|
||||
},
|
||||
"facing=east": {
|
||||
"model": "otemod:block/liminal_window_abyss",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north": {
|
||||
"model": "otemod:block/liminal_window_abyss",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south": {
|
||||
"model": "otemod:block/liminal_window_abyss",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=up": {
|
||||
"model": "otemod:block/liminal_window_abyss"
|
||||
},
|
||||
"facing=west": {
|
||||
"model": "otemod:block/liminal_window_abyss",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"variants": {
|
||||
"facing=down": {
|
||||
"model": "otemod:block/liminal_window_abyss",
|
||||
"x": 180
|
||||
},
|
||||
"facing=east": {
|
||||
"model": "otemod:block/liminal_window_abyss",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north": {
|
||||
"model": "otemod:block/liminal_window_abyss",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south": {
|
||||
"model": "otemod:block/liminal_window_abyss",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=up": {
|
||||
"model": "otemod:block/liminal_window_abyss"
|
||||
},
|
||||
"facing=west": {
|
||||
"model": "otemod:block/liminal_window_abyss",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"variants": {
|
||||
"facing=down": {
|
||||
"model": "otemod:block/liminal_window_dusk",
|
||||
"x": 180
|
||||
},
|
||||
"facing=east": {
|
||||
"model": "otemod:block/liminal_window_dusk",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north": {
|
||||
"model": "otemod:block/liminal_window_dusk",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south": {
|
||||
"model": "otemod:block/liminal_window_dusk",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=up": {
|
||||
"model": "otemod:block/liminal_window_dusk"
|
||||
},
|
||||
"facing=west": {
|
||||
"model": "otemod:block/liminal_window_dusk",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"variants": {
|
||||
"facing=down": {
|
||||
"model": "otemod:block/liminal_window_noon",
|
||||
"x": 180
|
||||
},
|
||||
"facing=east": {
|
||||
"model": "otemod:block/liminal_window_noon",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"facing=north": {
|
||||
"model": "otemod:block/liminal_window_noon",
|
||||
"x": 90
|
||||
},
|
||||
"facing=south": {
|
||||
"model": "otemod:block/liminal_window_noon",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"facing=up": {
|
||||
"model": "otemod:block/liminal_window_noon"
|
||||
},
|
||||
"facing=west": {
|
||||
"model": "otemod:block/liminal_window_noon",
|
||||
"x": 90,
|
||||
"y": 270
|
||||
}
|
||||
}
|
||||
}
|
|
@ -33,6 +33,7 @@
|
|||
"item.otemod.vault_fragment_right": "Vault Fragment",
|
||||
"item.otemod.vault_fragment_center": "Vault Fragment",
|
||||
"item.otemod.raw_vault_steel_ore": "Raw Vault Steel",
|
||||
"item.otemod.poss_ball": "Pulse Operated Storage System (WIP)",
|
||||
|
||||
|
||||
"block.otemod.eternium_ore_block": "Eternium Ore",
|
||||
|
@ -46,6 +47,10 @@
|
|||
"block.otemod.vault_steel_ore_block": "Vault Steel Ore",
|
||||
"block.otemod.nether_vault_steel_ore_block": "Nether Vault Steel Ore",
|
||||
"block.otemod.eternium_block": "Block of Eternium",
|
||||
"block.otemod.liminal_tiles": "Pool Tiles",
|
||||
"block.otemod.black": "The Void",
|
||||
"block.otemod.liminal_tile_stairs": "Pool Stairs",
|
||||
"block.otemod.liminal_tile_slab": "Pool Slab",
|
||||
|
||||
|
||||
"enchantment.otemod.mob_egging": "Mob Egging",
|
||||
|
|
6
src/main/resources/assets/otemod/models/block/black.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:block/cube_all",
|
||||
"textures": {
|
||||
"all": "otemod:block/black"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"parent": "minecraft:block/slab",
|
||||
"textures": {
|
||||
"bottom": "otemod:block/liminal_tiles",
|
||||
"side": "otemod:block/liminal_tiles",
|
||||
"top": "otemod:block/liminal_tiles"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"parent": "minecraft:block/slab_top",
|
||||
"textures": {
|
||||
"bottom": "otemod:block/liminal_tiles",
|
||||
"side": "otemod:block/liminal_tiles",
|
||||
"top": "otemod:block/liminal_tiles"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"parent": "minecraft:block/stairs",
|
||||
"textures": {
|
||||
"bottom": "otemod:block/liminal_tiles",
|
||||
"side": "otemod:block/liminal_tiles",
|
||||
"top": "otemod:block/liminal_tiles"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"parent": "minecraft:block/inner_stairs",
|
||||
"textures": {
|
||||
"bottom": "otemod:block/liminal_tiles",
|
||||
"side": "otemod:block/liminal_tiles",
|
||||
"top": "otemod:block/liminal_tiles"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"parent": "minecraft:block/outer_stairs",
|
||||
"textures": {
|
||||
"bottom": "otemod:block/liminal_tiles",
|
||||
"side": "otemod:block/liminal_tiles",
|
||||
"top": "otemod:block/liminal_tiles"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:block/cube_all",
|
||||
"textures": {
|
||||
"all": "otemod:block/liminal_tiles"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"ambientocclusion": false,
|
||||
"elements": [
|
||||
{
|
||||
"from": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"to": [
|
||||
16,
|
||||
0,
|
||||
16
|
||||
],
|
||||
"faces": {
|
||||
"up": {
|
||||
"uv": [
|
||||
0,
|
||||
0,
|
||||
16,
|
||||
16
|
||||
],
|
||||
"texture": "#missing"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"particle": "otemod:block/liminal_tiles"
|
||||
},
|
||||
"specialmodels": {
|
||||
"otemod:sky_abyss": "otemod:block/liminal_window"
|
||||
},
|
||||
"elements": []
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"particle": "otemod:block/liminal_tiles"
|
||||
},
|
||||
"specialmodels": {
|
||||
"otemod:sky_dusk": "otemod:block/liminal_window"
|
||||
},
|
||||
"elements": []
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"particle": "otemod:block/liminal_tiles"
|
||||
},
|
||||
"specialmodels": {
|
||||
"otemod:sky_noon": "otemod:block/liminal_window"
|
||||
},
|
||||
"elements": []
|
||||
}
|
3
src/main/resources/assets/otemod/models/item/black.json
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "otemod:block/black"
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "otemod:block/liminal_tile_slab"
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "otemod:block/liminal_tile_stairs"
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "otemod:block/liminal_tiles"
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "otemod:block/liminal_tiles"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "otemod:block/liminal_tiles"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "otemod:block/liminal_tiles"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "otemod:block/liminal_tiles"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "otemod:item/poss_ball"
|
||||
}
|
||||
}
|
BIN
src/main/resources/assets/otemod/textures/block/black.png
Normal file
After Width: | Height: | Size: 124 B |
After Width: | Height: | Size: 263 B |
BIN
src/main/resources/assets/otemod/textures/item/poss_ball.png
Normal file
After Width: | Height: | Size: 289 B |
BIN
src/main/resources/assets/otemod/textures/sky/abyss_0.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
src/main/resources/assets/otemod/textures/sky/abyss_1.png
Normal file
After Width: | Height: | Size: 7 KiB |
BIN
src/main/resources/assets/otemod/textures/sky/abyss_2.png
Normal file
After Width: | Height: | Size: 7 KiB |
BIN
src/main/resources/assets/otemod/textures/sky/abyss_3.png
Normal file
After Width: | Height: | Size: 7 KiB |
BIN
src/main/resources/assets/otemod/textures/sky/abyss_4.png
Normal file
After Width: | Height: | Size: 7 KiB |
BIN
src/main/resources/assets/otemod/textures/sky/abyss_5.png
Normal file
After Width: | Height: | Size: 9.2 KiB |
BIN
src/main/resources/assets/otemod/textures/sky/dusk_0.png
Normal file
After Width: | Height: | Size: 186 KiB |
BIN
src/main/resources/assets/otemod/textures/sky/dusk_1.png
Normal file
After Width: | Height: | Size: 316 KiB |
BIN
src/main/resources/assets/otemod/textures/sky/dusk_2.png
Normal file
After Width: | Height: | Size: 420 KiB |
BIN
src/main/resources/assets/otemod/textures/sky/dusk_3.png
Normal file
After Width: | Height: | Size: 425 KiB |
BIN
src/main/resources/assets/otemod/textures/sky/dusk_4.png
Normal file
After Width: | Height: | Size: 231 KiB |
BIN
src/main/resources/assets/otemod/textures/sky/dusk_5.png
Normal file
After Width: | Height: | Size: 132 KiB |
BIN
src/main/resources/assets/otemod/textures/sky/noon_0.png
Normal file
After Width: | Height: | Size: 478 KiB |
BIN
src/main/resources/assets/otemod/textures/sky/noon_1.png
Normal file
After Width: | Height: | Size: 513 KiB |
BIN
src/main/resources/assets/otemod/textures/sky/noon_2.png
Normal file
After Width: | Height: | Size: 469 KiB |
BIN
src/main/resources/assets/otemod/textures/sky/noon_3.png
Normal file
After Width: | Height: | Size: 457 KiB |
BIN
src/main/resources/assets/otemod/textures/sky/noon_4.png
Normal file
After Width: | Height: | Size: 296 KiB |
BIN
src/main/resources/assets/otemod/textures/sky/noon_5.png
Normal file
After Width: | Height: | Size: 287 KiB |
BIN
src/main/resources/assets/otemod/textures/sky/pdn/dusk_0.pdn
Normal file
BIN
src/main/resources/assets/otemod/textures/sky/pdn/dusk_1.pdn
Normal file
1535
src/main/resources/assets/otemod/textures/sky/pdn/dusk_2.pdn
Normal file
1314
src/main/resources/assets/otemod/textures/sky/pdn/dusk_3.pdn
Normal file
BIN
src/main/resources/assets/otemod/textures/sky/pdn/dusk_4.pdn
Normal file
BIN
src/main/resources/assets/otemod/textures/sky/pdn/dusk_5.pdn
Normal file
1170
src/main/resources/assets/otemod/textures/sky/pdn/noon_0.pdn
Normal file
1287
src/main/resources/assets/otemod/textures/sky/pdn/noon_1.pdn
Normal file
1215
src/main/resources/assets/otemod/textures/sky/pdn/noon_2.pdn
Normal file
1293
src/main/resources/assets/otemod/textures/sky/pdn/noon_3.pdn
Normal file
BIN
src/main/resources/assets/otemod/textures/sky/pdn/noon_4.pdn
Normal file
BIN
src/main/resources/assets/otemod/textures/sky/pdn/noon_5.pdn
Normal file
20
src/main/resources/data/otemod/recipes/poss_ball.json
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"XXX",
|
||||
"XYX",
|
||||
"XXX"
|
||||
],
|
||||
"key": {
|
||||
"X": {
|
||||
"tag": "forge:ingots/eternium"
|
||||
},
|
||||
"Y": {
|
||||
"tag": "forge:ingots/vaultsteel"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "otemod:poss_ball", // private obtaining security system
|
||||
"count": 1
|
||||
}
|
||||
}
|