Skip to content

Instantly share code, notes, and snippets.

View maxov's full-sized avatar

Max Ovsiankin maxov

View GitHub Profile
// data api
Optional<DisplayNameData> wrappedDisplayName = entity.getData(DisplayNameData.class);
if (wrappedDisplayName.isPresent()) {
DisplayNameData displayname = wrappedDisplayName.get();
displayname.setDisplayName(Texts.of(displayName.get(), "hai!"));
entity.offer(displayname);
}
// equivalent POJO
if (entity.displayName != null) {
public static final Prop<Double, DamagingData> DAMAGE = null;
// TODO yes the capitals are bad style, but it makes sense for consistency
public static Prop<Double, DamagingData> DAMAGE_FOR_ENTITY(EntityType type) {
return null;
}
entity.get(Props.DAMAGE);
entity.get(Props.DAMAGE_FOR_ENTITY(EntityTypes.SKELETON);
@maxov
maxov / HList.java
Last active August 29, 2015 14:19
java heterogenous lists madness
public abstract class HList {
public abstract int length();
public static H0 of() {
return Nil;
}
public static <T1> H1<T1> of(T1 v1) {
return new H1<T1>(v1);
@maxov
maxov / turtles.md
Last active August 29, 2015 14:17
it's turtles all the way down
{ "Ticker": "IBM" } 
<json:object>
  <json:string name="Ticker">IBM</json:string>
</json:object>
interface DataManipulator {
void clear();
void from(DataHolder holder);
}
interface DisplayNameData extends DataManipulator {
project.getGradle().buildFinished { result ->
def failure = result.getFailure()
if (failure) {
def cause = failure.getCause().getCause().getCause()
throw new RuntimeException("no, this is what I want it to say!")
}
}
<!-- in .merge-messages after first button, before .js-details-container -->
<a data-url="github-mac://openRepo/https://github.com/SpongePowered/SpongeAPI?branch=feature%2Fexplosion-events" class="button desktop-app-action js-conduit-rewrite-url tooltipped tooltipped-s" aria-label="Check out this branch">
<span class="octicon octicon-device-desktop"></span>
</a>
<!-- in .discussion-sidebar after .partial-discussion-stats, before first .discussion-sidebar-item -->
<button class="minibutton primary" style="width: 100%">Pull Locally</button>
<!-- with icon -->
<button class="minibutton primary" style="width: 100%"><span class="octicon octicon-device-desktop"></span> Pull Locally</button>
@maxov
maxov / plugin.json
Last active August 29, 2015 14:15
soak dependency specification
{
"name": "my-plugin",
"owner": "gratimax",
"version": "1.0-SNAPSHOT",
"dependencies": [
["Lapis", "Commons", "1.0-SNAPSHOT"]
],
"maven": {
"repositories": {
"sponge": "https://repo.spongepowered.org/maven",
@maxov
maxov / messages.java
Last active August 29, 2015 14:13
message computation
// All lists are immutable
public ComputedMessage computeAll(@Nullable Message parent) {
Message self = null;
if (parent == null) {
self = this;
} else {
self = Messages.compute(parent, self);
}
@maxov
maxov / -
Created January 18, 2015 00:24
FAILURE: Build failed with an exception.
* Where:
Build file '/Users/max/proj/sponge/Soak/Cli/build.gradle' line: 3
* What went wrong:
Error resolving plugin [id: 'com.github.hierynomus.license', version: '0.11.0']
> Plugin 'com.github.hierynomus.license' is already on the script classpath. Plugins on the script classpath cannot be applied in the plugins {} block. Add "apply plugin: 'com.github.hierynomus.license'" to the body of the script to use the plugin.