Skip to content

Commit 5150efb

Browse files
feature(#13558): add copper golem state api
1 parent 4873e3f commit 5150efb

3 files changed

Lines changed: 39 additions & 0 deletions

File tree

paper-api/src/main/java/org/bukkit/entity/CopperGolem.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,20 @@ public interface CopperGolem extends Golem, Shearable {
2525
*/
2626
void setWeatheringState(WeatheringCopperState state);
2727

28+
/**
29+
* Get the current copper golem state of the copper golem.
30+
*
31+
* @return the copper golem state
32+
*/
33+
CopperGolem.State getState();
34+
35+
/**
36+
* Set the copper golem state of the copper golem.
37+
*
38+
* @param state the new copper golem state
39+
*/
40+
void setState(CopperGolem.State state);
41+
2842
/**
2943
* Get the current oxidizing state of the copper golem.
3044
*
@@ -125,4 +139,15 @@ sealed interface AtTime extends Oxidizing permits AtTimeImpl {
125139
@ApiStatus.Internal
126140
record AtTimeImpl(long time) implements AtTime {}
127141
}
142+
143+
@NullMarked
144+
enum State {
145+
// Start generate - CopperGolemState
146+
IDLE,
147+
GETTING_ITEM,
148+
GETTING_NO_ITEM,
149+
DROPPING_ITEM,
150+
DROPPING_NO_ITEM;
151+
// End generate - CopperGolemState
152+
}
128153
}

paper-generator/src/main/java/io/papermc/generator/Rewriters.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
import org.bukkit.entity.Boat;
6767
import org.bukkit.entity.Cat;
6868
import org.bukkit.entity.Chicken;
69+
import org.bukkit.entity.CopperGolem;
6970
import org.bukkit.entity.Cow;
7071
import org.bukkit.entity.EntityType;
7172
import org.bukkit.entity.Fox;
@@ -142,6 +143,7 @@ protected EnumValue.Builder rewriteEnumValue(net.minecraft.world.entity.animal.p
142143
.register("SoundCategory", SoundCategory.class, new EnumCloneRewriter<>(SoundSource.class))
143144
.register("AttributeSentiment", Attribute.Sentiment.class, new EnumCloneRewriter<>(net.minecraft.world.entity.ai.attributes.Attribute.Sentiment.class))
144145
.register("WeatheringCopperState", WeatheringCopperState.class, new EnumCloneRewriter<>(WeatheringCopper.WeatherState.class))
146+
.register("CopperGolemState", CopperGolem.State.class, new EnumCloneRewriter<>(net.minecraft.world.entity.animal.golem.CopperGolemState.class))
145147
.register(ClientOption.class, composite(
146148
holder("ChatVisibility", ClientOption.ChatVisibility.class, new EnumCloneRewriter<>(ChatVisiblity.class) {
147149
@Override

paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftCopperGolem.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.google.common.base.Preconditions;
44
import io.papermc.paper.entity.PaperShearable;
55
import io.papermc.paper.world.WeatheringCopperState;
6+
import net.minecraft.world.entity.animal.golem.CopperGolemState;
67
import net.minecraft.world.level.block.WeatheringCopper;
78
import org.bukkit.craftbukkit.CraftServer;
89
import org.bukkit.entity.CopperGolem;
@@ -30,6 +31,17 @@ public void setWeatheringState(final WeatheringCopperState state) {
3031
this.getHandle().setWeatherState(WeatheringCopper.WeatherState.valueOf(state.name()));
3132
}
3233

34+
@Override
35+
public CopperGolem.State getState() {
36+
return State.valueOf(this.getHandle().getState().name());
37+
}
38+
39+
@Override
40+
public void setState(final CopperGolem.State state) {
41+
Preconditions.checkArgument(state != null, "state cannot be null");
42+
this.getHandle().setState(CopperGolemState.valueOf(state.name()));
43+
}
44+
3345
@Override
3446
public Oxidizing getOxidizing() {
3547
long value = this.getHandle().nextWeatheringTick;

0 commit comments

Comments
 (0)