Skip to content

Commit

Permalink
Expose Player in the value event
Browse files Browse the repository at this point in the history
  • Loading branch information
jaredlll08 committed Jul 26, 2022
1 parent 867c8c1 commit ec51b36
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 20 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.blamejared.clumps.api.events;

import net.minecraft.world.entity.player.Player;

/**
* Used to mutate the value of experience before repairing player's items and giving the rest to the player.
*/
Expand All @@ -15,8 +17,15 @@ public interface IValueEvent {
/**
* Gets the value of the experience orb.
*
* @return the value of the experience orb.
* @return The value of the experience orb.
*/
int getValue();

/**
* Gets the player that the experience is being given to.
*
* @return The player the experience is being given to.
*/
Player getPlayer();

}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.UnaryOperator;
import java.util.stream.Collectors;
import java.util.stream.Stream;
Expand Down Expand Up @@ -85,7 +84,7 @@ public void playerTouch(Player player, CallbackInfo ci) {
player.take(this, 1);

clumps$getClumpedMap().forEach((value, amount) -> {
Either<IValueEvent, Integer> result = Services.EVENT.fireValueEvent(value);
Either<IValueEvent, Integer> result = Services.EVENT.fireValueEvent(player, value);
int actualValue = result.map(IValueEvent::getValue, UnaryOperator.identity());

for(int i = 0; i < amount; i++) {
Expand Down Expand Up @@ -128,7 +127,10 @@ private static void tryMergeToExisting(ServerLevel serverLevel, Vec3 vec3, int v
((IClumpedOrb) experienceOrb).clumps$setClumpedMap(Stream.of(clumpedMap, Collections.singletonMap(value, 1))
.flatMap(map -> map.entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, Integer::sum)));
((ExperienceOrbAccess) experienceOrb).clumps$setCount(clumpedMap.values().stream().reduce(Integer::sum).orElse(1));
((ExperienceOrbAccess) experienceOrb).clumps$setCount(clumpedMap.values()
.stream()
.reduce(Integer::sum)
.orElse(1));
((ExperienceOrbAccess) experienceOrb).clumps$setAge(0);
cir.setReturnValue(true);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@

import com.blamejared.clumps.api.events.IValueEvent;
import com.mojang.datafixers.util.Either;
import net.minecraft.world.entity.player.Player;

import java.util.Optional;

public interface IEventHelper {

Either<IValueEvent, Integer> fireValueEvent(int value);
Either<IValueEvent, Integer> fireValueEvent(Player player, int value);

}
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@

package com.blamejared.clumps.api.events;

import net.minecraft.world.entity.player.Player;

/**
* Used to mutate the value of experience before repairing player's items and giving the rest to the player.
*/
public class ValueEvent implements IValueEvent {

private final Player player;
private int value;

public ValueEvent(int value) {
public ValueEvent(Player player, int value) {

this.player = player;
this.value = value;
}

Expand All @@ -27,12 +30,23 @@ public void setValue(int value) {
/**
* Gets the value of the experience orb.
*
* @return the value of the experience orb.
* @return The value of the experience orb.
*/
@Override
public int getValue() {

return value;
return this.value;
}

/**
* Gets the player that the experience is being given to.
*
* @return The player the experience is being given to.
*/
@Override
public Player getPlayer() {

return this.player;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,14 @@
import com.blamejared.clumps.api.events.ValueEvent;
import com.mojang.datafixers.util.Either;
import net.fabricmc.loader.api.FabricLoader;

import java.util.Optional;
import net.minecraft.world.entity.player.Player;

public class FabricEventHandler implements IEventHelper {

@Override
public Either<IValueEvent, Integer> fireValueEvent(int value) {
public Either<IValueEvent, Integer> fireValueEvent(Player player, int value) {

ValueEvent event = new ValueEvent(value);
ValueEvent event = new ValueEvent(player, value);
if(FabricLoader.getInstance().isModLoaded("fabric")) {
ClumpsEvents.VALUE_EVENT.invoker().handle(event);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,50 @@
package com.blamejared.clumps.api.events;

import net.minecraft.world.entity.player.Player;
import net.minecraftforge.eventbus.api.Event;

public class ValueEvent extends Event implements IValueEvent {

private final Player player;
private int value;

public ValueEvent(int value) {
public ValueEvent(Player player, int value) {

this.player = player;
this.value = value;
}

/**
* Sets the value of the experience orb.
*
* @param value The new value to set.
*/
@Override
public void setValue(int value) {

this.value = value;
}

/**
* Gets the value of the experience orb.
*
* @return The value of the experience orb.
*/
@Override
public int getValue() {

return value;
return this.value;
}

/**
* Gets the player that the experience is being given to.
*
* @return The player the experience is being given to.
*/
@Override
public Player getPlayer() {

return this.player;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,15 @@
import com.blamejared.clumps.api.events.IValueEvent;
import com.blamejared.clumps.api.events.ValueEvent;
import com.mojang.datafixers.util.Either;
import net.minecraft.world.entity.player.Player;
import net.minecraftforge.common.MinecraftForge;

import java.util.Optional;

public class ForgeEventHandler implements IEventHelper {

@Override
public Either<IValueEvent, Integer> fireValueEvent(int value) {
public Either<IValueEvent, Integer> fireValueEvent(Player player, int value) {

ValueEvent event = new ValueEvent(value);
ValueEvent event = new ValueEvent(player, value);
MinecraftForge.EVENT_BUS.post(event);
return Either.left(event);
}
Expand Down

0 comments on commit ec51b36

Please sign in to comment.