Define Barrel Material
This commit is contained in:
parent
95585d6b0f
commit
f85e5396b7
|
|
@ -0,0 +1,59 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package thedarkcolour.exdeorum.material;
|
||||
|
||||
import com.mojang.datafixers.util.Function6;
|
||||
import com.mojang.serialization.Codec;
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||
import net.minecraft.world.level.block.SoundType;
|
||||
import thedarkcolour.exdeorum.ExDeorum;
|
||||
|
||||
public record BarrelMaterial(
|
||||
// The sound this block makes (a string corresponding to a field in SoundType, or an unqualified field reference like me.mymod.block.Sounds.MODDED_SOUND_TYPE)
|
||||
SoundType soundType,
|
||||
// The hardness of the barrel when harvesting
|
||||
float strength,
|
||||
// Whether this barrel needs a special tool to be harvested (ex. stone barrel only drops if mined with pickaxe)
|
||||
boolean needsCorrectTool,
|
||||
// Whether the barrel can hold hot fluids
|
||||
boolean fireproof,
|
||||
// Numeric ID of map color (these can be found on Minecraft Wiki as well as in MapColor.java)
|
||||
int mapColor,
|
||||
// ID of mod that should be present
|
||||
String requiredModId
|
||||
) {
|
||||
public static final Codec<BarrelMaterial> CODEC = RecordCodecBuilder.create(builder -> {
|
||||
return builder.group(
|
||||
Codec.STRING.fieldOf("sound_type").xmap(BarrelMaterial::readSoundType, BarrelMaterial::writeSoundType).forGetter(BarrelMaterial::soundType),
|
||||
Codec.FLOAT.fieldOf("strength").forGetter(BarrelMaterial::strength),
|
||||
Codec.BOOL.fieldOf("needs_correct_tool").forGetter(BarrelMaterial::needsCorrectTool),
|
||||
Codec.BOOL.fieldOf("fireproof").forGetter(BarrelMaterial::fireproof),
|
||||
Codec.INT.fieldOf("map_color").forGetter(BarrelMaterial::mapColor),
|
||||
Codec.STRING.optionalFieldOf("required_mod_id", ExDeorum.ID).forGetter(BarrelMaterial::requiredModId)
|
||||
).apply(builder, BarrelMaterial::new);
|
||||
});
|
||||
|
||||
private static SoundType readSoundType(String soundType) {
|
||||
return null;
|
||||
}
|
||||
|
||||
private static String writeSoundType(SoundType soundType) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
7
src/main/resources/default_materials/barrel/oak.json
Normal file
7
src/main/resources/default_materials/barrel/oak.json
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"type": "exdeorum:barrel",
|
||||
"sound_type": "wood",
|
||||
"strength": 4.0,
|
||||
"fireproof": false,
|
||||
"map_color": "wood",
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user