alloy ingots, forge block, added animals back in, added oceans back in, added cave biomes back in
@@ -52,6 +52,7 @@ import static net.halbear.aotg.registries.ModBlockEntities.BLOCK_ENTITY_TYPES;
|
||||
import static net.halbear.aotg.registries.ModBlocks.*;
|
||||
import static net.halbear.aotg.registries.ModFoliagePlacers.FOLIAGE_PLACERS;
|
||||
import static net.halbear.aotg.registries.ModItems.*;
|
||||
import static net.halbear.aotg.registries.ModTabs.CREATIVE_MODE_TABS;
|
||||
import static net.halbear.aotg.registries.ModTreeGen.TRUNK_PLACERS;
|
||||
|
||||
// The value here should match an entry in the META-INF/neoforge.mods.toml file
|
||||
@@ -62,24 +63,6 @@ public class AgeoftheGods {
|
||||
|
||||
public static final Logger LOGGER = LogUtils.getLogger();
|
||||
|
||||
public static final DeferredRegister<CreativeModeTab> CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MODID);
|
||||
|
||||
|
||||
public static final DeferredHolder<CreativeModeTab, CreativeModeTab> AGE_OF_THE_GODS_TAB = CREATIVE_MODE_TABS.register("age_of_the_gods", () -> CreativeModeTab.builder()
|
||||
.title(Component.translatable("itemGroup.ageofthegods")) //The language key for the title of your CreativeModeTab
|
||||
.withTabsBefore(CreativeModeTabs.COMBAT)
|
||||
.icon(() -> LIMESTONE_BLOCK.get().asItem().getDefaultInstance())
|
||||
.displayItems((parameters, output) -> {
|
||||
output.accept(LIMESTONE_ITEM.get());
|
||||
output.accept(SHALE_ITEM.get());
|
||||
output.accept(SHALE_GRASS_ITEM.get());
|
||||
output.accept(LIMESTONE_GRASS_ITEM.get());
|
||||
output.accept(OLIVE_LEAVES_ITEM.get());
|
||||
output.accept(OLIVE_LOG_ITEM.get());
|
||||
output.accept(XIPHOS_SWORD.get());
|
||||
output.accept(ALLOY_FURNACE_ITEM.get());
|
||||
}).build());
|
||||
|
||||
// The constructor for the mod class is the first code that is run when your mod is loaded.
|
||||
// FML will recognize some parameter types like IEventBus or ModContainer and pass them in automatically.
|
||||
public AgeoftheGods(IEventBus modEventBus, ModContainer modContainer) {
|
||||
|
||||
@@ -76,7 +76,7 @@ public class AlloyFurnaceGUIScreen extends AbstractContainerScreen<AlloyFurnaceG
|
||||
BlockPos position = new BlockPos(x,y,z);
|
||||
if(state.getBlock().getName().getString().equals(ModBlocks.ALLOY_FURNACE.get().getName().getString())) {
|
||||
// if(!state.getValue(AlloyFurnaceMultiBlock.PARENT_BLOCK)){
|
||||
// int ModelPart = state.getValue(AlloyFurnaceMultiBlock.MODEL_PART);
|
||||
// int ModelPart = state.getValue(AlloyFurnaceMultiBlock.LEVEL);
|
||||
// position = AlloyFurnaceUpdateHandler.GetParentPosFromModelPart(world,ModelPart,state,position);
|
||||
// if(position == null) return MinimumHeight;
|
||||
// }
|
||||
@@ -100,7 +100,7 @@ public class AlloyFurnaceGUIScreen extends AbstractContainerScreen<AlloyFurnaceG
|
||||
|
||||
@Override
|
||||
protected void extractLabels(GuiGraphicsExtractor guiGraphics, int mouseX, int mouseY) {
|
||||
guiGraphics.text(this.font, Component.translatable("gui.ageofthegods.alloy_furnace_gui.title"), 90, 6, -12829636, false);
|
||||
guiGraphics.text(this.font, Component.translatable("gui.ageofthegods.alloy_furnace_gui.title"), 96, 12, -12829636, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
package net.halbear.aotg.custom.GuiScreens;
|
||||
|
||||
import com.mojang.blaze3d.platform.InputConstants;
|
||||
import net.halbear.aotg.custom.blocks.Forge.ForgeWorkbenchGUI;
|
||||
import net.halbear.aotg.registries.ModBlocks;
|
||||
import net.halbear.aotg.registries.ModScreens;
|
||||
import net.minecraft.client.gui.GuiGraphicsExtractor;
|
||||
import net.minecraft.client.gui.components.ImageButton;
|
||||
import net.minecraft.client.gui.components.WidgetSprites;
|
||||
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
|
||||
import net.minecraft.client.input.KeyEvent;
|
||||
import net.minecraft.client.renderer.RenderPipelines;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.resources.Identifier;
|
||||
import net.minecraft.world.entity.player.Inventory;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.neoforged.neoforge.client.network.ClientPacketDistributor;
|
||||
|
||||
|
||||
public class ForgeWorkbenchGUIScreen extends AbstractContainerScreen<ForgeWorkbenchGUI> implements ModScreens.ScreenAccessor {
|
||||
private final Level world;
|
||||
private final int x, y, z;
|
||||
private final Player entity;
|
||||
private boolean menuStateUpdateActive = false;
|
||||
private ImageButton Blower;
|
||||
private static final Identifier BACKGROUND = Identifier.parse("ageofthegods:textures/screens/alloy_furnace_gui.png");
|
||||
private static final Identifier BELLOW_SPRITE_SHEET = Identifier.parse("ageofthegods:textures/screens/bellow-sheet.png");
|
||||
private static final Identifier MOLTEN_FILL_SPRITE = Identifier.parse("ageofthegods:textures/screens/alloy_furnace_molten_element_gui.png");
|
||||
private static final Identifier FLAME_SPRITE = Identifier.parse("ageofthegods:textures/screens/alloy_furnace_flame_gui.png");
|
||||
|
||||
|
||||
public ForgeWorkbenchGUIScreen(ForgeWorkbenchGUI container, Inventory inventory, Component text) {
|
||||
super(container, inventory, text, 176, 166);
|
||||
this.world = container.world;
|
||||
this.x = container.x;
|
||||
this.y = container.y;
|
||||
this.z = container.z;
|
||||
this.entity = container.entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateMenuState(int elementType, String name, Object elementState) {
|
||||
menuStateUpdateActive = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void extractRenderState(GuiGraphicsExtractor guiGraphics, int mouseX, int mouseY, float partialTicks) {
|
||||
super.extractRenderState(guiGraphics, mouseX, mouseY, partialTicks);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void extractBackground(GuiGraphicsExtractor guiGraphics, int mouseX, int mouseY, float partialTicks) {
|
||||
super.extractBackground(guiGraphics, mouseX, mouseY, partialTicks);
|
||||
guiGraphics.blit(RenderPipelines.GUI_TEXTURED, BACKGROUND, this.leftPos, this.topPos, 0, 0, this.imageWidth, this.imageHeight, this.imageWidth, this.imageHeight);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean keyPressed(KeyEvent event) {
|
||||
int key = InputConstants.getKey(event).getValue();
|
||||
if (key == 256) {
|
||||
this.minecraft.player.closeContainer();
|
||||
return true;
|
||||
}
|
||||
return super.keyPressed(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void extractLabels(GuiGraphicsExtractor guiGraphics, int mouseX, int mouseY) {
|
||||
guiGraphics.text(this.font, Component.translatable("gui.ageofthegods.forge_workbench.title"), 90, 6, -12829636, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
super.init();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
package net.halbear.aotg.custom.blocks.Forge;
|
||||
|
||||
import io.netty.buffer.Unpooled;
|
||||
import net.halbear.aotg.registries.ModBlocks;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.Containers;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.MenuProvider;
|
||||
import net.minecraft.world.entity.player.Inventory;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.EntityBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityTicker;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||
import net.minecraft.world.level.block.state.properties.EnumProperty;
|
||||
import net.minecraft.world.level.block.state.properties.IntegerProperty;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import org.jspecify.annotations.Nullable;
|
||||
|
||||
import static net.halbear.aotg.registries.ModBlockEntities.ALLOY_FURNACE_BLOCK_ENTITY;
|
||||
import static net.halbear.aotg.registries.ModBlockEntities.FORGE_WORKBENCH_BLOCK_ENTITY;
|
||||
|
||||
public class ForgeWorkbench extends Block implements EntityBlock {
|
||||
|
||||
public static final BlockPos[] MULTI_BLOCK_POSITIONS = {
|
||||
|
||||
};
|
||||
|
||||
public static final EnumProperty<Direction> FACING = BlockStateProperties.HORIZONTAL_FACING;
|
||||
public static final IntegerProperty LEVEL = IntegerProperty.create("level",0,8);
|
||||
|
||||
public ForgeWorkbench(Properties properties) {
|
||||
super(properties);
|
||||
this.registerDefaultState(this.defaultBlockState().setValue(LEVEL,0).setValue(FACING,Direction.NORTH));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) {
|
||||
Containers.updateNeighboursAfterDestroy(state, level, pos);
|
||||
}
|
||||
|
||||
private static <E extends BlockEntity, A extends BlockEntity> @javax.annotation.Nullable BlockEntityTicker<A> createTickerHelper(
|
||||
BlockEntityType<A> type, BlockEntityType<E> checkedType, BlockEntityTicker<? super E> ticker
|
||||
) {
|
||||
return checkedType == type ? (BlockEntityTicker<A>) ticker : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState state, BlockEntityType<T> type) {
|
||||
return createTickerHelper(type, FORGE_WORKBENCH_BLOCK_ENTITY.get(), ForgeWorkbenchBlockEntity::tick);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockPlaceContext context) {
|
||||
BlockState blockState = this.defaultBlockState();
|
||||
blockState = blockState.setValue(FACING, context.getHorizontalDirection().getOpposite());
|
||||
return blockState;
|
||||
}
|
||||
@Override
|
||||
protected void createBlockStateDefinition(StateDefinition.Builder<Block,BlockState> builder){
|
||||
builder.add(LEVEL);
|
||||
builder.add(FACING);
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionResult useWithoutItem(BlockState blockstate, Level world, BlockPos pos, Player entity, BlockHitResult hit) {
|
||||
super.useWithoutItem(blockstate, world, pos, entity, hit);
|
||||
if (entity instanceof ServerPlayer player) {
|
||||
if(!blockstate.getBlock().getName().getString().equals(ModBlocks.FORGE_WORKBENCH.get().getName().getString()) || pos == null) return InteractionResult.PASS;
|
||||
int level = blockstate.getValue(LEVEL);
|
||||
player.openMenu(new MenuProvider() {
|
||||
@Override
|
||||
public Component getDisplayName() {
|
||||
return Component.literal("Sigma");
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) {
|
||||
return new ForgeWorkbenchGUI(id, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(pos));
|
||||
}
|
||||
}, pos);
|
||||
}
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public @Nullable BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) {
|
||||
return new ForgeWorkbenchBlockEntity(blockPos,blockState);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,177 @@
|
||||
package net.halbear.aotg.custom.blocks.Forge;
|
||||
|
||||
import io.netty.buffer.Unpooled;
|
||||
import net.halbear.aotg.registries.ModBlocks;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.HolderLookup;
|
||||
import net.minecraft.core.NonNullList;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.Connection;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.network.protocol.game.ClientGamePacketListener;
|
||||
import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
|
||||
import net.minecraft.world.ContainerHelper;
|
||||
import net.minecraft.world.MenuProvider;
|
||||
import net.minecraft.world.WorldlyContainer;
|
||||
import net.minecraft.world.entity.player.Inventory;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Rotation;
|
||||
import net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.storage.ValueInput;
|
||||
import net.minecraft.world.level.storage.ValueOutput;
|
||||
import net.neoforged.neoforge.transfer.StacksResourceHandler;
|
||||
import net.neoforged.neoforge.transfer.item.ItemResource;
|
||||
import net.neoforged.neoforge.transfer.item.ItemStacksResourceHandler;
|
||||
import org.jspecify.annotations.Nullable;
|
||||
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
import static net.halbear.aotg.registries.ModBlockEntities.FORGE_WORKBENCH_BLOCK_ENTITY;
|
||||
|
||||
public class ForgeWorkbenchBlockEntity extends RandomizableContainerBlockEntity implements MenuProvider, WorldlyContainer {
|
||||
|
||||
private int ForgeLevel = 0;
|
||||
private NonNullList<ItemStack> items = NonNullList.withSize(3, ItemStack.EMPTY);
|
||||
|
||||
public int GetForgeLevel(){return (int)ForgeLevel;}
|
||||
public void SetForgeLevel(int BellowPush){this.ForgeLevel = BellowPush ;}
|
||||
|
||||
public ForgeWorkbenchBlockEntity(BlockPos worldPosition, BlockState blockState) {
|
||||
super(FORGE_WORKBENCH_BLOCK_ENTITY.get(), worldPosition, blockState);
|
||||
}
|
||||
|
||||
|
||||
public static void tick(Level level, BlockPos pos, BlockState state, ForgeWorkbenchBlockEntity blockEntity) {
|
||||
if (level.isClientSide()) return;
|
||||
blockEntity.setChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadAdditional(ValueInput input) {
|
||||
super.loadAdditional(input);
|
||||
if (!this.tryLoadLootTable(input))
|
||||
this.items = NonNullList.withSize(this.getContainerSize(), ItemStack.EMPTY);
|
||||
ContainerHelper.loadAllItems(input, this.items);
|
||||
this.ForgeLevel = input.getIntOr("forge_level",0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveAdditional(ValueOutput output) {
|
||||
super.saveAdditional(output);
|
||||
output.putInt("forge_level", this.ForgeLevel);
|
||||
if (!this.trySaveLootTable(output))
|
||||
ContainerHelper.saveAllItems(output, this.items);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompoundTag getUpdateTag(HolderLookup.Provider registries) {
|
||||
return this.saveWithFullMetadata(registries);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleUpdateTag(ValueInput input) {
|
||||
super.handleUpdateTag(input);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Packet<ClientGamePacketListener> getUpdatePacket() {
|
||||
return ClientboundBlockEntityDataPacket.create(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDataPacket(Connection connection, ValueInput input) {
|
||||
super.onDataPacket(connection, input);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Component getDisplayName() {
|
||||
return Component.translatable("container.ageofthegods.forge");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Component getDefaultName() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable AbstractContainerMenu createMenu(int i, Inventory inventory, Player player) {
|
||||
return new ForgeWorkbenchGUI(i, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(this.worldPosition));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected AbstractContainerMenu createMenu(int i, Inventory inventory) {
|
||||
return new ForgeWorkbenchGUI(i, inventory, new FriendlyByteBuf(Unpooled.buffer()).writeBlockPos(this.worldPosition));
|
||||
}
|
||||
|
||||
private final StacksResourceHandler<ItemStack, ItemResource> resourceHandler = new ItemStacksResourceHandler(this.items) {
|
||||
@Override
|
||||
protected void onContentsChanged(int index, ItemStack stack) {
|
||||
super.onContentsChanged(index, stack);
|
||||
setChanged();
|
||||
}
|
||||
};
|
||||
|
||||
public StacksResourceHandler<ItemStack, ItemResource> getResourceHandler() {
|
||||
return this.resourceHandler;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getContainerSize() {
|
||||
return items.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEmpty() {
|
||||
for (ItemStack itemstack : this.items)
|
||||
if (!itemstack.isEmpty())
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected NonNullList<ItemStack> getItems() {
|
||||
return this.items;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setItems(NonNullList<ItemStack> stacks) {
|
||||
this.items = stacks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlaceItem(int index, ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getSlotsForFace(Direction side) {
|
||||
return IntStream.range(0, this.getContainerSize()).toArray();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlaceItemThroughFace(int index, ItemStack itemstack, @Nullable Direction direction) {
|
||||
return this.canPlaceItem(index, itemstack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canTakeItemThroughFace(int index, ItemStack itemstack, Direction direction) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearContent() {
|
||||
items.clear();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,274 @@
|
||||
package net.halbear.aotg.custom.blocks.Forge;
|
||||
|
||||
import net.halbear.aotg.registries.ModMenus;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.Container;
|
||||
import net.minecraft.world.entity.player.Inventory;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||
import net.minecraft.world.inventory.ContainerData;
|
||||
import net.minecraft.world.inventory.ContainerLevelAccess;
|
||||
import net.minecraft.world.inventory.Slot;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.entity.BaseContainerBlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.neoforged.neoforge.transfer.ResourceHandler;
|
||||
import net.neoforged.neoforge.transfer.item.*;
|
||||
import net.neoforged.neoforge.transfer.transaction.Transaction;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class ForgeWorkbenchGUI extends AbstractContainerMenu implements ModMenus.MenuAccessor {
|
||||
public final Map<String, Object> menuState = new HashMap<>() {
|
||||
@Override
|
||||
public Object put(String key, Object value) {
|
||||
if (!this.containsKey(key) && this.size() >= 5)
|
||||
return null;
|
||||
return super.put(key, value);
|
||||
}
|
||||
};
|
||||
public final Level world;
|
||||
public final Player entity;
|
||||
public int x, y, z;
|
||||
private ContainerLevelAccess access = ContainerLevelAccess.NULL;
|
||||
private ResourceHandler<ItemResource> internal;
|
||||
private final Map<Integer, Slot> customSlots = new HashMap<>();
|
||||
private boolean bound = false;
|
||||
private Supplier<Boolean> boundItemMatcher = null;
|
||||
private BlockEntity boundBlockEntity = null;
|
||||
private final ContainerData data;
|
||||
|
||||
|
||||
|
||||
public ForgeWorkbenchGUI(int containerId, Inventory playerInv, FriendlyByteBuf buffer) {
|
||||
super(ModMenus.FORGE_WORKBENCH_GUI.get(), containerId);
|
||||
this.entity = playerInv.player;
|
||||
this.world = playerInv.player.level();
|
||||
this.internal = new ItemStacksResourceHandler(4);
|
||||
|
||||
BlockPos pos = null;
|
||||
if (buffer != null) {
|
||||
pos = buffer.readBlockPos();
|
||||
this.x = pos.getX();
|
||||
this.y = pos.getY();
|
||||
this.z = pos.getZ();
|
||||
access = ContainerLevelAccess.create(world, pos);
|
||||
}
|
||||
|
||||
if (pos != null) {
|
||||
boundBlockEntity = this.world.getBlockEntity(pos);
|
||||
if (boundBlockEntity instanceof BaseContainerBlockEntity baseContainerBlockEntity) {
|
||||
this.internal = VanillaContainerWrapper.of(baseContainerBlockEntity);
|
||||
this.bound = true;
|
||||
}
|
||||
}
|
||||
this.customSlots.put(0, this.addSlot(new ResourceHandlerSlot(internal, this::setItemInSlot, 0, 37, 16) {
|
||||
private final int slot = 0;
|
||||
private int x = this.x;
|
||||
private int y = this.y;
|
||||
}));
|
||||
|
||||
|
||||
for (int row = 0; row < 3; ++row) {
|
||||
for (int col = 0; col < 9; ++col) {
|
||||
this.addSlot(new Slot(playerInv, col + row * 9 + 9, 8 + col * 18, 84 + row * 18));
|
||||
}
|
||||
}
|
||||
|
||||
for (int col = 0; col < 9; ++col) {
|
||||
this.addSlot(new Slot(playerInv, col, 8 + col * 18, 142));
|
||||
}
|
||||
if (boundBlockEntity instanceof ForgeWorkbenchBlockEntity workbenchBlockEntity) {
|
||||
this.data = new ContainerData() {
|
||||
@Override
|
||||
public int get(int index) {
|
||||
int returnVal = 0;
|
||||
switch (index) {
|
||||
case 0:
|
||||
returnVal = workbenchBlockEntity.GetForgeLevel();
|
||||
break;
|
||||
}
|
||||
return returnVal;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(int index, int value) {
|
||||
switch(index) {
|
||||
case 0:
|
||||
workbenchBlockEntity.SetForgeLevel(value);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return 4;
|
||||
}
|
||||
};
|
||||
|
||||
this.addDataSlots(this.data);
|
||||
} else this.data = null;
|
||||
}
|
||||
|
||||
public int getSyncedVariable(int index) {
|
||||
return this.data.get(index);
|
||||
}
|
||||
|
||||
private void setItemInSlot(int index, ItemResource resource, int amount) {
|
||||
if (internal instanceof ItemStacksResourceHandler handler) {
|
||||
handler.set(index, resource, amount);
|
||||
} else if (boundBlockEntity instanceof Container container) {
|
||||
container.setItem(index, resource.toStack(Math.max(0, amount)));
|
||||
} else {
|
||||
try (var tx = Transaction.openRoot()) {
|
||||
if (!internal.getResource(index).isEmpty())
|
||||
internal.extract(index, internal.getResource(index), internal.getAmountAsInt(index), tx);
|
||||
if (!resource.isEmpty() && amount > 0)
|
||||
internal.insert(index, resource, amount, tx);
|
||||
tx.commit();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public boolean stillValid(Player player) {
|
||||
if (this.bound) {
|
||||
if (this.boundItemMatcher != null)
|
||||
return this.boundItemMatcher.get();
|
||||
else if (this.boundBlockEntity != null)
|
||||
return AbstractContainerMenu.stillValid(this.access, player, this.boundBlockEntity.getBlockState().getBlock());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack quickMoveStack(Player playerIn, int index) {
|
||||
ItemStack itemstack = ItemStack.EMPTY;
|
||||
Slot slot = this.slots.get(index);
|
||||
if (slot != null && slot.hasItem()) {
|
||||
ItemStack itemstack1 = slot.getItem();
|
||||
itemstack = itemstack1.copy();
|
||||
if (index < 4) {
|
||||
if (!this.moveItemStackTo(itemstack1, 4, this.slots.size(), true))
|
||||
return ItemStack.EMPTY;
|
||||
slot.onQuickCraft(itemstack1, itemstack);
|
||||
} else if (!this.moveItemStackTo(itemstack1, 0, 4, false)) {
|
||||
if (index < 4 + 27) {
|
||||
if (!this.moveItemStackTo(itemstack1, 4 + 27, this.slots.size(), true))
|
||||
return ItemStack.EMPTY;
|
||||
} else {
|
||||
if (!this.moveItemStackTo(itemstack1, 4, 4 + 27, false))
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
if (itemstack1.isEmpty()) {
|
||||
slot.setByPlayer(ItemStack.EMPTY);
|
||||
} else {
|
||||
slot.setChanged();
|
||||
}
|
||||
if (itemstack1.getCount() == itemstack.getCount()) {
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
slot.onTake(playerIn, itemstack1);
|
||||
}
|
||||
return itemstack;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean moveItemStackTo(ItemStack itemStack, int startSlot, int endSlot, boolean backwards) {
|
||||
boolean anythingChanged = false;
|
||||
int destSlot = startSlot;
|
||||
if (backwards) {
|
||||
destSlot = endSlot - 1;
|
||||
}
|
||||
if (itemStack.isStackable()) {
|
||||
while (!itemStack.isEmpty() && (backwards ? destSlot >= startSlot : destSlot < endSlot)) {
|
||||
Slot slot = this.slots.get(destSlot);
|
||||
ItemStack target = slot.getItem();
|
||||
if (slot.mayPlace(target) && !target.isEmpty() && ItemStack.isSameItemSameComponents(itemStack, target)) {
|
||||
int totalStack = target.getCount() + itemStack.getCount();
|
||||
int maxStackSize = slot.getMaxStackSize(target);
|
||||
if (totalStack <= maxStackSize) {
|
||||
itemStack.setCount(0);
|
||||
target.setCount(totalStack);
|
||||
slot.set(target);
|
||||
anythingChanged = true;
|
||||
} else if (target.getCount() < maxStackSize) {
|
||||
itemStack.shrink(maxStackSize - target.getCount());
|
||||
target.setCount(maxStackSize);
|
||||
slot.set(target);
|
||||
anythingChanged = true;
|
||||
}
|
||||
}
|
||||
if (backwards) {
|
||||
destSlot--;
|
||||
} else {
|
||||
destSlot++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!itemStack.isEmpty()) {
|
||||
if (backwards) {
|
||||
destSlot = endSlot - 1;
|
||||
} else {
|
||||
destSlot = startSlot;
|
||||
}
|
||||
while (backwards ? destSlot >= startSlot : destSlot < endSlot) {
|
||||
Slot slotx = this.slots.get(destSlot);
|
||||
ItemStack targetx = slotx.getItem();
|
||||
if (targetx.isEmpty() && slotx.mayPlace(itemStack)) {
|
||||
int maxStackSize = slotx.getMaxStackSize(itemStack);
|
||||
slotx.setByPlayer(itemStack.split(Math.min(itemStack.getCount(), maxStackSize)));
|
||||
slotx.setChanged();
|
||||
anythingChanged = true;
|
||||
break;
|
||||
}
|
||||
if (backwards) {
|
||||
destSlot--;
|
||||
} else {
|
||||
destSlot++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return anythingChanged;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removed(Player playerIn) {
|
||||
super.removed(playerIn);
|
||||
if (!bound && playerIn instanceof ServerPlayer serverPlayer) {
|
||||
if (!serverPlayer.isAlive() || serverPlayer.hasDisconnected()) {
|
||||
for (int j = 0; j < internal.size(); ++j) {
|
||||
playerIn.drop(ItemUtil.getStack(internal, j), false);
|
||||
setItemInSlot(j, ItemResource.EMPTY, 0);
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < internal.size(); ++i) {
|
||||
playerIn.getInventory().placeItemBackInInventory(ItemUtil.getStack(internal, i));
|
||||
setItemInSlot(i, ItemResource.EMPTY, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Integer, Slot> getSlots() {
|
||||
return Collections.unmodifiableMap(customSlots);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getMenuState() {
|
||||
return menuState;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package net.halbear.aotg.registries;
|
||||
|
||||
import net.halbear.aotg.AgeoftheGods;
|
||||
import net.halbear.aotg.custom.blocks.AlloyFurnace.AlloyFurnaceBlockEntity;
|
||||
import net.halbear.aotg.custom.blocks.Forge.ForgeWorkbenchBlockEntity;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.neoforged.neoforge.registries.DeferredRegister;
|
||||
@@ -20,5 +21,12 @@ public class ModBlockEntities {
|
||||
ModBlocks.ALLOY_FURNACE.get()
|
||||
)
|
||||
);
|
||||
|
||||
public static final Supplier<BlockEntityType<ForgeWorkbenchBlockEntity>> FORGE_WORKBENCH_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register(
|
||||
"forge_workbench_block_entity",
|
||||
() -> new BlockEntityType<>(
|
||||
ForgeWorkbenchBlockEntity::new,
|
||||
false,
|
||||
ModBlocks.FORGE_WORKBENCH.get()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package net.halbear.aotg.registries;
|
||||
|
||||
import net.halbear.aotg.AgeoftheGods;
|
||||
import net.halbear.aotg.custom.blocks.AlloyFurnace.AlloyFurnaceMultiBlock;
|
||||
import net.halbear.aotg.custom.blocks.Forge.ForgeWorkbench;
|
||||
import net.halbear.aotg.custom.blocks.RockCoveredGrassBlock;
|
||||
import net.minecraft.world.item.BlockItem;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
@@ -41,7 +42,7 @@ public class ModBlocks {
|
||||
|
||||
|
||||
public static final DeferredBlock<Block> OLIVE_LEAVES = RegisterBlock("olive_leaves",
|
||||
properties -> new RockCoveredGrassBlock(properties.strength(0.25f)
|
||||
properties -> new RockCoveredGrassBlock(properties.strength(0.15f)
|
||||
.requiresCorrectToolForDrops()
|
||||
.explosionResistance(0.5f)
|
||||
.sound(SoundType.GRASS)
|
||||
@@ -70,6 +71,14 @@ public class ModBlocks {
|
||||
.sound(SoundType.DEEPSLATE_BRICKS)
|
||||
.lightLevel(state -> 0)
|
||||
));
|
||||
public static final DeferredBlock<Block> FORGE_WORKBENCH = RegisterBlock("forge",
|
||||
properties -> new ForgeWorkbench(properties.strength(1.5f)
|
||||
.requiresCorrectToolForDrops()
|
||||
.explosionResistance(6.0f)
|
||||
.sound(SoundType.ANVIL)
|
||||
.noOcclusion()
|
||||
.lightLevel(state -> 0)
|
||||
));
|
||||
|
||||
private static <T extends Block> DeferredBlock<T> RegisterBlock(String Name, Function<BlockBehaviour.Properties, T> function){
|
||||
DeferredBlock<T> newBlock = BLOCKS.registerBlock(Name, function);
|
||||
|
||||
@@ -23,11 +23,20 @@ public class ModItems {
|
||||
public static final DeferredItem<BlockItem> OLIVE_LEAVES_ITEM = ITEMS.registerSimpleBlockItem("olive_leaves", OLIVE_LEAVES);
|
||||
public static final DeferredItem<BlockItem> OLIVE_LOG_ITEM = ITEMS.registerSimpleBlockItem("olive_log", OLIVE_LOG);
|
||||
public static final DeferredItem<BlockItem> ALLOY_FURNACE_ITEM = ITEMS.registerSimpleBlockItem("alloy_furnace", ALLOY_FURNACE);
|
||||
public static final DeferredItem<BlockItem> FORGE_WORKBENCH_ITEM = ITEMS.registerSimpleBlockItem("forge", FORGE_WORKBENCH);
|
||||
|
||||
public static final DeferredItem<Item> FLUID_INDICATOR_ITEM = RegisterItem("fluid_indicator_debug_item", properties -> new Item(properties
|
||||
.fireResistant()
|
||||
));
|
||||
|
||||
public static final DeferredItem<Item> ZINC_INGOT = RegisterItem("zinc_ingot", Item::new);
|
||||
public static final DeferredItem<Item> TIN_INGOT = RegisterItem("tin_ingot", Item::new);
|
||||
public static final DeferredItem<Item> ELECTRUM_INGOT = RegisterItem("electrum_ingot", Item::new);
|
||||
public static final DeferredItem<Item> BRONZE_INGOT = RegisterItem("bronze_ingot", Item::new);
|
||||
public static final DeferredItem<Item> ORICHALCUM_INGOT = RegisterItem("orichalcum_ingot", Item::new);
|
||||
public static final DeferredItem<Item> HEPATIZON_INGOT = RegisterItem("hepatizon_ingot", Item::new);
|
||||
public static final DeferredItem<Item> SILVER_INGOT = RegisterItem("silver_ingot", Item::new);
|
||||
|
||||
public static final DeferredItem<Item> XIPHOS_SWORD = RegisterItem("xiphos",
|
||||
properties -> new Item(properties
|
||||
.tool(ModTiers.SWORD_TIER,
|
||||
|
||||
@@ -2,6 +2,7 @@ package net.halbear.aotg.registries;
|
||||
|
||||
import net.halbear.aotg.AgeoftheGods;
|
||||
import net.halbear.aotg.custom.blocks.AlloyFurnace.AlloyFurnaceGUI;
|
||||
import net.halbear.aotg.custom.blocks.Forge.ForgeWorkbenchGUI;
|
||||
import net.halbear.aotg.utility.Networking.MenuStateUpdate;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
@@ -24,6 +25,9 @@ public class ModMenus {
|
||||
public static final DeferredHolder<MenuType<?>, MenuType<AlloyFurnaceGUI>> ALLOY_FURNACE_GUI =
|
||||
MENUS.register("alloy_furnace_gui", () -> IMenuTypeExtension.create(AlloyFurnaceGUI::new));
|
||||
|
||||
public static final DeferredHolder<MenuType<?>, MenuType<ForgeWorkbenchGUI>> FORGE_WORKBENCH_GUI =
|
||||
MENUS.register("forge_workbench", () -> IMenuTypeExtension.create(ForgeWorkbenchGUI::new));
|
||||
|
||||
|
||||
public interface MenuAccessor {
|
||||
Map<String, Object> getMenuState();
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package net.halbear.aotg.registries;
|
||||
|
||||
import net.halbear.aotg.custom.GuiScreens.AlloyFurnaceGUIScreen;
|
||||
import net.halbear.aotg.custom.GuiScreens.ForgeWorkbenchGUIScreen;
|
||||
import net.halbear.aotg.custom.blocks.AlloyFurnace.AlloyFurnaceGUI;
|
||||
import net.neoforged.api.distmarker.Dist;
|
||||
import net.neoforged.bus.api.SubscribeEvent;
|
||||
@@ -12,6 +13,7 @@ public class ModScreens {
|
||||
@SubscribeEvent
|
||||
public static void clientLoad(RegisterMenuScreensEvent event) {
|
||||
event.register(ModMenus.ALLOY_FURNACE_GUI.get(), AlloyFurnaceGUIScreen::new);
|
||||
event.register(ModMenus.FORGE_WORKBENCH_GUI.get(), ForgeWorkbenchGUIScreen::new);
|
||||
}
|
||||
|
||||
public interface ScreenAccessor {
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
package net.halbear.aotg.registries;
|
||||
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.item.CreativeModeTabs;
|
||||
import net.neoforged.neoforge.registries.DeferredHolder;
|
||||
import net.neoforged.neoforge.registries.DeferredRegister;
|
||||
|
||||
import static net.halbear.aotg.AgeoftheGods.MODID;
|
||||
import static net.halbear.aotg.registries.ModItems.*;
|
||||
import static net.halbear.aotg.registries.ModItems.ALLOY_FURNACE_ITEM;
|
||||
import static net.halbear.aotg.registries.ModItems.BRONZE_INGOT;
|
||||
import static net.halbear.aotg.registries.ModItems.ELECTRUM_INGOT;
|
||||
import static net.halbear.aotg.registries.ModItems.FORGE_WORKBENCH_ITEM;
|
||||
import static net.halbear.aotg.registries.ModItems.HEPATIZON_INGOT;
|
||||
import static net.halbear.aotg.registries.ModItems.LIMESTONE_GRASS_ITEM;
|
||||
import static net.halbear.aotg.registries.ModItems.OLIVE_LEAVES_ITEM;
|
||||
import static net.halbear.aotg.registries.ModItems.OLIVE_LOG_ITEM;
|
||||
import static net.halbear.aotg.registries.ModItems.ORICHALCUM_INGOT;
|
||||
import static net.halbear.aotg.registries.ModItems.SHALE_GRASS_ITEM;
|
||||
import static net.halbear.aotg.registries.ModItems.SILVER_INGOT;
|
||||
import static net.halbear.aotg.registries.ModItems.TIN_INGOT;
|
||||
import static net.halbear.aotg.registries.ModItems.XIPHOS_SWORD;
|
||||
import static net.halbear.aotg.registries.ModItems.ZINC_INGOT;
|
||||
|
||||
public class ModTabs {
|
||||
public static final DeferredRegister<CreativeModeTab> CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MODID);
|
||||
|
||||
|
||||
public static final DeferredHolder<CreativeModeTab, CreativeModeTab> AGE_OF_THE_GODS_TAB = CREATIVE_MODE_TABS.register("age_of_the_gods", () -> CreativeModeTab.builder()
|
||||
.title(Component.translatable("itemGroup.ageofthegods")) //The language key for the title of your CreativeModeTab
|
||||
.withTabsBefore(CreativeModeTabs.COMBAT)
|
||||
.icon(() -> XIPHOS_SWORD.get().getDefaultInstance())
|
||||
.displayItems((parameters, output) -> {
|
||||
output.accept(LIMESTONE_ITEM.get());
|
||||
output.accept(SHALE_ITEM.get());
|
||||
output.accept(SHALE_GRASS_ITEM.get());
|
||||
output.accept(LIMESTONE_GRASS_ITEM.get());
|
||||
output.accept(OLIVE_LEAVES_ITEM.get());
|
||||
output.accept(OLIVE_LOG_ITEM.get());
|
||||
output.accept(XIPHOS_SWORD.get());
|
||||
output.accept(ALLOY_FURNACE_ITEM.get());
|
||||
output.accept(FORGE_WORKBENCH_ITEM.get());
|
||||
output.accept(TIN_INGOT.get());
|
||||
output.accept(ZINC_INGOT.get());
|
||||
output.accept(SILVER_INGOT.get());
|
||||
output.accept(BRONZE_INGOT.get());
|
||||
output.accept(ELECTRUM_INGOT.get());
|
||||
output.accept(HEPATIZON_INGOT.get());
|
||||
output.accept(ORICHALCUM_INGOT.get());
|
||||
}).build());
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "ageofthegods:item/ingot/bronze"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "ageofthegods:item/ingot/electrum"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "ageofthegods:block/forge/forge"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "ageofthegods:item/ingot/hepatizon"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "ageofthegods:item/ingot/orichalcum"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "ageofthegods:item/ingot/silver"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "ageofthegods:item/ingot/tin"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "ageofthegods:item/ingot/zinc"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"variants": {
|
||||
"facing=north": {
|
||||
"model": "ageofthegods:block/forge/forge",
|
||||
"y": 0
|
||||
},
|
||||
"facing=south": {
|
||||
"model": "ageofthegods:block/forge/forge",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west": {
|
||||
"model": "ageofthegods:block/forge/forge",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east": {
|
||||
"model": "ageofthegods:block/forge/forge",
|
||||
"y": 90
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,10 +8,19 @@
|
||||
"block.ageofthegods.olive_leaves": "Olive Leaves",
|
||||
"block.ageofthegods.olive_log": "Olive Log",
|
||||
"block.ageofthegods.alloy_furnace": "Alloy Furnace Segment",
|
||||
"block.ageofthegods.forge": "Forge",
|
||||
|
||||
"gui.ageofthegods.alloy_furnace_gui.title": "Alloy Furnace",
|
||||
"gui.ageofthegods.forge_workbench.title": "Forge",
|
||||
|
||||
"item.ageofthegods.xiphos": "Xiphos",
|
||||
"item.ageofthegods.zinc_ingot": "Zinc Ingot",
|
||||
"item.ageofthegods.tin_ingot": "Tin Ingot",
|
||||
"item.ageofthegods.silver_ingot": "Silver Ingot",
|
||||
"item.ageofthegods.bronze_ingot": "Bronze Ingot",
|
||||
"item.ageofthegods.electrum_ingot": "Electrum Ingot",
|
||||
"item.ageofthegods.hepatizon_ingot": "Hepatizon Ingot",
|
||||
"item.ageofthegods.orichalcum_ingot": "Orichalcum Ingot",
|
||||
"item.ageofthegods.fluid_indicator_debug_item": "Molten Alloy Mixture: ",
|
||||
|
||||
"ageofthegods.configuration.title": "Age of the Gods Configs",
|
||||
|
||||
@@ -0,0 +1,336 @@
|
||||
{
|
||||
"format_version": "1.21.11",
|
||||
"credit": "Made with Blockbench",
|
||||
"texture_size": [128, 128],
|
||||
"textures": {
|
||||
"0": "ageofthegods:block/forge/forge",
|
||||
"particle": "ageofthegods:block/forge/forge"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [0, 7, 6],
|
||||
"to": [16, 13, 15],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 10, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [4.254, 1.254, 6.246, 1.996], "texture": "#0"},
|
||||
"east": {"uv": [4.754, 4.754, 5.871, 5.496], "texture": "#0"},
|
||||
"south": {"uv": [4.254, 2.129, 6.246, 2.871], "texture": "#0"},
|
||||
"west": {"uv": [0.004, 5.004, 1.121, 5.746], "texture": "#0"},
|
||||
"up": {"uv": [1.996, 3.621, 0.004, 2.504], "texture": "#0"},
|
||||
"down": {"uv": [4.121, 2.504, 2.129, 3.621], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [16, 7, 8],
|
||||
"to": [20, 13, 13],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 10, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [7.254, 6.754, 7.746, 7.496], "texture": "#0"},
|
||||
"east": {"uv": [0.004, 6.754, 0.621, 7.496], "texture": "#0"},
|
||||
"south": {"uv": [5.004, 7.379, 5.496, 8.121], "texture": "#0"},
|
||||
"west": {"uv": [5.754, 6.754, 6.371, 7.496], "texture": "#0"},
|
||||
"up": {"uv": [3.246, 8.121, 2.754, 7.504], "texture": "#0"},
|
||||
"down": {"uv": [6.996, 7.504, 6.504, 8.121], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [16, 7, 7.99],
|
||||
"to": [24, 13, 7.99],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 10, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [2.379, 5.754, 3.371, 6.496], "texture": "#0"},
|
||||
"east": {"uv": [3.379, 6.629, 3.379, 7.371], "texture": "#0"},
|
||||
"south": {"uv": [0.004, 5.879, 0.996, 6.621], "texture": "#0"},
|
||||
"west": {"uv": [6.379, 7.629, 6.379, 8.371], "texture": "#0"},
|
||||
"up": {"uv": [9.246, 0.254, 8.254, 0.254], "texture": "#0"},
|
||||
"down": {"uv": [9.246, 0.379, 8.254, 0.379], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [16, 7, 13.01],
|
||||
"to": [24, 13, 13.01],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 10, 15]},
|
||||
"faces": {
|
||||
"north": {"uv": [6.004, 4.754, 6.996, 5.496], "texture": "#0"},
|
||||
"east": {"uv": [4.504, 8.004, 4.504, 8.746], "texture": "#0"},
|
||||
"south": {"uv": [6.129, 3.004, 7.121, 3.746], "texture": "#0"},
|
||||
"west": {"uv": [3.254, 8.254, 3.254, 8.996], "texture": "#0"},
|
||||
"up": {"uv": [9.246, 0.504, 8.254, 0.504], "texture": "#0"},
|
||||
"down": {"uv": [9.246, 0.629, 8.254, 0.629], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [20, 10.725, 8],
|
||||
"to": [23.75, 13, 13],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 10, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [5.754, 0.879, 6.246, 1.121], "texture": "#0"},
|
||||
"east": {"uv": [4.004, 5.004, 4.621, 5.246], "texture": "#0"},
|
||||
"south": {"uv": [7.629, 8.004, 8.121, 8.246], "texture": "#0"},
|
||||
"west": {"uv": [7.879, 2.379, 8.496, 2.621], "texture": "#0"},
|
||||
"up": {"uv": [0.496, 8.246, 0.004, 7.629], "texture": "#0"},
|
||||
"down": {"uv": [8.121, 0.004, 7.629, 0.621], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [17, 7, 8],
|
||||
"to": [20, 12.275, 13],
|
||||
"rotation": {"angle": -45, "axis": "z", "origin": [20, 7, 10.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [4.254, 3.004, 4.621, 3.621], "texture": "#0"},
|
||||
"east": {"uv": [6.879, 3.879, 7.496, 4.496], "texture": "#0"},
|
||||
"south": {"uv": [3.504, 5.754, 3.871, 6.371], "texture": "#0"},
|
||||
"west": {"uv": [7.004, 5.629, 7.621, 6.246], "texture": "#0"},
|
||||
"up": {"uv": [5.996, 8.246, 5.629, 7.629], "texture": "#0"},
|
||||
"down": {"uv": [8.246, 0.754, 7.879, 1.371], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [-8, 13.01, 6],
|
||||
"to": [25, 13.01, 15],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 10, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [7.754, 6.129, 11.871, 6.129], "texture": "#0"},
|
||||
"east": {"uv": [7.754, 6.254, 8.871, 6.254], "texture": "#0"},
|
||||
"south": {"uv": [7.879, 2.754, 11.996, 2.754], "texture": "#0"},
|
||||
"west": {"uv": [7.879, 2.879, 8.996, 2.879], "texture": "#0"},
|
||||
"up": {"uv": [4.121, 1.121, 0.004, 0.004], "texture": "#0"},
|
||||
"down": {"uv": [4.121, 1.254, 0.004, 2.371], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [-8, 6.99, 6],
|
||||
"to": [3, 6.99, 15],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [7.879, 5.129, 9.246, 5.129], "texture": "#0"},
|
||||
"east": {"uv": [7.879, 5.254, 8.996, 5.254], "texture": "#0"},
|
||||
"south": {"uv": [8.254, 0.004, 9.621, 0.004], "texture": "#0"},
|
||||
"west": {"uv": [8.254, 0.129, 9.371, 0.129], "texture": "#0"},
|
||||
"up": {"uv": [4.621, 4.871, 3.254, 3.754], "texture": "#0"},
|
||||
"down": {"uv": [5.621, 0.004, 4.254, 1.121], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [-4, 7, 7],
|
||||
"to": [1, 13, 12],
|
||||
"rotation": {"angle": -45, "axis": "y", "origin": [-2.5, 10, 10.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [5.004, 6.504, 5.621, 7.246], "texture": "#0"},
|
||||
"east": {"uv": [1.129, 6.629, 1.746, 7.371], "texture": "#0"},
|
||||
"south": {"uv": [1.879, 6.629, 2.496, 7.371], "texture": "#0"},
|
||||
"west": {"uv": [2.629, 6.629, 3.246, 7.371], "texture": "#0"},
|
||||
"up": {"uv": [7.121, 7.371, 6.504, 6.754], "texture": "#0"},
|
||||
"down": {"uv": [7.496, 0.004, 6.879, 0.621], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [-7.8, 7, 10],
|
||||
"to": [-6.8, 13, 11],
|
||||
"rotation": {"angle": 45, "axis": "y", "origin": [-7.3, 10, 10.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [8.254, 1.504, 8.371, 2.246], "texture": "#0"},
|
||||
"east": {"uv": [2.754, 8.254, 2.871, 8.996], "texture": "#0"},
|
||||
"south": {"uv": [3.004, 8.254, 3.121, 8.996], "texture": "#0"},
|
||||
"west": {"uv": [4.879, 8.254, 4.996, 8.996], "texture": "#0"},
|
||||
"up": {"uv": [4.621, 5.496, 4.504, 5.379], "texture": "#0"},
|
||||
"down": {"uv": [5.871, 6.504, 5.754, 6.621], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [-8.25, 7, 6],
|
||||
"to": [0, 13, 8],
|
||||
"rotation": {"angle": 27.5, "axis": "y", "origin": [0, 10, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [4.004, 5.629, 4.996, 6.371], "texture": "#0"},
|
||||
"east": {"uv": [7.879, 1.504, 8.121, 2.246], "texture": "#0"},
|
||||
"south": {"uv": [5.129, 5.629, 6.121, 6.371], "texture": "#0"},
|
||||
"west": {"uv": [7.879, 6.754, 8.121, 7.496], "texture": "#0"},
|
||||
"up": {"uv": [8.621, 4.496, 7.629, 4.254], "texture": "#0"},
|
||||
"down": {"uv": [8.121, 7.629, 7.129, 7.871], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [-8.25, 7, 13],
|
||||
"to": [0, 13, 15],
|
||||
"rotation": {"angle": -27.5, "axis": "y", "origin": [0, 10, 15]},
|
||||
"faces": {
|
||||
"north": {"uv": [5.754, 0.004, 6.746, 0.746], "texture": "#0"},
|
||||
"east": {"uv": [1.129, 8.004, 1.371, 8.746], "texture": "#0"},
|
||||
"south": {"uv": [1.254, 5.754, 2.246, 6.496], "texture": "#0"},
|
||||
"west": {"uv": [3.379, 8.004, 3.621, 8.746], "texture": "#0"},
|
||||
"up": {"uv": [8.746, 5.621, 7.754, 5.379], "texture": "#0"},
|
||||
"down": {"uv": [8.746, 5.754, 7.754, 5.996], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [3, 1, 8],
|
||||
"to": [13, 7, 13],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [4.754, 3.004, 5.996, 3.746], "texture": "#0"},
|
||||
"east": {"uv": [6.129, 3.879, 6.746, 4.621], "texture": "#0"},
|
||||
"south": {"uv": [4.754, 3.879, 5.996, 4.621], "texture": "#0"},
|
||||
"west": {"uv": [6.379, 2.004, 6.996, 2.746], "texture": "#0"},
|
||||
"up": {"uv": [2.496, 5.621, 1.254, 5.004], "texture": "#0"},
|
||||
"down": {"uv": [3.871, 5.004, 2.629, 5.621], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [2, 0, 6],
|
||||
"to": [14, 2, 15],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 6]},
|
||||
"faces": {
|
||||
"north": {"uv": [7.004, 6.379, 8.496, 6.621], "texture": "#0"},
|
||||
"east": {"uv": [3.379, 7.629, 4.496, 7.871], "texture": "#0"},
|
||||
"south": {"uv": [7.254, 3.004, 8.746, 3.246], "texture": "#0"},
|
||||
"west": {"uv": [7.629, 3.879, 8.746, 4.121], "texture": "#0"},
|
||||
"up": {"uv": [1.496, 4.871, 0.004, 3.754], "texture": "#0"},
|
||||
"down": {"uv": [3.121, 3.754, 1.629, 4.871], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [-3, 0, 0],
|
||||
"to": [2, 8, 5],
|
||||
"faces": {
|
||||
"north": {"uv": [6.254, 5.629, 6.871, 6.621], "texture": "#0"},
|
||||
"east": {"uv": [6.379, 0.879, 6.996, 1.871], "texture": "#0"},
|
||||
"south": {"uv": [3.504, 6.504, 4.121, 7.496], "texture": "#0"},
|
||||
"west": {"uv": [4.254, 6.504, 4.871, 7.496], "texture": "#0"},
|
||||
"up": {"uv": [7.746, 1.371, 7.129, 0.754], "texture": "#0"},
|
||||
"down": {"uv": [7.746, 1.504, 7.129, 2.121], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [2, 0, 0],
|
||||
"to": [-3, 8, 5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [5, 0, 0]},
|
||||
"faces": {
|
||||
"north": {"uv": [6.254, 5.629, 6.871, 6.621], "texture": "#0"},
|
||||
"east": {"uv": [6.379, 0.879, 6.996, 1.871], "texture": "#0"},
|
||||
"south": {"uv": [3.504, 6.504, 4.121, 7.496], "texture": "#0"},
|
||||
"west": {"uv": [4.254, 6.504, 4.871, 7.496], "texture": "#0"},
|
||||
"up": {"uv": [7.746, 1.371, 7.129, 0.754], "texture": "#0"},
|
||||
"down": {"uv": [7.746, 1.504, 7.129, 2.121], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [-3, 6, 0],
|
||||
"to": [2, 6, 5],
|
||||
"faces": {
|
||||
"north": {"uv": [6.379, 2.879, 6.996, 2.879], "texture": "#0"},
|
||||
"east": {"uv": [8.254, 3.379, 8.871, 3.379], "texture": "#0"},
|
||||
"south": {"uv": [8.254, 3.504, 8.871, 3.504], "texture": "#0"},
|
||||
"west": {"uv": [8.254, 3.629, 8.871, 3.629], "texture": "#0"},
|
||||
"up": {"uv": [7.746, 2.871, 7.129, 2.254], "texture": "#0"},
|
||||
"down": {"uv": [7.746, 4.629, 7.129, 5.246], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [-1, 2, 4],
|
||||
"to": [0, 15, 5],
|
||||
"rotation": {"x": 15.57779, "y": 14.2906, "z": 4.60659, "origin": [-0.5, 8.5, 4.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [4.629, 7.629, 4.746, 9.246], "texture": "#0"},
|
||||
"east": {"uv": [6.129, 7.629, 6.246, 9.246], "texture": "#0"},
|
||||
"south": {"uv": [0.629, 8.004, 0.746, 9.621], "texture": "#0"},
|
||||
"west": {"uv": [0.879, 8.004, 0.996, 9.621], "texture": "#0"},
|
||||
"up": {"uv": [6.121, 6.621, 6.004, 6.504], "texture": "#0"},
|
||||
"down": {"uv": [0.871, 6.754, 0.754, 6.871], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [17, -0.5, 3.25],
|
||||
"to": [18, 10.5, 4.25],
|
||||
"rotation": {"x": 43.99949, "y": 49.53655, "z": 42.73329, "origin": [17.5, 6.5, 3.75]},
|
||||
"faces": {
|
||||
"north": {"uv": [1.504, 8.004, 1.621, 9.371], "texture": "#0"},
|
||||
"east": {"uv": [3.754, 8.004, 3.871, 9.371], "texture": "#0"},
|
||||
"south": {"uv": [4.004, 8.004, 4.121, 9.371], "texture": "#0"},
|
||||
"west": {"uv": [4.254, 8.004, 4.371, 9.371], "texture": "#0"},
|
||||
"up": {"uv": [4.121, 5.496, 4.004, 5.379], "texture": "#0"},
|
||||
"down": {"uv": [4.371, 5.379, 4.254, 5.496], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [16, 6.5, 0.25],
|
||||
"to": [19, 9.5, 7.25],
|
||||
"rotation": {"x": 43.99949, "y": 49.53655, "z": 42.73329, "origin": [17.5, 6.5, 3.75]},
|
||||
"faces": {
|
||||
"north": {"uv": [7.879, 4.629, 8.246, 4.996], "texture": "#0"},
|
||||
"east": {"uv": [7.254, 3.379, 8.121, 3.746], "texture": "#0"},
|
||||
"south": {"uv": [7.129, 8.004, 7.496, 8.371], "texture": "#0"},
|
||||
"west": {"uv": [0.754, 7.504, 1.621, 7.871], "texture": "#0"},
|
||||
"up": {"uv": [2.121, 8.371, 1.754, 7.504], "texture": "#0"},
|
||||
"down": {"uv": [2.621, 7.504, 2.254, 8.371], "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [0, -90, 0],
|
||||
"translation": [0, 2.25, 0],
|
||||
"scale": [0.4, 0.4, 0.4]
|
||||
},
|
||||
"thirdperson_lefthand": {
|
||||
"rotation": [0, 90, 0],
|
||||
"translation": [0, 2.5, 0],
|
||||
"scale": [0.4, 0.4, 0.4]
|
||||
},
|
||||
"firstperson_righthand": {
|
||||
"rotation": [0, -60, 0],
|
||||
"translation": [-1, 4.25, 0.25],
|
||||
"scale": [0.28, 0.4, 0.4]
|
||||
},
|
||||
"firstperson_lefthand": {
|
||||
"rotation": [0, 110, 0],
|
||||
"translation": [-1, 4.25, 0.25],
|
||||
"scale": [0.4, 0.4, 0.4]
|
||||
},
|
||||
"ground": {
|
||||
"scale": [0.4, 0.4, 0.4]
|
||||
},
|
||||
"gui": {
|
||||
"rotation": [29, -138, 0],
|
||||
"translation": [0.25, 0, 0],
|
||||
"scale": [0.55, 0.55, 0.55]
|
||||
},
|
||||
"head": {
|
||||
"translation": [0, 14.5, 0]
|
||||
},
|
||||
"fixed": {
|
||||
"rotation": [0, 180, 0]
|
||||
},
|
||||
"on_shelf": {
|
||||
"rotation": [0, 34, 0],
|
||||
"scale": [0.75, 0.75, 0.75]
|
||||
}
|
||||
},
|
||||
"groups": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
{
|
||||
"name": "group",
|
||||
"origin": [18, 7, 4],
|
||||
"scope": 0,
|
||||
"color": 0,
|
||||
"children": [18, 19]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "ageofthegods:item/metals/bronze_ingot"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "ageofthegods:item/metals/electrum_ingot"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "ageofthegods:item/metals/hepatizon_ingot"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "ageofthegods:item/metals/orichalcum_ingot"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "ageofthegods:item/metals/silver_ingot"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "ageofthegods:item/metals/tin_ingot"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "ageofthegods:item/metals/zinc_ingot"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 399 B |
|
After Width: | Height: | Size: 382 B |
|
After Width: | Height: | Size: 378 B |
|
After Width: | Height: | Size: 390 B |
|
After Width: | Height: | Size: 381 B |
|
After Width: | Height: | Size: 335 B |
|
After Width: | Height: | Size: 394 B |
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"type": "neoforge:add_spawns",
|
||||
"biomes": [
|
||||
"ageofthegods:garrigue",
|
||||
"ageofthegods:maquis_shrubland",
|
||||
"ageofthegods:mediterranean_forest"
|
||||
],
|
||||
"spawners": [
|
||||
{
|
||||
"type": "minecraft:sheep",
|
||||
"weight": 12,
|
||||
"minCount": 1,
|
||||
"maxCount": 4
|
||||
},
|
||||
{
|
||||
"type": "minecraft:pig",
|
||||
"weight": 10,
|
||||
"minCount": 1,
|
||||
"maxCount": 4
|
||||
},
|
||||
{
|
||||
"type": "minecraft:chicken",
|
||||
"weight": 10,
|
||||
"minCount": 1,
|
||||
"maxCount": 4
|
||||
},
|
||||
{
|
||||
"type": "minecraft:cow",
|
||||
"weight": 8,
|
||||
"minCount": 1,
|
||||
"maxCount": 4
|
||||
},
|
||||
{
|
||||
"type": "minecraft:horse",
|
||||
"weight": 5,
|
||||
"minCount": 2,
|
||||
"maxCount": 6
|
||||
},
|
||||
{
|
||||
"type": "minecraft:goat",
|
||||
"weight": 10,
|
||||
"minCount": 1,
|
||||
"maxCount": 9
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -11,8 +11,8 @@
|
||||
"parameters": {
|
||||
"temperature": [0.0, 0.5],
|
||||
"humidity": [-1.0, 0.0],
|
||||
"continentalness": [-1.2, 1.0],
|
||||
"erosion": [-1.0, 1.0],
|
||||
"continentalness": [0.0, 1.0],
|
||||
"erosion": [-0.5, 0.9],
|
||||
"weirdness": [-1.0, 1.0],
|
||||
"depth": 0.0,
|
||||
"offset": 0.0
|
||||
@@ -21,10 +21,10 @@
|
||||
{
|
||||
"biome": "ageofthegods:maquis_shrubland",
|
||||
"parameters": {
|
||||
"temperature": [0.5, 1.0],
|
||||
"temperature": [-1.0, 1.0],
|
||||
"humidity": [-1.0, 0.0],
|
||||
"continentalness": [-1.2, 1.0],
|
||||
"erosion": [-1.0, 1.0],
|
||||
"continentalness": [0.15, 1.0],
|
||||
"erosion": [-1.0, 0.0],
|
||||
"weirdness": [-1.0, 1.0],
|
||||
"depth": 0.0,
|
||||
"offset": 0.0
|
||||
@@ -33,14 +33,138 @@
|
||||
{
|
||||
"biome": "ageofthegods:mediterranean_forest",
|
||||
"parameters": {
|
||||
"temperature": [-0.5, 0.0],
|
||||
"temperature": [-0.5, 0.5],
|
||||
"humidity": [0.0, 1.0],
|
||||
"continentalness": [-0.5, 0.9],
|
||||
"continentalness": [0.0, 0.9],
|
||||
"erosion": [0.7, 1.0],
|
||||
"weirdness": [0.0, 0.0],
|
||||
"weirdness": [-1.0, 1.0],
|
||||
"depth": 0.0,
|
||||
"offset": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"biome": "minecraft:beach",
|
||||
"parameters": {
|
||||
"temperature": [-0.45, 1.0],
|
||||
"humidity": [-1.0, 1.0],
|
||||
"continentalness": [-0.15, -0.13],
|
||||
"erosion": [0.9, 1.0],
|
||||
"weirdness": [-1.0, 1.0],
|
||||
"depth": 0.0,
|
||||
"offset": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"biome": "minecraft:ocean",
|
||||
"parameters": {
|
||||
"temperature": [-0.15, 0.2],
|
||||
"humidity": [-1.0, 1.0],
|
||||
"continentalness": [-0.45, -0.15],
|
||||
"erosion": [0.7, 1.0],
|
||||
"weirdness": [-0.1, 0.1],
|
||||
"depth": 0.0,
|
||||
"offset": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"biome": "minecraft:deep_ocean",
|
||||
"parameters": {
|
||||
"temperature": [-0.15, 0.2],
|
||||
"humidity": [-1.0, 1.0],
|
||||
"continentalness": [-1.2, -0.45],
|
||||
"erosion": [0.7, 1.0],
|
||||
"weirdness": [-0.1, 0.1],
|
||||
|
||||
"depth": 0.0,
|
||||
"offset": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"biome": "minecraft:lukewarm_ocean",
|
||||
"parameters": {
|
||||
"temperature": [0.2, 0.55],
|
||||
"humidity": [-1.0, 1.0],
|
||||
"continentalness": [-0.45, -0.15],
|
||||
"erosion": [0.5, 1.0],
|
||||
"weirdness": [-0.1, 0.1],
|
||||
"depth": 0.0,
|
||||
"offset": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"biome": "minecraft:deep_lukewarm_ocean",
|
||||
"parameters": {
|
||||
"temperature": [0.2, 0.55],
|
||||
"humidity": [-1.0, 1.0],
|
||||
"continentalness": [-1.2, -0.45],
|
||||
"erosion": [-1.0, 1.0],
|
||||
"weirdness": [-0.1, 0.1],
|
||||
"depth": 0.0,
|
||||
"offset": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"biome": "minecraft:warm_ocean",
|
||||
"parameters": {
|
||||
"temperature": [0.55, 1.0],
|
||||
"humidity": [-1.0, 1.0],
|
||||
"continentalness": [-0.45, -0.15],
|
||||
"erosion": [-1.0, 1.0],
|
||||
"weirdness": [-1.0, 1.0],
|
||||
"depth": 0.0,
|
||||
"offset": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"biome": "minecraft:lush_caves",
|
||||
"parameters": {
|
||||
"temperature": [-1.0, 1.0],
|
||||
"humidity": [0.2, 1.0],
|
||||
"continentalness": [-1.2, 1.0],
|
||||
"erosion": [-1.0, 1.0],
|
||||
"weirdness": [-0.75, 0.75],
|
||||
"depth": 1.0,
|
||||
"offset": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"biome": "minecraft:dripstone_caves",
|
||||
"parameters": {
|
||||
"temperature": [
|
||||
-1.0,
|
||||
1.0
|
||||
],
|
||||
"humidity": [
|
||||
-1.0,
|
||||
0.0
|
||||
],
|
||||
"continentalness": [
|
||||
-1.2,
|
||||
1.0
|
||||
],
|
||||
"erosion": [
|
||||
-1.0,
|
||||
1.0
|
||||
],
|
||||
"weirdness": [
|
||||
-0.85,
|
||||
0.85
|
||||
],
|
||||
"depth": 1.0,
|
||||
"offset": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"biome": "minecraft:deep_dark",
|
||||
"parameters": {
|
||||
"temperature": [-1.0, 1.0],
|
||||
"humidity": [-1.0, 0.0],
|
||||
"continentalness": [-1.2, 1.0],
|
||||
"erosion": [-1.0, 1.0],
|
||||
"weirdness": [-1.0, 1.0],
|
||||
"depth": 1.0,
|
||||
"offset": 0.0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"biomes": [
|
||||
"minecraft:beach",
|
||||
"minecraft:snowy_beach",
|
||||
"minecraft:ocean",
|
||||
"minecraft:deep_ocean",
|
||||
"minecraft:warm_ocean",
|
||||
"minecraft:lukewalk_ocean",
|
||||
"minecraft:deep_lukewarm_ocean",
|
||||
"minecraft:cold_ocean",
|
||||
"minecraft:deep_cold_ocean",
|
||||
"minecraft:frozen_ocean",
|
||||
"minecraft:deep_frozen_ocean"
|
||||
],
|
||||
"attributes": {
|
||||
"minecraft:visual/fog_color": "#ccffffff",
|
||||
"minecraft:visual/sky_color": "#ccffffff",
|
||||
"minecraft:visual/cloud_color": "#ccffffff"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"ageofthegods:limestone_grass_block",
|
||||
"ageofthegods:shale_grass_block",
|
||||
"minecraft:sand",
|
||||
"minecraft:sandstone",
|
||||
"minecraft:granite",
|
||||
"ageofthegods:limestone_block",
|
||||
"ageofthegods:shale_block"
|
||||
]
|
||||
}
|
||||