add some garbage
This commit is contained in:
parent
1e0d9a52cd
commit
5908788ab0
@ -1,3 +1,7 @@
|
||||
# TeyvatCraft
|
||||
|
||||
All code are under MIT LICENSE. But all assets, such as image, belong to miHoyo and miHoyo hold its copyright.
|
||||
All code are under MIT LICENSE. But all assets, such as image, belong to miHoyo and miHoYo hold its copyright.
|
||||
|
||||
This mod will **not** add Homeworld system into Minecraft. Minecraft has been a openworld game now. Minecraft player can use various block to create what they want. Add Homeworld system is entirely useless and if you still want Furniture, you can add other Minecraft mods to implement it.
|
||||
|
||||
And, this mod is not designed to implement Genshin Impact in Minecraft entirely. Some features has been adapted to Minecraft self. If you need full Genshin Impact experiences, you can leave now.
|
||||
|
@ -1,68 +1,68 @@
|
||||
|**材料**|可种植|用原版代替|和村民交易|可由加工得来|野外采集|矿物|未映射|
|
||||
|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|
||||
|嘟嘟莲|||||√|||
|
||||
|嘟嘟莲|||||一次性,沼泽|||
|
||||
|石珀||||||√||
|
||||
|蒲公英籽|||||√|||
|
||||
|绝云椒椒|||||√|||
|
||||
|小灯草|||||√|||
|
||||
|琉璃袋|||||√|||
|
||||
|蒲公英籽|||||可反复|||
|
||||
|绝云椒椒|||||可反复|||
|
||||
|小灯草|||||一次性|||
|
||||
|琉璃袋||兰花||||||
|
||||
|蘑菇||棕色蘑菇||||||
|
||||
|禽肉||生鸡肉||||||
|
||||
|鸟蛋||鸡蛋||||||
|
||||
|兽肉||猪肉||||||
|
||||
|白萝卜|√|||||||
|
||||
|薄荷|||||√|||
|
||||
|薄荷|||||一次性|||
|
||||
|鱼肉||原版可食用鱼肉||||||
|
||||
|胡椒|||√|||||
|
||||
|胡椒|||屠夫|||||
|
||||
|番茄|√|||||||
|
||||
|面粉||||√||||
|
||||
|甜甜花|||||√|||
|
||||
|甜甜花|||||一次性|||
|
||||
|洋葱|√|||||||
|
||||
|熏禽肉|||||||√|
|
||||
|卷心菜|√|||||||
|
||||
|树莓|||||√|||
|
||||
|树莓|||||可反复|||
|
||||
|土豆||√||||||
|
||||
|牛奶||√||||||
|
||||
|糖||√||||||
|
||||
|杏仁|||√|||||
|
||||
|金鱼草|||||√|||
|
||||
|豆腐|||√|||||
|
||||
|杏仁|||农民|||||
|
||||
|金鱼草|||||一次性,沼泽|||
|
||||
|豆腐|||农民|||||
|
||||
|莲蓬||荷叶||||||
|
||||
|松茸|||||√|||
|
||||
|松茸|||||一次性|||
|
||||
|稻米|√|||||||
|
||||
|虾仁|||√|||||
|
||||
|虾仁|||渔夫|||||
|
||||
|胡萝卜||√||||||
|
||||
|奶油||||√||||
|
||||
|螃蟹|||||√|||
|
||||
|螃蟹|||渔夫|||||
|
||||
|奶酪||||√||||
|
||||
|松果|||||√|||
|
||||
|松果|||||云杉树叶掉落|||
|
||||
|果酱||||√||||
|
||||
|盐|||√|||||
|
||||
|盐|||屠夫|||||
|
||||
|黄油||||√||||
|
||||
|火腿|||√|||||
|
||||
|培根|||√|||||
|
||||
|香肠|||√|||||
|
||||
|青蛙|||||√|||
|
||||
|火腿||||√||||
|
||||
|培根||||√||||
|
||||
|香肠||||√||||
|
||||
|青蛙|||渔夫|||||
|
||||
|电气水晶||||||√||
|
||||
|蜥蜴尾巴|||||||√|
|
||||
|蜥蜴尾巴|||牧师|||||
|
||||
|冰雾花花朵|||||||√|
|
||||
|烈焰花花蕊|||||||√|
|
||||
|蝴蝶翅膀|||||||√|
|
||||
|晶核|||||||√|
|
||||
|蝴蝶翅膀|||牧师|||||
|
||||
|晶核|||牧师|||||
|
||||
|铁块||||||√||
|
||||
|白铁块||||||√||
|
||||
|水晶块||||||√||
|
||||
|蟹黄||||√||||
|
||||
|小麦||√||||||
|
||||
|魔晶块||||||√||
|
||||
|鳅鳅宝玉|||||√|||
|
||||
|鳅鳅宝玉|||牧师|||||
|
||||
|竹笋|||||||√|
|
||||
|发光髓|||||||√|
|
||||
|「冷鲜肉」|||||||√|
|
||||
|星银矿石||||||√||
|
||||
|奇异的「牙齿」|||||||√|
|
||||
|汲取了生命力的龙牙|||||||√|
|
||||
|马尾|||||√|||
|
||||
|马尾|||||一次性,沼泽|||
|
||||
|嬗变之尘|||||||√|
|
||||
|北陆单手剑原胚|||||||√|
|
||||
|北陆双手剑原胚|||||||√|
|
||||
@ -70,6 +70,7 @@
|
||||
|北陆弓原胚|||||||√|
|
||||
|北陆法器原胚|||||||√|
|
||||
|苹果||√||||||
|
||||
|日落果|||||√|||
|
||||
|日落果|||||白桦树叶掉落|||
|
||||
|
||||
所有可种植物品,加入农民一级收购列表,尝试将这些作物设为农民可接受的作物,就像原版作物一样,如果不行就将作物种子设定为流浪商人贩卖
|
||||
* 所有可种植物品,加入农民一级收购列表,尝试将这些作物设为农民可接受的作物,就像原版作物一样,如果不行就将作物种子设定为流浪商人贩卖
|
||||
* 野外采集的,一次性表示类似于花的处理方式,采完就没了,可用刷花机量产。可反复表示类似于浆果丛的处理方式,可以反复采摘,但是只能在原地采摘,不能重新集中化种植。树叶掉落的,按照类似橡木树叶掉落苹果的方式处理掉落。后面标识沼泽的,按类似于兰花的生成方式,即只在沼泽生成,其他未标识的,按普通花的生成方式生成。
|
44
scripts/Genshin Impact Data dump.js
Normal file
44
scripts/Genshin Impact Data dump.js
Normal file
@ -0,0 +1,44 @@
|
||||
// ==UserScript==
|
||||
// @name Genshin Impact Data dump
|
||||
// @namespace http://tampermonkey.net/
|
||||
// @version 0.1
|
||||
// @description try to take over the world!
|
||||
// @author You
|
||||
// @match https://genshin.honeyhunterworld.com/db/item/*
|
||||
// @grant none
|
||||
// ==/UserScript==
|
||||
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
var dataButton = document.createElement("button");
|
||||
dataButton.innerText = "Get Data";
|
||||
dataButton.setAttribute("style", "height: 3em; padding: 0.5em;background: #1e90ff;color: white; border: solid 1px gray;border-radius: 5px;");
|
||||
dataButton.addEventListener("click", function() {
|
||||
let listdiv = document.querySelector('div.items_wrap');
|
||||
let itemlist = listdiv.querySelectorAll('span.itemname');
|
||||
let outList = [];
|
||||
for (let i = 0; i < itemlist.length; i++) {
|
||||
outList.push(itemlist[i].innerText);
|
||||
}
|
||||
console.log(outList.join('\n'));
|
||||
});
|
||||
|
||||
var urlButton = document.createElement("button");
|
||||
urlButton.innerText = "Get URL";
|
||||
urlButton.setAttribute("style", "height: 3em; padding: 0.5em;background: #1e90ff;color: white; border: solid 1px gray;border-radius: 5px;");
|
||||
urlButton.addEventListener("click", function() {
|
||||
let listdiv = document.querySelector('div.items_wrap');
|
||||
let itemlist = listdiv.querySelectorAll('div.itemcont > a > div > div.itempic_cont > img.itempic');
|
||||
let outList = [];
|
||||
for (let i = 0; i < itemlist.length; i++) {
|
||||
outList.push("https://genshin.honeyhunterworld.com" + itemlist[i].getAttribute("src"));
|
||||
}
|
||||
console.log(outList.join('\n'));
|
||||
});
|
||||
|
||||
var dataList = document.querySelector('div.items_wrap');
|
||||
dataList.parentNode.insertBefore(dataButton, dataList);
|
||||
dataList.parentNode.insertBefore(urlButton, dataList);
|
||||
|
||||
})();
|
66
scripts/item_generator.py
Normal file
66
scripts/item_generator.py
Normal file
@ -0,0 +1,66 @@
|
||||
import sys
|
||||
import os
|
||||
|
||||
def ReadListFromFile(filename, listInstance):
|
||||
f = open(filename, 'r', encoding='utf-8')
|
||||
while True:
|
||||
cache = f.readline()
|
||||
if cache == '':
|
||||
break;
|
||||
cache = cache.strip()
|
||||
if cache == '':
|
||||
continue
|
||||
listInstance.append(cache)
|
||||
f.close()
|
||||
|
||||
# folder creation
|
||||
if not os.path.isdir('models/item'):
|
||||
os.makedirs('models/item')
|
||||
if not os.path.isdir('textures/item'):
|
||||
os.makedirs('textures/item')
|
||||
|
||||
|
||||
# read file
|
||||
enList = []
|
||||
zhList = []
|
||||
urlList = []
|
||||
|
||||
ReadListFromFile('zhcn.txt', zhList)
|
||||
ReadListFromFile('enus.txt', enList)
|
||||
ReadListFromFile('url.txt', urlList)
|
||||
|
||||
if len(zhList) != len(enList) or len(urlList) != len(enList):
|
||||
print('3 files item is not matched')
|
||||
sys.exit(0)
|
||||
|
||||
javaDeclareFile = open('declare.java', 'w', encoding='utf-8')
|
||||
javaRegisterFile = open('register.java', 'w', encoding='utf-8')
|
||||
langZhFile = open('zh_cn.json', 'w', encoding='utf-8')
|
||||
langEnFile = open('en_us.json', 'w', encoding='utf-8')
|
||||
shFile = open('downloadImage.sh', 'w', encoding='utf-8')
|
||||
for index in range(len(enList)):
|
||||
underlineName = enList[index].lower().replace(' ', '_').replace('-', '').replace("'", '')
|
||||
upperName = underlineName.upper()
|
||||
|
||||
fmodels = open('models/item/' + underlineName + '.json', 'w', encoding='utf-8')
|
||||
fmodels.write('''{{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {{
|
||||
"layer0": "teyvatcraft:item/{}"
|
||||
}}
|
||||
}}'''.format(underlineName))
|
||||
fmodels.close()
|
||||
|
||||
javaDeclareFile.write('public static final Item {} = new Item(new FabricItemSettings().group(ITEM_GROUP));\n'.format(upperName))
|
||||
javaRegisterFile.write('Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "{}"), {});\n'.format(underlineName, upperName))
|
||||
|
||||
langZhFile.write('"item.teyvatcraft.{}": "{}",\n'.format(underlineName, zhList[index]))
|
||||
langEnFile.write('"item.teyvatcraft.{}": "{}",\n'.format(underlineName, enList[index]))
|
||||
|
||||
shFile.write('curl -o textures/item/{}.png {}\n'.format(underlineName, urlList[index]))
|
||||
|
||||
javaDeclareFile.close()
|
||||
javaRegisterFile.close()
|
||||
langZhFile.close()
|
||||
langEnFile.close()
|
||||
shFile.close()
|
@ -1,243 +0,0 @@
|
||||
package net.yyc12345.teyvatcraft;
|
||||
|
||||
|
||||
import net.minecraft.util.registry.BuiltinRegistries;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
import net.minecraft.util.registry.RegistryKey;
|
||||
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricMaterialBuilder;
|
||||
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
|
||||
import net.fabricmc.fabric.api.biome.v1.BiomeModifications;
|
||||
import net.fabricmc.fabric.api.biome.v1.BiomeSelectors;
|
||||
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
|
||||
import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder;
|
||||
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.item.ItemGroup;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.sound.BlockSoundGroup;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.util.Rarity;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.Material;
|
||||
import net.minecraft.block.MaterialColor;
|
||||
import net.minecraft.block.OreBlock;
|
||||
import net.minecraft.client.render.RenderLayer;
|
||||
import net.minecraft.item.AliasedBlockItem;
|
||||
import net.minecraft.item.BlockItem;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.world.gen.GenerationStep;
|
||||
import net.minecraft.world.gen.decorator.Decorator;
|
||||
import net.minecraft.world.gen.decorator.RangeDecoratorConfig;
|
||||
import net.minecraft.world.gen.feature.ConfiguredFeature;
|
||||
import net.minecraft.world.gen.feature.Feature;
|
||||
import net.minecraft.world.gen.feature.OreFeatureConfig;
|
||||
|
||||
import net.yyc12345.teyvatcraft.blocks.*;
|
||||
import net.yyc12345.teyvatcraft.items.SeedItem;
|
||||
import net.yyc12345.teyvatcraft.items.gnosis.*;
|
||||
|
||||
public class RegisterManager {
|
||||
public static final ItemGroup ITEM_GROUP = FabricItemGroupBuilder.build(
|
||||
new Identifier("teyvatcraft", "general"),
|
||||
() -> new ItemStack(Blocks.COBBLESTONE));
|
||||
|
||||
// ==================== gnosis
|
||||
public static final GnosisDendro GNOSIS_DENDRO = new GnosisDendro(
|
||||
new FabricItemSettings()
|
||||
.group(ITEM_GROUP)
|
||||
.maxCount(1)
|
||||
.rarity(Rarity.EPIC)
|
||||
);
|
||||
public static final GnosisHydro GNOSIS_HYDRO = new GnosisHydro(
|
||||
new FabricItemSettings()
|
||||
.group(ITEM_GROUP)
|
||||
.maxCount(1)
|
||||
.rarity(Rarity.EPIC)
|
||||
);
|
||||
public static final GnosisPyro GNOSIS_PYRO = new GnosisPyro(
|
||||
new FabricItemSettings()
|
||||
.group(ITEM_GROUP)
|
||||
.maxCount(1)
|
||||
.rarity(Rarity.EPIC)
|
||||
);
|
||||
public static final GnosisGeo GNOSIS_GEO = new GnosisGeo(
|
||||
new FabricItemSettings()
|
||||
.group(ITEM_GROUP)
|
||||
.maxCount(1)
|
||||
.rarity(Rarity.EPIC)
|
||||
);
|
||||
public static final GnosisElectro GNOSIS_ELECTRO = new GnosisElectro(
|
||||
new FabricItemSettings()
|
||||
.group(ITEM_GROUP)
|
||||
.maxCount(1)
|
||||
.rarity(Rarity.EPIC)
|
||||
);
|
||||
public static final GnosisAnemo GNOSIS_ANEMO = new GnosisAnemo(
|
||||
new FabricItemSettings()
|
||||
.group(ITEM_GROUP)
|
||||
.maxCount(1)
|
||||
.rarity(Rarity.EPIC)
|
||||
);
|
||||
public static final GnosisCryo GNOSIS_CRYO = new GnosisCryo(
|
||||
new FabricItemSettings()
|
||||
.group(ITEM_GROUP)
|
||||
.maxCount(1)
|
||||
.rarity(Rarity.EPIC)
|
||||
);
|
||||
|
||||
// ==================== ore
|
||||
public static final Block MAGICAL_CRYSTAL_CHUNK_ORE = new OreBlock(FabricBlockSettings.of(new FabricMaterialBuilder(MaterialColor.STONE).build()).breakByTool(FabricToolTags.PICKAXES, 4).requiresTool().strength(4.0F, 4.0F));
|
||||
public static final Block CRYSTAL_CHUNK_ORE = new OreBlock(FabricBlockSettings.of(new FabricMaterialBuilder(MaterialColor.STONE).build()).breakByTool(FabricToolTags.PICKAXES, 3).requiresTool().strength(4.0F, 4.0F));
|
||||
public static final Block WHITE_IRON_CHUNK_ORE = new OreBlock(FabricBlockSettings.of(new FabricMaterialBuilder(MaterialColor.STONE).build()).breakByTool(FabricToolTags.PICKAXES, 2).requiresTool().strength(3.0F, 3.0F));
|
||||
public static final Block IRON_CHUNK_ORE = new OreBlock(FabricBlockSettings.of(new FabricMaterialBuilder(MaterialColor.STONE).build()).breakByTool(FabricToolTags.PICKAXES, 1).requiresTool().strength(3.0F, 3.0F));
|
||||
public static final Block STARSILVER_ORE = new OreBlock(FabricBlockSettings.of(new FabricMaterialBuilder(MaterialColor.STONE).build()).breakByTool(FabricToolTags.PICKAXES, 1).requiresTool().strength(2.0F, 2.0F));
|
||||
|
||||
public static final Item MAGICAL_CRYSTAL_CHUNK = new Item(new FabricItemSettings().group(ITEM_GROUP));
|
||||
public static final Item CRYSTAL_CHUNK = new Item(new FabricItemSettings().group(ITEM_GROUP));
|
||||
public static final Item WHITE_IRON_CHUNK = new Item(new FabricItemSettings().group(ITEM_GROUP));
|
||||
public static final Item IRON_CHUNK = new Item(new FabricItemSettings().group(ITEM_GROUP));
|
||||
public static final Item STARSILVER = new Item(new FabricItemSettings().group(ITEM_GROUP));
|
||||
|
||||
public static final Item MYSTIC_ENHANCEMENT_ORE = new Item(new FabricItemSettings().group(ITEM_GROUP));
|
||||
public static final Item FINE_ENHANCEMENT_ORE = new Item(new FabricItemSettings().group(ITEM_GROUP));
|
||||
public static final Item ENHANCEMENT_ORE = new Item(new FabricItemSettings().group(ITEM_GROUP));
|
||||
|
||||
// ==================== crops
|
||||
public static final Block RICE_block = new TeyvatCropBlock(FabricBlockSettings.of(Material.PLANT).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP).nonOpaque());
|
||||
public static final Block TOMATO_block = new TeyvatCropBlock(FabricBlockSettings.of(Material.PLANT).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP));
|
||||
public static final Block ONION_block = new TeyvatCropBlock(FabricBlockSettings.of(Material.PLANT).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP));
|
||||
public static final Block CABBAGE_block = new TeyvatCropBlock(FabricBlockSettings.of(Material.PLANT).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP));
|
||||
public static final Block RADDISH_block = new TeyvatCropBlock(FabricBlockSettings.of(Material.PLANT).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP));
|
||||
|
||||
public static final Item RICE_item = new Item(new FabricItemSettings().group(ITEM_GROUP));
|
||||
public static final Item TOMATO_item = new SeedItem(TOMATO_block, new FabricItemSettings().group(ITEM_GROUP));
|
||||
public static final Item ONION_item = new SeedItem(ONION_block, new FabricItemSettings().group(ITEM_GROUP));
|
||||
public static final Item CABBAGE_item = new SeedItem(CABBAGE_block, new FabricItemSettings().group(ITEM_GROUP));
|
||||
public static final Item RADDISH_item = new SeedItem(RADDISH_block, new FabricItemSettings().group(ITEM_GROUP));
|
||||
public static final Item RICE_SEED_item = new SeedItem(RICE_block, new FabricItemSettings().group(ITEM_GROUP));
|
||||
|
||||
// ==================== ore gen
|
||||
private static ConfiguredFeature<?, ?> OREGEN_MAGICAL_CRYSTAL_CHUNK_ORE = Feature.ORE
|
||||
.configure(new OreFeatureConfig(
|
||||
OreFeatureConfig.Rules.BASE_STONE_OVERWORLD,
|
||||
MAGICAL_CRYSTAL_CHUNK_ORE.getDefaultState(),
|
||||
1)) // vein size
|
||||
.decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(0, 0, 12)))
|
||||
.spreadHorizontally()
|
||||
.repeat(5); // number of veins per chunk
|
||||
|
||||
private static ConfiguredFeature<?, ?> OREGEN_CRYSTAL_CHUNK_ORE = Feature.ORE
|
||||
.configure(new OreFeatureConfig(
|
||||
OreFeatureConfig.Rules.BASE_STONE_OVERWORLD,
|
||||
CRYSTAL_CHUNK_ORE.getDefaultState(),
|
||||
4))
|
||||
.decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(0, 0, 32)))
|
||||
.spreadHorizontally()
|
||||
.repeat(12);
|
||||
|
||||
private static ConfiguredFeature<?, ?> OREGEN_WHITE_IRON_CHUNK_ORE = Feature.ORE
|
||||
.configure(new OreFeatureConfig(
|
||||
OreFeatureConfig.Rules.BASE_STONE_OVERWORLD,
|
||||
WHITE_IRON_CHUNK_ORE.getDefaultState(),
|
||||
4))
|
||||
.decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(0, 0, 64)))
|
||||
.spreadHorizontally()
|
||||
.repeat(24);
|
||||
|
||||
private static ConfiguredFeature<?, ?> OREGEN_IRON_CHUNK_ORE = Feature.ORE
|
||||
.configure(new OreFeatureConfig(
|
||||
OreFeatureConfig.Rules.BASE_STONE_OVERWORLD,
|
||||
IRON_CHUNK_ORE.getDefaultState(),
|
||||
8))
|
||||
.decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(0, 0, 64)))
|
||||
.spreadHorizontally()
|
||||
.repeat(24);
|
||||
|
||||
private static ConfiguredFeature<?, ?> OREGEN_STARSILVER_ORE = Feature.ORE
|
||||
.configure(new OreFeatureConfig(
|
||||
OreFeatureConfig.Rules.BASE_STONE_OVERWORLD,
|
||||
IRON_CHUNK_ORE.getDefaultState(),
|
||||
4))
|
||||
.decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(0, 0, 64)))
|
||||
.spreadHorizontally()
|
||||
.repeat(24);
|
||||
|
||||
private static void RegisterOreGeneration(String mIdentifier, ConfiguredFeature<?, ?> genStasticas) {
|
||||
RegistryKey<ConfiguredFeature<?, ?>> regKey = RegistryKey.of(Registry.CONFIGURED_FEATURE_WORLDGEN,
|
||||
new Identifier("teyvatcraft", mIdentifier));
|
||||
Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, regKey.getValue(), genStasticas);
|
||||
BiomeModifications.addFeature(BiomeSelectors.foundInOverworld(), GenerationStep.Feature.UNDERGROUND_ORES, regKey);
|
||||
}
|
||||
|
||||
public static void RegisterAll() {
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "gnosis_dendro"), GNOSIS_DENDRO);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "gnosis_hydro"), GNOSIS_HYDRO);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "gnosis_pyro"), GNOSIS_PYRO);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "gnosis_geo"), GNOSIS_GEO);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "gnosis_electro"), GNOSIS_ELECTRO);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "gnosis_anemo"), GNOSIS_ANEMO);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "gnosis_cryo"), GNOSIS_CRYO);
|
||||
|
||||
// ore
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "magical_crystal_chunk"), MAGICAL_CRYSTAL_CHUNK);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "crystal_chunk"), CRYSTAL_CHUNK);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "white_iron_chunk"), WHITE_IRON_CHUNK);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "iron_chunk"), IRON_CHUNK);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "starsilver"), STARSILVER);
|
||||
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "mystic_enhancement_ore"), MYSTIC_ENHANCEMENT_ORE);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "fine_enhancement_ore"), FINE_ENHANCEMENT_ORE);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "enhancement_ore"), ENHANCEMENT_ORE);
|
||||
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "magical_crystal_chunk_ore"), MAGICAL_CRYSTAL_CHUNK_ORE);
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "crystal_chunk_ore"), CRYSTAL_CHUNK_ORE);
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "white_iron_chunk_ore"), WHITE_IRON_CHUNK_ORE);
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "iron_chunk_ore"), IRON_CHUNK_ORE);
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "starsilver_ore"), STARSILVER_ORE);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "magical_crystal_chunk_ore"),
|
||||
new BlockItem(MAGICAL_CRYSTAL_CHUNK_ORE, new Item.Settings().group(ITEM_GROUP)));
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "crystal_chunk_ore"),
|
||||
new BlockItem(CRYSTAL_CHUNK_ORE, new Item.Settings().group(ITEM_GROUP)));
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "white_iron_chunk_ore"),
|
||||
new BlockItem(WHITE_IRON_CHUNK_ORE, new Item.Settings().group(ITEM_GROUP)));
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "iron_chunk_ore"),
|
||||
new BlockItem(IRON_CHUNK_ORE, new Item.Settings().group(ITEM_GROUP)));
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "starsilver_ore"),
|
||||
new BlockItem(STARSILVER_ORE, new Item.Settings().group(ITEM_GROUP)));
|
||||
|
||||
// crops
|
||||
((TeyvatCropBlock)RICE_block).setSeedsItem(RICE_SEED_item);
|
||||
((TeyvatCropBlock)TOMATO_block).setSeedsItem(TOMATO_item);
|
||||
((TeyvatCropBlock)ONION_block).setSeedsItem(ONION_item);
|
||||
((TeyvatCropBlock)CABBAGE_block).setSeedsItem(CABBAGE_item);
|
||||
((TeyvatCropBlock)RADDISH_block).setSeedsItem(RADDISH_item);
|
||||
|
||||
BlockRenderLayerMap.INSTANCE.putBlock(RICE_block, RenderLayer.getCutoutMipped());
|
||||
BlockRenderLayerMap.INSTANCE.putBlock(TOMATO_block, RenderLayer.getCutoutMipped());
|
||||
BlockRenderLayerMap.INSTANCE.putBlock(ONION_block, RenderLayer.getCutoutMipped());
|
||||
BlockRenderLayerMap.INSTANCE.putBlock(CABBAGE_block, RenderLayer.getCutoutMipped());
|
||||
BlockRenderLayerMap.INSTANCE.putBlock(RADDISH_block, RenderLayer.getCutoutMipped());
|
||||
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "rice"), RICE_item);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "tomato"), TOMATO_item);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "onion"), ONION_item);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "cabbage"), CABBAGE_item);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "raddish"), RADDISH_item);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "rice_seed"), RICE_SEED_item);
|
||||
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "rice"), RICE_block);
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "tomato"), TOMATO_block);
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "onion"), ONION_block);
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "cabbage"), CABBAGE_block);
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "raddish"), RADDISH_block);
|
||||
|
||||
// ore gen
|
||||
RegisterOreGeneration("oregen_magical_crystal_ore", OREGEN_MAGICAL_CRYSTAL_CHUNK_ORE);
|
||||
RegisterOreGeneration("oregen_crystal_ore", OREGEN_CRYSTAL_CHUNK_ORE);
|
||||
RegisterOreGeneration("oregen_white_iron_ore", OREGEN_WHITE_IRON_CHUNK_ORE);
|
||||
RegisterOreGeneration("oregen_iron_ore", OREGEN_IRON_CHUNK_ORE);
|
||||
RegisterOreGeneration("oregen_starsilver_ore", OREGEN_STARSILVER_ORE);
|
||||
}
|
||||
}
|
@ -1,11 +1,19 @@
|
||||
package net.yyc12345.teyvatcraft;
|
||||
|
||||
import net.fabricmc.api.ModInitializer;
|
||||
import net.yyc12345.teyvatcraft.RegisterManager;
|
||||
import net.yyc12345.teyvatcraft.init.BlocksManager;
|
||||
import net.yyc12345.teyvatcraft.init.DungeonManager;
|
||||
import net.yyc12345.teyvatcraft.init.ItemsManager;
|
||||
import net.yyc12345.teyvatcraft.init.TerrainsManager;
|
||||
import net.yyc12345.teyvatcraft.init.VillagerManager;
|
||||
|
||||
public class TeyvatCraft implements ModInitializer {
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
RegisterManager.RegisterAll();
|
||||
BlocksManager.RegisterAll();
|
||||
ItemsManager.RegisterAll();
|
||||
TerrainsManager.RegisterAll();
|
||||
VillagerManager.RegisterAll();
|
||||
DungeonManager.RegisterAll();
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,49 @@
|
||||
package net.yyc12345.teyvatcraft.blocks;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.SweetBerryBushBlock;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemConvertible;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.sound.SoundCategory;
|
||||
import net.minecraft.sound.SoundEvents;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.hit.BlockHitResult;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class TeyvatHarvestablePlantBlock extends SweetBerryBushBlock {
|
||||
|
||||
private Item droppedItem;
|
||||
|
||||
public TeyvatHarvestablePlantBlock(Settings settings, Item droppedItem) {
|
||||
super(settings);
|
||||
this.droppedItem = droppedItem;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEntityCollision(BlockState state, World world, BlockPos pos, Entity entity) {
|
||||
// revoke sweet berry bush default operation
|
||||
return;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) {
|
||||
int i = ((Integer)state.get(AGE)).intValue();
|
||||
boolean bl = (i == 3);
|
||||
if (!bl && player.getStackInHand(hand).getItem() == Items.BONE_MEAL)
|
||||
return ActionResult.PASS;
|
||||
if (i > 1) {
|
||||
int j = 1 + world.random.nextInt(2);
|
||||
dropStack(world, pos, new ItemStack((ItemConvertible)droppedItem, j + (bl ? 1 : 0)));
|
||||
world.playSound(null, pos, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + world.random.nextFloat() * 0.4F);
|
||||
world.setBlockState(pos, (BlockState)state.with(AGE, Integer.valueOf(1)), 2);
|
||||
return ActionResult.success(world.isClient);
|
||||
}
|
||||
return super.onUse(state, world, pos, player, hand, hit);
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
package net.yyc12345.teyvatcraft.init;
|
||||
|
||||
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricMaterialBuilder;
|
||||
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.Material;
|
||||
import net.minecraft.block.MaterialColor;
|
||||
import net.minecraft.block.OreBlock;
|
||||
import net.minecraft.client.render.RenderLayer;
|
||||
import net.minecraft.sound.BlockSoundGroup;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
import net.yyc12345.teyvatcraft.blocks.TeyvatCropBlock;
|
||||
|
||||
public class BlocksManager {
|
||||
|
||||
// ==================== ore
|
||||
public static final Block MAGICAL_CRYSTAL_CHUNK_ORE = new OreBlock(FabricBlockSettings.of(new FabricMaterialBuilder(MaterialColor.STONE).build()).breakByTool(FabricToolTags.PICKAXES, 4).requiresTool().strength(4.0F, 4.0F));
|
||||
public static final Block CRYSTAL_CHUNK_ORE = new OreBlock(FabricBlockSettings.of(new FabricMaterialBuilder(MaterialColor.STONE).build()).breakByTool(FabricToolTags.PICKAXES, 3).requiresTool().strength(4.0F, 4.0F));
|
||||
public static final Block WHITE_IRON_CHUNK_ORE = new OreBlock(FabricBlockSettings.of(new FabricMaterialBuilder(MaterialColor.STONE).build()).breakByTool(FabricToolTags.PICKAXES, 2).requiresTool().strength(3.0F, 3.0F));
|
||||
public static final Block IRON_CHUNK_ORE = new OreBlock(FabricBlockSettings.of(new FabricMaterialBuilder(MaterialColor.STONE).build()).breakByTool(FabricToolTags.PICKAXES, 1).requiresTool().strength(3.0F, 3.0F));
|
||||
public static final Block STARSILVER_ORE = new OreBlock(FabricBlockSettings.of(new FabricMaterialBuilder(MaterialColor.STONE).build()).breakByTool(FabricToolTags.PICKAXES, 1).requiresTool().strength(2.0F, 2.0F));
|
||||
|
||||
// ==================== crops
|
||||
public static final Block RICE = new TeyvatCropBlock(FabricBlockSettings.of(Material.PLANT).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP).nonOpaque());
|
||||
public static final Block TOMATO = new TeyvatCropBlock(FabricBlockSettings.of(Material.PLANT).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP));
|
||||
public static final Block ONION = new TeyvatCropBlock(FabricBlockSettings.of(Material.PLANT).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP));
|
||||
public static final Block CABBAGE = new TeyvatCropBlock(FabricBlockSettings.of(Material.PLANT).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP));
|
||||
public static final Block RADDISH = new TeyvatCropBlock(FabricBlockSettings.of(Material.PLANT).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP));
|
||||
|
||||
|
||||
public static void RegisterAll() {
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "magical_crystal_chunk_ore"), MAGICAL_CRYSTAL_CHUNK_ORE);
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "crystal_chunk_ore"), CRYSTAL_CHUNK_ORE);
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "white_iron_chunk_ore"), WHITE_IRON_CHUNK_ORE);
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "iron_chunk_ore"), IRON_CHUNK_ORE);
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "starsilver_ore"), STARSILVER_ORE);
|
||||
|
||||
// crops
|
||||
((TeyvatCropBlock)RICE).setSeedsItem(ItemsManager.RICE_SEED);
|
||||
((TeyvatCropBlock)TOMATO).setSeedsItem(ItemsManager.TOMATO);
|
||||
((TeyvatCropBlock)ONION).setSeedsItem(ItemsManager.ONION);
|
||||
((TeyvatCropBlock)CABBAGE).setSeedsItem(ItemsManager.CABBAGE);
|
||||
((TeyvatCropBlock)RADDISH).setSeedsItem(ItemsManager.RADDISH);
|
||||
|
||||
BlockRenderLayerMap.INSTANCE.putBlock(RICE, RenderLayer.getCutoutMipped());
|
||||
BlockRenderLayerMap.INSTANCE.putBlock(TOMATO, RenderLayer.getCutoutMipped());
|
||||
BlockRenderLayerMap.INSTANCE.putBlock(ONION, RenderLayer.getCutoutMipped());
|
||||
BlockRenderLayerMap.INSTANCE.putBlock(CABBAGE, RenderLayer.getCutoutMipped());
|
||||
BlockRenderLayerMap.INSTANCE.putBlock(RADDISH, RenderLayer.getCutoutMipped());
|
||||
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "rice"), RICE);
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "tomato"), TOMATO);
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "onion"), ONION);
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "cabbage"), CABBAGE);
|
||||
Registry.register(Registry.BLOCK, new Identifier("teyvatcraft", "raddish"), RADDISH);
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package net.yyc12345.teyvatcraft.init;
|
||||
|
||||
public class DungeonManager {
|
||||
public static void RegisterAll() {
|
||||
|
||||
}
|
||||
}
|
102
src/main/java/net/yyc12345/teyvatcraft/init/ItemsManager.java
Normal file
102
src/main/java/net/yyc12345/teyvatcraft/init/ItemsManager.java
Normal file
@ -0,0 +1,102 @@
|
||||
package net.yyc12345.teyvatcraft.init;
|
||||
|
||||
import net.minecraft.util.registry.Registry;
|
||||
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
|
||||
import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder;
|
||||
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.item.ItemGroup;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.util.Rarity;
|
||||
import net.minecraft.item.BlockItem;
|
||||
import net.minecraft.item.FoodComponent;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemConvertible;
|
||||
import static net.minecraft.block.ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE;
|
||||
import net.yyc12345.teyvatcraft.items.SeedItem;
|
||||
|
||||
public class ItemsManager {
|
||||
public static final ItemGroup ITEM_GROUP = FabricItemGroupBuilder.build(
|
||||
new Identifier("teyvatcraft", "general"),
|
||||
() -> new ItemStack(Items.NETHER_STAR));
|
||||
|
||||
// ==================== gnosis
|
||||
public static final Item GNOSIS_DENDRO = new Item(new FabricItemSettings().group(ITEM_GROUP).maxCount(1).rarity(Rarity.EPIC).fireproof());
|
||||
public static final Item GNOSIS_HYDRO = new Item(new FabricItemSettings().group(ITEM_GROUP).maxCount(1).rarity(Rarity.EPIC).fireproof());
|
||||
public static final Item GNOSIS_PYRO = new Item(new FabricItemSettings().group(ITEM_GROUP).maxCount(1).rarity(Rarity.EPIC).fireproof());
|
||||
public static final Item GNOSIS_GEO = new Item(new FabricItemSettings().group(ITEM_GROUP).maxCount(1).rarity(Rarity.EPIC).fireproof());
|
||||
public static final Item GNOSIS_ELECTRO = new Item(new FabricItemSettings().group(ITEM_GROUP).maxCount(1).rarity(Rarity.EPIC).fireproof());
|
||||
public static final Item GNOSIS_ANEMO = new Item(new FabricItemSettings().group(ITEM_GROUP).maxCount(1).rarity(Rarity.EPIC).fireproof());
|
||||
public static final Item GNOSIS_CRYO = new Item(new FabricItemSettings().group(ITEM_GROUP).maxCount(1).rarity(Rarity.EPIC).fireproof());
|
||||
|
||||
// ==================== ore
|
||||
public static final Item MAGICAL_CRYSTAL_CHUNK = new Item(new FabricItemSettings().group(ITEM_GROUP));
|
||||
public static final Item CRYSTAL_CHUNK = new Item(new FabricItemSettings().group(ITEM_GROUP));
|
||||
public static final Item WHITE_IRON_CHUNK = new Item(new FabricItemSettings().group(ITEM_GROUP));
|
||||
public static final Item IRON_CHUNK = new Item(new FabricItemSettings().group(ITEM_GROUP));
|
||||
public static final Item STARSILVER = new Item(new FabricItemSettings().group(ITEM_GROUP));
|
||||
|
||||
// ==================== weapon enhancement
|
||||
public static final Item MYSTIC_ENHANCEMENT_ORE = new Item(new FabricItemSettings().group(ITEM_GROUP));
|
||||
public static final Item FINE_ENHANCEMENT_ORE = new Item(new FabricItemSettings().group(ITEM_GROUP));
|
||||
public static final Item ENHANCEMENT_ORE = new Item(new FabricItemSettings().group(ITEM_GROUP));
|
||||
|
||||
// ==================== crops
|
||||
public static final Item RICE = new Item(new FabricItemSettings().group(ITEM_GROUP).food((new FoodComponent.Builder()).hunger(1).saturationModifier(0.3F).build()));
|
||||
public static final Item TOMATO = new SeedItem(BlocksManager.TOMATO, new FabricItemSettings().group(ITEM_GROUP).food((new FoodComponent.Builder()).hunger(1).saturationModifier(0.3F).build()));
|
||||
public static final Item ONION = new SeedItem(BlocksManager.ONION, new FabricItemSettings().group(ITEM_GROUP).food((new FoodComponent.Builder()).hunger(1).saturationModifier(0.3F).build()));
|
||||
public static final Item CABBAGE = new SeedItem(BlocksManager.CABBAGE, new FabricItemSettings().group(ITEM_GROUP).food((new FoodComponent.Builder()).hunger(1).saturationModifier(0.3F).build()));
|
||||
public static final Item RADDISH = new SeedItem(BlocksManager.RADDISH, new FabricItemSettings().group(ITEM_GROUP).food((new FoodComponent.Builder()).hunger(1).saturationModifier(0.3F).build()));
|
||||
public static final Item RICE_SEED = new SeedItem(BlocksManager.RICE, new FabricItemSettings().group(ITEM_GROUP));
|
||||
|
||||
public static void registerCompostableItem(float levelIncreaseChance, ItemConvertible item) {
|
||||
ITEM_TO_LEVEL_INCREASE_CHANCE.put(item.asItem(), levelIncreaseChance);
|
||||
}
|
||||
|
||||
public static void RegisterAll() {
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "gnosis_dendro"), GNOSIS_DENDRO);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "gnosis_hydro"), GNOSIS_HYDRO);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "gnosis_pyro"), GNOSIS_PYRO);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "gnosis_geo"), GNOSIS_GEO);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "gnosis_electro"), GNOSIS_ELECTRO);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "gnosis_anemo"), GNOSIS_ANEMO);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "gnosis_cryo"), GNOSIS_CRYO);
|
||||
|
||||
// ore
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "magical_crystal_chunk"), MAGICAL_CRYSTAL_CHUNK);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "crystal_chunk"), CRYSTAL_CHUNK);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "white_iron_chunk"), WHITE_IRON_CHUNK);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "iron_chunk"), IRON_CHUNK);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "starsilver"), STARSILVER);
|
||||
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "mystic_enhancement_ore"), MYSTIC_ENHANCEMENT_ORE);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "fine_enhancement_ore"), FINE_ENHANCEMENT_ORE);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "enhancement_ore"), ENHANCEMENT_ORE);
|
||||
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "magical_crystal_chunk_ore"),
|
||||
new BlockItem(BlocksManager.MAGICAL_CRYSTAL_CHUNK_ORE, new Item.Settings().group(ITEM_GROUP)));
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "crystal_chunk_ore"),
|
||||
new BlockItem(BlocksManager.CRYSTAL_CHUNK_ORE, new Item.Settings().group(ITEM_GROUP)));
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "white_iron_chunk_ore"),
|
||||
new BlockItem(BlocksManager.WHITE_IRON_CHUNK_ORE, new Item.Settings().group(ITEM_GROUP)));
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "iron_chunk_ore"),
|
||||
new BlockItem(BlocksManager.IRON_CHUNK_ORE, new Item.Settings().group(ITEM_GROUP)));
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "starsilver_ore"),
|
||||
new BlockItem(BlocksManager.STARSILVER_ORE, new Item.Settings().group(ITEM_GROUP)));
|
||||
|
||||
// crops
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "rice"), RICE);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "tomato"), TOMATO);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "onion"), ONION);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "cabbage"), CABBAGE);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "raddish"), RADDISH);
|
||||
Registry.register(Registry.ITEM, new Identifier("teyvatcraft", "rice_seed"), RICE_SEED);
|
||||
registerCompostableItem(0.65f, RICE);
|
||||
registerCompostableItem(0.65f, TOMATO);
|
||||
registerCompostableItem(0.65f, ONION);
|
||||
registerCompostableItem(0.65f, CABBAGE);
|
||||
registerCompostableItem(0.65f, RADDISH);
|
||||
registerCompostableItem(0.3f, RICE_SEED);
|
||||
}
|
||||
}
|
@ -0,0 +1,80 @@
|
||||
package net.yyc12345.teyvatcraft.init;
|
||||
|
||||
import net.minecraft.util.registry.BuiltinRegistries;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
import net.minecraft.util.registry.RegistryKey;
|
||||
import net.fabricmc.fabric.api.biome.v1.BiomeModifications;
|
||||
import net.fabricmc.fabric.api.biome.v1.BiomeSelectors;
|
||||
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.world.gen.GenerationStep;
|
||||
import net.minecraft.world.gen.decorator.Decorator;
|
||||
import net.minecraft.world.gen.decorator.RangeDecoratorConfig;
|
||||
import net.minecraft.world.gen.feature.ConfiguredFeature;
|
||||
import net.minecraft.world.gen.feature.Feature;
|
||||
import net.minecraft.world.gen.feature.OreFeatureConfig;
|
||||
|
||||
public class TerrainsManager {
|
||||
|
||||
// ==================== ore gen
|
||||
private static ConfiguredFeature<?, ?> OREGEN_MAGICAL_CRYSTAL_CHUNK_ORE = Feature.ORE
|
||||
.configure(new OreFeatureConfig(
|
||||
OreFeatureConfig.Rules.BASE_STONE_OVERWORLD,
|
||||
BlocksManager.MAGICAL_CRYSTAL_CHUNK_ORE.getDefaultState(),
|
||||
1)) // vein size
|
||||
.decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(0, 0, 12)))
|
||||
.spreadHorizontally()
|
||||
.repeat(5); // number of veins per chunk
|
||||
|
||||
private static ConfiguredFeature<?, ?> OREGEN_CRYSTAL_CHUNK_ORE = Feature.ORE
|
||||
.configure(new OreFeatureConfig(
|
||||
OreFeatureConfig.Rules.BASE_STONE_OVERWORLD,
|
||||
BlocksManager.CRYSTAL_CHUNK_ORE.getDefaultState(),
|
||||
4))
|
||||
.decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(0, 0, 32)))
|
||||
.spreadHorizontally()
|
||||
.repeat(12);
|
||||
|
||||
private static ConfiguredFeature<?, ?> OREGEN_WHITE_IRON_CHUNK_ORE = Feature.ORE
|
||||
.configure(new OreFeatureConfig(
|
||||
OreFeatureConfig.Rules.BASE_STONE_OVERWORLD,
|
||||
BlocksManager.WHITE_IRON_CHUNK_ORE.getDefaultState(),
|
||||
4))
|
||||
.decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(0, 0, 64)))
|
||||
.spreadHorizontally()
|
||||
.repeat(24);
|
||||
|
||||
private static ConfiguredFeature<?, ?> OREGEN_IRON_CHUNK_ORE = Feature.ORE
|
||||
.configure(new OreFeatureConfig(
|
||||
OreFeatureConfig.Rules.BASE_STONE_OVERWORLD,
|
||||
BlocksManager.IRON_CHUNK_ORE.getDefaultState(),
|
||||
8))
|
||||
.decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(0, 0, 64)))
|
||||
.spreadHorizontally()
|
||||
.repeat(24);
|
||||
|
||||
private static ConfiguredFeature<?, ?> OREGEN_STARSILVER_ORE = Feature.ORE
|
||||
.configure(new OreFeatureConfig(
|
||||
OreFeatureConfig.Rules.BASE_STONE_OVERWORLD,
|
||||
BlocksManager.IRON_CHUNK_ORE.getDefaultState(),
|
||||
4))
|
||||
.decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(0, 0, 64)))
|
||||
.spreadHorizontally()
|
||||
.repeat(24);
|
||||
|
||||
private static void RegisterOreGeneration(String mIdentifier, ConfiguredFeature<?, ?> genStasticas) {
|
||||
RegistryKey<ConfiguredFeature<?, ?>> regKey = RegistryKey.of(Registry.CONFIGURED_FEATURE_WORLDGEN,
|
||||
new Identifier("teyvatcraft", mIdentifier));
|
||||
Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, regKey.getValue(), genStasticas);
|
||||
BiomeModifications.addFeature(BiomeSelectors.foundInOverworld(), GenerationStep.Feature.UNDERGROUND_ORES, regKey);
|
||||
}
|
||||
|
||||
public static void RegisterAll() {
|
||||
// ore gen
|
||||
RegisterOreGeneration("oregen_magical_crystal_ore", OREGEN_MAGICAL_CRYSTAL_CHUNK_ORE);
|
||||
RegisterOreGeneration("oregen_crystal_ore", OREGEN_CRYSTAL_CHUNK_ORE);
|
||||
RegisterOreGeneration("oregen_white_iron_ore", OREGEN_WHITE_IRON_CHUNK_ORE);
|
||||
RegisterOreGeneration("oregen_iron_ore", OREGEN_IRON_CHUNK_ORE);
|
||||
RegisterOreGeneration("oregen_starsilver_ore", OREGEN_STARSILVER_ORE);
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package net.yyc12345.teyvatcraft.init;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
|
||||
import net.minecraft.item.Item;
|
||||
import net.yyc12345.teyvatcraft.mixin.VillagerAccess;
|
||||
|
||||
public class VillagerManager {
|
||||
|
||||
public static void RegisterAll() {
|
||||
// register villager food
|
||||
ImmutableMap.Builder<Item, Integer> villagerFoodItems = new ImmutableMap.Builder<Item, Integer>().putAll(VillagerAccess.getItemFoodValues());
|
||||
villagerFoodItems.put(ItemsManager.RICE, ItemsManager.RICE.getFoodComponent().getHunger());
|
||||
villagerFoodItems.put(ItemsManager.TOMATO, ItemsManager.TOMATO.getFoodComponent().getHunger());
|
||||
villagerFoodItems.put(ItemsManager.ONION, ItemsManager.ONION.getFoodComponent().getHunger());
|
||||
villagerFoodItems.put(ItemsManager.CABBAGE, ItemsManager.CABBAGE.getFoodComponent().getHunger());
|
||||
villagerFoodItems.put(ItemsManager.RADDISH, ItemsManager.RADDISH.getFoodComponent().getHunger());
|
||||
VillagerAccess.setItemFoodValues(villagerFoodItems.build());
|
||||
|
||||
// register villager gatherables
|
||||
ImmutableSet.Builder<Item> villagerGatherables= new ImmutableSet.Builder<Item>().addAll(VillagerAccess.getGatherableItems());
|
||||
villagerGatherables.add(ItemsManager.RICE);
|
||||
villagerGatherables.add(ItemsManager.TOMATO);
|
||||
villagerGatherables.add(ItemsManager.ONION);
|
||||
villagerGatherables.add(ItemsManager.CABBAGE);
|
||||
villagerGatherables.add(ItemsManager.RADDISH);
|
||||
VillagerAccess.setGatherableItems(villagerGatherables.build());
|
||||
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
|
||||
package net.yyc12345.teyvatcraft.items.gnosis;
|
||||
|
||||
import net.yyc12345.teyvatcraft.items.gnosis.GnosisPrototype;
|
||||
import net.minecraft.item.Item.Settings;
|
||||
|
||||
public class GnosisAnemo extends GnosisPrototype {
|
||||
public GnosisAnemo(Settings settings) {
|
||||
super(settings);
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
|
||||
package net.yyc12345.teyvatcraft.items.gnosis;
|
||||
|
||||
import net.yyc12345.teyvatcraft.items.gnosis.GnosisPrototype;
|
||||
import net.minecraft.item.Item.Settings;
|
||||
|
||||
public class GnosisCryo extends GnosisPrototype {
|
||||
public GnosisCryo(Settings settings) {
|
||||
super(settings);
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
|
||||
package net.yyc12345.teyvatcraft.items.gnosis;
|
||||
|
||||
import net.yyc12345.teyvatcraft.items.gnosis.GnosisPrototype;
|
||||
import net.minecraft.item.Item.Settings;
|
||||
|
||||
public class GnosisDendro extends GnosisPrototype {
|
||||
public GnosisDendro(Settings settings) {
|
||||
super(settings);
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
|
||||
package net.yyc12345.teyvatcraft.items.gnosis;
|
||||
|
||||
import net.yyc12345.teyvatcraft.items.gnosis.GnosisPrototype;
|
||||
import net.minecraft.item.Item.Settings;
|
||||
|
||||
public class GnosisElectro extends GnosisPrototype {
|
||||
public GnosisElectro(Settings settings) {
|
||||
super(settings);
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
|
||||
package net.yyc12345.teyvatcraft.items.gnosis;
|
||||
|
||||
import net.yyc12345.teyvatcraft.items.gnosis.GnosisPrototype;
|
||||
import net.minecraft.item.Item.Settings;
|
||||
|
||||
public class GnosisGeo extends GnosisPrototype {
|
||||
public GnosisGeo(Settings settings) {
|
||||
super(settings);
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
|
||||
package net.yyc12345.teyvatcraft.items.gnosis;
|
||||
|
||||
import net.yyc12345.teyvatcraft.items.gnosis.GnosisPrototype;
|
||||
import net.minecraft.item.Item.Settings;
|
||||
|
||||
public class GnosisHydro extends GnosisPrototype {
|
||||
public GnosisHydro(Settings settings) {
|
||||
super(settings);
|
||||
}
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
package net.yyc12345.teyvatcraft.items.gnosis;
|
||||
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.Item.Settings;
|
||||
|
||||
public class GnosisPrototype extends Item {
|
||||
public GnosisPrototype(Settings settings) {
|
||||
|
@ -1,11 +0,0 @@
|
||||
|
||||
package net.yyc12345.teyvatcraft.items.gnosis;
|
||||
|
||||
import net.yyc12345.teyvatcraft.items.gnosis.GnosisPrototype;
|
||||
import net.minecraft.item.Item.Settings;
|
||||
|
||||
public class GnosisPyro extends GnosisPrototype {
|
||||
public GnosisPyro(Settings settings) {
|
||||
super(settings);
|
||||
}
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
package net.yyc12345.teyvatcraft.items.vision;
|
||||
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.Item.Settings;
|
||||
|
||||
public class VisionPrototype extends Item {
|
||||
public VisionPrototype(Settings settings) {
|
||||
|
@ -10,6 +10,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
public class TeyvatCraftMixin {
|
||||
@Inject(at = @At("HEAD"), method = "init()V")
|
||||
private void init(CallbackInfo info) {
|
||||
System.out.println("This line is printed by an example mod mixin!");
|
||||
//System.out.println("This line is printed by an example mod mixin!");
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,34 @@
|
||||
package net.yyc12345.teyvatcraft.mixin;
|
||||
|
||||
import net.minecraft.entity.passive.VillagerEntity;
|
||||
import net.minecraft.item.Item;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@Mixin(VillagerEntity.class)
|
||||
public interface VillagerAccess {
|
||||
|
||||
@Accessor("GATHERABLE_ITEMS")
|
||||
static Set<Item> getGatherableItems() {
|
||||
throw new AssertionError();
|
||||
}
|
||||
|
||||
@Accessor("GATHERABLE_ITEMS")
|
||||
static void setGatherableItems(Set<Item> items) {
|
||||
throw new AssertionError();
|
||||
}
|
||||
|
||||
|
||||
@Accessor("ITEM_FOOD_VALUES")
|
||||
static Map<Item, Integer> getItemFoodValues() {
|
||||
throw new AssertionError();
|
||||
}
|
||||
|
||||
@Accessor("ITEM_FOOD_VALUES")
|
||||
static void setItemFoodValues(Map<Item, Integer> food) {
|
||||
throw new AssertionError();
|
||||
}
|
||||
}
|
@ -6,7 +6,8 @@
|
||||
"mixins": [
|
||||
],
|
||||
"client": [
|
||||
"TeyvatCraftMixin"
|
||||
"TeyvatCraftMixin",
|
||||
"VillagerAccess"
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
|
Loading…
Reference in New Issue
Block a user