Added a configuration screen; bumped version
This commit is contained in:
parent
55a8fbef43
commit
8bdffdb09f
8 changed files with 80 additions and 35 deletions
11
build.gradle
11
build.gradle
|
@ -11,24 +11,13 @@ version = project.mod_version
|
|||
group = project.maven_group
|
||||
|
||||
repositories {
|
||||
// Add repositories to retrieve artifacts from in here.
|
||||
// You should only use this when depending on other mods because
|
||||
// Loom adds the essential maven repositories to download Minecraft and libraries from automatically.
|
||||
// See https://docs.gradle.org/current/userguide/declaring_repositories.html
|
||||
// for more information about repositories.
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// To change the versions see the gradle.properties file
|
||||
minecraft "com.mojang:minecraft:${project.minecraft_version}"
|
||||
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
|
||||
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
|
||||
|
||||
// Fabric API. This is technically optional, but you probably want it anyway.
|
||||
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
|
||||
|
||||
// PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs.
|
||||
// You may need to force-disable transitiveness on them.
|
||||
}
|
||||
|
||||
processResources {
|
||||
|
|
|
@ -2,13 +2,12 @@
|
|||
org.gradle.jvmargs=-Xmx1G
|
||||
|
||||
# Fabric Properties
|
||||
# check these on https://fabricmc.net/versions.html
|
||||
minecraft_version=1.17.1
|
||||
yarn_mappings=1.17.1+build.39
|
||||
loader_version=0.11.6
|
||||
|
||||
# Mod Properties
|
||||
mod_version = 1.0.1
|
||||
mod_version = 1.0.2
|
||||
maven_group = dk.palmoe
|
||||
archives_base_name = immersivexp
|
||||
|
||||
|
|
63
src/main/java/dk/palmoe/immersivexp/Config.java
Normal file
63
src/main/java/dk/palmoe/immersivexp/Config.java
Normal file
|
@ -0,0 +1,63 @@
|
|||
package dk.palmoe.immersivexp;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.Reader;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.stream.JsonWriter;
|
||||
|
||||
import org.apache.commons.io.IOUtils;;
|
||||
|
||||
public class Config {
|
||||
public int logBaseXP = 1;
|
||||
public int logRandXP = 2;
|
||||
public int cropBaseXP = 1;
|
||||
public int cropRandXP = 1;
|
||||
public int berriesBaseXP = 0;
|
||||
public int berriesRandXP = 1;
|
||||
|
||||
public static final File FILE = new File("config/immersivexp.json");
|
||||
public static Config INSTANCE = null;
|
||||
|
||||
public static Config getInstance() {
|
||||
if (INSTANCE == null) {
|
||||
INSTANCE = new Config().read();
|
||||
}
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
private Config read() {
|
||||
if (!FILE.exists())
|
||||
return new Config().write();
|
||||
|
||||
Reader reader = null;
|
||||
try {
|
||||
return new Gson().fromJson(reader = new FileReader(FILE), Config.class);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw new RuntimeException(e);
|
||||
} finally {
|
||||
IOUtils.closeQuietly(reader);
|
||||
}
|
||||
}
|
||||
|
||||
private Config write() {
|
||||
Gson gson = new Gson();
|
||||
JsonWriter writer = null;
|
||||
try {
|
||||
writer = gson.newJsonWriter(new FileWriter(FILE));
|
||||
writer.setIndent(" ");
|
||||
|
||||
gson.toJson(gson.toJsonTree(this, Config.class), writer);
|
||||
} catch (Exception e) {
|
||||
ImmersiveXP.LOGGER.error("Couldn't save config");
|
||||
e.printStackTrace();
|
||||
throw new RuntimeException(e);
|
||||
} finally {
|
||||
IOUtils.closeQuietly(writer);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
}
|
|
@ -7,7 +7,6 @@ import net.minecraft.block.CropBlock;
|
|||
import net.minecraft.block.MelonBlock;
|
||||
import net.minecraft.block.SweetBerryBushBlock;
|
||||
import net.minecraft.server.world.ServerWorld;
|
||||
import net.minecraft.state.property.Property;
|
||||
import net.minecraft.tag.BlockTags;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
@ -16,10 +15,10 @@ import net.minecraft.util.registry.Registry;
|
|||
public class Events {
|
||||
public static void init() {
|
||||
PlayerBlockBreakEvents.AFTER.register((world, player, pos, state, entity) -> {
|
||||
// TODO: Make experience amount configurable
|
||||
if (world instanceof ServerWorld) {
|
||||
if (state.getBlock() instanceof CropBlock || state.getBlock() instanceof MelonBlock) {
|
||||
Util.spawnExp((ServerWorld) world, pos, 1, 1);
|
||||
Config config = Config.getInstance();
|
||||
Util.spawnXp((ServerWorld) world, pos, config.cropBaseXP, config.cropRandXP);
|
||||
}
|
||||
|
||||
if (state.isIn(BlockTags.LOGS)) {
|
||||
|
@ -27,20 +26,22 @@ public class Events {
|
|||
boolean isGrown = Util.isTreeNaturallyGrown(world, pos);
|
||||
|
||||
if (holdingAxe && isGrown) {
|
||||
Util.spawnExp((ServerWorld) world, pos, 1, 4);
|
||||
Config config = Config.getInstance();
|
||||
Util.spawnXp((ServerWorld) world, pos, config.logBaseXP, config.logRandXP);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
UseBlockCallback.EVENT.register(((player, world, hand, hitResult) -> {
|
||||
// TODO: Make experience amount configurable
|
||||
BlockState state = world.getBlockState(hitResult.getBlockPos());
|
||||
|
||||
if (state.getBlock() instanceof SweetBerryBushBlock && world instanceof ServerWorld) {
|
||||
int age = state.get(SweetBerryBushBlock.AGE);
|
||||
if (age == 3) {
|
||||
Util.spawnExp((ServerWorld) world, hitResult.getBlockPos(), 1, 1);
|
||||
Config config = Config.getInstance();
|
||||
Util.spawnXp((ServerWorld) world, hitResult.getBlockPos(), config.berriesBaseXP,
|
||||
config.berriesRandXP);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -39,8 +39,8 @@ public class Util {
|
|||
return false;
|
||||
}
|
||||
|
||||
public static void spawnExp(ServerWorld world, BlockPos pos, int min, int cap) {
|
||||
Vec3d exp_pos = new Vec3d(pos.getX(), pos.getY(), pos.getZ());
|
||||
ExperienceOrbEntity.spawn(world, exp_pos, min + world.random.nextInt(cap));
|
||||
public static void spawnXp(ServerWorld world, BlockPos pos, int min, int cap) {
|
||||
Vec3d xp_pos = new Vec3d(pos.getX(), pos.getY(), pos.getZ());
|
||||
ExperienceOrbEntity.spawn(world, xp_pos, min + world.random.nextInt(cap));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
package dk.palmoe.immersivexp.mixin;
|
||||
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
|
||||
import net.minecraft.client.gui.screen.TitleScreen;
|
||||
|
||||
@Mixin(TitleScreen.class)
|
||||
public class ImmersiveXPMixin {
|
||||
|
||||
}
|
|
@ -18,7 +18,7 @@
|
|||
"entrypoints": {
|
||||
"main": ["dk.palmoe.immersivexp.ImmersiveXP"]
|
||||
},
|
||||
"mixins": ["immersivexp.mixins.json"],
|
||||
"mixins": [],
|
||||
|
||||
"depends": {
|
||||
"fabricloader": ">=0.11.3",
|
||||
|
@ -28,5 +28,8 @@
|
|||
},
|
||||
"suggests": {
|
||||
"another-mod": "*"
|
||||
},
|
||||
"custom": {
|
||||
"modmenu": {}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
"minVersion": "0.8",
|
||||
"package": "dk.palmoe.immersivexp.mixin",
|
||||
"compatibilityLevel": "JAVA_16",
|
||||
"mixins": ["ImmersiveXPMixin"],
|
||||
"client": ["ImmersiveXPMixin"],
|
||||
"mixins": [],
|
||||
"client": [],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue